xref: /freebsd/sys/contrib/dev/acpica/changes.txt (revision 6f63e88c0166ed3e5f2805a9e667c7d24d304cf1)
1----------------------------------------
226 March 2020. Summary of changes for version 20200326:
3
4
51) ACPICA kernel-resident subsystem:
6
7Performed a code clean-up to prevent build errors on early versions of
8GCC-10.
9
10Added the NHLT table signature. iASL data table compiler/disassembler
11support for this table is coming soon.
12
13
142) iASL Compiler/Disassembler and ACPICA tools:
15
16AcpiExec: Fixed several problems with the namespace initialization file
17(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
18errors, several seg faults, and enhancements to line parsing within the
19init file. In addition, each object found in the init file and it's new
20value is displayed, as well as any such entries that do not have a
21corresponding name in the namespace. For reference, the syntax for the
22various supported data types are presented below:
23	PCHG 0x777788889999BBBB	// Integer
24	\DEV1.STR1 "XYZ"			// String
25	BUF1 (88 99 AA)			// Buffer
26	PKG1 [0x1111 0x2222]		// Package
27	\BF1 0x7980				// BufferField
28	RCRV 0x0123456789ABCDEF	// Field Unit
29
30iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
31can be used anywhere in a given ASL file to configure iASL to expect an
32iASL compiler error code on the line where this macro was placed. If the
33error code does not exist, an error is generated. This is intended to be
34used for ACPICA's ASL test suite, but can be used by ASL developers as
35well.
36
37iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
38IVRS table parsing supported only IVHD type 10h structures. Parsing an
39IVHD type 11h caused the iasl to report unknown subtable type. Add
40necessary structure definition for IVHD type 11h and apply correct
41parsing method based on subtable type. Micha? ?ygowski.
42
43iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
44According to AMD IOMMU Specification Revision 3.05 the reserved field
45should be IOMMU Feature Reporting. Change the name of the field to the
46correct one. Micha? ?ygowski.
47
48acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
49based on suggestions by David Seifert and Benjamin Berg.
50
51iASL: table compiler: removed an unused variable (DtCompilerParserResult)
52causing linking errors. Patch based on suggestions by David Seifert and
53Benjamin Berg.
54
55iASL: table compiler: make LexBuffer static to avoid linking errors in
56newer compilers. Patch based on suggestions by David Seifert and Benjamin
57Berg.
58
59iASL: fixed type matching between External and Named objects. External
60object types can only be expressed with ACPI object type values that are
61defined in the ACPI spec. However, iASL uses ACPI object type values that
62are local to ACPICA in addition to the values defined in the ACPI spec.
63This change implements type matching to map some object type values
64specific to ACPICA to ones that are defined in the ACPI spec.
65
66iASL: Dropped the type mismatch compiler error that can arise from
67External declarations to a warning. This warning can occur when there is
68a type difference between the external declaration and the actual object
69declaration (when compiling multiple files/modules simultaneously).
70
71iASL: removed an incorrect error message regarding externals. This change
72removes an incorrect error that is emitted when a duplicate external
73declaration does not contain a type that opens a scope. This is incorrect
74because the duplicate external with conflicting types are already caught
75by iASL and it doesn't make any sense to enforce what this conflicting
76type should be.
77
78AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
79surrounded by parens. Otherwise, a logical statement that applies a
80logical not operator to this macro could result in a computation that
81applies the operator to the left side of the logical and but not the
82right. Reported-by: John Levon <john.levon@joyent.com>
83
84Fixed a problem with the local version of sprint(): On 32-bit, the
85provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
86String + Size will wrap, meaning End < Start, and
87AcpiUtBoundStringOutput() will never output anything as a result. The
88symptom seen of this was acpixtract failing to output anything -- with a
89custom build that included utprint.c. Signed-off-by: John Levon
90<john.levon@joyent.com>
91
92iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
93ACPI specification.
94
95
96----------------------------------------
9714 February 2020. Summary of changes for version 20200214:
98
99
1001) ACPICA kernel-resident subsystem:
101
102Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
103in a guest when it receives a sleep trigger from the hypervisor. When the
104guest resumes from this power state, it does not see the SleepEnabled
105bit. In other words, the sleepHibernation (S4) is triggered in a guest
106when it receives a sleep trigger from the hypervisor. When the guest
107resumes from this power state, it does not see the SleepEnabled bit. In
108other words, the sleep button is not enabled on waking from an S4 state.
109This causes subsequent invocation of sleep state to fail since the
110guest.button is not enabled on waking from an S4 state. This causes
111subsequent invocation of sleep state to fail in the guest. Fix this
112problem by enabling the sleep button in ACPI legacy wake. From Anchal
113Agarwal <anchalag@amazon.com>.
114
115Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
116for checking the status bits of all enabled GPEs in one go. It is needed
117to distinguish spurious SCIs from genuine ones when deciding whether or
118not to wake up the system from suspend-to-idle.
119
120Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
121using HOST in their environment to represent the host name for their
122machines. Avoid this problem by renaming this variable from HOST to
123ACPI_HOST.
124
125MSVC 2017 project files: Enable multiprocessor generation to improve
126build performance.
127
128Added a macro to get the byte width of a Generic Address structure. New
129ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
130ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
131
132
1332) iASL Compiler/Disassembler and ACPICA tools:
134
135iASL: Implemented full support for the (optional, rarely used) ReturnType
136and ParameterTypesList for the Method, Function, and External operators.
137For Method declarations, the number of individual ParameterTypes must
138match the declaration of the number of arguments (NumArgs). This also
139Fixes a problem with the External operator where extra/extraneous bytes
140were emitted in the AML code if the optional ReturnType/ParameterTypes
141were specified for a MethodObj declaration.
142New error message:
1431) Method NumArgs count does not match length of ParameterTypes list
144
145iASL: Implemented detection of type mismatches between External
146declarations and named object declarations. Also, detect type mismatches
147between multiple External declarations of the same Name.
148New error messages:
1491) Type mismatch between external declaration and actual object
150declaration detected
1512) Type mismatch between multiple external declarations detected
152
153iASL: Implemented new error messages for External operators that specify
154a ReturnType and/or ParameterTypesList for any object type other than
155control methods (MethodObj).
156New error messages:
1571) Return type is only allowed for Externals declared as MethodObj
1582) Parameter type is only allowed for Externals declared as MethodObj
159
160iASL: Implemented two new remark/warning messages for ASL code that
161creates named objects from within a control method. This is very
162inefficient since the named object must be created and deleted each time
163the method is executed.
164New messages:
1651) Creation of named objects within a method is highly inefficient, use
166globals or method local variables instead (remark)
1672) Static OperationRegion should be declared outside control method
168(warning)
169
170iASL: Improved illegal forward reference detection by adding support to
171detect forward-reference method invocations.
172
173iASL: Detect and issue an error message for NameStrings that contain too
174many individual NameSegs (>255). This is an AML limitation that is
175defined in the ACPI specification.
176New message:
1771) NameString contains too many NameSegs (>255)
178
179acpidump: windows: use GetSystemFirmwareTable API for all tables except
180SSDT. By using this API, acpidump is able to get all tables in the XSDT
181
182iASL: Removed unused parser file and updated msvc2017 project files.
183Removed the obsolete AslCompiler.y from the repository.
184
185iASL: msvc2017: Fixed macros in the file dependency list to prevent
186unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
187
188Disassembler: Prevent spilling error messages to the output file. All
189errors are directed to the console instead. These error messages
190prevented re-compilation of the resulting disassembled ASL output file
191(.DSL).
192
193
194----------------------------------------
19510 January 2020. Summary of changes for version 20200110:
196
197
1981) ACPICA kernel-resident subsystem:
199
200Updated all copyrights to 2020. This affects all ACPICA source code
201modules.
202
203
2042) iASL Compiler/Disassembler and ACPICA tools:
205
206ASL test suite (ASLTS): Updated all copyrights to 2020.
207
208Tools and utilities: Updated all signon copyrights to 2020.
209
210iASL: fix forward reference analysis for field declarations. Fixes
211forward reference analysis for field declarations by searching the
212parent scope for the named object when the object is not present in
213the current scope.
214
215iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
216full pathname of the name that already exists is printed.
217
218iASL: Enhance duplicate Case() detection for buffers. Add check for
219buffers with no initializer list (these buffers will be filled with
220zeros at runtime.)
221
222
223----------------------------------------
22413 December 2019. Summary of changes for version 20191213:
225
226
2271) ACPICA kernel-resident subsystem:
228
229Return a Buffer object for all fields created via the CreateField
230operator. Previously, an Integer would be returned if the size of
231the field was less than or equal to the current size of an Integer.
232Although this goes against the ACPI specification, it provides
233compatibility with other ACPI implementations. Also updated the
234ASLTS test suite to reflect this new behavior.
235
2362) iASL Compiler/Disassembler and ACPICA tools:
237
238iASL: Implemented detection of (and throw an error for) duplicate
239values for Case statements within a single Switch statement. Duplicate
240Integers, Strings, and Buffers are supported.
241
242iASL: Fix error logging issue during multiple file compilation --
243Switch to the correct input file during error node creation.
244
245iASL: For duplicate named object creation, now emit an error instead
246of a warning - since this will cause a runtime error.
247
248AcpiSrc: Add unix line-ending support for non-Windows builds.
249
250iASL: Add an error condition for an attempt to create a NameString
251with > 255 NameSegs (the max allowable via the AML definition).
252
253
254----------------------------------------
25518 October 2019. Summary of changes for version 20191018:
256
257
2581) ACPICA kernel-resident subsystem:
259
260Debugger: added a new command: ?Fields [address space ID]?. This command
261dumps the contents of all field units that are defined within the
262namespace with a particular address space ID.
263
264Modified the external interface AcpiLoadTable() to return a table index.
265This table index can be used for unloading a table for debugging.
266    ACPI_STATUS
267    AcpiLoadTable (
268        ACPI_TABLE_HEADER       *Table,
269        UINT32                  *TableIndex))
270
271Implemented a new external interface: AcpiUnloadTable() This new function
272takes a table index as an argument and unloads the table. Useful for
273debugging only.
274    ACPI_STATUS
275    AcpiUnloadTable (
276        UINT32                  TableIndex))
277
278Ported the AcpiNames utility to use the new table initialization
279sequence. The utility was broken before this change. Also, it was
280required to include most of the AML interpreter into the utility in order
281to process table initialization (module-level code execution.)
282
283Update for results from running Clang V8.0.1. This fixes all "dead
284assignment" warnings. There are still several "Dereference of NULL
285pointer" warnings, but these have been found to be false positive
286warnings.
287
288
2892) iASL Compiler/Disassembler and ACPICA tools:
290
291iASL: numerous table compiler changes to ensure that the usage of
292yacc/bison syntax is POSIX-compliant.
293
294iASL/disassembler: several simple bug fixes in the data table
295disassembler.
296
297Acpiexec: expanded the initialization file (the -fi option) to initialize
298strings, buffers, packages, and field units.
299
300
301----------------------------------------
30216 August 2019. Summary of changes for version 20190816:
303
304This release is available at https://acpica.org/downloads
305
306
3071) ACPICA kernel-resident subsystem:
308
309Modified the OwnerId mechanism to allow for more Owner Ids. The previous
310limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
311exceptions on machines with a large number of initialization threads,
312many CPU cores and nested initialization control methods.
313
314Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
315checking if the given GPE (as represented by a GPE device handle and a
316GPE number) is currently active and dispatching it (if that's the case)
317outside of interrupt context.
318
319Table load: exit the interpreter before initializing objects within the
320new table This prevents re-acquiring the interpreter lock when loading
321tables
322
323Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
324uk Kim
325
326Macros: removed pointer math on a null pointer. Causes warnings on some
327compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
328instead of using arithmetic.
329
330Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
331across all "printf-like" internal functions. Also, cleanup all calls to
332such functions (both in 32-bit mode and 64-bit mode) now that they are
333analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
334
335
3362) iASL Compiler/Disassembler and ACPICA tools:
337
338iASL: implemented a new data table compiler flex/bison front-end. This
339change is internal and is not intended to result in changes to the
340compiled code. This new compiler front-end can be invoked using the -tp
341option for now, until the old mechanism is removed.
342
343ASLTS: Implemented a new data table compiler test suite. This test suite
344generates all table templates and compile/disassemble/re-compile/binary-
345compare each file.
346
347iASL: return -1 if AML files were not generated due to compiler errors
348
349iASL: added a warning on use of the now-legacy ASL Processor () keyword.
350
351iASL: added an error on _UID object declaration that returns a String
352within a Processor () declaration. A _UID for a processor must be an
353Integer.
354
355iASL: added a null terminator to name strings that consist only of
356multiple parent prefixes (^)
357
358iASL: added support to compile both ASL and data table files in a single
359command.
360
361Updated the tool generation project files that were recently migrated to
362MSVC 2017 to eliminate all new warnings. The new project files appear in
363the directory \acpica\generate\msvc2017. This change effectively
364deprecates the older project files in \acpica\generate\msvc9.
365
366
367----------------------------------------
36803 July 2019. Summary of changes for version 20190703:
369
370
3711) ACPICA kernel-resident subsystem:
372
373Remove legacy module-level support code. There were still some remnants
374of the legacy module-level code executions. Since we no longer support
375this option, this is essentially dead code and has been removed from the
376ACPICA source.
377
378iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
379scope. If these named objects are declared outside the root scope, they
380will not be invoked by any host Operating System.
381
382Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
383one) can be enabled in two situations. First, the GPEs with existing _Lxx
384and _Exx methods are enabled implicitly by ACPICA during system
385initialization.  Second, the GPEs without these methods (like GPEs listed
386by _PRW objects for wakeup devices) need to be enabled directly by the
387code that is going to use them (e.g. ACPI power management or device
388drivers).
389
390In the former case, if the status of a given GPE is set to start with,
391its handler method (either _Lxx or _Exx) needs to be invoked to take care
392of the events (possibly) signaled before the GPE was enabled. In the
393latter case, however, the first caller of AcpiEnableGpe() for a given GPE
394should not be expected to care about any events that might be signaled
395through it earlier.  In that case, it is better to clear the status of
396the GPE before enabling it, to prevent stale events from triggering
397unwanted actions (like spurious system resume, for example).
398
399For this reason, modify AcpiEvAddGpeReference() to take an additional
400boolean argument indicating whether or not the GPE status needs to be
401cleared when its reference counter changes from zero to one and make
402AcpiEnableGpe() pass TRUE to it through that new argument.
403
404
4052) iASL Compiler/Disassembler and ACPICA tools:
406
407The tool generation process has been migrated to MSVC 2017, and all
408project files have been upgraded. The new project files appear in the
409directory \acpica\generate\msvc2017. This change effectively deprecates
410the older project files in \acpica\generate\msvc9.
411
412iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
413scope. If these named objects are declared outside the root scope, they
414will not be invoked by any host Operating System
415
416----------------------------------------
41709 May 2019. Summary of changes for version 20190509:
418
419
4201) ACPICA kernel-resident subsystem:
421
422Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
423them") that causes problems with Thunderbolt controllers to occur if a
424dock device is connected at init time (the xhci_hcd and thunderbolt
425modules crash which prevents peripherals connected through them from
426working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
427Dispatch active GPEs at init time") to get undone, so the problem
428addressed by commit ecc1165b8b74 appears again as a result of it.
429
430
4312) iASL Compiler/Disassembler and ACPICA tools:
432
433Reverted iASL: Additional forward reference detection. This change
434reverts forward reference detection for field declarations. The feature
435unintentionally emitted AML bytecode with incorrect package lengths for
436some ASL code related to Fields and OperationRegions. This malformed AML
437can cause systems to crash
438during boot. The malformed AML bytecode is emitted in iASL version
43920190329 and 20190405.
440
441iASL: improve forward reference detection. This change improves forward
442reference detection for named objects inside of scopes. If a parse object
443has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
444a named object that is declared later in the AML bytecode. This is
445allowed if the reference is inside of a method and the declaration is
446outside of a method like so:
447
448DefinitionBlock(...)
449{
450    Method (TEST)
451    {
452        Return (NUM0)
453    }
454    Name (NUM0,0)
455}
456
457However, if the declaration and reference are both in the same method or
458outside any methods, this is a forward reference and should be marked as
459an error because it would result in runtime errors.
460
461DefinitionBlock(...)
462{
463    Name (BUFF, Buffer (NUM0) {}) // Forward reference
464    Name (NUM0, 0x0)
465
466    Method (TEST)
467    {
468        Local0 = NUM1
469        Name (NUM1, 0x1) // Forward reference
470        return (Local0)
471    }
472}
473
474iASL: Implemented additional buffer overflow analysis for BufferField
475declarations. Check if a buffer index argument to a create buffer field
476operation is beyond the end of the target buffer.
477
478This affects these AML operators:
479
480   AML_CREATE_FIELD_OP
481   AML_CREATE_BIT_FIELD_OP
482   AML_CREATE_BYTE_FIELD_OP
483   AML_CREATE_WORD_FIELD_OP
484   AML_CREATE_DWORD_FIELD_OP
485   AML_CREATE_QWORD_FIELD_OP
486
487 There are three conditions that must be satisfied in order to allow this
488validation at compile time:
489
490   1) The length of the target buffer must be an integer constant
491   2) The index specified in the create* must be an integer constant
492   3) For CreateField, the bit length argument must be non-zero.
493
494Example:
495    Name (BUF1, Buffer() {1,2})
496    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
497
498dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
499Error    6165 -                           ^ Buffer index beyond end of
500target buffer
501
502
503----------------------------------------
50405 April 2019. Summary of changes for version 20190405:
505
506
5071) ACPICA kernel-resident subsystem:
508
509Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
510unconditionally clearing ACPI IRQs during suspend/resume") was added
511earlier to stop clearing of event status bits unconditionally on suspend
512and resume paths. Though this change fixed an issue on suspend path, it
513introduced regressions on several resume paths. In the case of S0ix,
514events are enabled as part of device suspend path. If status bits for the
515events are set when they are enabled, it could result in premature wake
516from S0ix. If status is cleared for any event that is being enabled so
517that any stale events are cleared out. In case of S0ix, events are
518enabled as part of device suspend path. If status bits for the events are
519set when they are enabled, it could result in premature wake from S0ix.
520
521This change ensures that status is cleared for any event that is being
522enabled so that any stale events are cleared out.
523
524
5252) iASL Compiler/Disassembler and ACPICA tools:
526
527iASL: Implemented an enhanced multiple file compilation that combines
528named objects from all input files to a single namespace. With this
529feature, any unresolved external declarations as well as duplicate named
530object declarations can be detected during compilation rather than
531generating errors much later at runtime. The following commands are
532examples that utilize this feature:
533    iasl dsdt.asl ssdt.asl
534    iasl dsdt.asl ssdt1.asl ssdt2.asl
535    iasl dsdt.asl ssdt*.asl
536
537----------------------------------------
53829 March 2019. Summary of changes for version 20190329:
539
540
5411) ACPICA kernel-resident subsystem:
542
543Namespace support: Remove the address nodes from global list after method
544termination. The global address list contains pointers to namespace nodes
545that represent Operation Regions. This change properly removes Operation
546Region namespace nodes that are declared dynamically during method
547execution.
548
549Linux: Use a different debug default than ACPICA. There was a divergence
550between Linux and the ACPICA codebases. In order to resolve this
551divergence, Linux now declares its own debug default in aclinux.h
552
553Renamed some internal macros to improve code understanding and
554maintenance. The macros below all operate on single 4-character ACPI
555NameSegs, not generic strings (old -> new):
556    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
557    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
558    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
559
560Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
561table.
562
563Test suite: Update makefiles, add PCC operation region support
564
565
5662) iASL Compiler/Disassembler and Tools:
567
568iASL: Implemented additional illegal forward reference detection. Now
569detect and emit an error upon detection of a forward reference from a
570Field to an Operation Region. This will fail at runtime if allowed to
571pass the compiler.
572
573AcpiExec: Add an address list check for dynamic Operation Regions. This
574feature performs a sanity test for each node the global address list.
575This is done in order to ensure that all dynamic operation regions are
576properly removed from the global address list and no dangling pointers
577are left behind.
578
579Disassembler: Improved generation of resource pathnames. This change
580improves the code that generates resource descriptor and resource tag
581pathnames. The original code used a bunch of str* C library functions
582that caused warnings on some compilers.
583
584iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
585function can overwrite buffers if the calling code is not very careful.
586In the case of generating a module/table header, use of memmove is a
587better implementation.
588
589
5903) Status of new features that have not been completed at this time:
591
592iASL: Implementing an enhanced multiple file compilation into a single
593namespace feature (Status): This feature will be released soon, and
594allows multiple ASL files to be compiled into the same single namespace.
595By doing so, any unresolved external declarations as well as duplicate
596named object declarations can be detected during compilation (rather than
597later during runtime). The following commands are examples that utilize
598this feature:
599    iasl dsdt.asl ssdt.asl
600    iasl dsdt.asl ssdt1.asl ssdt2.asl
601    iasl dsdt.asl ssdt*.asl
602
603ASL tutorial status: Feedback is being gathered internally and the
604current plan is to publish this tutorial on the ACPICA website after a
605final review by a tech writer.
606
607----------------------------------------
60815 February 2019. Summary of changes for version 20190215:
609
610
6110) Support for ACPI specification version 6.3:
612
613Add PCC operation region support for the AML interpreter. This adds PCC
614operation region support in the AML interpreter and a default handler for
615acpiexec. The change also renames the PCC region address space keyword to
616PlatformCommChannel.
617
618Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
619These methods provide OSPM with health information and device boot
620status.
621
622PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
623defines if the trigger needs to be invoked by OSPM before or at the end
624of kernel crash dump processing/handling operation.
625
626SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
627is used for describing devices such as heterogeneous processors,
628accelerators, GPUs, and IO devices with integrated compute or DMA
629engines.
630
631MADT: Add support for statistical profiling in GICC. Statistical
632profiling extension (SPE) is an architecture-specific feature for ARM.
633
634MADT: Add online capable flag. If this bit is set, system hardware
635supports enabling this processor during OS runtime.
636
637New Error Disconnect Recover Notification value. There are a number of
638scenarios where system Firmware in collaboration with hardware may
639disconnect one or more devices from the rest of the system for purposes
640of error containment. Firmware can use this new notification value to
641alert OSPM of such a removal.
642
643PPTT: New additional fields in Processor Structure Flags. These flags
644provide more information about processor topology.
645
646NFIT/Disassembler: Change a field name from "Address Range" to "Region
647Type".
648
649HMAT updates: make several existing fields to be reserved as well as
650rename subtable 0 to "memory proximity domain attributes".
651
652GTDT: Add support for new GTDT Revision 3. This revision adds information
653for the EL2 timer.
654
655iASL: Update the HMAT example template for new fields.
656
657iASL: Add support for the new revision of the GTDT (Rev 3).
658
659
6601) ACPICA kernel-resident subsystem:
661
662AML Parser: fix the main AML parse loop to correctly skip erroneous
663extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
664byte extended opcodes. If an error occurs during an AML table load, the
665AML parser will continue loading the table by skipping the offending
666opcode. This implements a "load table at any cost" philosophy.
667
668
6692) iASL Compiler/Disassembler and Tools:
670
671iASL: Add checks for illegal object references, such as a reference
672outside of method to an object within a method. Such an object is only
673temporary.
674
675iASL: Emit error for creation of a zero-length operation region. Such a
676region is rather pointless. If encountered, a runtime error is also
677implemented in the interpeter.
678
679Debugger: Fix a possible fault with the "test objects" command.
680
681iASL: Makefile: support parent directory filenames containing embedded
682spaces.
683
684iASL: Update the TPM2 template to revision 4.
685
686iASL: Add the ability to report specific warnings or remarks as errors.
687
688Disassembler: Disassemble OEMx tables as actual AML byte code.
689Previously, these tables were treated as "unknown table".
690
691iASL: Add definition and disassembly for TPM2 revision 3.
692
693iASL: Add support for TPM2 rev 3 compilation.
694
695
696----------------------------------------
69708 January 2019. Summary of changes for version 20190108:
698
699
7001) ACPICA kernel-resident subsystem:
701
702Updated all copyrights to 2019. This affects all source code modules.
703
704
7052) iASL Compiler/Disassembler and Tools:
706
707ASL test suite (ASLTS): Updated all copyrights to 2019.
708
709Tools: Updated all signon copyrights to 2019.
710
711AcpiExec: Added a new option to dump extra information concerning any
712memory leaks detected by the internal object/cache tracking mechanism. -
713va
714
715iASL: Updated the table template for the TPM2 table to the newest version
716of the table (Revision 4)
717
718
719----------------------------------------
72013 December 2018. Summary of changes for version 20181213:
721
722
7231) ACPICA Kernel-resident Subsystem:
724
725Fixed some buffer length issues with the GenericSerialBus, related to two
726of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
727which are rarely seen in the field. For these, the LEN field of the ASL
728buffer is now ignored. Hans de Goede
729
730Implemented a new object evaluation trace mechanism for control methods
731and data objects. This includes nested control methods. It is
732particularly useful for examining the ACPI execution during system
733initialization since the output is relatively terse. The flag below
734enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
735   #define ACPI_LV_EVALUATION          0x00080000
736
737Examples:
738   Enter evaluation       :  _SB.PCI0._INI (Method)
739   Exit evaluation        :  _SB.PCI0._INI
740   Enter evaluation       :  _OSI (Method)
741   Exit evaluation        :  _OSI
742   Enter evaluation       :  _SB.PCI0.TEST (Method)
743   Nested method call     :     _SB.PCI0.NST1
744   Exit nested method     :     _SB.PCI0.NST1
745   Exit evaluation        :  _SB.PCI0.TEST
746
747Added two recently-defined _OSI strings. See
748https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
749osi.
750   "Windows 2018"
751   "Windows 2018.2"
752
753Update for buffer-to-string conversions via the ToHexString ASL operator.
754A "0x" is now prepended to each of the hex values in the output string.
755This provides compatibility with other ACPI implementations. The ACPI
756specification is somewhat vague on this issue.
757   Example output string after conversion:
758"0x01,0x02,0x03,0x04,0x05,0x06"
759
760Return a run-time error for TermArg expressions within individual package
761elements. Although this is technically supported by the ASL grammar,
762other ACPI implementations do not support this either. Also, this fixes a
763fault if this type of construct is ever encountered (it never has been).
764
765
7662) iASL Compiler/Disassembler and Tools:
767
768iASL: Implemented a new compile option (-ww) that will promote individual
769warnings and remarks to errors. This is intended to enhance the firmware
770build process.
771
772AcpiExec: Implemented a new command-line option (-eo) to support the new
773object evaluation trace mechanism described above.
774
775Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
776instead of a "unknown table" message.
777
778AcpiHelp: Improved support for the "special" predefined names such as
779_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
780used for "xx" and "x".
781
782----------------------------------------
78331 October 2018. Summary of changes for version 20181031:
784
785
786An Operation Region regression was fixed by properly adding address
787ranges to a global list during initialization. This allows OS to
788accurately check for overlapping regions between native devices (such as
789PCI) and Operation regions as well as checking for region conflicts
790between two Operation Regions.
791
792Added support for the 2-byte extended opcodes in the code/feature that
793attempts to continue parsing during the table load phase. Skip parsing
794Device declarations (and other extended opcodes) when an error occurs
795during parsing. Previously, only single-byte opcodes were supported.
796
797Cleanup: Simplified the module-level code support by eliminating a
798useless global variable (AcpiGbl_GroupModuleLeveCode).
799
800
8012) iASL Compiler/Disassembler and Tools:
802
803iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
804could cause a fault in the preprocessor. This was an inadvertent side-
805effect from moving more allocations/frees to the local cache/memory
806mechanism.
807
808iASL: Enhanced error detection by validating that all NameSeg elements
809within a NamePatch actually exist. The previous behavior was spotty at
810best, and such errors could be improperly ignored at compiler time (never
811at runtime, however. There are two new error messages, as shown in the
812examples below:
813
814dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
815Error    6161 -                              ^ One or more objects within
816the Pathname do not exist (TTTT.BXXX)
817
818dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
819Error    6160 -        One or more prefix Scopes do not exist ^
820(BBBB.CBF1)
821
822iASL: Disassembler/table-compiler: Added support for the static data
823table TPM2 revision 3 (an older version of TPM2). The support has been
824added for the compiler and the disassembler.
825
826Fixed compilation of DOS format data table file on Unix/Linux systems.
827iASL now properly detects line continuations (\) for DOS format data
828table definition language files on when executing on Unix/Linux.
829
830----------------------------------------
83103 October 2018. Summary of changes for version 20181003:
832
833
8342) iASL Compiler/Disassembler and Tools:
835
836Fixed a regression introduced in version 20180927 that could cause the
837compiler to fault, especially with NamePaths containing one or more
838carats (^). Such as: ^^_SB_PCI0
839
840Added a new remark for the Sleep() operator when the sleep time operand
841is larger than one second. This is a very long time for the ASL/BIOS code
842and may not be what was intended by the ASL writer.
843
844----------------------------------------
84527 September 2018. Summary of changes for version 20180927:
846
847
8481) ACPICA kernel-resident subsystem:
849
850Updated the GPE support to clear the status of all ACPI events when
851entering any/all sleep states in order to avoid premature wakeups. In
852theory, this may cause some wakeup events to be missed, but the
853likelihood of this is small. This change restores the original behavior
854of the ACPICA code in order to fix a regression seen from the previous
855"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
856This regression could cause some systems to incorrectly wake immediately.
857
858Updated the execution of the _REG methods during initialization and
859namespace loading to bring the behavior into closer conformance to the
860ACPI specification and other ACPI implementations:
861
862From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
863    "Control methods must assume all operation regions are inaccessible
864until the _REG(RegionSpace, 1) method is executed"
865
866    "The exceptions to this rule are:
8671.  OSPM must guarantee that the following operation regions are always
868accessible:
869    SystemIO operation regions.
870    SystemMemory operation regions when accessing memory returned by the
871System Address Map reporting interfaces."
872
873Since the state of both the SystemIO and SystemMemory address spaces are
874defined by the specification to never change, this ACPICA change ensures
875that now _REG is never called on them. This solves some problems seen in
876the field and provides compatibility with other ACPI implementations. An
877update to the upcoming new version of the ACPI specification will help
878clarify this behavior.
879
880Updated the implementation of support for the Generic Serial Bus. For the
881"bidirectional" protocols, the internal implementation now automatically
882creates a return data buffer of the maximum size (255). This handles the
883worst-case for data that is returned from the serial bus handler, and
884fixes some problems seen in the field. This new buffer is directly
885returned to the ASL. As such, there is no true "bidirectional" buffer,
886which matches the ACPI specification. This is the reason for the "double
887store" seen in the example ASL code in the specification, shown below:
888
889Word Process Call (AttribProcessCall):
890    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
891    Field(TOP1, BufferAcc, NoLock, Preserve)
892    {
893        FLD1, 8, // Virtual register at command value 1.
894    }
895
896    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
897                             // as BUFF
898    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
899
900    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
901    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
902transaction
903                           // This is the "double store". The write to
904                           // FLD1 returns a new buffer, which is stored
905                           // back into BUFF with the second Store.
906
907
9082) iASL Compiler/Disassembler and Tools:
909
910iASL: Implemented detection of extraneous/redundant uses of the Offset()
911operator within a Field Unit list. A remark is now issued for these. For
912example, the first two of the Offset() operators below are extraneous.
913Because both the compiler and the interpreter track the offsets
914automatically, these Offsets simply refer to the current offset and are
915unnecessary. Note, when optimization is enabled, the iASL compiler will
916in fact remove the redundant Offset operators and will not emit any AML
917code for them.
918
919    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
920    Field (OPR1)
921    {
922        Offset (0),     // Never needed
923        FLD1, 32,
924        Offset (4),     // Redundant, offset is already 4 (bytes)
925        FLD2, 8,
926        Offset (64),    // OK use of Offset.
927        FLD3, 16,
928    }
929dsdt.asl     14:         Offset (0),
930Remark   2158 -                 ^ Unnecessary/redundant use of Offset
931operator
932
933dsdt.asl     16:         Offset (4),
934Remark   2158 -                 ^ Unnecessary/redundant use of Offset
935operator
936
937----------------------------------------
93810 August 2018. Summary of changes for version 20180810:
939
940
9411) ACPICA kernel-resident subsystem:
942
943Initial ACPI table loading: Attempt to continue loading ACPI tables
944regardless of malformed AML. Since migrating table initialization to the
945new module-level code support, the AML interpreter rejected tables upon
946any ACPI error encountered during table load. This is a problem because
947non-serious ACPI errors during table load do not necessarily mean that
948the entire definition block (DSDT or SSDT) is invalid. This change
949improves the table loading by ignoring some types of errors that can be
950generated by incorrect AML. This can range from object type errors, scope
951errors, and index errors.
952
953Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
954during suspend/resume. The status of ACPI events is no longer cleared
955when entering the ACPI S5 system state (power off) which caused some
956systems to power up immediately after turning off power in certain
957situations. This was a functional regression. It was fixed by clearing
958the status of all ACPI events again when entering S5 (for system-wide
959suspend or hibernation the clearing of the status of all events is not
960desirable, as it might cause the kernel to miss wakeup events sometimes).
961Rafael Wysocki.
962
963
9642) iASL Compiler/Disassembler and Tools:
965
966AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
967elements listed in the initialization file were previously initialized
968after the table load and before executing module-level code blocks.
969Recent changes in the module-level code support means that the table load
970becomes a large control method execution. If fields are used within
971module-level code and we are executing with the -fi option, the
972initialization values were used to initialize the namespace object(s)
973only after the table was finished loading. This change Provides an early
974initialization of objects specified in the initialization file so that
975field unit values are populated during the table load (not after the
976load).
977
978AcpiExec: Fixed a small memory leak regression that could result in
979warnings during exit of the utility. These warnings were similar to
980these:
981    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
982    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
983
984----------------------------------------
98529 June 2018. Summary of changes for version 20180629:
986
987
9881) iASL Compiler/Disassembler and Tools:
989
990iASL: Fixed a regression related to the use of the ASL External
991statement. Error checking for the use of the External() statement has
992been relaxed. Previously, a restriction on the use of External meant that
993the referenced named object was required to be defined in a different
994table (an SSDT). Thus it would be an error to declare an object as an
995external and then define the same named object in the same table. For
996example:
997    DefinitionBlock (...)
998    {
999        External (DEV1)
1000        Device (DEV1){...} // This was an error
1001    }
1002However, this behavior has caused regressions in some existing ASL code,
1003because there is code that depends on named objects and externals (with
1004the same name) being declared in the same table. This change will allow
1005the ASL code above to compile without errors or warnings.
1006
1007iASL: Implemented ASL language extensions for four operators to make some
1008of their arguments optional instead of required:
1009    1) Field (RegionName, AccessType, LockRule, UpdateRule)
1010    2) BankField (RegionName, BankName, BankValue,
1011                AccessType, LockRule, UpdateRule)
1012    3) IndexField (IndexName, DataName,
1013                AccessType, LockRule, UpdateRule)
1014For the Field operators above, the AccessType, LockRule, and UpdateRule
1015are now optional arguments. The default values are:
1016        AccessType: AnyAcc
1017        LockRule:   NoLock
1018        UpdateRule: Preserve
1019    4) Mutex (MutexName, SyncLevel)
1020For this operator, the SyncLevel argument is now optional. This argument
1021is rarely used in any meaningful way by ASL code, and thus it makes sense
1022to make it optional. The default value is:
1023        SyncLevel:  0
1024
1025iASL: Attempted use of the ASL Unload() operator now results in the
1026following warning:
1027    "Unload is not supported by all operating systems"
1028This is in fact very true, and the Unload operator may be completely
1029deprecated in the near future.
1030
1031AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1032file. Recent changes in the ACPICA module-level code support altered the
1033table load/initialization sequence . This means that the table load has
1034become a large method execution of the table itself. If Operation Region
1035Fields are used within any module-level code and the -fi option was
1036specified, the initialization values were populated only after the table
1037had completely finished loading (and thus the module-level code had
1038already been executed). This change moves the initialization of objects
1039listed in the initialization file to before the table is executed as a
1040method. Field unit values are now initialized before the table execution
1041is performed.
1042
1043----------------------------------------
104431 May 2018. Summary of changes for version 20180531:
1045
1046
10471) ACPICA kernel-resident Subsystem:
1048
1049Implemented additional support to help ensure that a DSDT or SSDT is
1050fully loaded even if errors are incurred during the load. The majority of
1051the problems that are seen is the failure of individual AML operators
1052that occur during execution of any module-level code (MLC) existing in
1053the table. This support adds a mechanism to abort the current ASL
1054statement (AML opcode), emit an error message, and to simply move on to
1055the next opcode -- instead of aborting the entire table load. This is
1056different than the execution of a control method where the entire method
1057is aborted upon any error. The goal is to perform a very "best effort" to
1058load the ACPI tables. The most common MLC errors that have been seen in
1059the field are direct references to unresolved ASL/AML symbols (referenced
1060directly without the use of the CondRefOf operator to validate the
1061symbol). This new ACPICA behavior is now compatible with other ACPI
1062implementations.
1063
1064Interpreter: The Unload AML operator is no longer supported for the
1065reasons below. An AE_NOT_IMPLEMENTED exception is returned.
10661) A correct implementation on at least some hosts may not be possible.
10672) Other ACPI implementations do not correctly/fully support it.
10683) It requires host device driver support which is not known to exist.
1069    (To properly support namespace unload out from underneath.)
10704) This AML operator has never been seen in the field.
1071
1072Parser: Added a debug option to dump AML parse sub-trees as they are
1073being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1074ACPI_DB_PARSE_TREES.
1075
1076Debugger: Reduced the verbosity for errors incurred during table load and
1077module-level code execution.
1078
1079Completed an investigation into adding a namespace node "owner list"
1080instead of the current "owner ID" associated with namespace nodes. This
1081list would link together all nodes that are owned by an individual
1082control method. The purpose would be to enhance control method execution
1083by speeding up cleanup during method exit (all namespace nodes created by
1084a method are deleted upon method termination.) Currently, the entire
1085namespace must be searched for matching owner IDs if (and only if) the
1086method creates named objects outside of the local scope. However, by far
1087the most common case is that methods create objects locally, not outside
1088the method scope. There is already an ACPICA optimization in place that
1089only searches the entire namespace in the rare case of a method creating
1090objects elsewhere in the namespace. Therefore, it is felt that the
1091overhead of adding an additional pointer to each namespace node to
1092implement the owner list makes this feature unnecessary.
1093
1094
10952) iASL Compiler/Disassembler and Tools:
1096
1097iASL, Disassembler, and Template generator: Implemented support for
1098Revision D of the IORT table. Adds a new subtable that is used to specify
1099SMMUv3 PMCGs. rmurphy-arm.
1100
1101Disassembler: Restored correct table header validation for the "special"
1102ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1103table header and must be special-cased. This was a regression that has
1104been present for apparently a long time.
1105
1106AcpiExec: Reduced verbosity of the local exception handler implemented
1107within acpiexec. This handler is invoked by ACPICA upon any exceptions
1108generated during control method execution. A new option was added: -vh
1109restores the original verbosity level if desired.
1110
1111AcpiExec: Changed the default base from decimal to hex for the -x option
1112(set debug level). This simplifies the use of this option and matches the
1113behavior of the corresponding iASL -x option.
1114
1115AcpiExec: Restored a force-exit on multiple control-c (sigint)
1116interrupts. This allows program termination even if other issues cause
1117the control-c to fail.
1118
1119ASL test suite (ASLTS): Added tests for the recently implemented package
1120element resolution mechanism that allows forward references to named
1121objects from individual package elements (this mechanism provides
1122compatibility with other ACPI implementations.)
1123
1124
1125----------------------------------------
11268 May 2018. Summary of changes for version 20180508:
1127
1128
11291) ACPICA kernel-resident subsystem:
1130
1131Completed the new (recently deployed) package resolution mechanism for
1132the Load and LoadTable ASL/AML operators. This fixes a regression that
1133was introduced in version 20180209 that could result in an
1134AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1135(SSDT) that contains package objects.
1136
1137
11382) iASL Compiler/Disassembler and Tools:
1139
1140AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
11411 MB. This change allows for table offsets within the acpidump file to be
1142up to 8 characters. These changes are backwards compatible with existing
1143acpidump files.
1144
1145
1146----------------------------------------
114727 April 2018. Summary of changes for version 20180427:
1148
1149
11501) ACPICA kernel-resident subsystem:
1151
1152Debugger: Added support for Package objects in the "Test Objects"
1153command. This command walks the entire namespace and evaluates all named
1154data objects (Integers, Strings, Buffers, and now Packages).
1155
1156Improved error messages for the namespace root node. Originally, the root
1157was referred to by the confusing string "\___". This has been replaced by
1158"Namespace Root" for clarification.
1159
1160Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1161Ian King <colin.king@canonical.com>.
1162
1163
11642) iASL Compiler/Disassembler and Tools:
1165
1166iASL: Implemented support to detect and flag illegal forward references.
1167For compatibility with other ACPI implementations, these references are
1168now illegal at the root level of the DSDT or SSDTs. Forward references
1169have always been illegal within control methods. This change should not
1170affect existing ASL/AML code because of the fact that these references
1171have always been illegal in the other ACPI implementation.
1172
1173iASL: Added error messages for the case where a table OEM ID and OEM
1174TABLE ID strings are longer than the ACPI-defined length. Previously,
1175these strings were simply silently truncated.
1176
1177iASL: Enhanced the -tc option (which creates an AML hex file in C,
1178suitable for import into a firmware project):
1179  1) Create a unique name for the table, to simplify use of multiple
1180SSDTs.
1181  2) Add a protection #ifdef in the file, similar to a .h header file.
1182With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
1183evan.lloyd@arm.com
1184
1185AcpiExec: Added a new option, -df, to disable the local fault handler.
1186This is useful during debugging, where it may be desired to drop into a
1187debugger on a fault.
1188
1189----------------------------------------
119013 March 2018. Summary of changes for version 20180313:
1191
1192
11931) ACPICA kernel-resident subsystem:
1194
1195Implemented various improvements to the GPE support:
1196
11971) Dispatch all active GPEs at initialization time so that no GPEs are
1198lost.
11992) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1200before devices are enumerated.
12013) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1202IRQs are not lost.
12034) Add parallel GPE handling to eliminate the possibility of dispatching
1204the same GPE twice.
12055) Dispatch any pending GPEs after enabling for the first time.
1206
1207AcpiGetObjectInfo - removed support for the _STA method. This was causing
1208problems on some platforms.
1209
1210Added a new _OSI string, "Windows 2017.2".
1211
1212Cleaned up and simplified the module-level code support. These changes
1213are in preparation for the eventual removal of the legacy MLC support
1214(deferred execution), replaced by the new MLC architecture which executes
1215the MLC as a table is loaded (DSDT/SSDTs).
1216
1217Changed a compile-time option to a runtime option. Changes the option to
1218ignore ACPI table load-time package resolution errors into a runtime
1219option. Used only for platforms that generate many AE_NOT_FOUND errors
1220during boot. AcpiGbl_IgnorePackageResolutionErrors.
1221
1222Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1223ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1224compilation errors from unused variables (seen with some compilers).
1225
1226
12272) iASL Compiler/Disassembler and Tools:
1228
1229ASLTS: parallelized execution in order to achieve an (approximately) 2X
1230performance increase.
1231
1232ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1233error reporting.
1234
1235----------------------------------------
123609 February 2018. Summary of changes for version 20180209:
1237
1238
12391) ACPICA kernel-resident subsystem:
1240
1241Completed the final integration of the recent changes to Package Object
1242handling and the module-level AML code support. This allows forward
1243references from individual package elements when the package object is
1244declared from within module-level code blocks. Provides compatibility
1245with other ACPI implementations.
1246
1247The new architecture for the AML module-level code has been completed and
1248is now the default for the ACPICA code. This new architecture executes
1249the module-level code in-line as the ACPI table is loaded/parsed instead
1250of the previous architecture which deferred this code until after the
1251table was fully loaded. This solves some ASL code ordering issues and
1252provides compatibility with other ACPI implementations. At this time,
1253there is an option to fallback to the earlier architecture, but this
1254support is deprecated and is planned to be completely removed later this
1255year.
1256
1257Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1258resolution of named reference elements within Package objects. Although
1259this is potentially a serious problem, it can generate a lot of
1260noise/errors on platforms whose firmware carries around a bunch of unused
1261Package objects. To disable these errors, define
1262ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1263errors are always reported for ACPICA applications such as AcpiExec.
1264
1265Fixed a regression related to the explicit type-conversion AML operators
1266(ToXXXX). The regression was introduced early in 2017 but was not seen
1267until recently because these operators are not fully supported by other
1268ACPI implementations and are thus rarely used by firmware developers. The
1269operators are defined by the ACPI specification to not implement the
1270"implicit result object conversion". The regression incorrectly
1271introduced this object conversion for the following explicit conversion
1272operators:
1273    ToInteger
1274    ToString
1275    ToBuffer
1276    ToDecimalString
1277    ToHexString
1278    ToBCD
1279    FromBCD
1280
1281
12822) iASL Compiler/Disassembler and Tools:
1283
1284iASL: Fixed a problem with the compiler constant folding feature as
1285related to the ToXXXX explicit conversion operators. These operators do
1286not support the "implicit result object conversion" by definition. Thus,
1287ASL expressions that use these operators cannot be folded to a simple
1288Store operator because Store implements the implicit conversion. This
1289change uses the CopyObject operator for the ToXXXX operator folding
1290instead. CopyObject is defined to not implement implicit result
1291conversions and is thus appropriate for folding the ToXXXX operators.
1292
1293iASL: Changed the severity of an error condition to a simple warning for
1294the case where a symbol is declared both locally and as an external
1295symbol. This accommodates existing ASL code.
1296
1297AcpiExec: The -ep option to enable the new architecture for module-level
1298code has been removed. It is replaced by the -dp option which instead has
1299the opposite effect: it disables the new architecture (the default) and
1300enables the legacy architecture. When the legacy code is removed in the
1301future, the -dp option will be removed also.
1302
1303----------------------------------------
130405 January 2018. Summary of changes for version 20180105:
1305
1306
13071) ACPICA kernel-resident subsystem:
1308
1309Updated all copyrights to 2018. This affects all source code modules.
1310
1311Fixed a possible build error caused by an unresolved reference to the
1312AcpiUtSafeStrncpy function.
1313
1314Removed NULL pointer arithmetic in the various pointer manipulation
1315macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1316This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1317
1318Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1319Mittal.
1320
1321
13222) iASL Compiler/Disassembler and Tools:
1323
1324ASLTS: Updated all copyrights to 2018.
1325
1326Tools: Updated all signon copyrights to 2018.
1327
1328AcpiXtract: Fixed a regression related to ACPI table signatures where the
1329signature was truncated to 3 characters (instead of 4).
1330
1331AcpiExec: Restore the original terminal mode after the use of the -v and
1332-vd options.
1333
1334ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1335
1336----------------------------------------
133714 December 2017. Summary of changes for version 20171214:
1338
1339
13401) ACPICA kernel-resident subsystem:
1341
1342Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1343interface where the optional "pathname" argument had inadvertently become
1344a required argument returning an error if omitted (NULL pointer
1345argument).
1346
1347Fixed two possible memory leaks related to the recently developed "late
1348resolution" of reference objects within ASL Package Object definitions.
1349
1350Added two recently defined _OSI strings: "Windows 2016" and "Windows
13512017". Mario Limonciello.
1352
1353Implemented and deployed a safer version of the C library function
1354strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1355creation of unterminated strings as a possible result of a standard
1356strncpy.
1357
1358Cleaned up and restructured the global variable file (acglobal.h). There
1359are many changes, but no functional changes.
1360
1361
13622) iASL Compiler/Disassembler and Tools:
1363
1364iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1365optional OemData field at the end of the table was incorrectly required
1366for proper compilation. It is now correctly an optional field.
1367
1368ASLTS: The entire suite was converted from standard ASL to the ASL+
1369language, using the ASL-to-ASL+ converter which is integrated into the
1370iASL compiler. A binary compare of all output files has verified the
1371correctness of the conversion.
1372
1373iASL: Fixed the source code build for platforms where "char" is unsigned.
1374This affected the iASL lexer only. Jung-uk Kim.
1375
1376----------------------------------------
137710 November 2017. Summary of changes for version 20171110:
1378
1379
13801) ACPICA kernel-resident subsystem:
1381
1382This release implements full support for ACPI 6.2A:
1383    NFIT - Added a new subtable, "Platform Capabilities Structure"
1384No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1385errata release of the specification.
1386
1387Other ACPI table changes:
1388    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1389    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1390Linton
1391
1392Utilities: Modified the string/integer conversion functions to use
1393internal 64-bit divide support instead of a native divide. On 32-bit
1394platforms, a 64-bit divide typically requires a library function which
1395may not be present in the build (kernel or otherwise).
1396
1397Implemented a targeted error message for timeouts returned from the
1398Embedded Controller device driver. This is seen frequently enough to
1399special-case an AE_TIME returned from an EC operation region access:
1400    "Timeout from EC hardware or EC device driver"
1401
1402Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1403runtime error messages have the identical prefix.
1404
1405
14062) iASL Compiler/Disassembler and Tools:
1407
1408AcpiXtract: Fixed a problem with table header detection within the
1409acpidump file. Processing a table could be ended early if a 0x40 (@)
1410appears in the original binary table, resulting in the @ symbol appearing
1411in the decoded ASCII field at the end of the acpidump text line. The
1412symbol caused acpixtract to incorrectly think it had reached the end of
1413the current table and the beginning of a new table.
1414
1415AcpiXtract: Added an option (-f) to ignore some errors during table
1416extraction. This initial implementation ignores non-ASCII and non-
1417printable characters found in the acpidump text file.
1418
1419TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1420for ASLTS. This feature is used to track memory allocations from
1421different memory caches within the ACPICA code. At the end of an ASLTS
1422run, these memory statistics are recorded and stored in a log file.
1423
1424Debugger (user-space version): Implemented a simple "Background" command.
1425Creates a new thread to execute a control method in the background, while
1426control returns to the debugger prompt to allow additional commands.
1427    Syntax: Background <Namepath> [Arguments]
1428
1429----------------------------------------
143029 September 2017. Summary of changes for version 20170929:
1431
1432
14331) ACPICA kernel-resident subsystem:
1434
1435Redesigned and implemented an improved ASL While() loop timeout
1436mechanism. This mechanism is used to prevent infinite loops in the kernel
1437AML interpreter caused by either non-responsive hardware or incorrect AML
1438code. The new implementation uses AcpiOsGetTimer instead of a simple
1439maximum loop count, and is thus more accurate and constant across
1440different machines. The default timeout is currently 30 seconds, but this
1441may be adjusted later.
1442
1443Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1444better reflect the new implementation of the loop timeout mechanism.
1445
1446Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1447and to fix an off-by-one error. Jung-uk Kim.
1448
1449Fixed an EFI build problem by updating the makefiles to for a new file
1450that was added, utstrsuppt.c
1451
1452
14532) iASL Compiler/Disassembler and Tools:
1454
1455Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1456includes support in the table disassembler, compiler, and template
1457generator.
1458
1459iASL: Added an exception for an illegal type of recursive method
1460invocation. If a method creates named objects, the first recursive call
1461will fail at runtime. This change adds an error detection at compile time
1462to catch the problem up front. Note: Marking such a method as
1463"serialized" will not help with this problem, because the same thread can
1464acquire the method mutex more than once. Example compiler and runtime
1465output:
1466
1467    Method (MTH1)
1468    {
1469        Name (INT1, 1)
1470        MTH1 ()
1471    }
1472
1473    dsdt.asl     22: MTH1 ()
1474    Error    6152 -  ^ Illegal recursive call to method
1475                       that creates named objects (MTH1)
1476
1477Previous runtime exception:
1478    ACPI Error: [INT1] Namespace lookup failure,
1479    AE_ALREADY_EXISTS (20170831/dswload2-465)
1480
1481iASL: Updated support for External() opcodes to improve namespace
1482management and error detection. These changes are related to issues seen
1483with multiple-segment namespace pathnames within External declarations,
1484such as below:
1485
1486    External(\_SB.PCI0.GFX0, DeviceObj)
1487    External(\_SB.PCI0.GFX0.ALSI)
1488
1489iASL: Implemented support for multi-line error/warning messages. This
1490enables more detailed and helpful error messages as below, from the
1491initial deployment for the duplicate names error:
1492
1493    DSDT.iiii   1692:       Device(PEG2) {
1494    Error    6074 -                  ^ Name already exists in scope
1495(PEG2)
1496
1497        Original name creation/declaration below:
1498        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1499
1500AcpiXtract: Added additional flexibility to support differing input hex
1501dump formats. Specifically, hex dumps that contain partial disassembly
1502and/or comments within the ACPI table data definition. There exist some
1503dump utilities seen in the field that create this type of hex dump (such
1504as Simics). For example:
1505
1506    DSDT @ 0xdfffd0c0 (10999 bytes)
1507        Signature DSDT
1508        Length 10999
1509        Revision 1
1510        Checksum 0xf3 (Ok)
1511        OEM_ID BXPC
1512        OEM_table_id BXDSDT
1513        OEM_revision 1
1514        Creator_id 1280593481
1515        Creator_revision 537399345
1516      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1517      ...
1518      2af0: 5f 4c 30 46 00 a4 01
1519
1520Test suite: Miscellaneous changes/fixes:
1521    More cleanup and simplification of makefiles
1522    Continue compilation of test cases after a compile failure
1523    Do not perform binary compare unless both files actually exist
1524
1525iASL: Performed some code/module restructuring. Moved all memory
1526allocation functions to new modules. Two new files, aslallocate.c and
1527aslcache.c
1528
1529----------------------------------------
153031 August 2017. Summary of changes for version 20170831:
1531
1532
15331) ACPICA kernel-resident subsystem:
1534
1535Implemented internal support for full 64-bit addresses that appear in all
1536Generic Address Structure (GAS) structures. Previously, only the lower 32
1537bits were used. Affects the use of GAS structures in the FADT and other
1538tables, as well as the GAS structures passed to the AcpiRead and
1539AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1540
1541Added header support for the PDTT ACPI table (Processor Debug Trigger
1542Table). Full support in the iASL Data Table Compiler and disassembler is
1543forthcoming.
1544
1545
15462) iASL Compiler/Disassembler and Tools:
1547
1548iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1549Properties Topology Table) where a flag bit was specified in the wrong
1550bit position ("Line Size Valid", bit 6).
1551
1552iASL: Implemented support for Octal integer constants as defined by the
1553ASL language grammar, per the ACPI specification. Any integer constant
1554that starts with a zero is an octal constant. For example,
1555    Store (037777, Local0) /* Octal constant */
1556    Store (0x3FFF, Local0) /* Hex equivalent */
1557    Store (16383,  Local0) /* Decimal equivalent */
1558
1559iASL: Improved overflow detection for 64-bit string conversions during
1560compilation of integer constants. "Overflow" in this case means a string
1561that represents an integer that is too large to fit into a 64-bit value.
1562Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1563the low-order 32 bits with a warning, as previously implemented. Several
1564new exceptions are defined that indicate a 64-bit overflow, as well as
1565the base (radix) that was used during the attempted conversion. Examples:
1566    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1567    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1568    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1569
1570iASL: Added a warning for the case where a ResourceTemplate is declared
1571with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1572this case, the resulting template is created with a single END_TAG
1573descriptor, which is essentially useless.
1574
1575iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1576include compilation error codes as well.
1577
1578----------------------------------------
157928 July 2017. Summary of changes for version 20170728:
1580
1581
15821) ACPICA kernel-resident subsystem:
1583
1584Fixed a regression seen with small resource descriptors that could cause
1585an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1586
1587AML interpreter: Implemented a new feature that allows forward references
1588from individual named references within package objects that are
1589contained within blocks of "module-level code". This provides
1590compatibility with other ACPI implementations and supports existing
1591firmware that depends on this feature. Example:
1592
1593    Name (ABCD, 1)
1594    If (ABCD)                       /* An If() at module-level */
1595    {
1596        Name (PKG1, Package()
1597        {
1598            INT1                    /* Forward reference to object INT1
1599*/
1600        })
1601        Name (INT1, 0x1234)
1602    }
1603
1604AML Interpreter: Fixed a problem with the Alias() operator where aliases
1605to some ASL objects were not handled properly. Objects affected are:
1606Mutex, Event, and OperationRegion.
1607
1608AML Debugger: Enhanced to properly handle AML Alias objects. These
1609objects have one level of indirection which was not fully supported by
1610the debugger.
1611
1612Table Manager: Added support to detect and ignore duplicate SSDTs within
1613the XSDT/RSDT. This error in the XSDT has been seen in the field.
1614
1615EFI and EDK2 support:
1616    Enabled /WX flag for MSVC builds
1617    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1618    Added local support for 64-bit multiply and shift operations
1619    Added support to compile acpidump.efi on Windows
1620    Added OSL function stubs for interfaces not used under EFI
1621
1622Added additional support for the _DMA predefined name. _DMA returns a
1623buffer containing a resource template. This change add support within the
1624resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1625resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1626
1627
16282) iASL Compiler/Disassembler and Tools:
1629
1630iASL: Fixed a problem where the internal input line buffer(s) could
1631overflow if there are very long lines in the input ASL source code file.
1632Implemented buffer management that automatically increases the size of
1633the buffers as necessary.
1634
1635iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1636errors. If the specified exception is not raised during compilation, the
1637compiler emits an error. This is intended to support the ASL test suite,
1638but may be useful in other contexts.
1639
1640iASL: Implemented a new predefined macro, __METHOD__, which returns a
1641string containing the name of the current control method that is being
1642compiled.
1643
1644iASL: Implemented debugger and table compiler support for the SDEI ACPI
1645table (Software Delegated Exception Interface). James Morse
1646<james.morse@arm.com>
1647
1648Unix/Linux makefiles: Added an option to disable compile optimizations.
1649The disable occurs when the NOOPT flag is set to TRUE.
1650theracermaster@gmail.com
1651
1652Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1653when there are different tables for 32-bit versus 64-bit.
1654
1655Enhanced error reporting for the ASL test suite (ASLTS) by removing
1656unnecessary/verbose text, and emit the actual line number where an error
1657has occurred. These changes are intended to improve the usefulness of the
1658test suite.
1659
1660----------------------------------------
166129 June 2017. Summary of changes for version 20170629:
1662
1663
16641) ACPICA kernel-resident subsystem:
1665
1666Tables: Implemented a deferred ACPI table verification. This is useful
1667for operating systems where the tables cannot be verified in the early
1668initialization stage due to early memory mapping limitations on some
1669architectures. Lv Zheng.
1670
1671Tables: Removed the signature validation for dynamically loaded tables.
1672Provides compatibility with other ACPI implementations. Previously, only
1673SSDT tables were allowed, as per the ACPI specification. Now, any table
1674signature can be used via the Load() operator. Lv Zheng.
1675
1676Tables: Fixed several mutex issues that could cause errors during table
1677acquisition. Lv Zheng.
1678
1679Tables: Fixed a problem where an ACPI warning could be generated if a
1680null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1681
1682Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1683AcpiPutTable interfaces. This applies to the "late stage" table loading
1684when the use of AcpiPutTable is no longer required (since the system
1685memory manager is fully running and available). Lv Zheng.
1686
1687Fixed/Reverted a regression during processing of resource descriptors
1688that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1689exception in this case.
1690
1691Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1692I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1693
1694Interpreter: Fixed a possible fault if an Alias operator with an invalid
1695or duplicate target is encountered during Alias creation in
1696AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1697
1698Added an option to use designated initializers for function pointers.
1699Kees Cook <keescook@google.com>
1700
1701
17022) iASL Compiler/Disassembler and Tools:
1703
1704iASL: Allow compilation of External declarations with target pathnames
1705that refer to existing named objects within the table. Erik Schmauss.
1706
1707iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1708FieldUnit name also is declared via External in the same table. Erik
1709Schmauss.
1710
1711iASL: Allow existing scope names within pathnames used in External
1712statements. For example:
1713    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1714    Device (ABCD)
1715
1716iASL: IORT ACPI table: Implemented changes required to decode the new
1717Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1718compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1719
1720Disassembler: Don't abort disassembly on errors from External()
1721statements. Erik Schmauss.
1722
1723Disassembler: fixed a possible fault when one of the Create*Field
1724operators references a Resource Template. ACPICA Bugzilla 1396.
1725
1726iASL: In the source code, resolved some naming inconsistences across the
1727parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1728Adds a new file, aslparseop.c
1729
1730----------------------------------------
173131 May 2017. Summary of changes for version 20170531:
1732
1733
17340) ACPI 6.2 support:
1735
1736The ACPI specification version 6.2 has been released and is available at
1737http://uefi.org/specifications
1738
1739This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1740are summarized below.
1741
1742New ACPI tables (Table Compiler/Disassembler/Templates):
1743    HMAT (Heterogeneous Memory Attributes Table)
1744    WSMT (Windows SMM Security Mitigation Table)
1745    PPTT (Processor Properties Topology Table)
1746
1747New subtables for existing ACPI tables:
1748    HEST (New subtable, Arch-deferred machine check)
1749    SRAT (New subtable, Arch-specific affinity structure)
1750    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1751
1752Simple updates for existing ACPI tables:
1753    BGRT (two new flag bits)
1754    HEST (New bit defined for several subtables, GHES_ASSIST)
1755
1756New Resource Descriptors and Resource macros (Compiler/Disassembler):
1757    PinConfig()
1758    PinFunction()
1759    PinGroup()
1760    PinGroupConfig()
1761    PinGroupFunction()
1762    New type for hardware error notification (section 18.3.2.9)
1763
1764New predefined names/methods (Compiler/Interpreter):
1765    _HMA (Heterogeneous Memory Attributes)
1766    _LSI (Label Storage Information)
1767    _LSR (Label Storage Read)
1768    _LSW (Label Storage Write)
1769
1770ASL grammar/macro changes (Compiler):
1771    For() ASL macro, implemented with the AML while operator
1772    Extensions to Concatenate operator
1773    Support for multiple definition blocks in same ASL file
1774    Clarification for Buffer operator
1775    Allow executable AML code underneath all scopes (Devices, etc.)
1776    Clarification/change for the _OSI return value
1777    ASL grammar update for reference operators
1778    Allow a zero-length string for AML filename in DefinitionBlock
1779
1780Miscellaneous:
1781    New device object notification value
1782    Remove a notify value (0x0C) for graceful shutdown
1783    New UUIDs for processor/cache properties and
1784        physical package property
1785    New _HID, ACPI0014 (Wireless Power Calibration Device)
1786
1787
17881) ACPICA kernel-resident subsystem:
1789
1790Added support to disable ACPI events on hardware-reduced platforms.
1791Eliminates error messages of the form "Could not enable fixed event". Lv
1792Zheng
1793
1794Fixed a problem using Device/Thermal objects with the ObjectType and
1795DerefOf ASL operators. This support had not been fully/properly
1796implemented.
1797
1798Fixed a problem where if a Buffer object containing a resource template
1799was longer than the actual resource template, an error was generated --
1800even though the AML is legal. This case has been seen in the field.
1801
1802Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1803The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1804
1805Added header file changes for the TPM2 ACPI table. Update to new version
1806of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1807
1808Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1809These interfaces are intended to be used only in conjunction with the
1810predefined _DLM method (Device Lock Method). "This object appears in a
1811device scope when AML access to the device must be synchronized with the
1812OS environment".
1813
1814Example Code and Data Size: These are the sizes for the OS-independent
1815acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1816debug version of the code includes the debug output trace mechanism and
1817has a much larger code and data size.
1818
1819  Current Release:
1820    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1821    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
1822  Previous Release:
1823    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1824    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1825
1826
18272) iASL Compiler/Disassembler and Tools:
1828
1829iASL: Fixed a problem where an External() declaration could not refer to
1830a Field Unit. Erik Schmauss.
1831
1832Disassembler: Improved support for the Switch/Case operators. This
1833feature will disassemble AML code back to the original Switch operators
1834when possible, instead of an If..Else sequence. David Box
1835
1836iASL and disassembler: Improved the handling of multiple extraneous
1837parentheses for both ASL input and disassembled ASL output.
1838
1839Improved the behavior of the iASL compiler and disassembler to detect
1840improper use of external declarations
1841
1842Disassembler: Now aborts immediately upon detection of an unknown AML
1843opcode. The AML parser has no real way to recover from this, and can
1844result in the creation of an ill-formed parse tree that causes errors
1845later during the disassembly.
1846
1847All tools: Fixed a problem where the Unix application OSL did not handle
1848control-c correctly. For example, a control-c could incorrectly wake the
1849debugger.
1850
1851AcpiExec: Improved the Control-C handling and added a handler for
1852segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1853environments.
1854
1855Reduced the verbosity of the generic unix makefiles. Previously, each
1856compilation displayed the full set of compiler options. This has been
1857eliminated as the options are easily inspected within the makefiles. Each
1858compilation now results in a single line of output.
1859
1860----------------------------------------
186103 March 2017. Summary of changes for version 20170303:
1862
1863
18640) ACPICA licensing:
1865
1866The licensing information at the start of each source code module has
1867been updated. In addition to the Intel license, the dual GPLv2/BSD
1868license has been added for completeness. Now, a single version of the
1869source code should be suitable for all ACPICA customers. This is the
1870major change for this release since it affects all source code modules.
1871
1872
18731) ACPICA kernel-resident subsystem:
1874
1875Fixed two issues with the common asltypes.h header that could cause
1876problems in some environments: (Kim Jung-uk)
1877    Removed typedef for YY_BUFFER_STATE ?
1878       Fixes an error with earlier versions of Flex.
1879    Removed use of FILE typedef (which is only defined in stdio.h)
1880
1881
18822) iASL Compiler/Disassembler and Tools:
1883
1884Disassembler: fixed a regression introduced in 20170224. A fix for a
1885memory leak related to resource descriptor tags (names) could fault when
1886the disassembler was generated with 64-bit compilers.
1887
1888The ASLTS test suite has been updated to implement a new testing
1889architecture. During generation of the suite from ASL source, both the
1890ASL and ASL+ compilers are now validated, as well as the disassembler
1891itself (Erik Schmauss). The architecture executes as follows:
1892
1893    For every ASL source module:
1894        Compile (legacy ASL compilation)
1895        Disassemble the resulting AML to ASL+ source code
1896        Compile the new ASL+ module
1897        Perform a binary compare on the legacy AML and the new ASL+ AML
1898    The ASLTS suite then executes normally using the AML binaries.
1899
1900----------------------------------------
190124 February 2017. Summary of changes for version 20170224:
1902
1903
19041) ACPICA kernel-resident subsystem:
1905
1906Interpreter: Fixed two issues with the control method return value auto-
1907repair feature, where an attempt to double-delete an internal object
1908could result in an ACPICA warning (for _CID repair and others). No fault
1909occurs, however, because the attempted deletion (actually a release to an
1910internal cache) is detected and ignored via object poisoning.
1911
1912Debugger: Fixed an AML interpreter mutex issue during the single stepping
1913of control methods. If certain debugger commands are executed during
1914stepping, a mutex acquire/release error could occur. Lv Zheng.
1915
1916Fixed some issues generating ACPICA with the Intel C compiler by
1917restoring the original behavior and compiler-specific include file in
1918acenv.h. Lv Zheng.
1919
1920Example Code and Data Size: These are the sizes for the OS-independent
1921acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1922debug version of the code includes the debug output trace mechanism and
1923has a much larger code and data size.
1924
1925  Current Release:
1926    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1927    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1928  Previous Release:
1929    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1930    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1931
1932
19332) iASL Compiler/Disassembler and Tools:
1934
1935iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1936tool has been designed, implemented, and included in this release. The
1937key feature of this utility is that the original comments within the
1938input ASL file are preserved during the conversion process, and included
1939within the converted ASL+ file -- thus creating a transparent conversion
1940of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1941
1942    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
1943converted code
1944
1945iASL/Disassembler: Improved the detection and correct disassembly of
1946Switch/Case operators. This feature detects sequences of if/elseif/else
1947operators that originated from ASL Switch/Case/Default operators and
1948emits the original operators. David Box.
1949
1950iASL: Improved the IORT ACPI table support in the following areas. Lv
1951Zheng:
1952    Clear MappingOffset if the MappingCount is zero.
1953    Fix the disassembly of the SMMU GSU interrupt offset.
1954    Update the template file for the IORT table.
1955
1956Disassembler: Enhanced the detection and disassembly of resource
1957template/descriptor within a Buffer object. An EndTag descriptor is now
1958required to have a zero second byte, since all known ASL compilers emit
1959this. This helps eliminate incorrect decisions when a buffer is
1960disassembled (false positives on resource templates).
1961
1962----------------------------------------
196319 January 2017. Summary of changes for version 20170119:
1964
1965
19661) General ACPICA software:
1967
1968Entire source code base: Added the 2017 copyright to all source code
1969legal/licensing module headers and utility/tool signons. This includes
1970the standard Linux dual-license header. This affects virtually every file
1971in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
1972the ACPICA test suite.
1973
1974
19752) iASL Compiler/Disassembler and Tools:
1976
1977iASL: Removed/fixed an inadvertent remark when a method argument
1978containing a reference is used as a target operand within the method (and
1979never used as a simple argument), as in the example below. Jeffrey Hugo.
1980
1981    dsdt.asl   1507:    Store(0x1, Arg0)
1982    Remark   2146 -                ^ Method Argument is never used (Arg0)
1983
1984All tools: Removed the bit width of the compiler that generated the tool
1985from the common signon for all user space tools. This proved to be
1986confusing and unnecessary. This includes similar removal of HARDWARE_NAME
1987from the generic makefiles (Thomas Petazzoni). Example below.
1988
1989    Old:
1990    ASL+ Optimizing Compiler version 20170119-32
1991    ASL+ Optimizing Compiler version 20170119-64
1992
1993    New:
1994    ASL+ Optimizing Compiler version 20170119
1995
1996----------------------------------------
199722 December 2016. Summary of changes for version 20161222:
1998
1999
20001) ACPICA kernel-resident subsystem:
2001
2002AML Debugger: Implemented a new mechanism to simplify and enhance
2003debugger integration into all environments, including kernel debuggers
2004and user-space utilities, as well as remote debug services. This
2005mechanism essentially consists of new OSL interfaces to support debugger
2006initialization/termination, as well as wait/notify interfaces to perform
2007the debugger handshake with the host. Lv Zheng.
2008
2009    New OSL interfaces:
2010        AcpiOsInitializeDebugger (void)
2011        AcpiOsTerminateDebugger (void)
2012        AcpiOsWaitCommandReady (void)
2013        AcpiOsNotifyCommandComplete (void)
2014
2015    New OS services layer:
2016        osgendbg.c -- Example implementation, and used for AcpiExec
2017
2018Update for Generic Address Space (GAS) support: Although the AccessWidth
2019and/or BitOffset fields of the GAS are not often used, this change now
2020fully supports these fields. This affects the internal support for FADT
2021registers, registers in other ACPI data tables, and the AcpiRead and
2022AcpiWrite public interfaces. Lv Zheng.
2023
2024Sleep support: In order to simplify integration of ACPI sleep for the
2025various host operating systems, a new OSL interface has been introduced.
2026AcpiOsEnterSleep allows the host to perform any required operations
2027before the final write to the sleep control register(s) is performed by
2028ACPICA. Lv Zheng.
2029
2030    New OSL interface:
2031        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2032
2033    Called from these internal interfaces:
2034        AcpiHwLegacySleep
2035        AcpiHwExtendedSleep
2036
2037EFI support: Added a very small EFI/ACPICA example application. Provides
2038a simple demo for EFI integration, as well as assisting with resolution
2039of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2040
2041    source/tools/efihello/efihello.c
2042
2043Local C library: Implemented several new functions to enhance ACPICA
2044portability, for environments where these clib functions are not
2045available (such as EFI). Lv Zheng:
2046    putchar
2047    getchar
2048    strpbrk
2049    strtok
2050    memmove
2051
2052Fixed a regression where occasionally a valid resource descriptor was
2053incorrectly detected as invalid at runtime, and a
2054AE_AML_NO_RESOURCE_END_TAG was returned.
2055
2056Fixed a problem with the recently implemented support that enables
2057control method invocations as Target operands to many ASL operators.
2058Warnings of this form: "Needed type [Reference], found [Processor]" were
2059seen at runtime for some method invocations.
2060
2061Example Code and Data Size: These are the sizes for the OS-independent
2062acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2063debug version of the code includes the debug output trace mechanism and
2064has a much larger code and data size.
2065
2066  Current Release:
2067    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2068    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
2069  Previous Release:
2070    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2071    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2072
2073
20742) iASL Compiler/Disassembler and Tools:
2075
2076Disassembler: Enhanced output by adding the capability to detect and
2077disassemble ASL Switch/Case statements back to the original ASL source
2078code instead of if/else blocks. David Box.
2079
2080AcpiHelp: Split a large file into separate files based upon
2081functionality/purpose. New files are:
2082    ahaml.c
2083    ahasl.c
2084
2085----------------------------------------
208617 November 2016. Summary of changes for version 20161117:
2087
2088
20891) ACPICA kernel-resident subsystem:
2090
2091Table Manager: Fixed a regression introduced in 20160729, "FADT support
2092cleanup". This was an attempt to remove all references in the source to
2093the FADT version 2, which never was a legal version number. It was
2094skipped because it was an early version of 64-bit support that was
2095eventually abandoned for the current 64-bit support.
2096
2097Interpreter: Fixed a problem where runtime implicit conversion was
2098incorrectly disabled for the ASL operators below. This brings the
2099behavior into compliance with the ACPI specification:
2100    FromBCD
2101    ToBCD
2102    ToDecimalString
2103    ToHexString
2104    ToInteger
2105    ToBuffer
2106
2107Table Manager: Added a new public interface, AcpiPutTable, used to
2108release and free an ACPI table returned by AcpiGetTable and related
2109interfaces. Lv Zheng.
2110
2111Example Code and Data Size: These are the sizes for the OS-independent
2112acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2113debug version of the code includes the debug output trace mechanism and
2114has a much larger code and data size.
2115
2116  Current Release:
2117    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2118    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2119  Previous Release:
2120    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2121    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2122
2123
21242) iASL Compiler/Disassembler and Tools:
2125
2126Disassembler: Fixed a regression for disassembly of Resource Template.
2127Detection of templates in the AML stream missed some types of templates.
2128
2129iASL: Fixed a problem where an Access Size error was returned for the PCC
2130address space when the AccessSize of the GAS register is greater than a
2131DWORD. Hoan Tran.
2132
2133iASL: Implemented several grammar changes for the operators below. These
2134changes are slated for the next version of the ACPI specification:
2135    RefOf        - Disallow method invocation as an operand
2136    CondRefOf    - Disallow method invocation as an operand
2137    DerefOf      - Disallow operands that use the result from operators
2138that
2139                   do not return a reference (Changed TermArg to
2140SuperName).
2141
2142iASL: Control method invocations are now allowed for Target operands, as
2143per the ACPI specification. Removed error for using a control method
2144invocation as a Target operand.
2145
2146Disassembler: Improved detection of Resource Templates, Unicode, and
2147Strings within Buffer objects. These subtypes do not contain a specific
2148opcode to indicate the originating ASL code, and they must be detected by
2149other means within the disassembler.
2150
2151iASL: Implemented an optimization improvement for 32-bit ACPI tables
2152(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2153only after 64-bit to 32-bit truncation. A truncation warning message is
2154still emitted, however.
2155
2156AcpiXtract: Implemented handling for both types of line terminators (LF
2157or CR/LF) so that it can accept AcpiDump output files from any system.
2158Peter Wu.
2159
2160AcpiBin: Added two new options for comparing AML files:
2161    -a: compare and display ALL mismatches
2162    -o: start compare at this offset into the second file
2163
2164----------------------------------------
216530 September 2016. Summary of changes for version 20160930:
2166
2167
21681) ACPICA kernel-resident subsystem:
2169
2170Fixed a regression in the internal AcpiTbFindTable function where a non
2171AE_OK exception could inadvertently be returned even if the function did
2172not fail. This problem affects the following operators:
2173    DataTableRegion
2174    LoadTable
2175
2176Fixed a regression in the LoadTable operator where a load to any
2177namespace location other than the root no longer worked properly.
2178
2179Increased the maximum loop count value that will result in the
2180AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2181prevent infinite loops within the AML interpreter and thus the host OS
2182kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
21831,048,575).
2184
2185Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
2186acpixf.h file. This allows hosts to easily configure the maximum loop
2187count at runtime.
2188
2189Removed an illegal character in the strtoul64.c file. This character
2190caused errors with some C compilers.
2191
2192Example Code and Data Size: These are the sizes for the OS-independent
2193acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2194debug version of the code includes the debug output trace mechanism and
2195has a much larger code and data size.
2196
2197  Current Release:
2198    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2199    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2200  Previous Release:
2201    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2202    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2203
2204
22052) iASL Compiler/Disassembler and Tools:
2206
2207Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2208the simpler ASL ElseIf keyword. During the conversion, a trailing If
2209block could be lost and missing from the disassembled output.
2210
2211iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2212the missing rule caused a parse error when using the Index operator as an
2213operand to ObjectType. This construct now compiles properly. Example:
2214    ObjectType(PKG1[4]).
2215
2216iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2217option). Previously, unresolved symbols could cause a protection fault.
2218Such symbols are now marked as unresolved in the map file.
2219
2220iASL: Implemented support to allow control method invocations as an
2221operand to the ASL DeRefOf operator. Example:
2222    DeRefOf(MTH1(Local0))
2223
2224Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2225possible _PLD buffer now includes examination of both the normal buffer
2226length (16 or 20) as well as the surrounding AML package length.
2227
2228Disassembler: Fixed a problem with the decoding of complex expressions
2229within the Divide operator for ASL+. For the case where both the quotient
2230and remainder targets are specified, the entire statement cannot be
2231disassembled. Previously, the output incorrectly contained a mix of ASL-
2232and ASL+ operators. This mixed statement causes a syntax error when
2233compiled. Example:
2234    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2235disassembled to:
2236    Divide (INT1 + 6, 128, RSLT, QUOT)
2237
2238iASL/Tools: Added support to process AML and non-AML ACPI tables
2239consistently. For the disassembler and AcpiExec, allow all types of ACPI
2240tables (AML and data tables). For the iASL -e option, allow only AML
2241tables (DSDT/SSDT).
2242
2243----------------------------------------
224431 August 2016. Summary of changes for version 20160831:
2245
2246
22471) ACPICA kernel-resident subsystem:
2248
2249Improve support for the so-called "module-level code", which is defined
2250to be math, logical and control AML opcodes that appear outside of any
2251control method. This change improves the support by adding more opcodes
2252that can be executed in the manner. Some other issues have been solved,
2253and the ASL grammar changes to support such code under all scope
2254operators (Device, etc.) are complete. Lv Zheng.
2255
2256UEFI support: these OSL functions have been implemented. This is an
2257additional step toward supporting the AcpiExec utility natively (with
2258full hardware access) under UEFI. Marcelo Ferreira.
2259    AcpiOsReadPciConfiguration
2260    AcpiOsWritePciConfiguration
2261
2262Fixed a possible mutex error during control method auto-serialization. Lv
2263Zheng.
2264
2265Updated support for the Generic Address Structure by fully implementing
2266all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2267Zheng.
2268
2269Updated the return value for the internal _OSI method. Instead of
22700xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2271for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2272implementations, and will be reflected and clarified in the next version
2273of the ACPI specification.
2274
2275Implemented two new table events that can be passed to an ACPICA table
2276handler. These events are used to indicate a table installation or
2277uninstallation. These events are used in addition to existed table load
2278and unload events. Lv Zheng.
2279
2280Implemented a cleanup for all internal string-to-integer conversions.
2281Consolidate multiple versions of this functionality and limit possible
2282bases to either 10 or 16 to simplify the code. Adds a new file,
2283utstrtoul64.
2284
2285Cleanup the inclusion order of the various compiler-specific headers.
2286This simplifies build configuration management. The compiler-specific
2287headers are now split out from the host-specific headers. Lv Zheng.
2288
2289Example Code and Data Size: These are the sizes for the OS-independent
2290acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2291debug version of the code includes the debug output trace mechanism and
2292has a much larger code and data size.
2293
2294  Current Release:
2295    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2296    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2297
2298
22992) iASL Compiler/Disassembler and Tools:
2300
2301iASL/AcpiExec: Added a command line option to display the build date/time
2302of the tool (-vd). This can be useful to verify that the correct version
2303of the tools are being used.
2304
2305AML Debugger: Implemented a new subcommand ("execute predef") to execute
2306all predefined control methods and names within the current namespace.
2307This can be useful for debugging problems with ACPI tables and the ACPI
2308namespace.
2309
2310----------------------------------------
231129 July 2016. Summary of changes for version 20160729:
2312
2313
23141) ACPICA kernel-resident subsystem:
2315
2316Implemented basic UEFI support for the various ACPICA tools. This
2317includes:
23181) An OSL to implement the various AcpiOs* interfaces on UEFI.
23192) Support to obtain the ACPI tables on UEFI.
23203) Local implementation of required C library functions not available on
2321UEFI.
23224) A front-end (main) function for the tools for UEFI-related
2323initialization.
2324
2325The initial deployment of this support is the AcpiDump utility executing
2326as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2327Current environments supported are Linux/Unix. MSVC generation is not
2328supported at this time. See the generate/efi/README file for build
2329instructions. Lv Zheng.
2330
2331Future plans include porting the AcpiExec utility to execute natively on
2332the platform with I/O and memory access. This will allow viewing/dump of
2333the platform namespace and native execution of ACPI control methods that
2334access the actual hardware. To fully implement this support, the OSL
2335functions below must be implemented with UEFI interfaces. Any community
2336help in the implementation of these functions would be appreciated:
2337    AcpiOsReadPort
2338    AcpiOsWritePort
2339    AcpiOsReadMemory
2340    AcpiOsWriteMemory
2341    AcpiOsReadPciConfiguration
2342    AcpiOsWritePciConfiguration
2343
2344Restructured and standardized the C library configuration for ACPICA,
2345resulting in the various configuration options below. This includes a
2346global restructuring of the compiler-dependent and platform-dependent
2347include files. These changes may affect the existing platform-dependent
2348configuration files on some hosts. Lv Zheng.
2349
2350The current C library configuration options appear below. For any issues,
2351it may be helpful to examine the existing compiler-dependent and
2352platform-dependent files as examples. Lv Zheng.
2353
23541) Linux kernel:
2355    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2356library.
2357    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
23582) Unix/Windows/BSD applications:
2359    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2360library.
2361    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
23623) UEFI applications:
2363    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2364library.
2365    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
23664) UEFI applications (EDK2/StdLib):
2367    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2368    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2369
2370
2371AML interpreter: "module-level code" support. Allows for execution of so-
2372called "executable" AML code (math/logical operations, etc.) outside of
2373control methods not just at the module level (top level) but also within
2374any scope declared outside of a control method - Scope{}, Device{},
2375Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2376
2377Simplified the configuration of the "maximum AML loops" global option by
2378adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2379modified at runtime.
2380
2381
2382Example Code and Data Size: These are the sizes for the OS-independent
2383acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2384debug version of the code includes the debug output trace mechanism and
2385has a much larger code and data size.
2386
2387  Current Release:
2388    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2389    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2390
2391
23922) iASL Compiler/Disassembler and Tools:
2393
2394iASL: Add full support for the RASF ACPI table (RAS Features Table).
2395Includes disassembler, data table compiler, and header support.
2396
2397iASL Expand "module-level code" support. Allows for
2398compilation/disassembly of so-called "executable" AML code (math/logical
2399operations, etc.) outside of control methods not just at the module level
2400(top level) but also within any scope declared outside of a control
2401method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2402ThermalZone{}.
2403
2404AcpiDump: Added support for dumping all SSDTs on newer versions of
2405Windows. These tables are now easily available -- SSDTs are not available
2406through the registry on older versions.
2407
2408----------------------------------------
240927 May 2016. Summary of changes for version 20160527:
2410
2411
24121) ACPICA kernel-resident subsystem:
2413
2414Temporarily reverted the new arbitrary bit length/alignment support in
2415AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2416a number of regressions with the new code that need to be fully resolved
2417and tested before this support can be finally integrated into ACPICA.
2418Apologies for any inconveniences these issues may have caused.
2419
2420The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2421ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2422and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2423
2424Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2425option. Adds a new return macro, return_STR. Junk-uk Kim.
2426
2427Example Code and Data Size: These are the sizes for the OS-independent
2428acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2429debug version of the code includes the debug output trace mechanism and
2430has a much larger code and data size.
2431
2432  Current Release:
2433    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2434    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2435  Previous Release:
2436    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2437    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2438
2439----------------------------------------
244022 April 2016. Summary of changes for version 20160422:
2441
24421) ACPICA kernel-resident subsystem:
2443
2444Fixed a regression in the GAS (generic address structure) arbitrary bit
2445support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2446and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2447
2448ACPI 6.0: Added support for new/renamed resource macros. One new argument
2449was added to each of these macros, and the original name has been
2450deprecated. The AML disassembler will always disassemble to the new
2451names. Support for the new macros was added to iASL, disassembler,
2452resource manager, and the acpihelp utility. ACPICA BZ 1274.
2453
2454    I2cSerialBus  -> I2cSerialBusV2
2455    SpiSerialBus  -> SpiSerialBusV2
2456    UartSerialBus -> UartSerialBusV2
2457
2458ACPI 6.0: Added support for a new integer field that was appended to the
2459package object returned by the _BIX method. This adds iASL compile-time
2460and AML runtime error checking. ACPICA BZ 1273.
2461
2462ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2463Subspace Type2" (Headers, Disassembler, and data table compiler).
2464
2465Example Code and Data Size: These are the sizes for the OS-independent
2466acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2467debug version of the code includes the debug output trace mechanism and
2468has a much larger code and data size.
2469
2470  Current Release:
2471    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2472    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2473  Previous Release:
2474    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2475    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2476
2477
24782) iASL Compiler/Disassembler and Tools:
2479
2480iASL: Implemented an ASL grammar extension to allow/enable executable
2481"module-level code" to be created and executed under the various
2482operators that create new scopes. This type of AML code is already
2483supported in all known AML interpreters, and the grammar change will
2484appear in the next version of the ACPI specification. Simplifies the
2485conditional runtime creation of named objects under these object types:
2486
2487    Device
2488    PowerResource
2489    Processor
2490    Scope
2491    ThermalZone
2492
2493iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2494ease-of-use to the ASL language. The syntax is similar to the
2495corresponding C operator, and is implemented with the existing AML While
2496opcode -- thus requiring no changes to existing AML interpreters.
2497
2498    For (Initialize, Predicate, Update) {TermList}
2499
2500Grammar:
2501    ForTerm :=
2502        For (
2503            Initializer    // Nothing | TermArg => ComputationalData
2504            Predicate      // Nothing | TermArg => ComputationalData
2505            Update         // Nothing | TermArg => ComputationalData
2506        ) {TermList}
2507
2508
2509iASL: The _HID/_ADR detection and validation has been enhanced to search
2510under conditionals in order to allow these objects to be conditionally
2511created at runtime.
2512
2513iASL: Fixed several issues with the constant folding feature. The
2514improvement allows better detection and resolution of statements that can
2515be folded at compile time. ACPICA BZ 1266.
2516
2517iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2518conversion to the ASL ElseIf operator where incorrect ASL code could be
2519generated.
2520
2521iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2522sometimes an extra (and extraneous) set of parentheses were emitted for
2523some combinations of operators. Although this did not cause any problems
2524with recompilation of the disassembled code, it made the code more
2525difficult to read. David Box. ACPICA BZ 1231.
2526
2527iASL: Changed to ignore the unreferenced detection for predefined names
2528of resource descriptor elements, when the resource descriptor is
2529created/defined within a control method.
2530
2531iASL: Disassembler: Fix a possible fault with externally declared Buffer
2532objects.
2533
2534----------------------------------------
253518 March 2016. Summary of changes for version 20160318:
2536
25371) ACPICA kernel-resident subsystem:
2538
2539Added support for arbitrary bit lengths and bit offsets for registers
2540defined by the Generic Address Structure. Previously, only aligned bit
2541lengths of 8/16/32/64 were supported. This was sufficient for many years,
2542but recently some machines have been seen that require arbitrary bit-
2543level support. ACPICA BZ 1240. Lv Zheng.
2544
2545Fixed an issue where the \_SB._INI method sometimes must be evaluated
2546before any _REG methods are evaluated. Lv Zheng.
2547
2548Implemented several changes related to ACPI table support
2549(Headers/Disassembler/TableCompiler):
2550NFIT: For ACPI 6.1, updated to add some additional new fields and
2551constants.
2552FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
25536).
2554DMAR: Added new constants per the 10/2014 DMAR spec.
2555IORT: Added new subtable per the 10/2015 IORT spec.
2556HEST: For ACPI 6.1, added new constants and new subtable.
2557DBG2: Added new constants per the 12/2015 DBG2 spec.
2558FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2559ACPICA BZ 1249.
2560ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2561
2562Updated header support for the DMAR table to match the current version of
2563the related spec.
2564
2565Added extensions to the ASL Concatenate operator to allow any ACPI object
2566to be passed as an operand. Any object other than Integer/String/Buffer
2567simply returns a string containing the object type. This extends the
2568usefulness of the Printf macros. Previously, Concatenate would abort the
2569control method if a non-data object was encountered.
2570
2571ACPICA source code: Deployed the C "const" keyword across the source code
2572where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2573
2574Example Code and Data Size: These are the sizes for the OS-independent
2575acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2576debug version of the code includes the debug output trace mechanism and
2577has a much larger code and data size.
2578
2579  Current Release:
2580    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2581    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2582  Previous Release:
2583    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2584    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2585
2586
25872) iASL Compiler/Disassembler and Tools:
2588
2589iASL/Disassembler: Improved the heuristic used to determine the number of
2590arguments for an externally defined control method (a method in another
2591table). Although this is an improvement, there is no deterministic way to
2592"guess" the number of method arguments. Only the ACPI 6.0 External opcode
2593will completely solve this problem as it is deployed (automatically) in
2594newer BIOS code.
2595
2596iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2597statements that could cause errors when the disassembled file is
2598compiled. ACPICA BZ 1243. David Box.
2599
2600iASL: Fixed a regression caused by the merger of the two versions of the
2601local strtoul64. Because of a dependency on a global variable, strtoul64
2602could return an error for integers greater than a 32-bit value. ACPICA BZ
26031260.
2604
2605iASL: Fixed a regression where a fault could occur for an ASL Return
2606statement if it invokes a control method that is not resolved. ACPICA BZ
26071264.
2608
2609AcpiXtract: Improved input file validation: detection of binary files and
2610non-acpidump text files.
2611
2612----------------------------------------
261312 February 2016. Summary of changes for version 20160212:
2614
26151) ACPICA kernel-resident subsystem:
2616
2617Implemented full support for the ACPI 6.1 specification (released in
2618January). This version of the specification is available at:
2619http://www.uefi.org/specifications
2620
2621Only a relatively small number of changes were required in ACPICA to
2622support ACPI 6.1, in these areas:
2623- New predefined names
2624- New _HID values
2625- A new subtable for HEST
2626- A few other header changes for new values
2627
2628Ensure \_SB_._INI is executed before any _REG methods are executed. There
2629appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2630
2631Reverted a change made in version 20151218 which enabled method
2632invocations to be targets of various ASL operators (SuperName and Target
2633grammar elements). While the new behavior is supported by the ACPI
2634specification, other AML interpreters do not support this behavior and
2635never will. The ACPI specification will be updated for ACPI 6.2 to remove
2636this support. Therefore, the change was reverted to the original ACPICA
2637behavior.
2638
2639ACPICA now supports the GCC 6 compiler.
2640
2641Current Release: (Note: build changes increased sizes)
2642    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2643    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2644Previous Release:
2645    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2646    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2647
2648
26492) iASL Compiler/Disassembler and Tools:
2650
2651Completed full support for the ACPI 6.0 External() AML opcode. The
2652compiler emits an external AML opcode for each ASL External statement.
2653This opcode is used by the disassembler to assist with the disassembly of
2654external control methods by specifying the required number of arguments
2655for the method. AML interpreters do not use this opcode. To ensure that
2656interpreters do not even see the opcode, a block of one or more external
2657opcodes is surrounded by an "If(0)" construct. As this feature becomes
2658commonly deployed in BIOS code, the ability of disassemblers to correctly
2659disassemble AML code will be greatly improved. David Box.
2660
2661iASL: Implemented support for an optional cross-reference output file.
2662The -lx option will create a the cross-reference file with the suffix
2663"xrf". Three different types of cross-reference are created in this file:
2664- List of object references made from within each control method
2665- Invocation (caller) list for each user-defined control method
2666- List of references to each non-method object in the namespace
2667
2668iASL: Method invocations as ASL Target operands are now disallowed and
2669flagged as errors in preparation for ACPI 6.2 (see the description of the
2670problem above).
2671
2672----------------------------------------
26738 January 2016. Summary of changes for version 20160108:
2674
26751) ACPICA kernel-resident subsystem:
2676
2677Updated all ACPICA copyrights and signons to 2016: Added the 2016
2678copyright to all source code module headers and utility/tool signons.
2679This includes the standard Linux dual-license header. This affects
2680virtually every file in the ACPICA core subsystem, iASL compiler, all
2681ACPICA utilities, and the ACPICA test suite.
2682
2683Fixed a regression introduced in version 20151218 concerning the
2684execution of so-called module-level ASL/AML code. Namespace objects
2685created under a module-level If() construct were not properly/fully
2686entered into the namespace and could cause an interpreter fault when
2687accessed.
2688
2689Example Code and Data Size: These are the sizes for the OS-independent
2690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2691debug version of the code includes the debug output trace mechanism and
2692has a much larger code and data size.
2693
2694Current Release:
2695    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2696    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
2697  Previous Release:
2698    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2699    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2700
2701
27022) iASL Compiler/Disassembler and Tools:
2703
2704Fixed a problem with the compilation of the GpioIo and GpioInt resource
2705descriptors. The _PIN field name was incorrectly defined to be an array
2706of 32-bit values, but the _PIN values are in fact 16 bits each. This
2707would cause incorrect bit width warnings when using Word (16-bit) fields
2708to access the descriptors.
2709
2710
2711----------------------------------------
271218 December 2015. Summary of changes for version 20151218:
2713
27141) ACPICA kernel-resident subsystem:
2715
2716Implemented per-AML-table execution of "module-level code" as individual
2717ACPI tables are loaded into the namespace during ACPICA initialization.
2718In other words, any module-level code within an AML table is executed
2719immediately after the table is loaded, instead of batched and executed
2720after all of the tables have been loaded. This provides compatibility
2721with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2722David Box.
2723
2724To fully support the feature above, the default operation region handlers
2725for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2726installed before any ACPI tables are loaded. This enables module-level
2727code to access these address spaces during the table load and module-
2728level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2729Box.
2730
2731Implemented several changes to the internal _REG support in conjunction
2732with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2733utilities for the changes above. Although these tools were changed, host
2734operating systems that simply use the default handlers for SystemMemory,
2735SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2736
2737For example, in the code below, DEV1 is conditionally added to the
2738namespace by the DSDT via module-level code that accesses an operation
2739region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2740created immediately after the DSDT is loaded in order for the SSDT to
2741successfully reference DEV1. Previously, this code would cause an
2742AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2743fully supported by ACPICA.
2744
2745    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2746    {
2747        OperationRegion (OPR1, SystemMemory, 0x400, 32)
2748        Field (OPR1, AnyAcc, NoLock, Preserve)
2749        {
2750            FLD1, 1
2751        }
2752        If (FLD1)
2753        {
2754            Device (\DEV1)
2755            {
2756            }
2757        }
2758    }
2759    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2760    {
2761        External (\DEV1, DeviceObj)
2762        Scope (\DEV1)
2763        {
2764        }
2765    }
2766
2767Fixed an AML interpreter problem where control method invocations were
2768not handled correctly when the invocation was itself a SuperName argument
2769to another ASL operator. In these cases, the method was not invoked.
2770ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2771argument:
2772    Store
2773    Acquire, Wait
2774    CondRefOf, RefOf
2775    Decrement, Increment
2776    Load, Unload
2777    Notify
2778    Signal, Release, Reset
2779    SizeOf
2780
2781Implemented automatic String-to-ObjectReference conversion support for
2782packages returned by predefined names (such as _DEP). A common BIOS error
2783is to add double quotes around an ObjectReference namepath, which turns
2784the reference into an unexpected string object. This support detects the
2785problem and corrects it before the package is returned to the caller that
2786invoked the method. Lv Zheng.
2787
2788Implemented extensions to the Concatenate operator. Concatenate now
2789accepts any type of object, it is not restricted to simply
2790Integer/String/Buffer. For objects other than these 3 basic data types,
2791the argument is treated as a string containing the name of the object
2792type. This expands the utility of Concatenate and the Printf/Fprintf
2793macros. ACPICA BZ 1222.
2794
2795Cleaned up the output of the ASL Debug object. The timer() value is now
2796optional and no longer emitted by default. Also, the basic data types of
2797Integer/String/Buffer are simply emitted as their values, without a data
2798type string -- since the data type is obvious from the output. ACPICA BZ
27991221.
2800
2801Example Code and Data Size: These are the sizes for the OS-independent
2802acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2803debug version of the code includes the debug output trace mechanism and
2804has a much larger code and data size.
2805
2806  Current Release:
2807    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2808    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2809  Previous Release:
2810    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2811    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2812
2813
28142) iASL Compiler/Disassembler and Tools:
2815
2816iASL: Fixed some issues with the ASL Include() operator. This operator
2817was incorrectly defined in the iASL parser rules, causing a new scope to
2818be opened for the code within the include file. This could lead to
2819several issues, including allowing ASL code that is technically illegal
2820and not supported by AML interpreters. Note, this does not affect the
2821related #include preprocessor operator. ACPICA BZ 1212.
2822
2823iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2824operator is essentially an ASL macro since there is no AML opcode
2825associated with it. The code emitted by the iASL compiler for ElseIf is
2826an Else opcode followed immediately by an If opcode. The disassembler
2827will now emit an ElseIf if it finds an Else immediately followed by an
2828If. This simplifies the decoded ASL, especially for deeply nested
2829If..Else and large Switch constructs. Thus, the disassembled code more
2830closely follows the original source ASL. ACPICA BZ 1211. Example:
2831
2832    Old disassembly:
2833        Else
2834        {
2835            If (Arg0 == 0x02)
2836            {
2837                Local0 = 0x05
2838            }
2839        }
2840
2841    New disassembly:
2842        ElseIf (Arg0 == 0x02)
2843        {
2844            Local0 = 0x05
2845        }
2846
2847AcpiExec: Added support for the new module level code behavior and the
2848early region installation. This required a small change to the
2849initialization, since AcpiExec must install its own operation region
2850handlers.
2851
2852AcpiExec: Added support to make the debug object timer optional. Default
2853is timer disabled. This cleans up the debug object output -- the timer
2854data is rarely used.
2855
2856AcpiExec: Multiple ACPI tables are now loaded in the order that they
2857appear on the command line. This can be important when there are
2858interdependencies/references between the tables.
2859
2860iASL/Templates. Add support to generate template files with multiple
2861SSDTs within a single output file. Also added ommand line support to
2862specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
28631223, 1225.
2864
2865
2866----------------------------------------
286724 November 2015. Summary of changes for version 20151124:
2868
28691) ACPICA kernel-resident subsystem:
2870
2871Fixed a possible regression for a previous update to FADT handling. The
2872FADT no longer has a fixed table ID, causing some issues with code that
2873was hardwired to a specific ID. Lv Zheng.
2874
2875Fixed a problem where the method auto-serialization could interfere with
2876the current SyncLevel. This change makes the auto-serialization support
2877transparent to the SyncLevel support and management.
2878
2879Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2880interface is intended for early access to the namespace during the
2881initial namespace device discovery walk. The _SUB method has been seen to
2882access operation regions in some cases, causing errors because the
2883operation regions are not fully initialized.
2884
2885AML Debugger: Fixed some issues with the terminate/quit/exit commands
2886that can cause faults. Lv Zheng.
2887
2888AML Debugger: Add thread ID support so that single-step mode only applies
2889to the AML Debugger thread. This prevents runtime errors within some
2890kernels. Lv Zheng.
2891
2892Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2893methods that are invoked by this interface are optional, removed warnings
2894emitted for the case where one or more of these methods do not exist.
2895ACPICA BZ 1208, original change by Prarit Bhargava.
2896
2897Made a major pass through the entire ACPICA source code base to
2898standardize formatting that has diverged a bit over time. There are no
2899functional changes, but this will of course cause quite a few code
2900differences from the previous ACPICA release.
2901
2902Example Code and Data Size: These are the sizes for the OS-independent
2903acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2904debug version of the code includes the debug output trace mechanism and
2905has a much larger code and data size.
2906
2907  Current Release:
2908    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2909    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2910  Previous Release:
2911    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2912    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2913
2914
29152) iASL Compiler/Disassembler and Tools:
2916
2917iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2918definition blocks within a single ASL file and the resulting AML file.
2919Support for this type of file was also added to the various tools that
2920use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2921example code below shows two definition blocks within the same file:
2922
2923    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
29240x12345678)
2925    {
2926    }
2927    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2928    {
2929    }
2930
2931iASL: Enhanced typechecking for the Name() operator. All expressions for
2932the value of the named object must be reduced/folded to a single constant
2933at compile time, as per the ACPI specification (the AML definition of
2934Name()).
2935
2936iASL: Fixed some code indentation issues for the -ic and -ia options (C
2937and assembly headers). Now all emitted code correctly begins in column 1.
2938
2939iASL: Added an error message for an attempt to open a Scope() on an
2940object defined in an SSDT. The DSDT is always loaded into the namespace
2941first, so any attempt to open a Scope on an SSDT object will fail at
2942runtime.
2943
2944
2945----------------------------------------
294630 September 2015. Summary of changes for version 20150930:
2947
29481) ACPICA kernel-resident subsystem:
2949
2950Debugger: Implemented several changes and bug fixes to assist support for
2951the in-kernel version of the AML debugger. Lv Zheng.
2952- Fix the "predefined" command for in-kernel debugger.
2953- Do not enter debug command loop for the help and version commands.
2954- Disallow "execute" command during execution/single-step of a method.
2955
2956Interpreter: Updated runtime typechecking for all operators that have
2957target operands. The operand is resolved and validated that it is legal.
2958For example, the target cannot be a non-data object such as a Device,
2959Mutex, ThermalZone, etc., as per the ACPI specification.
2960
2961Debugger: Fixed the double-mutex user I/O handshake to work when local
2962deadlock detection is enabled.
2963
2964Debugger: limited display of method locals and arguments (LocalX and
2965ArgX) to only those that have actually been initialized. This prevents
2966lines of extraneous output.
2967
2968Updated the definition of the NFIT table to correct the bit polarity of
2969one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2970
2971Example Code and Data Size: These are the sizes for the OS-independent
2972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2973debug version of the code includes the debug output trace mechanism and
2974has a much larger code and data size.
2975
2976  Current Release:
2977    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2978    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2979  Previous Release:
2980    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2981    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2982
2983
29842) iASL Compiler/Disassembler and Tools:
2985
2986iASL: Improved the compile-time typechecking for operands of many of the
2987ASL operators:
2988
2989-- Added an option to disable compiler operand/operator typechecking (-
2990ot).
2991
2992-- For the following operators, the TermArg operands are now validated
2993when possible to be Integer data objects: BankField, OperationRegion,
2994DataTableRegion, Buffer, and Package.
2995
2996-- Store (Source, Target): Both the source and target operands are
2997resolved and checked that the operands are both legal. For example,
2998neither operand can be a non-data object such as a Device, Mutex,
2999ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3000operator can be used to store an object to any type of target object.
3001
3002-- Store (Source, Target): If the source is a Package object, the target
3003must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3004is a Package, the source must also be a Package.
3005
3006-- Store (Source, Target): A warning is issued if the source and target
3007resolve to the identical named object.
3008
3009-- Store (Source, <method invocation>): An error is generated for the
3010target method invocation, as this construct is not supported by the AML
3011interpreter.
3012
3013-- For all ASL math and logic operators, the target operand must be a
3014data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3015includes the function return value also.
3016
3017-- External declarations are also included in the typechecking where
3018possible. External objects defined using the UnknownObj keyword cannot be
3019typechecked, however.
3020
3021iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3022operator:
3023- Legacy code: Index(PKG1, 3)
3024- New ASL+ code: PKG1[3]
3025This completes the ACPI 6.0 ASL+ support as it was the only operator not
3026supported.
3027
3028iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3029spaces were inadvertently appended to the filename, causing file access
3030and deletion problems on some systems.
3031
3032ASL Test Suite (ASLTS): Updated the master makefile to generate all
3033possible compiler output files when building the test suite -- thus
3034exercising these features of the compiler. These files are automatically
3035deleted when the test suite exits.
3036
3037
3038----------------------------------------
303918 August 2015. Summary of changes for version 20150818:
3040
30411) ACPICA kernel-resident subsystem:
3042
3043Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3044Zheng. ACPICA BZ 1186.
3045
3046Completed development to ensure that the ACPICA Disassembler and Debugger
3047are fully standalone components of ACPICA. Removed cross-component
3048dependences. Lv Zheng.
3049
3050The max-number-of-AML-loops is now runtime configurable (previously was
3051compile-time only). This is essentially a loop timeout to force-abort
3052infinite AML loops. ACPCIA BZ 1192.
3053
3054Debugger: Cleanup output to dump ACPI names and namepaths without any
3055trailing underscores. Lv Zheng. ACPICA BZ 1135.
3056
3057Removed unnecessary conditional compilations across the Debugger and
3058Disassembler components where entire modules could be left uncompiled.
3059
3060The aapits test is deprecated and has been removed from the ACPICA git
3061tree. The test has never been completed and has not been maintained, thus
3062becoming rather useless. ACPICA BZ 1015, 794.
3063
3064A batch of small changes to close bugzilla and other reports:
3065- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3066- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3067- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3068- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3069Moore.
3070- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3071ACPICA BZ 1184.
3072- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3073operators.
3074- Debugger: Split debugger initialization/termination interfaces. Lv
3075Zheng.
3076- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3077identification.
3078- AcpiExec: Add debug message during _REG method phase during table
3079load/init.
3080- AcpiNames: Fix a regression where some output was missing and no longer
3081emitted.
3082- Debugger: General cleanup and simplification. Lv Zheng.
3083- Disassembler: Cleanup use of several global option variables. Lv Zheng.
3084
3085Example Code and Data Size: These are the sizes for the OS-independent
3086acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3087debug version of the code includes the debug output trace mechanism and
3088has a much larger code and data size.
3089
3090  Current Release:
3091    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3092    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3093  Previous Release:
3094    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3095    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3096
3097
30982) iASL Compiler/Disassembler and Tools:
3099
3100AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3101were not handled properly and caused load errors. Now, properly invoke
3102and use the ACPICA auto-reallocate mechanism for ACPI table data
3103structures. ACPICA BZ 1188
3104
3105AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3106BZ 1190.
3107
3108AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3109AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3110executed during initialization. ACPICA BZ 1187, 1189.
3111
3112iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3113that corresponds to each disassembled ASL statement, to simplify
3114debugging. ACPICA BZ 1191.
3115
3116Debugger: Add option to the "objects" command to display a summary of the
3117current namespace objects (Object type and count). This is displayed if
3118the command is entered with no arguments.
3119
3120AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3121
3122
3123----------------------------------------
312417 July 2015. Summary of changes for version 20150717:
3125
31261) ACPICA kernel-resident subsystem:
3127
3128Improved the partitioning between the Debugger and Disassembler
3129components. This allows the Debugger to be used standalone within kernel
3130code without the Disassembler (which is used for single stepping also).
3131This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3132
3133Debugger: Implemented a new command to trace the execution of control
3134methods (Trace). This is especially useful for the in-kernel version of
3135the debugger when file I/O may not be available for method trace output.
3136See the ACPICA reference for more information. Lv Zheng.
3137
3138Moved all C library prototypes (used for the local versions of these
3139functions when requested) to a new header, acclib.h
3140Cleaned up the use of non-ANSI C library functions. These functions are
3141implemented locally in ACPICA. Moved all such functions to a common
3142source file, utnonansi.c
3143
3144Debugger: Fixed a problem with the "!!" command (get last command
3145executed) where the debugger could enter an infinite loop and eventually
3146crash.
3147
3148Removed the use of local macros that were used for some of the standard C
3149library functions to automatically cast input parameters. This mostly
3150affected the is* functions where the input parameter is defined to be an
3151int. This required a few modifications to the main ACPICA source code to
3152provide casting for these functions and eliminate possible compiler
3153warnings for these parameters.
3154
3155Across the source code, added additional status/error checking to resolve
3156issues discovered by static source code analysis tools such as Coverity.
3157
3158Example Code and Data Size: These are the sizes for the OS-independent
3159acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3160debug version of the code includes the debug output trace mechanism and
3161has a much larger code and data size.
3162
3163  Current Release:
3164    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3165    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3166  Previous Release:
3167    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3168    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3169
3170
31712) iASL Compiler/Disassembler and Tools:
3172
3173iASL: Fixed a regression where the device map file feature no longer
3174worked properly when used in conjunction with the disassembler. It only
3175worked properly with the compiler itself.
3176
3177iASL: Implemented a new warning for method LocalX variables that are set
3178but never used (similar to a C compiler such as gcc). This also applies
3179to ArgX variables that are not defined by the parent method, and are
3180instead (legally) used as local variables.
3181
3182iASL/Preprocessor: Finished the pass-through of line numbers from the
3183preprocessor to the compiler. This ensures that compiler errors/warnings
3184have the correct original line numbers and filenames, regardless of any
3185#include files.
3186
3187iASL/Preprocessor: Fixed a couple of issues with comment handling and the
3188pass-through of comments to the preprocessor output file (which becomes
3189the compiler input file). Also fixed a problem with // comments that
3190appear after a math expression.
3191
3192iASL: Added support for the TCPA server table to the table compiler and
3193template generator. (The client table was already previously supported)
3194
3195iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3196identify the iASL compiler.
3197
3198Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3199multiple times. The new names are ACPI_SIGN_NEGATIVE and
3200ACPI_SIGN_POSITIVE.
3201
3202AcpiHelp: Update to expand help messages for the iASL preprocessor
3203directives.
3204
3205
3206----------------------------------------
320719 June 2015. Summary of changes for version 20150619:
3208
3209Two regressions in version 20150616 have been addressed:
3210
3211Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3212etc.) This update changes ACPICA to only use the standard headers for
3213functions, or the prototypes for the local versions of the C library
3214functions. Across the source code, this required some additional casts
3215for some Clib invocations for portability. Moved all local prototypes to
3216a new file, acclib.h
3217
3218Fixes several problems with recent changes to the handling of the FACS
3219table that could cause some systems not to boot.
3220
3221
3222----------------------------------------
322316 June 2015. Summary of changes for version 20150616:
3224
3225
32261) ACPICA kernel-resident subsystem:
3227
3228Across the entire ACPICA source code base, the various macros for the C
3229library functions (such as ACPI_STRLEN, etc.) have been removed and
3230replaced by the standard C library names (strlen, etc.) The original
3231purpose for these macros is no longer applicable. This simplification
3232reduces the number of macros used in the ACPICA source code
3233significantly, improving readability and maintainability.
3234
3235Implemented support for a new ACPI table, the OSDT. This table, the
3236"override" SDT, can be loaded directly by the host OS at boot time. It
3237enables the replacement of existing namespace objects that were installed
3238via the DSDT and/or SSDTs. The primary purpose for this is to replace
3239buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3240for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3241Moore.
3242
3243Added support for systems with (improperly) two FACS tables -- a "32-bit"
3244table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3245X field). This change will support both automatically. There continues to
3246be systems found with this issue. This support requires a change to the
3247AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3248been added to allow the host to select which FACS is desired
3249(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3250details Lv Zheng.
3251
3252Added a new feature to allow for systems that do not contain an FACS.
3253Although this is already supported on hardware-reduced platforms, the
3254feature has been extended for all platforms. The reasoning is that we do
3255not want to abort the entire ACPICA initialization just because the
3256system is seriously buggy and has no FACS.
3257
3258Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3259not correctly transcribed from the ACPI specification in ACPICA version
326020150515.
3261
3262Implemented support for the _CLS object in the AcpiGetObjectInfo external
3263interface.
3264
3265Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3266recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3267compiler also updated. Note: The TCPA "server" table is not supported by
3268the disassembler/table-compiler at this time.
3269
3270ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3271
3272Example Code and Data Size: These are the sizes for the OS-independent
3273acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3274debug version of the code includes the debug output trace mechanism and
3275has a much larger code and data size.
3276
3277  Current Release:
3278    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3279    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3280  Previous Release:
3281    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3282    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3283
3284
32852) iASL Compiler/Disassembler and Tools:
3286
3287Disassembler: Fixed a problem with the new symbolic operator disassembler
3288where incorrect ASL code could be emitted in some cases for the "non-
3289commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3290ShiftRight. The actual problem cases seem to be rather unusual in common
3291ASL code, however. David Box.
3292
3293Modified the linux version of acpidump to obtain ACPI tables from not
3294just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3295Zheng.
3296
3297iASL: Fixed a problem where the user preprocessor output file (.i)
3298contained extra data that was not expected. The compiler was using this
3299file as a temporary file and passed through #line directives in order to
3300keep compiler error messages in sync with the input file and line number
3301across multiple include files. The (.i) is no longer a temporary file as
3302the compiler uses a new, different file for the original purpose.
3303
3304iASL: Fixed a problem where comments within the original ASL source code
3305file were not passed through to the preprocessor output file, nor any
3306listing files.
3307
3308iASL: Fixed some issues for the handling of the "#include" preprocessor
3309directive and the similar (but not the same) "Include" ASL operator.
3310
3311iASL: Add support for the new OSDT in both the disassembler and compiler.
3312
3313iASL: Fixed a problem with the constant folding support where a Buffer
3314object could be incorrectly generated (incorrectly formed) during a
3315conversion to a Store() operator.
3316
3317AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3318description text for the _REV predefined name. _REV now permanently
3319returns 2, as per the ACPI 6.0 specification.
3320
3321Debugger: Enhanced the output of the Debug ASL object for references
3322produced by the Index operator. For Buffers and strings, only output the
3323actual byte pointed to by the index. For packages, only print the single
3324package element decoded by the index. Previously, the entire
3325buffer/string/package was emitted.
3326
3327iASL/Table-compiler: Fixed a regression where the "generic" data types
3328were no longer recognized, causing errors.
3329
3330
3331----------------------------------------
333215 May 2015. Summary of changes for version 20150515:
3333
3334This release implements most of ACPI 6.0 as described below.
3335
33361) ACPICA kernel-resident subsystem:
3337
3338Implemented runtime argument checking and return value checking for all
3339new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3340_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3341
3342Example Code and Data Size: These are the sizes for the OS-independent
3343acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3344debug version of the code includes the debug output trace mechanism and
3345has a much larger code and data size.
3346
3347  Current Release:
3348    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3349    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3350  Previous Release:
3351    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3352    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3353
3354
33552) iASL Compiler/Disassembler and Tools:
3356
3357iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3358names (argument count validation and return value typechecking.)
3359
3360iASL disassembler and table compiler: implemented support for all new
3361ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3362
3363iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3364tables: FADT, MADT.
3365
3366iASL preprocessor: Added a new directive to enable inclusion of binary
3367blobs into ASL code. The new directive is #includebuffer. It takes a
3368binary file as input and emits a named ascii buffer object into the ASL
3369code.
3370
3371AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3372
3373AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3374directives.
3375
3376AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3377tables.
3378
3379
3380----------------------------------------
338110 April 2015. Summary of changes for version 20150410:
3382
3383Reverted a change introduced in version 20150408 that caused
3384a regression in the disassembler where incorrect operator
3385symbols could be emitted.
3386
3387
3388----------------------------------------
338908 April 2015. Summary of changes for version 20150408:
3390
3391
33921) ACPICA kernel-resident subsystem:
3393
3394Permanently set the return value for the _REV predefined name. It now
3395returns 2 (was 5). This matches other ACPI implementations. _REV will be
3396deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3397for ACPI 2.0 and later. It should never be used to differentiate or
3398identify operating systems.
3399
3400Added the "Windows 2015" string to the _OSI support. ACPICA will now
3401return TRUE to a query with this string.
3402
3403Fixed several issues with the local version of the printf function.
3404
3405Added the C99 compiler option (-std=c99) to the Unix makefiles.
3406
3407  Current Release:
3408    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3409    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3410  Previous Release:
3411    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3412    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3413
3414
34152) iASL Compiler/Disassembler and Tools:
3416
3417iASL: Implemented an enhancement to the constant folding feature to
3418transform the parse tree to a simple Store operation whenever possible:
3419    Add (2, 3, X) ==> is converted to: Store (5, X)
3420    X = 2 + 3     ==> is converted to: Store (5, X)
3421
3422Updated support for the SLIC table (Software Licensing Description Table)
3423in both the Data Table compiler and the disassembler. The SLIC table
3424support now conforms to "Microsoft Software Licensing Tables (SLIC and
3425MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3426following the ACPI header is now defined to be "Proprietary Data", and as
3427such, can only be entered or displayed as a hex data block.
3428
3429Implemented full support for the MSDM table as described in the document
3430above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3431following the ACPI header is defined to be "Proprietary Data", and can
3432only be entered or displayed as a hex data block.
3433
3434Implemented the -Pn option for the iASL Table Compiler (was only
3435implemented for the ASL compiler). This option disables the iASL
3436preprocessor.
3437
3438Disassembler: For disassembly of Data Tables, added a comment field
3439around the Ascii equivalent data that is emitted as part of the "Raw
3440Table Data" block. This prevents the iASL Preprocessor from possible
3441confusion if/when the table is compiled.
3442
3443Disassembler: Added an option (-df) to force the disassembler to assume
3444that the table being disassembled contains valid AML. This feature is
3445useful for disassembling AML files that contain ACPI signatures other
3446than DSDT or SSDT (such as OEMx or other signatures).
3447
3448Changes for the EFI version of the tools:
34491) Fixed a build error/issue
34502) Fixed a cast warning
3451
3452iASL: Fixed a path issue with the __FILE__ operator by making the
3453directory prefix optional within the internal SplitInputFilename
3454function.
3455
3456Debugger: Removed some unused global variables.
3457
3458Tests: Updated the makefile for proper generation of the AAPITS suite.
3459
3460
3461----------------------------------------
346204 February 2015. Summary of changes for version 20150204:
3463
3464ACPICA kernel-resident subsystem:
3465
3466Updated all ACPICA copyrights and signons to 2014. Added the 2014
3467copyright to all module headers and signons, including the standard Linux
3468header. This affects virtually every file in the ACPICA core subsystem,
3469iASL compiler, all ACPICA utilities, and the test suites.
3470
3471Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3472A raw gpe handling mechanism was created to allow better handling of GPE
3473storms that aren't easily managed by the normal handler. The raw handler
3474allows disabling/renabling of the the GPE so that interrupt storms can be
3475avoided in cases where events cannot be timely serviced. In this
3476scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3477GPE. This API will leave the reference counts undisturbed, thereby
3478preventing unintentional clearing of the GPE when the intent in only to
3479temporarily disable it. Raw handlers allow enabling and disabling of a
3480GPE by removing GPE register locking. As such, raw handlers much provide
3481their own locks while using GPE API's to protect access to GPE data
3482structures.
3483Lv Zheng
3484
3485Events: Always modify GPE registers under the GPE lock.
3486Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3487values. Reported as bug by joe.liu@apple.com.
3488
3489Unix makefiles: Separate option to disable optimizations and
3490_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3491NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3492purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3493errors when building ACPICA. This allows disabling the option without
3494also having to disable optimazations.
3495David Box
3496
3497  Current Release:
3498    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3499    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3500
3501--
3502--------------------------------------
350307 November 2014. Summary of changes for version 20141107:
3504
3505This release is available at https://acpica.org/downloads
3506
3507This release introduces and implements language extensions to ASL that
3508provide support for symbolic ("C-style") operators and expressions. These
3509language extensions are known collectively as ASL+.
3510
3511
35121) iASL Compiler/Disassembler and Tools:
3513
3514Disassembler: Fixed a problem with disassembly of the UartSerialBus
3515macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3516Box.
3517
3518Disassembler: Fixed the Unicode macro support to add escape sequences.
3519All non-printable ASCII values are emitted as escape sequences, as well
3520as the standard escapes for quote and backslash. Ensures that the
3521disassembled macro can be correctly recompiled.
3522
3523iASL: Added Printf/Fprintf macros for formatted output. These macros are
3524translated to existing AML Concatenate and Store operations. Printf
3525writes to the ASL Debug object. Fprintf allows the specification of an
3526ASL name as the target. Only a single format specifier is required, %o,
3527since the AML interpreter dynamically converts objects to the required
3528type. David E. Box.
3529
3530    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3531                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3532                 ": Unexpected value for "), Arg1), ", "), Arg2),
3533                 " at line "), Arg3), Debug)
3534
3535    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3536                 Arg0, Arg1, Arg2, Arg3)
3537
3538    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3539                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3540
3541    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3542
3543iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3544ASL parse tree before the AML code is generated. This allows blocks of
3545ASL code to be removed in order to help locate and identify problem
3546devices and/or code. David E. Box.
3547
3548AcpiExec: Added support (-fi) for an optional namespace object
3549initialization file. This file specifies initial values for namespace
3550objects as necessary for debugging and testing different ASL code paths
3551that may be taken as a result of BIOS options.
3552
3553
35542) Overview of symbolic operator support for ASL (ASL+)
3555-------------------------------------------------------
3556
3557As an extension to the ASL language, iASL implements support for symbolic
3558(C-style) operators for math and logical expressions. This can greatly
3559simplify ASL code as well as improve both readability and
3560maintainability. These language extensions can exist concurrently with
3561all legacy ASL code and expressions.
3562
3563The symbolic extensions are 100% compatible with existing AML
3564interpreters, since no new AML opcodes are created. To implement the
3565extensions, the iASL compiler transforms the symbolic expressions into
3566the legacy ASL/AML equivalents at compile time.
3567
3568Full symbolic expressions are supported, along with the standard C
3569precedence and associativity rules.
3570
3571Full disassembler support for the symbolic expressions is provided, and
3572creates an automatic migration path for existing ASL code to ASL+ code
3573via the disassembly process. By default, the disassembler now emits ASL+
3574code with symbolic expressions. An option (-dl) is provided to force the
3575disassembler to emit legacy ASL code if desired.
3576
3577Below is the complete list of the currently supported symbolic operators
3578with examples. See the iASL User Guide for additional information.
3579
3580
3581ASL+ Syntax      Legacy ASL Equivalent
3582-----------      ---------------------
3583
3584    // Math operators
3585
3586Z = X + Y        Add (X, Y, Z)
3587Z = X - Y        Subtract (X, Y, Z)
3588Z = X * Y        Multiply (X, Y, Z)
3589Z = X / Y        Divide (X, Y, , Z)
3590Z = X % Y        Mod (X, Y, Z)
3591Z = X << Y       ShiftLeft (X, Y, Z)
3592Z = X >> Y       ShiftRight (X, Y, Z)
3593Z = X & Y        And (X, Y, Z)
3594Z = X | Y        Or (X, Y, Z)
3595Z = X ^ Y        Xor (X, Y, Z)
3596Z = ~X           Not (X, Z)
3597X++              Increment (X)
3598X--              Decrement (X)
3599
3600    // Logical operators
3601
3602(X == Y)         LEqual (X, Y)
3603(X != Y)         LNotEqual (X, Y)
3604(X < Y)          LLess (X, Y)
3605(X > Y)          LGreater (X, Y)
3606(X <= Y)         LLessEqual (X, Y)
3607(X >= Y)         LGreaterEqual (X, Y)
3608(X && Y)         LAnd (X, Y)
3609(X || Y)         LOr (X, Y)
3610(!X)             LNot (X)
3611
3612    // Assignment and compound assignment operations
3613
3614X = Y           Store (Y, X)
3615X += Y          Add (X, Y, X)
3616X -= Y          Subtract (X, Y, X)
3617X *= Y          Multiply (X, Y, X)
3618X /= Y          Divide (X, Y, , X)
3619X %= Y          Mod (X, Y, X)
3620X <<= Y         ShiftLeft (X, Y, X)
3621X >>= Y         ShiftRight (X, Y, X)
3622X &= Y          And (X, Y, X)
3623X |= Y          Or (X, Y, X)
3624X ^= Y          Xor (X, Y, X)
3625
3626
36273) ASL+ Examples:
3628-----------------
3629
3630Legacy ASL:
3631        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3632            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
36330x03FB),
3634            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3635        {
3636            And (MEMB, 0xFFFFFFF0, SRMB)
3637            Store (MEMB, Local2)
3638            Store (PDBM, Local1)
3639            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3640            Store (SRMB, MEMB)
3641            Or (PDBM, 0x02, PDBM)
3642        }
3643
3644ASL+ version:
3645        If (((R510 & 0x03FB) == 0x02E0) ||
3646            ((R520 & 0x03FB) == 0x02E0) ||
3647            ((R530 & 0x03FB) == 0x02E0) ||
3648            ((R540 & 0x03FB) == 0x02E0))
3649        {
3650            SRMB = (MEMB & 0xFFFFFFF0)
3651            Local2 = MEMB
3652            Local1 = PDBM
3653            PDBM &= 0xFFFFFFFFFFFFFFF9
3654            MEMB = SRMB
3655            PDBM |= 0x02
3656        }
3657
3658Legacy ASL:
3659        Store (0x1234, Local1)
3660        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3661        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3662        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3663        Store (Index (PKG1, 0x03), Local6)
3664        Store (Add (Local3, Local2), Debug)
3665        Add (Local1, 0x0F, Local2)
3666        Add (Local1, Multiply (Local2, Local3), Local2)
3667        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3668
3669ASL+ version:
3670        Local1 = 0x1234
3671        Local3 = (((Local1 + TEST) + 0x20) * Local2)
3672        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3673        Local3 = (Local1 + (TEST + (0x20 * Local2)))
3674        Local6 = Index (PKG1, 0x03)
3675        Debug = (Local3 + Local2)
3676        Local2 = (Local1 + 0x0F)
3677        Local2 = (Local1 + (Local2 * Local3))
3678        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3679
3680
3681----------------------------------------
368226 September 2014. Summary of changes for version 20140926:
3683
36841) ACPICA kernel-resident subsystem:
3685
3686Updated the GPIO operation region handler interface (GeneralPurposeIo).
3687In order to support GPIO Connection objects with multiple pins, along
3688with the related Field objects, the following changes to the interface
3689have been made: The Address is now defined to be the offset in bits of
3690the field unit from the previous invocation of a Connection. It can be
3691viewed as a "Pin Number Index" into the connection resource descriptor.
3692The BitWidth is the exact bit width of the field. It is usually one bit,
3693but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3694additional information and examples.
3695
3696GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3697corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3698by the firmware), so that they cannot fire until they are enabled via
3699AcpiUpdateAllGpes. Rafael J. Wysocki.
3700
3701Added a new return flag for the Event/GPE status interfaces --
3702AcpiGetEventStatus and AcpiGetGpeStatus. The new
3703ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3704GPE currently has a handler associated with it, and can thus actually
3705affect the system. Lv Zheng.
3706
3707Example Code and Data Size: These are the sizes for the OS-independent
3708acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3709debug version of the code includes the debug output trace mechanism and
3710has a much larger code and data size.
3711
3712  Current Release:
3713    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3714    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3715  Previous Release:
3716    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3717    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3718
37192) iASL Compiler/Disassembler and Tools:
3720
3721iASL: Fixed a memory allocation/free regression introduced in 20140828
3722that could cause the compiler to crash. This was introduced inadvertently
3723during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
37241113.
3725
3726iASL: Removed two error messages that have been found to create false
3727positives, until they can be fixed and fully validated (ACPICA BZ 1112):
37281) Illegal forward reference within a method
37292) Illegal reference across two methods
3730
3731iASL: Implemented a new option (-lm) to create a hardware mapping file
3732that summarizes all GPIO, I2C, SPI, and UART connections. This option
3733works for both the compiler and disassembler. See the iASL compiler user
3734guide for additional information and examples (section 6.4.6).
3735
3736AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3737version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3738a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3739
3740AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3741unless STDIN is actually a terminal. Assists with batch-mode processing.
3742ACPICA BZ 1114.
3743
3744Disassembler/AcpiHelp: Added another large group of recognized _HID
3745values.
3746
3747
3748----------------------------------------
374928 August 2014. Summary of changes for version 20140828:
3750
37511) ACPICA kernel-resident subsystem:
3752
3753Fixed a problem related to the internal use of the Timer() operator where
3754a 64-bit divide could cause an attempted link to a double-precision math
3755library. This divide is not actually necessary, so the code was
3756restructured to eliminate it. Lv Zheng.
3757
3758ACPI 5.1: Added support for the runtime validation of the _DSD package
3759(similar to the iASL support).
3760
3761ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3762SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
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:  98.8K Code, 27.3K Data, 126.1K Total
3771    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3772  Previous Release:
3773    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
3774    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3775
37762) iASL Compiler/Disassembler and Tools:
3777
3778AcpiExec: Fixed a problem on unix systems where the original terminal
3779state was not always properly restored upon exit. Seen when using the -v
3780option. ACPICA BZ 1104.
3781
3782iASL: Fixed a problem with the validation of the ranges/length within the
3783Memory24 resource descriptor. There was a boundary condition when the
3784range was equal to the (length -1) caused by the fact that these values
3785are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3786
3787Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3788polarity
3789flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3790is
3791now supported properly.
3792
3793ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3794in the disassembler, data table compiler, and table template generator.
3795
3796iASL: Added a requirement for Device() objects that one of either a _HID
3797or _ADR must exist within the scope of a Device, as per the ACPI
3798specification. Remove a similar requirement that was incorrectly in place
3799for the _DSD object.
3800
3801iASL: Added error detection for illegal named references within control
3802methods that would cause runtime failures. Now trapped as errors are: 1)
3803References to objects within a non-parent control method. 2) Forward
3804references (within a method) -- for control methods, AML interpreters use
3805a one-pass parse of control methods. ACPICA BZ 1008.
3806
3807iASL: Added error checking for dependencies related to the _PSx power
3808methods. ACPICA BZ 1029.
38091) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3810_PS3.
38112) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3812scope.
3813
3814iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3815deploying the existing object and string caches and adding new caches for
3816the table compiler.
3817
3818iASL: Split the huge parser source file into multiple subfiles to improve
3819manageability. Generation now requires the M4 macro preprocessor, which
3820is part of the Bison distribution on both unix and windows platforms.
3821
3822AcpiSrc: Fixed and removed all extraneous warnings generated during
3823entire ACPICA source code scan and/or conversion.
3824
3825
3826----------------------------------------
3827
382824 July 2014. Summary of changes for version 20140724:
3829
3830The ACPI 5.1 specification has been released and is available at:
3831http://uefi.org/specs/access
3832
3833
38340) ACPI 5.1 support in ACPICA:
3835
3836ACPI 5.1 is fully supported in ACPICA as of this release.
3837
3838New predefined names. Support includes iASL and runtime ACPICA
3839validation.
3840    _CCA (Cache Coherency Attribute).
3841    _DSD (Device-Specific Data). David Box.
3842
3843Modifications to existing ACPI tables. Support includes headers, iASL
3844Data Table compiler, disassembler, and the template generator.
3845    FADT - New fields and flags. Graeme Gregory.
3846    GTDT - One new subtable and new fields. Tomasz Nowicki.
3847    MADT - Two new subtables. Tomasz Nowicki.
3848    PCCT - One new subtable.
3849
3850Miscellaneous.
3851    New notification type for System Resource Affinity change events.
3852
3853
38541) ACPICA kernel-resident subsystem:
3855
3856Fixed a regression introduced in 20140627 where a fault can happen during
3857the deletion of Alias AML namespace objects. The problem affected both
3858the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3859
3860Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3861simple mechanism to enable wake GPEs that have no associated handler or
3862control method. Rafael Wysocki.
3863
3864Updated the AcpiEnableGpe interface to disallow the enable if there is no
3865handler or control method associated with the particular GPE. This will
3866help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3867
3868Updated GPE handling and dispatch by disabling the GPE before clearing
3869the status bit for edge-triggered GPEs. Lv Zheng.
3870
3871Added Timer() support to the AML Debug object. The current timer value is
3872now displayed with each invocation of (Store to) the debug object to
3873enable simple generation of execution times for AML code (method
3874execution for example.) ACPICA BZ 1093.
3875
3876Example Code and Data Size: These are the sizes for the OS-independent
3877acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3878debug version of the code includes the debug output trace mechanism and
3879has a much larger code and data size.
3880
3881  Current Release:
3882    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
3883    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3884  Previous Release:
3885    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3886    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3887
3888
38892) iASL Compiler/Disassembler and Tools:
3890
3891Fixed an issue with the recently added local printf implementation,
3892concerning width/precision specifiers that could cause incorrect output.
3893Lv Zheng. ACPICA BZ 1094.
3894
3895Disassembler: Added support to detect buffers that contain UUIDs and
3896disassemble them to an invocation of the ToUUID operator. Also emit
3897commented descriptions of known ACPI-related UUIDs.
3898
3899AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3900-u. Adds three new files.
3901
3902iASL: Update table compiler and disassembler for DMAR table changes that
3903were introduced in September 2013. With assistance by David Woodhouse.
3904
3905----------------------------------------
390627 June 2014. Summary of changes for version 20140627:
3907
39081) ACPICA kernel-resident subsystem:
3909
3910Formatted Output: Implemented local versions of standard formatted output
3911utilities such as printf, etc. Over time, it has been discovered that
3912there are in fact many portability issues with printf, and the addition
3913of this feature will fix/prevent these issues once and for all. Some
3914known issues are summarized below:
3915
39161) Output of 64-bit values is not portable. For example, UINT64 is %ull
3917for the Linux kernel and is %uI64 for some MSVC versions.
39182) Invoking printf consistently in a manner that is portable across both
391932-bit and 64-bit platforms is difficult at best in many situations.
39203) The output format for pointers varies from system to system (leading
3921zeros especially), and leads to inconsistent output from ACPICA across
3922platforms.
39234) Certain platform-specific printf formats may conflict with ACPICA use.
39245) If there is no local C library available, ACPICA now has local support
3925for printf.
3926
3927-- To address these printf issues in a complete manner, ACPICA now
3928directly implements a small subset of printf format specifiers, only
3929those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3930
3931Implemented support for ACPICA generation within the EFI environment.
3932Initially, the AcpiDump utility is supported in the UEFI shell
3933environment. Lv Zheng.
3934
3935Added a new external interface, AcpiLogError, to improve ACPICA
3936portability. This allows the host to redirect error messages from the
3937ACPICA utilities. Lv Zheng.
3938
3939Added and deployed new OSL file I/O interfaces to improve ACPICA
3940portability:
3941  AcpiOsOpenFile
3942  AcpiOsCloseFile
3943  AcpiOsReadFile
3944  AcpiOsWriteFile
3945  AcpiOsGetFileOffset
3946  AcpiOsSetFileOffset
3947There are C library implementations of these functions in the new file
3948service_layers/oslibcfs.c -- however, the functions can be implemented by
3949the local host in any way necessary. Lv Zheng.
3950
3951Implemented a mechanism to disable/enable ACPI table checksum validation
3952at runtime. This can be useful when loading tables very early during OS
3953initialization when it may not be possible to map the entire table in
3954order to compute the checksum. Lv Zheng.
3955
3956Fixed a buffer allocation issue for the Generic Serial Bus support.
3957Originally, a fixed buffer length was used. This change allows for
3958variable-length buffers based upon the protocol indicated by the field
3959access attributes. Reported by Lan Tianyu. Lv Zheng.
3960
3961Fixed a problem where an object detached from a namespace node was not
3962properly terminated/cleared and could cause a circular list problem if
3963reattached. ACPICA BZ 1063. David Box.
3964
3965Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3966
3967Fixed a possible memory leak in an error return path within the function
3968AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3969
3970Example Code and Data Size: These are the sizes for the OS-independent
3971acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3972debug version of the code includes the debug output trace mechanism and
3973has a much larger code and data size.
3974
3975  Current Release:
3976    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3977    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3978  Previous Release:
3979    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3980    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3981
3982
39832) iASL Compiler/Disassembler and Tools:
3984
3985Disassembler: Add dump of ASCII equivalent text within a comment at the
3986end of each line of the output for the Buffer() ASL operator.
3987
3988AcpiDump: Miscellaneous changes:
3989  Fixed repetitive table dump in -n mode.
3990  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
3991the ACPI 2.0 GUID fails.
3992
3993iASL: Fixed a problem where the compiler could fault if incorrectly given
3994an acpidump output file as input. ACPICA BZ 1088. David Box.
3995
3996AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
3997they are invoked without any arguments.
3998
3999Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
40001086. Colin Ian King.
4001
4002Disassembler: Cleaned up a block of code that extracts a parent Op
4003object. Added a comment that explains that the parent is guaranteed to be
4004valid in this case. ACPICA BZ 1069.
4005
4006
4007----------------------------------------
400824 April 2014. Summary of changes for version 20140424:
4009
40101) ACPICA kernel-resident subsystem:
4011
4012Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4013Some of these tables are known to contain a trailing NULL entry. Lv
4014Zheng.
4015
4016Removed an extraneous error message for the case where there are a large
4017number of system GPEs (> 124). This was the "32-bit FADT register is too
4018long to convert to GAS struct" message, which is irrelevant for GPEs
4019since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4020(limited capacity) GAS bit length. Also, several changes to ensure proper
4021support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4022internally.
4023
4024Implemented and deployed additional configuration support for the public
4025ACPICA external interfaces. Entire classes of interfaces can now be
4026easily modified or configured out, replaced by stubbed inline functions
4027by default. Lv Zheng.
4028
4029Moved all public ACPICA runtime configuration globals to the public
4030ACPICA external interface file for convenience. Also, removed some
4031obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4032
4033Documentation: Added a new section to the ACPICA reference describing the
4034maximum number of GPEs that can be supported by the FADT-defined GPEs in
4035block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4036reference.
4037
4038Example Code and Data Size: These are the sizes for the OS-independent
4039acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4040debug version of the code includes the debug output trace mechanism and
4041has a much larger code and data size.
4042
4043  Current Release:
4044    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4045    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4046  Previous Release:
4047    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4048    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4049
4050
40512) iASL Compiler/Disassembler and Tools:
4052
4053iASL and disassembler: Add full support for the LPIT table (Low Power
4054Idle Table). Includes support in the disassembler, data table compiler,
4055and template generator.
4056
4057AcpiDump utility:
40581) Add option to force the use of the RSDT (over the XSDT).
40592) Improve validation of the RSDP signature (use 8 chars instead of 4).
4060
4061iASL: Add check for predefined packages that are too large.  For
4062predefined names that contain subpackages, check if each subpackage is
4063too large. (Check for too small already exists.)
4064
4065Debugger: Updated the GPE command (which simulates a GPE by executing the
4066GPE code paths in ACPICA). The GPE device is now optional, and defaults
4067to the GPE 0/1 FADT-defined blocks.
4068
4069Unix application OSL: Update line-editing support. Add additional error
4070checking and take care not to reset terminal attributes on exit if they
4071were never set. This should help guarantee that the terminal is always
4072left in the previous state on program exit.
4073
4074
4075----------------------------------------
407625 March 2014. Summary of changes for version 20140325:
4077
40781) ACPICA kernel-resident subsystem:
4079
4080Updated the auto-serialize feature for control methods. This feature
4081automatically serializes all methods that create named objects in order
4082to prevent runtime errors. The update adds support to ignore the
4083currently executing AML SyncLevel when invoking such a method, in order
4084to prevent disruption of any existing SyncLevel priorities that may exist
4085in the AML code. Although the use of SyncLevels is relatively rare, this
4086change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4087appear on some machines starting with the 20140214 release.
4088
4089Added a new external interface to allow the host to install ACPI tables
4090very early, before the namespace is even created. AcpiInstallTable gives
4091the host additional flexibility for ACPI table management. Tables can be
4092installed directly by the host as if they had originally appeared in the
4093XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
4094(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4095with additional internal restructuring and cleanup. See the ACPICA
4096Reference for interface details. Lv Zheng.
4097
4098Added validation of the checksum for all incoming dynamically loaded
4099tables (via external interfaces or via AML Load/LoadTable operators). Lv
4100Zheng.
4101
4102Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4103and GPE handler removal. Restructured calls to eliminate possible race
4104conditions. Lv Zheng.
4105
4106Added a warning for the use/execution of the ASL/AML Unload (table)
4107operator. This will help detect and identify machines that use this
4108operator if and when it is ever used. This operator has never been seen
4109in the field and the usage model and possible side-effects of the drastic
4110runtime action of a full table removal are unknown.
4111
4112Reverted the use of #pragma push/pop which was introduced in the 20140214
4113release. It appears that push and pop are not implemented by enough
4114compilers to make the use of this feature feasible for ACPICA at this
4115time. However, these operators may be deployed in a future ACPICA
4116release.
4117
4118Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4119handler interfaces.
4120
4121Source code generation:
41221) Disabled the use of the "strchr" macro for the gcc-specific
4123generation. For some versions of gcc, this macro can periodically expose
4124a compiler bug which in turn causes compile-time error(s).
41252) Added support for PPC64 compilation. Colin Ian King.
4126
4127Example Code and Data Size: These are the sizes for the OS-independent
4128acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4129debug version of the code includes the debug output trace mechanism and
4130has a much larger code and data size.
4131
4132  Current Release:
4133    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4134    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4135  Previous Release:
4136    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4137    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4138
4139
41402) iASL Compiler/Disassembler and Tools:
4141
4142Disassembler: Added several new features to improve the readability of
4143the resulting ASL code. Extra information is emitted within comment
4144fields in the ASL code:
41451) Known _HID/_CID values are decoded to descriptive text.
41462) Standard values for the Notify() operator are decoded to descriptive
4147text.
41483) Target operands are expanded to full pathnames (in a comment) when
4149possible.
4150
4151Disassembler: Miscellaneous updates for extern() handling:
41521) Abort compiler if file specified by -fe option does not exist.
41532) Silence unnecessary warnings about argument count mismatches.
41543) Update warning messages concerning unresolved method externals.
41554) Emit "UnknownObj" keyword for externals whose type cannot be
4156determined.
4157
4158AcpiHelp utility:
41591) Added the -a option to display both the ASL syntax and the AML
4160encoding for an input ASL operator. This effectively displays all known
4161information about an ASL operator with one AcpiHelp invocation.
41622) Added substring match support (similar to a wildcard) for the -i
4163(_HID/PNP IDs) option.
4164
4165iASL/Disassembler: Since this tool does not yet support execution on big-
4166endian machines, added detection of endianness and an error message if
4167execution is attempted on big-endian. Support for big-endian within iASL
4168is a feature that is on the ACPICA to-be-done list.
4169
4170AcpiBin utility:
41711) Remove option to extract binary files from an acpidump; this function
4172is made obsolete by the AcpiXtract utility.
41732) General cleanup of open files and allocated buffers.
4174
4175
4176----------------------------------------
417714 February 2014. Summary of changes for version 20140214:
4178
41791) ACPICA kernel-resident subsystem:
4180
4181Implemented a new mechanism to proactively prevent problems with ill-
4182behaved reentrant control methods that create named ACPI objects. This
4183behavior is illegal as per the ACPI specification, but is nonetheless
4184frequently seen in the field. Previously, this could lead to an
4185AE_ALREADY_EXISTS exception if the method was actually entered by more
4186than one thread. This new mechanism detects such methods at table load
4187time and marks them "serialized" to prevent reentrancy. A new global
4188option, AcpiGbl_AutoSerializeMethods, has been added to disable this
4189feature if desired. This mechanism and global option obsoletes and
4190supersedes the previous AcpiGbl_SerializeAllMethods option.
4191
4192Added the "Windows 2013" string to the _OSI support. ACPICA will now
4193respond TRUE to _OSI queries with this string. It is the stated policy of
4194ACPICA to add new strings to the _OSI support as soon as possible after
4195they are defined. See the full ACPICA _OSI policy which has been added to
4196the utilities/utosi.c file.
4197
4198Hardened/updated the _PRT return value auto-repair code:
41991) Do not abort the repair on a single subpackage failure, continue to
4200check all subpackages.
42012) Add check for the minimum subpackage length (4).
42023) Properly handle extraneous NULL package elements.
4203
4204Added support to avoid the possibility of infinite loops when traversing
4205object linked lists. Never allow an infinite loop, even in the face of
4206corrupted object lists.
4207
4208ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4209pack(pop) directives to ensure that the ACPICA headers are independent of
4210compiler settings or other host headers.
4211
4212Example Code and Data Size: These are the sizes for the OS-independent
4213acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4214debug version of the code includes the debug output trace mechanism and
4215has a much larger code and data size.
4216
4217  Current Release:
4218    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4219    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4220  Previous Release:
4221    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4222    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4223
4224
42252) iASL Compiler/Disassembler and Tools:
4226
4227iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4228first reserved field was incorrectly forced to have a value of zero. This
4229change correctly forces the field to have a value of one. ACPICA BZ 1081.
4230
4231Debugger: Added missing support for the "Extra" and "Data" subobjects
4232when displaying object data.
4233
4234Debugger: Added support to display entire object linked lists when
4235displaying object data.
4236
4237iASL: Removed the obsolete -g option to obtain ACPI tables from the
4238Windows registry. This feature has been superseded by the acpidump
4239utility.
4240
4241
4242----------------------------------------
424314 January 2014. Summary of changes for version 20140114:
4244
42451) ACPICA kernel-resident subsystem:
4246
4247Updated all ACPICA copyrights and signons to 2014. Added the 2014
4248copyright to all module headers and signons, including the standard Linux
4249header. This affects virtually every file in the ACPICA core subsystem,
4250iASL compiler, all ACPICA utilities, and the test suites.
4251
4252Improved parameter validation for AcpiInstallGpeBlock. Added the
4253following checks:
42541) The incoming device handle refers to type ACPI_TYPE_DEVICE.
42552) There is not already a GPE block attached to the device.
4256Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4257device.
4258
4259Correctly support "references" in the ACPI_OBJECT. This change fixes the
4260support to allow references (namespace nodes) to be passed as arguments
4261to control methods via the evaluate object interface. This is probably
4262most useful for testing purposes, however.
4263
4264Improved support for 32/64 bit physical addresses in printf()-like
4265output. This change improves the support for physical addresses in printf
4266debug statements and other output on both 32-bit and 64-bit hosts. It
4267consistently outputs the appropriate number of bytes for each host. The
4268%p specifier is unsatisfactory since it does not emit uniform output on
4269all hosts/clib implementations (on some, leading zeros are not supported,
4270leading to difficult-to-read output).
4271
4272Example Code and Data Size: These are the sizes for the OS-independent
4273acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4274debug version of the code includes the debug output trace mechanism and
4275has a much larger code and data size.
4276
4277  Current 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  Previous Release:
4281    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4282    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4283
4284
42852) iASL Compiler/Disassembler and Tools:
4286
4287iASL: Fix a possible fault when using the Connection() operator. Fixes a
4288problem if the parent Field definition for the Connection operator refers
4289to an operation region that does not exist. ACPICA BZ 1064.
4290
4291AcpiExec: Load of local test tables is now optional. The utility has the
4292capability to load some various tables to test features of ACPICA.
4293However, there are enough of them that the output of the utility became
4294confusing. With this change, only the required local tables are displayed
4295(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4296line specification. This makes the default output simler and easier to
4297understand. The -el command line option restores the original behavior
4298for testing purposes.
4299
4300AcpiExec: Added support for overlapping operation regions. This change
4301expands the simulation of operation regions by supporting regions that
4302overlap within the given address space. Supports SystemMemory and
4303SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4304
4305AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4306allows AcpiExec to simulate these address spaces, similar to the current
4307support for SystemMemory and SystemIO.
4308
4309Debugger: Added new command to read/write/compare all namespace objects.
4310The command "test objects" will exercise the entire namespace by writing
4311new values to each data object, and ensuring that the write was
4312successful. The original value is then restored and verified.
4313
4314Debugger: Added the "test predefined" command. This change makes this
4315test public and puts it under the new "test" command. The test executes
4316each and every predefined name within the current namespace.
4317
4318
4319----------------------------------------
432018 December 2013. Summary of changes for version 20131218:
4321
4322Global note: The ACPI 5.0A specification was released this month. There
4323are no changes needed for ACPICA since this release of ACPI is an
4324errata/clarification release. The specification is available at
4325acpi.info.
4326
4327
43281) ACPICA kernel-resident subsystem:
4329
4330Added validation of the XSDT root table if it is present. Some older
4331platforms contain an XSDT that is ill-formed or otherwise invalid (such
4332as containing some or all entries that are NULL pointers). This change
4333adds a new function to validate the XSDT before actually using it. If the
4334XSDT is found to be invalid, ACPICA will now automatically fall back to
4335using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4336ACPICA and enhanced by Lv Zheng and Bob Moore.
4337
4338Added a runtime option to ignore the XSDT and force the use of the RSDT.
4339This change adds a runtime option that will force ACPICA to use the RSDT
4340instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4341requires that an XSDT be used instead of the RSDT, the XSDT has been
4342found to be corrupt or ill-formed on some machines. Lv Zheng.
4343
4344Added a runtime option to favor 32-bit FADT register addresses over the
434564-bit addresses. This change adds an option to favor 32-bit FADT
4346addresses when there is a conflict between the 32-bit and 64-bit versions
4347of the same register. The default behavior is to use the 64-bit version
4348in accordance with the ACPI specification. This can now be overridden via
4349the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4350
4351During the change above, the internal "Convert FADT" and "Verify FADT"
4352functions have been merged to simplify the code, making it easier to
4353understand and maintain. ACPICA BZ 933.
4354
4355Improve exception reporting and handling for GPE block installation.
4356Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4357status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4358
4359Added helper macros to extract bus/segment numbers from the HEST table.
4360This change adds two macros to extract the encoded bus and segment
4361numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4362Betty Dall <betty.dall@hp.com>
4363
4364Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4365by ACPICA. It is not a public macro, so it should have no effect on
4366existing OSV code. Lv Zheng.
4367
4368Example Code and Data Size: These are the sizes for the OS-independent
4369acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4370debug version of the code includes the debug output trace mechanism and
4371has a much larger code and data size.
4372
4373  Current Release:
4374    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4375    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4376  Previous Release:
4377    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4378    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4379
4380
43812) iASL Compiler/Disassembler and Tools:
4382
4383Disassembler: Improved pathname support for emitted External()
4384statements. This change adds full pathname support for external names
4385that have been resolved internally by the inclusion of additional ACPI
4386tables (via the iASL -e option). Without this change, the disassembler
4387can emit multiple externals for the same object, or it become confused
4388when the Scope() operator is used on an external object. Overall, greatly
4389improves the ability to actually recompile the emitted ASL code when
4390objects a referenced across multiple ACPI tables. Reported by Michael
4391Tsirkin (mst@redhat.com).
4392
4393Tests/ASLTS: Updated functional control suite to execute with no errors.
4394David Box. Fixed several errors related to the testing of the interpreter
4395slack mode. Lv Zheng.
4396
4397iASL: Added support to detect names that are declared within a control
4398method, but are unused (these are temporary names that are only valid
4399during the time the method is executing). A remark is issued for these
4400cases. ACPICA BZ 1022.
4401
4402iASL: Added full support for the DBG2 table. Adds full disassembler,
4403table compiler, and template generator support for the DBG2 table (Debug
4404Port 2 table).
4405
4406iASL: Added full support for the PCCT table, update the table definition.
4407Updates the PCCT table definition in the actbl3.h header and adds table
4408compiler and template generator support.
4409
4410iASL: Added an option to emit only error messages (no warnings/remarks).
4411The -ve option will enable only error messages, warnings and remarks are
4412suppressed. This can simplify debugging when only the errors are
4413important, such as when an ACPI table is disassembled and there are many
4414warnings and remarks -- but only the actual errors are of real interest.
4415
4416Example ACPICA code (source/tools/examples): Updated the example code so
4417that it builds to an actual working program, not just example code. Added
4418ACPI tables and execution of an example control method in the DSDT. Added
4419makefile support for Unix generation.
4420
4421
4422----------------------------------------
442315 November 2013. Summary of changes for version 20131115:
4424
4425This release is available at https://acpica.org/downloads
4426
4427
44281) ACPICA kernel-resident subsystem:
4429
4430Resource Manager: Fixed loop termination for the "get AML length"
4431function. The loop previously had an error termination on a NULL resource
4432pointer, which can never happen since the loop simply increments a valid
4433resource pointer. This fix changes the loop to terminate with an error on
4434an invalid end-of-buffer condition. The problem can be seen as an
4435infinite loop by callers to AcpiSetCurrentResources with an invalid or
4436corrupted resource descriptor, or a resource descriptor that is missing
4437an END_TAG descriptor. Reported by Dan Carpenter
4438<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4439
4440Table unload and ACPICA termination: Delete all attached data objects
4441during namespace node deletion. This fix updates namespace node deletion
4442to delete the entire list of attached objects (attached via
4443AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
44441024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4445
4446ACPICA termination: Added support to delete all objects attached to the
4447root namespace node. This fix deletes any and all objects that have been
4448attached to the root node via AcpiAttachData. Previously, none of these
4449objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4450
4451Debug output: Do not emit the function nesting level for the in-kernel
4452build. The nesting level is really only useful during a single-thread
4453execution. Therefore, only enable this output for the AcpiExec utility.
4454Also, only emit the thread ID when executing under AcpiExec (Context
4455switches are still always detected and a message is emitted). ACPICA BZ
4456972.
4457
4458Example Code and Data Size: These are the sizes for the OS-independent
4459acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4460debug version of the code includes the debug output trace mechanism and
4461has a much larger code and data size.
4462
4463  Current Release:
4464    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4465    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4466  Previous Release:
4467    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4468    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4469
4470
44712) iASL Compiler/Disassembler and Tools:
4472
4473AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4474correct portable POSIX header for terminal control functions.
4475
4476Disassembler: Fixed control method invocation issues related to the use
4477of the CondRefOf() operator. The problem is seen in the disassembly where
4478control method invocations may not be disassembled properly if the
4479control method name has been used previously as an argument to CondRefOf.
4480The solution is to not attempt to emit an external declaration for the
4481CondRefOf target (it is not necessary in the first place). This prevents
4482disassembler object type confusion. ACPICA BZ 988.
4483
4484Unix Makefiles: Added an option to disable compiler optimizations and the
4485_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4486with optimizations (reportedly, gcc 4.4 for example). This change adds a
4487command line option for make (NOOPT) that disables all compiler
4488optimizations and the _FORTIFY_SOURCE compiler flag. The default
4489optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
44901034. Lv Zheng, Bob Moore.
4491
4492Tests/ASLTS: Added options to specify individual test cases and modes.
4493This allows testers running aslts.sh to optionally specify individual
4494test modes and test cases. Also added an option to disable the forced
4495generation of the ACPICA tools from source if desired. Lv Zheng.
4496
4497----------------------------------------
449827 September 2013. Summary of changes for version 20130927:
4499
4500This release is available at https://acpica.org/downloads
4501
4502
45031) ACPICA kernel-resident subsystem:
4504
4505Fixed a problem with store operations to reference objects. This change
4506fixes a problem where a Store operation to an ArgX object that contained
4507a
4508reference to a field object did not complete the automatic dereference
4509and
4510then write to the actual field object. Instead, the object type of the
4511field object was inadvertently changed to match the type of the source
4512operand. The new behavior will actually write to the field object (buffer
4513field or field unit), thus matching the correct ACPI-defined behavior.
4514
4515Implemented support to allow the host to redefine individual OSL
4516prototypes. This change enables the host to redefine OSL prototypes found
4517in the acpiosxf.h file. This allows the host to implement OSL interfaces
4518with a macro or inlined function. Further, it allows the host to add any
4519additional required modifiers such as __iomem, __init, __exit, etc., as
4520necessary on a per-interface basis. Enables maximum flexibility for the
4521OSL interfaces. Lv Zheng.
4522
4523Hardcoded the access width for the FADT-defined reset register. The ACPI
4524specification requires the reset register width to be 8 bits. ACPICA now
4525hardcodes the width to 8 and ignores the FADT width value. This provides
4526compatibility with other ACPI implementations that have allowed BIOS code
4527with bad register width values to go unnoticed. Matthew Garett, Bob
4528Moore,
4529Lv Zheng.
4530
4531Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4532used
4533in the OSL header (acpiosxf). The change modifies the position of this
4534macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4535build issues if the OSL defines the implementation of the interface to be
4536an inline stub function. Lv Zheng.
4537
4538Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4539initialization interfaces. This change adds a new macro for the main init
4540and terminate external interfaces in order to support hosts that require
4541additional or different processing for these functions. Changed from
4542ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4543Zheng, Bob Moore.
4544
4545Cleaned up the memory allocation macros for configurability. In the
4546common
4547case, the ACPI_ALLOCATE and related macros now resolve directly to their
4548respective AcpiOs* OSL interfaces. Two options:
45491) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4550default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
45512) For AcpiExec (and for debugging), the macros can optionally be
4552resolved
4553to the local ACPICA interfaces that track each allocation (local tracking
4554is used to immediately detect memory leaks).
4555Lv Zheng.
4556
4557Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4558to predefine this macro to either TRUE or FALSE during the system build.
4559
4560Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4561
4562Example Code and Data Size: These are the sizes for the OS-independent
4563acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4564debug version of the code includes the debug output trace mechanism and
4565has a much larger code and data size.
4566
4567  Current Release:
4568    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4569    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4570  Previous Release:
4571    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4572    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4573
4574
45752) iASL Compiler/Disassembler and Tools:
4576
4577iASL: Implemented wildcard support for the -e option. This simplifies use
4578when there are many SSDTs that must be included to resolve external
4579method
4580declarations. ACPICA BZ 1041. Example:
4581    iasl -e ssdt*.dat -d dsdt.dat
4582
4583AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4584adds a portable module that implements full history and limited line
4585editing for Unix and Linux systems. It does not use readline() due to
4586portability issues. Instead it uses the POSIX termio interface to put the
4587terminal in raw input mode so that the various special keys can be
4588trapped
4589(such as up/down-arrow for history support and left/right-arrow for line
4590editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4591
4592AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4593one or more spaces. This provides compatible with early or different
4594versions of the AcpiDump utility. ACPICA BZ 1044.
4595
4596AcpiDump: Do not ignore tables that contain only an ACPI table header.
4597Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4598no other data. This change adds support to dump these tables. Any tables
4599shorter than the length of an ACPI table header remain in error (an error
4600message is emitted). Reported by Yi Li.
4601
4602Debugger: Echo actual command along with the "unknown command" message.
4603
4604----------------------------------------
460523 August 2013. Summary of changes for version 20130823:
4606
46071) ACPICA kernel-resident subsystem:
4608
4609Implemented support for host-installed System Control Interrupt (SCI)
4610handlers. Certain ACPI functionality requires the host to handle raw
4611SCIs. For example, the "SCI Doorbell" that is defined for memory power
4612state support requires the host device driver to handle SCIs to examine
4613if the doorbell has been activated. Multiple SCI handlers can be
4614installed to allow for future expansion. New external interfaces are
4615AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4616details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4617
4618Operation region support: Never locally free the handler "context"
4619pointer. This change removes some dangerous code that attempts to free
4620the handler context pointer in some (rare) circumstances. The owner of
4621the handler owns this pointer and the ACPICA code should never touch it.
4622Although not seen to be an issue in any kernel, it did show up as a
4623problem (fault) under AcpiExec. Also, set the internal storage field for
4624the context pointer to zero when the region is deactivated, simply for
4625sanity. David Box. ACPICA BZ 1039.
4626
4627AcpiRead: On error, do not modify the return value target location. If an
4628error happens in the middle of a split 32/32 64-bit I/O operation, do not
4629modify the target of the return value pointer. Makes the code consistent
4630with the rest of ACPICA. Bjorn Helgaas.
4631
4632Example Code and Data Size: These are the sizes for the OS-independent
4633acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4634debug version of the code includes the debug output trace mechanism and
4635has a much larger code and data size.
4636
4637  Current Release:
4638    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4639    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4640  Previous Release:
4641    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4642    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4643
4644
46452) iASL Compiler/Disassembler and Tools:
4646
4647AcpiDump: Implemented several new features and fixed some problems:
46481) Added support to dump the RSDP, RSDT, and XSDT tables.
46492) Added support for multiple table instances (SSDT, UEFI).
46503) Added option to dump "customized" (overridden) tables (-c).
46514) Fixed a problem where some table filenames were improperly
4652constructed.
46535) Improved some error messages, removed some unnecessary messages.
4654
4655iASL: Implemented additional support for disassembly of ACPI tables that
4656contain invocations of external control methods. The -fe<file> option
4657allows the import of a file that specifies the external methods along
4658with the required number of arguments for each -- allowing for the
4659correct disassembly of the table. This is a workaround for a limitation
4660of AML code where the disassembler often cannot determine the number of
4661arguments required for an external control method and generates incorrect
4662ASL code. See the iASL reference for details. ACPICA BZ 1030.
4663
4664Debugger: Implemented a new command (paths) that displays the full
4665pathnames (namepaths) and object types of all objects in the namespace.
4666This is an alternative to the namespace command.
4667
4668Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4669mechanism and any installed handlers.
4670
4671iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4672This can occur if there are too many parent prefixes in a namepath (for
4673example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4674
4675Application OSLs: Set the return value for the PCI read functions. These
4676functions simply return AE_OK, but should set the return value to zero
4677also. This change implements this. ACPICA BZ 1038.
4678
4679Debugger: Prevent possible command line buffer overflow. Increase the
4680size of a couple of the debugger line buffers, and ensure that overflow
4681cannot happen. ACPICA BZ 1037.
4682
4683iASL: Changed to abort immediately on serious errors during the parsing
4684phase. Due to the nature of ASL, there is no point in attempting to
4685compile these types of errors, and they typically end up causing a
4686cascade of hundreds of errors which obscure the original problem.
4687
4688----------------------------------------
468925 July 2013. Summary of changes for version 20130725:
4690
46911) ACPICA kernel-resident subsystem:
4692
4693Fixed a problem with the DerefOf operator where references to FieldUnits
4694and BufferFields incorrectly returned the parent object, not the actual
4695value of the object. After this change, a dereference of a FieldUnit
4696reference results in a read operation on the field to get the value, and
4697likewise, the appropriate BufferField value is extracted from the target
4698buffer.
4699
4700Fixed a problem where the _WAK method could cause a fault under these
4701circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4702method returned no value. The problem is rarely seen because most kernels
4703run ACPICA in slack mode.
4704
4705For the DerefOf operator, a fatal error now results if an attempt is made
4706to dereference a reference (created by the Index operator) to a NULL
4707package element. Provides compatibility with other ACPI implementations,
4708and this behavior will be added to a future version of the ACPI
4709specification.
4710
4711The ACPI Power Management Timer (defined in the FADT) is now optional.
4712This provides compatibility with other ACPI implementations and will
4713appear in the next version of the ACPI specification. If there is no PM
4714Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4715zero in the FADT indicates no PM timer.
4716
4717Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4718allows the host to globally enable/disable all vendor strings, all
4719feature strings, or both. Intended to be primarily used for debugging
4720purposes only. Lv Zheng.
4721
4722Expose the collected _OSI data to the host via a global variable. This
4723data tracks the highest level vendor ID that has been invoked by the BIOS
4724so that the host (and potentially ACPICA itself) can change behaviors
4725based upon the age of the BIOS.
4726
4727Example Code and Data Size: These are the sizes for the OS-independent
4728acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4729debug version of the code includes the debug output trace mechanism and
4730has a much larger code and data size.
4731
4732  Current Release:
4733    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4734    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4735  Previous Release:
4736    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4737    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4738
4739
47402) iASL Compiler/Disassembler and Tools:
4741
4742iASL: Created the following enhancements for the -so option (create
4743offset table):
47441)Add offsets for the last nameseg in each namepath for every supported
4745object type
47462)Add support for Processor, Device, Thermal Zone, and Scope objects
47473)Add the actual AML opcode for the parent object of every supported
4748object type
47494)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4750
4751Disassembler: Emit all unresolved external symbols in a single block.
4752These are external references to control methods that could not be
4753resolved, and thus, the disassembler had to make a guess at the number of
4754arguments to parse.
4755
4756iASL: The argument to the -T option (create table template) is now
4757optional. If not specified, the default table is a DSDT, typically the
4758most common case.
4759
4760----------------------------------------
476126 June 2013. Summary of changes for version 20130626:
4762
47631) ACPICA kernel-resident subsystem:
4764
4765Fixed an issue with runtime repair of the _CST object. Null or invalid
4766elements were not always removed properly. Lv Zheng.
4767
4768Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4769FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4770the maximum number of GPEs is 1016. Use of multiple GPE block devices
4771makes the system-wide number of GPEs essentially unlimited.
4772
4773Example Code and Data Size: These are the sizes for the OS-independent
4774acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4775debug version of the code includes the debug output trace mechanism and
4776has a much larger code and data size.
4777
4778  Current Release:
4779    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4780    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4781  Previous Release:
4782    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4783    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4784
4785
47862) iASL Compiler/Disassembler and Tools:
4787
4788Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4789hosts. Now supports Linux, FreeBSD, and Windows.
4790
4791Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4792Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4793
4794iASL/Preprocessor: Implemented full support for nested
4795#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4796
4797Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4798max. The original purpose of this constraint was to limit the amount of
4799debug output. However, the string function in question (UtPrintString) is
4800now used for the disassembler also, where 256 bytes is insufficient.
4801Reported by RehabMan@GitHub.
4802
4803iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4804tables. ACPICA BZ 999. Lv Zheng.
4805
4806iASL: Fixed a couple of error exit issues that could result in a "Could
4807not delete <file>" message during ASL compilation.
4808
4809AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4810the actual signatures for these tables are "FACP" and "APIC",
4811respectively.
4812
4813AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4814tables are allowed to have multiple instances.
4815
4816----------------------------------------
481717 May 2013. Summary of changes for version 20130517:
4818
48191) ACPICA kernel-resident subsystem:
4820
4821Fixed a regression introduced in version 20130328 for _INI methods. This
4822change fixes a problem introduced in 20130328 where _INI methods are no
4823longer executed properly because of a memory block that was not
4824initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4825<tomasz.nowicki@linaro.org>.
4826
4827Fixed a possible problem with the new extended sleep registers in the
4828ACPI
48295.0 FADT. Do not use these registers (even if populated) unless the HW-
4830reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
48311020. Lv Zheng.
4832
4833Implemented return value repair code for _CST predefined objects: Sort
4834the
4835list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4836
4837Implemented a debug-only option to disable loading of SSDTs from the
4838RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4839ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4840acglobal.h - ACPICA BZ 1005. Lv Zheng.
4841
4842Fixed some issues in the ACPICA initialization and termination code:
4843Tomasz Nowicki <tomasz.nowicki@linaro.org>
48441) Clear events initialized flag upon event component termination. ACPICA
4845BZ 1013.
48462) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
48473) Delete global lock pending lock during termination. ACPICA BZ 1012.
48484) Clear debug buffer global on termination to prevent possible multiple
4849delete. ACPICA BZ 1010.
4850
4851Standardized all switch() blocks across the entire source base. After
4852many
4853years, different formatting for switch() had crept in. This change makes
4854the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4855
4856Split some files to enhance ACPICA modularity and configurability:
48571) Split buffer dump routines into utilities/utbuffer.c
48582) Split internal error message routines into utilities/uterror.c
48593) Split table print utilities into tables/tbprint.c
48604) Split iASL command-line option processing into asloptions.c
4861
4862Makefile enhancements:
48631) Support for all new files above.
48642) Abort make on errors from any subcomponent. Chao Guan.
48653) Add build support for Apple Mac OS X. Liang Qi.
4866
4867Example Code and Data Size: These are the sizes for the OS-independent
4868acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4869debug version of the code includes the debug output trace mechanism and
4870has a much larger code and data size.
4871
4872  Current Release:
4873    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4874    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4875  Previous Release:
4876    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4877    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4878
4879
48802) iASL Compiler/Disassembler and Tools:
4881
4882New utility: Implemented an easily portable version of the acpidump
4883utility to extract ACPI tables from the system (or a file) in an ASCII
4884hex
4885dump format. The top-level code implements the various command line
4886options, file I/O, and table dump routines. To port to a new host, only
4887three functions need to be implemented to get tables -- since this
4888functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4889the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
48901) The Windows version obtains the ACPI tables from the Registry.
48912) The Linux version is under development.
48923) Other hosts - If an OS-dependent module is submitted, it will be
4893distributed with ACPICA.
4894
4895iASL: Fixed a regression for -D preprocessor option (define symbol). A
4896restructuring/change to the initialization sequence caused this option to
4897no longer work properly.
4898
4899iASL: Implemented a mechanism to disable specific warnings and remarks.
4900Adds a new command line option, "-vw <messageid> as well as "#pragma
4901disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4902
4903iASL: Fix for too-strict package object validation. The package object
4904validation for return values from the predefined names is a bit too
4905strict, it does not allow names references within the package (which will
4906be resolved at runtime.) These types of references cannot be validated at
4907compile time. This change ignores named references within package objects
4908for names that return or define static packages.
4909
4910Debugger: Fixed the 80-character command line limitation for the History
4911command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4912
4913iASL: Added control method and package support for the -so option
4914(generates AML offset table for BIOS support.)
4915
4916iASL: issue a remark if a non-serialized method creates named objects. If
4917a thread blocks within the method for any reason, and another thread
4918enters the method, the method will fail because an attempt will be made
4919to
4920create the same (named) object twice. In this case, issue a remark that
4921the method should be marked serialized. NOTE: may become a warning later.
4922ACPICA BZ 909.
4923
4924----------------------------------------
492518 April 2013. Summary of changes for version 20130418:
4926
49271) ACPICA kernel-resident subsystem:
4928
4929Fixed a possible buffer overrun during some rare but specific field unit
4930read operations. This overrun can only happen if the DSDT version is 1 --
4931meaning that all AML integers are 32 bits -- and the field length is
4932between 33 and 55 bits long. During the read, an internal buffer object
4933is
4934created for the field unit because the field is larger than an integer
4935(32
4936bits). However, in this case, the buffer will be incorrectly written
4937beyond the end because the buffer length is less than the internal
4938minimum
4939of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4940long, but a full 8 bytes will be written.
4941
4942Updated the Embedded Controller "orphan" _REG method support. This refers
4943to _REG methods under the EC device that have no corresponding operation
4944region. This is allowed by the ACPI specification. This update removes a
4945dependency on the existence an ECDT table. It will execute an orphan _REG
4946method as long as the operation region handler for the EC is installed at
4947the EC device node and not the namespace root. Rui Zhang (original
4948update), Bob Moore (update/integrate).
4949
4950Implemented run-time argument typechecking for all predefined ACPI names
4951(_STA, _BIF, etc.) This change performs object typechecking on all
4952incoming arguments for all predefined names executed via
4953AcpiEvaluateObject. This ensures that ACPI-related device drivers are
4954passing correct object types as well as the correct number of arguments
4955(therefore identifying any issues immediately). Also, the ASL/namespace
4956definition of the predefined name is checked against the ACPI
4957specification for the proper argument count. Adds one new file,
4958nsarguments.c
4959
4960Changed an exception code for the ASL UnLoad() operator. Changed the
4961exception code for the case where the input DdbHandle is invalid, from
4962AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4963
4964Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
4965global makefile. The use of this flag causes compiler errors on earlier
4966versions of GCC, so it has been removed for compatibility.
4967
4968Miscellaneous cleanup:
49691) Removed some unused/obsolete macros
49702) Fixed a possible memory leak in the _OSI support
49713) Removed an unused variable in the predefined name support
49724) Windows OSL: remove obsolete reference to a memory list field
4973
4974Example Code and Data Size: These are the sizes for the OS-independent
4975acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4976debug version of the code includes the debug output trace mechanism and
4977has a much larger code and data size.
4978
4979  Current Release:
4980    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4981    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4982  Previous Release:
4983    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4984    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4985
4986
49872) iASL Compiler/Disassembler and Tools:
4988
4989AcpiExec: Added installation of a handler for the SystemCMOS address
4990space. This prevents control method abort if a method accesses this
4991space.
4992
4993AcpiExec: Added support for multiple EC devices, and now install EC
4994operation region handler(s) at the actual EC device instead of the
4995namespace root. This reflects the typical behavior of host operating
4996systems.
4997
4998AcpiExec: Updated to ensure that all operation region handlers are
4999installed before the _REG methods are executed. This prevents a _REG
5000method from aborting if it accesses an address space has no handler.
5001AcpiExec installs a handler for every possible address space.
5002
5003Debugger: Enhanced the "handlers" command to display non-root handlers.
5004This change enhances the handlers command to display handlers associated
5005with individual devices throughout the namespace, in addition to the
5006currently supported display of handlers associated with the root
5007namespace
5008node.
5009
5010ASL Test Suite: Several test suite errors have been identified and
5011resolved, reducing the total error count during execution. Chao Guan.
5012
5013----------------------------------------
501428 March 2013. Summary of changes for version 20130328:
5015
50161) ACPICA kernel-resident subsystem:
5017
5018Fixed several possible race conditions with the internal object reference
5019counting mechanism. Some of the external ACPICA interfaces update object
5020reference counts without holding the interpreter or namespace lock. This
5021change adds a spinlock to protect reference count updates on the internal
5022ACPICA objects. Reported by and with assistance from Andriy Gapon
5023(avg@FreeBSD.org).
5024
5025FADT support: Removed an extraneous warning for very large GPE register
5026sets. This change removes a size mismatch warning if the legacy length
5027field for a GPE register set is larger than the 64-bit GAS structure can
5028accommodate. GPE register sets can be larger than the 255-bit width
5029limitation of the GAS structure. Linn Crosetto (linn@hp.com).
5030
5031_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5032return from this interface. Handles a possible timeout case if
5033ACPI_WAIT_FOREVER is modified by the host to be a value less than
5034"forever". Jung-uk Kim.
5035
5036Predefined name support: Add allowed/required argument type information
5037to
5038the master predefined info table. This change adds the infrastructure to
5039enable typechecking on incoming arguments for all predefined
5040methods/objects. It does not actually contain the code that will fully
5041utilize this information, this is still under development. Also condenses
5042some duplicate code for the predefined names into a new module,
5043utilities/utpredef.c
5044
5045Example Code and Data Size: These are the sizes for the OS-independent
5046acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5047debug version of the code includes the debug output trace mechanism and
5048has a much larger code and data size.
5049
5050  Previous Release:
5051    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5052    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5053  Current Release:
5054    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5055    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5056
5057
50582) iASL Compiler/Disassembler and Tools:
5059
5060iASL: Implemented a new option to simplify the development of ACPI-
5061related
5062BIOS code. Adds support for a new "offset table" output file. The -so
5063option will create a C table containing the AML table offsets of various
5064named objects in the namespace so that BIOS code can modify them easily
5065at
5066boot time. This can simplify BIOS runtime code by eliminating expensive
5067searches for "magic values", enhancing boot times and adding greater
5068reliability. With assistance from Lee Hamel.
5069
5070iASL: Allow additional predefined names to return zero-length packages.
5071Now, all predefined names that are defined by the ACPI specification to
5072return a "variable-length package of packages" are allowed to return a
5073zero length top-level package. This allows the BIOS to tell the host that
5074the requested feature is not supported, and supports existing BIOS/ASL
5075code and practices.
5076
5077iASL: Changed the "result not used" warning to an error. This is the case
5078where an ASL operator is effectively a NOOP because the result of the
5079operation is not stored anywhere. For example:
5080    Add (4, Local0)
5081There is no target (missing 3rd argument), nor is the function return
5082value used. This is potentially a very serious problem -- since the code
5083was probably intended to do something, but for whatever reason, the value
5084was not stored. Therefore, this issue has been upgraded from a warning to
5085an error.
5086
5087AcpiHelp: Added allowable/required argument types to the predefined names
5088info display. This feature utilizes the recent update to the predefined
5089names table (above).
5090
5091----------------------------------------
509214 February 2013. Summary of changes for version 20130214:
5093
50941) ACPICA Kernel-resident Subsystem:
5095
5096Fixed a possible regression on some hosts: Reinstated the safe return
5097macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5098evaluated only once. Although these macros are not needed for the ACPICA
5099code itself, they are often used by ACPI-related host device drivers
5100where
5101the safe feature may be necessary.
5102
5103Fixed several issues related to the ACPI 5.0 reduced hardware support
5104(SOC): Now ensure that if the platform declares itself as hardware-
5105reduced
5106via the FADT, the following functions become NOOPs (and always return
5107AE_OK) because ACPI is always enabled by definition on these machines:
5108  AcpiEnable
5109  AcpiDisable
5110  AcpiHwGetMode
5111  AcpiHwSetMode
5112
5113Dynamic Object Repair: Implemented additional runtime repairs for
5114predefined name return values. Both of these repairs can simplify code in
5115the related device drivers that invoke these methods:
51161) For the _STR and _MLS names, automatically repair/convert an ASCII
5117string to a Unicode buffer.
51182) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5119a
5120lone end tag descriptor in the following cases: A Return(0) was executed,
5121a null buffer was returned, or no object at all was returned (non-slack
5122mode only). Adds a new file, nsconvert.c
5123ACPICA BZ 998. Bob Moore, Lv Zheng.
5124
5125Resource Manager: Added additional code to prevent possible infinite
5126loops
5127while traversing corrupted or ill-formed resource template buffers. Check
5128for zero-length resource descriptors in all code that loops through
5129resource templates (the length field is used to index through the
5130template). This change also hardens the external AcpiWalkResources and
5131AcpiWalkResourceBuffer interfaces.
5132
5133Local Cache Manager: Enhanced the main data structure to eliminate an
5134unnecessary mechanism to access the next object in the list. Actually
5135provides a small performance enhancement for hosts that use the local
5136ACPICA cache manager. Jung-uk Kim.
5137
5138Example Code and Data Size: These are the sizes for the OS-independent
5139acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5140debug version of the code includes the debug output trace mechanism and
5141has a much larger code and data size.
5142
5143  Previous Release:
5144    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5145    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5146  Current Release:
5147    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5148    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5149
5150
51512) iASL Compiler/Disassembler and Tools:
5152
5153iASL/Disassembler: Fixed several issues with the definition of the ACPI
51545.0 RASF table (RAS Feature Table). This change incorporates late changes
5155that were made to the ACPI 5.0 specification.
5156
5157iASL/Disassembler: Added full support for the following new ACPI tables:
5158  1) The MTMR table (MID Timer Table)
5159  2) The VRTC table (Virtual Real Time Clock Table).
5160Includes header file, disassembler, table compiler, and template support
5161for both tables.
5162
5163iASL: Implemented compile-time validation of package objects returned by
5164predefined names. This new feature validates static package objects
5165returned by the various predefined names defined to return packages. Both
5166object types and package lengths are validated, for both parent packages
5167and sub-packages, if any. The code is similar in structure and behavior
5168to
5169the runtime repair mechanism within the AML interpreter and uses the
5170existing predefined name information table. Adds a new file, aslprepkg.c.
5171ACPICA BZ 938.
5172
5173iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5174This feature detects a binary file with a valid ACPI table header and
5175invokes the disassembler automatically. Eliminates the need to
5176specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5177
5178iASL/Disassembler: Added several warnings for the case where there are
5179unresolved control methods during the disassembly. This can potentially
5180cause errors when the output file is compiled, because the disassembler
5181assumes zero method arguments in these cases (it cannot determine the
5182actual number of arguments without resolution/definition of the method).
5183
5184Debugger: Added support to display all resources with a single command.
5185Invocation of the resources command with no arguments will now display
5186all
5187resources within the current namespace.
5188
5189AcpiHelp: Added descriptive text for each ACPICA exception code displayed
5190via the -e option.
5191
5192----------------------------------------
519317 January 2013. Summary of changes for version 20130117:
5194
51951) ACPICA Kernel-resident Subsystem:
5196
5197Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5198return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5199objects to return a package containing one integer, most BIOS code
5200returns
5201two integers and the previous code reflects that. However, we also need
5202to
5203support BIOS code that actually implements to the ACPI spec, and this
5204change reflects this.
5205
5206Fixed two issues with the ACPI_DEBUG_PRINT macros:
52071) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5208C compilers that require this support.
52092) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5210ACPI_DEBUG is already used by many of the various hosts.
5211
5212Updated all ACPICA copyrights and signons to 2013. Added the 2013
5213copyright to all module headers and signons, including the standard Linux
5214header. This affects virtually every file in the ACPICA core subsystem,
5215iASL compiler, all ACPICA utilities, and the test suites.
5216
5217Example Code and Data Size: These are the sizes for the OS-independent
5218acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5219debug version of the code includes the debug output trace mechanism and
5220has a much larger code and data size.
5221
5222  Previous Release:
5223    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5224    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5225  Current Release:
5226    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5227    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5228
5229
52302) iASL Compiler/Disassembler and Tools:
5231
5232Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5233prevent a possible fault on some hosts. Some C libraries modify the arg
5234pointer parameter to vfprintf making it difficult to call it twice in the
5235AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5236does not affect the Windows OSL since the Win C library does not modify
5237the arg pointer. Chao Guan, Bob Moore.
5238
5239iASL: Fixed a possible infinite loop when the maximum error count is
5240reached. If an output file other than the .AML file is specified (such as
5241a listing file), and the maximum number of errors is reached, do not
5242attempt to flush data to the output file(s) as the compiler is aborting.
5243This can cause an infinite loop as the max error count code essentially
5244keeps calling itself.
5245
5246iASL/Disassembler: Added an option (-in) to ignore NOOP
5247opcodes/operators.
5248Implemented for both the compiler and the disassembler. Often, the NOOP
5249opcode is used as padding for packages that are changed dynamically by
5250the
5251BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5252errors. This option causes the disassembler to ignore all NOOP opcodes
5253(0xA3), and it also causes the compiler to ignore all ASL source code
5254NOOP
5255statements as well.
5256
5257Debugger: Enhanced the Sleep command to execute all sleep states. This
5258change allows Sleep to be invoked with no arguments and causes the
5259debugger to execute all of the sleep states, 0-5, automatically.
5260
5261----------------------------------------
526220 December 2012. Summary of changes for version 20121220:
5263
52641) ACPICA Kernel-resident Subsystem:
5265
5266Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5267alternate entry point for AcpiWalkResources and improves the usability of
5268the resource manager by accepting as input a buffer containing the output
5269of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5270input buffer is not deleted by this interface so that it can be used by
5271the host later. See the ACPICA reference for details.
5272
5273Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5274(DSDT version < 2). The constant will be truncated and this warning
5275reflects that behavior.
5276
5277Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5278ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5279both get and set the new wake bit in these descriptors, separately from
5280the existing share bit. Reported by Aaron Lu.
5281
5282Interpreter: Fix Store() when an implicit conversion is not possible. For
5283example, in the cases such as a store of a string to an existing package
5284object, implement the store as a CopyObject(). This is a small departure
5285from the ACPI specification which states that the control method should
5286be
5287aborted in this case. However, the ASLTS suite depends on this behavior.
5288
5289Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5290macros: check if debug output is currently enabled as soon as possible to
5291minimize performance impact if debug is in fact not enabled.
5292
5293Source code restructuring: Cleanup to improve modularity. The following
5294new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5295psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5296Associated makefiles and project files have been updated.
5297
5298Changed an exception code for LoadTable operator. For the case where one
5299of the input strings is too long, change the returned exception code from
5300AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5301
5302Fixed a possible memory leak in dispatcher error path. On error, delete
5303the mutex object created during method mutex creation. Reported by
5304tim.gardner@canonical.com.
5305
5306Example Code and Data Size: These are the sizes for the OS-independent
5307acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5308debug version of the code includes the debug output trace mechanism and
5309has a much larger code and data size.
5310
5311  Previous Release:
5312    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5313    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5314  Current Release:
5315    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5316    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5317
5318
53192) iASL Compiler/Disassembler and Tools:
5320
5321iASL: Disallow a method call as argument to the ObjectType ASL operator.
5322This change tracks an errata to the ACPI 5.0 document. The AML grammar
5323will not allow the interpreter to differentiate between a method and a
5324method invocation when these are used as an argument to the ObjectType
5325operator. The ACPI specification change is to disallow a method
5326invocation
5327(UserTerm) for the ObjectType operator.
5328
5329Finish support for the TPM2 and CSRT tables in the headers, table
5330compiler, and disassembler.
5331
5332Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5333always expires immediately if the semaphore is not available. The
5334original
5335code was using a relative-time timeout, but sem_timedwait requires the
5336use
5337of an absolute time.
5338
5339iASL: Added a remark if the Timer() operator is used within a 32-bit
5340table. This operator returns a 64-bit time value that will be truncated
5341within a 32-bit table.
5342
5343iASL Source code restructuring: Cleanup to improve modularity. The
5344following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5345aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5346been updated.
5347
5348
5349----------------------------------------
535014 November 2012. Summary of changes for version 20121114:
5351
53521) ACPICA Kernel-resident Subsystem:
5353
5354Implemented a performance enhancement for ACPI/AML Package objects. This
5355change greatly increases the performance of Package objects within the
5356interpreter. It changes the processing of reference counts for packages
5357by
5358optimizing for the most common case where the package sub-objects are
5359either Integers, Strings, or Buffers. Increases the overall performance
5360of
5361the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
53622X.)
5363Chao Guan. ACPICA BZ 943.
5364
5365Implemented and deployed common macros to extract flag bits from resource
5366descriptors. Improves readability and maintainability of the code. Fixes
5367a
5368problem with the UART serial bus descriptor for the number of data bits
5369flags (was incorrectly 2 bits, should be 3).
5370
5371Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5372of the macros and changed the SETx macros to the style of (destination,
5373source). Also added ACPI_CASTx companion macros. Lv Zheng.
5374
5375Example Code and Data Size: These are the sizes for the OS-independent
5376acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5377debug version of the code includes the debug output trace mechanism and
5378has a much larger code and data size.
5379
5380  Previous Release:
5381    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5382    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5383  Current Release:
5384    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5385    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5386
5387
53882) iASL Compiler/Disassembler and Tools:
5389
5390Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5391adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5392Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5393
5394Disassembler: Fixed a problem with external declaration generation. Fixes
5395a problem where an incorrect pathname could be generated for an external
5396declaration if the original reference to the object includes leading
5397carats (^). ACPICA BZ 984.
5398
5399Debugger: Completed a major update for the Disassemble<method> command.
5400This command was out-of-date and did not properly disassemble control
5401methods that had any reasonable complexity. This fix brings the command
5402up
5403to the same level as the rest of the disassembler. Adds one new file,
5404dmdeferred.c, which is existing code that is now common with the main
5405disassembler and the debugger disassemble command. ACPICA MZ 978.
5406
5407iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5408Newer versions of Bison emit this prototype, so moved the prototype out
5409of
5410the iASL header to where it is actually used in order to avoid a
5411duplicate
5412declaration.
5413
5414iASL/Tools: Standardized use of the stream I/O functions:
5415  1) Ensure check for I/O error after every fopen/fread/fwrite
5416  2) Ensure proper order of size/count arguments for fread/fwrite
5417  3) Use test of (Actual != Requested) after all fwrite, and most fread
5418  4) Standardize I/O error messages
5419Improves reliability and maintainability of the code. Bob Moore, Lv
5420Zheng.
5421ACPICA BZ 981.
5422
5423Disassembler: Prevent duplicate External() statements. During generation
5424of external statements, detect similar pathnames that are actually
5425duplicates such as these:
5426  External (\ABCD)
5427  External (ABCD)
5428Remove all leading '\' characters from pathnames during the external
5429statement generation so that duplicates will be detected and tossed.
5430ACPICA BZ 985.
5431
5432Tools: Replace low-level I/O with stream I/O functions. Replace
5433open/read/write/close with the stream I/O equivalents
5434fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5435Moore.
5436
5437AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5438name header so that AcpiXtract recognizes the output file/table.
5439
5440iASL: Remove obsolete -2 option flag. Originally intended to force the
5441compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5442and the entire concept is now obsolete.
5443
5444----------------------------------------
544518 October 2012. Summary of changes for version 20121018:
5446
5447
54481) ACPICA Kernel-resident Subsystem:
5449
5450Updated support for the ACPI 5.0 MPST table. Fixes some problems
5451introduced by late changes to the table as it was added to the ACPI 5.0
5452specification. Includes header, disassembler, and data table compiler
5453support as well as a new version of the MPST template.
5454
5455AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
54565.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5457methods: _HID, _CID, and _UID.
5458
5459Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5460ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5461name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5462names for their various drivers. Affects the AcpiGetObjectInfo external
5463interface, and other internal interfaces as well.
5464
5465Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5466This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5467on machines that support non-aligned transfers. Optimizes for this case
5468rather than using a strncpy. With assistance from Zheng Lv.
5469
5470Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5471error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5472
5473Added a new debug print message for AML mutex objects that are force-
5474released. At control method termination, any currently acquired mutex
5475objects are force-released. Adds a new debug-only message for each one
5476that is released.
5477
5478Audited/updated all ACPICA return macros and the function debug depth
5479counter: 1) Ensure that all functions that use the various TRACE macros
5480also use the appropriate ACPICA return macros. 2) Ensure that all normal
5481return statements surround the return expression (value) with parens to
5482ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5483Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5484
5485Global source code changes/maintenance: All extra lines at the start and
5486end of each source file have been removed for consistency. Also, within
5487comments, all new sentences start with a single space instead of a double
5488space, again for consistency across the code base.
5489
5490Example Code and Data Size: These are the sizes for the OS-independent
5491acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5492debug version of the code includes the debug output trace mechanism and
5493has a much larger code and data size.
5494
5495  Previous Release:
5496    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5497    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5498  Current Release:
5499    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5500    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5501
5502
55032) iASL Compiler/Disassembler and Tools:
5504
5505AcpiExec: Improved the algorithm used for memory leak/corruption
5506detection. Added some intelligence to the code that maintains the global
5507list of allocated memory. The list is now ordered by allocated memory
5508address, significantly improving performance. When running AcpiExec on
5509the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5510on the platform and/or the environment. Note, this performance
5511enhancement affects the AcpiExec utility only, not the kernel-resident
5512ACPICA code.
5513
5514Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5515the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5516incorrect table offset reported for invalid opcodes. Report the original
551732-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5518
5519Disassembler: Enhanced the -vt option to emit the binary table data in
5520hex format to assist with debugging.
5521
5522Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5523size of file structure. Colin Ian King.
5524
5525----------------------------------------
552613 September 2012. Summary of changes for version 20120913:
5527
5528
55291) ACPICA Kernel-resident Subsystem:
5530
5531ACPI 5.0: Added two new notify types for the Hardware Error Notification
5532Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5533and
5534MCE(6).
5535
5536Table Manager: Merged/removed duplicate code in the root table resize
5537functions. One function is external, the other is internal. Lv Zheng,
5538ACPICA
5539BZ 846.
5540
5541Makefiles: Completely removed the obsolete "Linux" makefiles under
5542acpica/generate/linux. These makefiles are obsolete and have been
5543replaced
5544by
5545the generic unix makefiles under acpica/generate/unix.
5546
5547Makefiles: Ensure that binary files always copied properly. Minor rule
5548change
5549to ensure that the final binary output files are always copied up to the
5550appropriate binary directory (bin32 or bin64.)
5551
5552Example Code and Data Size: These are the sizes for the OS-independent
5553acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5554debug
5555version of the code includes the debug output trace mechanism and has a
5556much
5557larger code and data size.
5558
5559  Previous Release:
5560    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5561    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5562  Current Release:
5563    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5564    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5565
5566
55672) iASL Compiler/Disassembler and Tools:
5568
5569Disassembler: Fixed a possible fault during the disassembly of resource
5570descriptors when a second parse is required because of the invocation of
5571external control methods within the table. With assistance from
5572adq@lidskialf.net. ACPICA BZ 976.
5573
5574iASL: Fixed a namepath optimization problem. An error can occur if the
5575parse
5576node that contains the namepath to be optimized does not have a parent
5577node
5578that is a named object. This change fixes the problem.
5579
5580iASL: Fixed a regression where the AML file is not deleted on errors. The
5581AML
5582output file should be deleted if there are any errors during the
5583compiler.
5584The
5585only exception is if the -f (force output) option is used. ACPICA BZ 974.
5586
5587iASL: Added a feature to automatically increase internal line buffer
5588sizes.
5589Via realloc(), automatically increase the internal line buffer sizes as
5590necessary to support very long source code lines. The current version of
5591the
5592preprocessor requires a buffer long enough to contain full source code
5593lines.
5594This change increases the line buffer(s) if the input lines go beyond the
5595current buffer size. This eliminates errors that occurred when a source
5596code
5597line was longer than the buffer.
5598
5599iASL: Fixed a problem with constant folding in method declarations. The
5600SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5601if a
5602Type3 opcode was used.
5603
5604Debugger: Improved command help support. For incorrect argument count,
5605display
5606full help for the command. For help command itself, allow an argument to
5607specify a command.
5608
5609Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5610errors during execution of the suite. Guan Chao.
5611
5612----------------------------------------
561316 August 2012. Summary of changes for version 20120816:
5614
5615
56161) ACPICA Kernel-resident Subsystem:
5617
5618Removed all use of the deprecated _GTS and _BFS predefined methods. The
5619_GTS
5620(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5621deprecated and will probably be removed from the ACPI specification.
5622Windows
5623does not invoke them, and reportedly never will. The final nail in the
5624coffin
5625is that the ACPI specification states that these methods must be run with
5626interrupts off, which is not going to happen in a kernel interpreter.
5627Note:
5628Linux has removed all use of the methods also. It was discovered that
5629invoking these functions caused failures on some machines, probably
5630because
5631they were never tested since Windows does not call them. Affects two
5632external
5633interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5634ACPICA BZ 969.
5635
5636Implemented support for complex bit-packed buffers returned from the _PLD
5637(Physical Location of Device) predefined method. Adds a new external
5638interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5639C
5640structure. Note: C Bitfields cannot be used for this type of predefined
5641structure since the memory layout of individual bitfields is not defined
5642by
5643the C language. In addition, there are endian concerns where a compiler
5644will
5645change the bitfield ordering based on the machine type. The new ACPICA
5646interface eliminates these issues, and should be called after _PLD is
5647executed. ACPICA BZ 954.
5648
5649Implemented a change to allow a scope change to root (via "Scope (\)")
5650during
5651execution of module-level ASL code (code that is executed at table load
5652time.) Lin Ming.
5653
5654Added the Windows8/Server2012 string for the _OSI method. This change
5655adds
5656a
5657new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
56582012.
5659
5660Added header support for the new ACPI tables DBG2 (Debug Port Table Type
56612)
5662and CSRT (Core System Resource Table).
5663
5664Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5665names. This simplifies access to the buffers returned by these predefined
5666names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5667
5668GPE support: Removed an extraneous parameter from the various low-level
5669internal GPE functions. Tang Feng.
5670
5671Removed the linux makefiles from the unix packages. The generate/linux
5672makefiles are obsolete and have been removed from the unix tarball
5673release
5674packages. The replacement makefiles are under generate/unix, and there is
5675a
5676top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5677
5678Updates for Unix makefiles:
56791) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
56802) Update linker flags (move to end of command line) for AcpiExec
5681utility.
5682Guan Chao.
5683
5684Split ACPICA initialization functions to new file, utxfinit.c. Split from
5685utxface.c to improve modularity and reduce file size.
5686
5687Example Code and Data Size: These are the sizes for the OS-independent
5688acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5689debug version of the code includes the debug output trace mechanism and
5690has a
5691much larger code and data size.
5692
5693  Previous Release:
5694    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5695    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5696  Current Release:
5697    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5698    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5699
5700
57012) iASL Compiler/Disassembler and Tools:
5702
5703iASL: Fixed a problem with constant folding for fixed-length constant
5704expressions. The constant-folding code was not being invoked for constant
5705expressions that allow the use of type 3/4/5 opcodes to generate
5706constants
5707for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5708result
5709in the generation of invalid AML bytecode. ACPICA BZ 970.
5710
5711iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5712apparently automatically emit some of the necessary externals. This
5713change
5714handles these versions in order to eliminate generation warnings.
5715
5716Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5717
5718Disassembler: Add support to decode _PLD buffers. The decoded buffer
5719appears
5720within comments in the output file.
5721
5722Debugger: Fixed a regression with the "Threads" command where
5723AE_BAD_PARAMETER was always returned.
5724
5725----------------------------------------
572611 July 2012. Summary of changes for version 20120711:
5727
57281) ACPICA Kernel-resident Subsystem:
5729
5730Fixed a possible fault in the return package object repair code. Fixes a
5731problem that can occur when a lone package object is wrapped with an
5732outer
5733package object in order to force conformance to the ACPI specification.
5734Can
5735affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5736_DLM,
5737_CSD, _PSD, _TSD.
5738
5739Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5740PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5741ARB_DIS bit must be implemented in the host-dependent C3 processor power
5742state
5743support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5744both
5745Intel and other vendors. (for Intel: ICH4-M and earlier)
5746
5747This change removes the code to disable/enable bus master arbitration
5748during
5749suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5750causes
5751resume problems on some machines. The change has been in use for over
5752seven
5753years within Linux.
5754
5755Implemented two new external interfaces to support host-directed dynamic
5756ACPI
5757table load and unload. They are intended to simplify the host
5758implementation
5759of hot-plug support:
5760  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5761  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5762table.
5763See the ACPICA reference for additional details. Adds one new file,
5764components/tables/tbxfload.c
5765
5766Implemented and deployed two new interfaces for errors and warnings that
5767are
5768known to be caused by BIOS/firmware issues:
5769  AcpiBiosError: Prints "ACPI Firmware Error" message.
5770  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5771Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5772table
5773and FADT errors. Additional deployment to be completed as appropriate in
5774the
5775future. The associated conditional macros are ACPI_BIOS_ERROR and
5776ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5777ACPICA
5778BZ
5779843.
5780
5781Implicit notify support: ensure that no memory allocation occurs within a
5782critical region. This fix moves a memory allocation outside of the time
5783that a
5784spinlock is held. Fixes issues on systems that do not allow this
5785behavior.
5786Jung-uk Kim.
5787
5788Split exception code utilities and tables into a new file,
5789utilities/utexcep.c
5790
5791Example Code and Data Size: These are the sizes for the OS-independent
5792acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5793debug
5794version of the code includes the debug output trace mechanism and has a
5795much
5796larger code and data size.
5797
5798  Previous Release:
5799    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5800    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5801  Current Release:
5802    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5803    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5804
5805
58062) iASL Compiler/Disassembler and Tools:
5807
5808iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5809of
58100. Jung-uk Kim.
5811
5812Debugger: Enhanced the "tables" command to emit additional information
5813about
5814the current set of ACPI tables, including the owner ID and flags decode.
5815
5816Debugger: Reimplemented the "unload" command to use the new
5817AcpiUnloadParentTable external interface. This command was disable
5818previously
5819due to need for an unload interface.
5820
5821AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5822option
5823will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5824
5825----------------------------------------
582620 June 2012. Summary of changes for version 20120620:
5827
5828
58291) ACPICA Kernel-resident Subsystem:
5830
5831Implemented support to expand the "implicit notify" feature to allow
5832multiple
5833devices to be notified by a single GPE. This feature automatically
5834generates a
5835runtime device notification in the absence of a BIOS-provided GPE control
5836method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5837notify is
5838provided by ACPICA for Windows compatibility, and is a workaround for
5839BIOS
5840AML
5841code errors. See the description of the AcpiSetupGpeForWake interface in
5842the
5843APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5844
5845Changed some comments and internal function names to simplify and ensure
5846correctness of the Linux code translation. No functional changes.
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.0K Code, 25.1K Data, 118.1K Total
5857    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5858  Current Release:
5859    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5860    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5861
5862
58632) iASL Compiler/Disassembler and Tools:
5864
5865Disassembler: Added support to emit short, commented descriptions for the
5866ACPI
5867predefined names in order to improve the readability of the disassembled
5868output. ACPICA BZ 959. Changes include:
5869  1) Emit descriptions for all standard predefined names (_INI, _STA,
5870_PRW,
5871etc.)
5872  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5873  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5874etc.)
5875
5876AcpiSrc: Fixed several long-standing Linux code translation issues.
5877Argument
5878descriptions in function headers are now translated properly to lower
5879case
5880and
5881underscores. ACPICA BZ 961. Also fixes translation problems such as
5882these:
5883(old -> new)
5884  i_aSL -> iASL
5885  00-7_f -> 00-7F
5886  16_k -> 16K
5887  local_fADT -> local_FADT
5888  execute_oSI -> execute_OSI
5889
5890iASL: Fixed a problem where null bytes were inadvertently emitted into
5891some
5892listing files.
5893
5894iASL: Added the existing debug options to the standard help screen. There
5895are
5896no longer two different help screens. ACPICA BZ 957.
5897
5898AcpiHelp: Fixed some typos in the various predefined name descriptions.
5899Also
5900expand some of the descriptions where appropriate.
5901
5902iASL: Fixed the -ot option (display compile times/statistics). Was not
5903working
5904properly for standard output; only worked for the debug file case.
5905
5906----------------------------------------
590718 May 2012. Summary of changes for version 20120518:
5908
5909
59101) ACPICA Core Subsystem:
5911
5912Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5913defined
5914to block until asynchronous events such as notifies and GPEs have
5915completed.
5916Within ACPICA, it is only called before a notify or GPE handler is
5917removed/uninstalled. It also may be useful for the host OS within related
5918drivers such as the Embedded Controller driver. See the ACPICA reference
5919for
5920additional information. ACPICA BZ 868.
5921
5922ACPI Tables: Added a new error message for a possible overflow failure
5923during
5924the conversion of FADT 32-bit legacy register addresses to internal
5925common
592664-
5927bit GAS structure representation. The GAS has a one-byte "bit length"
5928field,
5929thus limiting the register length to 255 bits. ACPICA BZ 953.
5930
5931Example Code and Data Size: These are the sizes for the OS-independent
5932acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5933debug
5934version of the code includes the debug output trace mechanism and has a
5935much
5936larger code and data size.
5937
5938  Previous Release:
5939    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5940    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5941  Current Release:
5942    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5943    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5944
5945
59462) iASL Compiler/Disassembler and Tools:
5947
5948iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
5949macro.
5950This keyword was added late in the ACPI 5.0 release cycle and was not
5951implemented until now.
5952
5953Disassembler: Added support for Operation Region externals. Adds missing
5954support for operation regions that are defined in another table, and
5955referenced locally via a Field or BankField ASL operator. Now generates
5956the
5957correct External statement.
5958
5959Disassembler: Several additional fixes for the External() statement
5960generation
5961related to some ASL operators. Also, order the External() statements
5962alphabetically in the disassembler output. Fixes the External()
5963generation
5964for
5965the Create* field, Alias, and Scope operators:
5966 1) Create* buffer field operators - fix type mismatch warning on
5967disassembly
5968 2) Alias - implement missing External support
5969 3) Scope - fix to make sure all necessary externals are emitted.
5970
5971iASL: Improved pathname support. For include files, merge the prefix
5972pathname
5973with the file pathname and eliminate unnecessary components. Convert
5974backslashes in all pathnames to forward slashes, for readability. Include
5975file
5976pathname changes affect both #include and Include() type operators.
5977
5978iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
5979end
5980of a valid line by inserting a newline and then returning the EOF during
5981the
5982next call to GetNextLine. Prevents the line from being ignored due to EOF
5983condition.
5984
5985iASL: Implemented some changes to enhance the IDE support (-vi option.)
5986Error
5987and Warning messages are now correctly recognized for both the source
5988code
5989browser and the global error and warning counts.
5990
5991----------------------------------------
599220 April 2012. Summary of changes for version 20120420:
5993
5994
59951) ACPICA Core Subsystem:
5996
5997Implemented support for multiple notify handlers. This change adds
5998support
5999to
6000allow multiple system and device notify handlers on Device, Thermal Zone,
6001and
6002Processor objects. This can simplify the host OS notification
6003implementation.
6004Also re-worked and restructured the entire notify support code to
6005simplify
6006handler installation, handler removal, notify event queuing, and notify
6007dispatch to handler(s). Note: there can still only be two global notify
6008handlers - one for system notifies and one for device notifies. There are
6009no
6010changes to the existing handler install/remove interfaces. Lin Ming, Bob
6011Moore, Rafael Wysocki.
6012
6013Fixed a regression in the package repair code where the object reference
6014count was calculated incorrectly. Regression was introduced in the commit
6015"Support to add Package wrappers".
6016
6017Fixed a couple possible memory leaks in the AML parser, in the error
6018recovery
6019path. Jesper Juhl, Lin Ming.
6020
6021Example Code and Data Size: These are the sizes for the OS-independent
6022acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6023debug version of the code includes the debug output trace mechanism and
6024has a
6025much larger code and data size.
6026
6027  Previous Release:
6028    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6029    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6030  Current Release:
6031    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6032    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6033
6034
60352) iASL Compiler/Disassembler and Tools:
6036
6037iASL: Fixed a problem with the resource descriptor support where the
6038length
6039of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6040included in cumulative descriptor offset, resulting in incorrect values
6041for
6042resource tags within resource descriptors appearing after a
6043StartDependent*
6044descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6045
6046iASL and Preprocessor: Implemented full support for the #line directive
6047to
6048correctly track original source file line numbers through the .i
6049preprocessor
6050output file - for error and warning messages.
6051
6052iASL: Expand the allowable byte constants for address space IDs.
6053Previously,
6054the allowable range was 0x80-0xFF (user-defined spaces), now the range is
60550x0A-0xFF to allow for custom and new IDs without changing the compiler.
6056
6057iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6058
6059iASL: Add option to completely disable the preprocessor (-Pn).
6060
6061iASL: Now emit all error/warning messages to standard error (stderr) by
6062default (instead of the previous stdout).
6063
6064ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6065Update
6066for resource descriptor offset fix above. Update/cleanup error output
6067routines. Enable and send iASL errors/warnings to an error logfile
6068(error.txt). Send all other iASL output to a logfile (compiler.txt).
6069Fixed
6070several extraneous "unrecognized operator" messages.
6071
6072----------------------------------------
607320 March 2012. Summary of changes for version 20120320:
6074
6075
60761) ACPICA Core Subsystem:
6077
6078Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6079(Going To Sleep) and the _BFS method (Back From Sleep). Windows
6080apparently
6081does not execute these methods, and therefore these methods are often
6082untested. It has been seen on some systems where the execution of these
6083methods causes errors and also prevents the machine from entering S5. It
6084is
6085therefore suggested that host operating systems do not execute these
6086methods
6087by default. In the future, perhaps these methods can be optionally
6088executed
6089based on the age of the system and/or what is the newest version of
6090Windows
6091that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6092and
6093AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6094Ming.
6095
6096Fixed a problem where the length of the local/common FADT was set too
6097early.
6098The local FADT table length cannot be set to the common length until the
6099original length has been examined. There is code that checks the table
6100length
6101and sets various fields appropriately. This can affect older machines
6102with
6103early FADT versions. For example, this can cause inadvertent writes to
6104the
6105CST_CNT register. Julian Anastasov.
6106
6107Fixed a mapping issue related to a physical table override. Use the
6108deferred
6109mapping mechanism for tables loaded via the physical override OSL
6110interface.
6111This allows for early mapping before the virtual memory manager is
6112available.
6113Thomas Renninger, Bob Moore.
6114
6115Enhanced the automatic return-object repair code: Repair a common problem
6116with
6117predefined methods that are defined to return a variable-length Package
6118of
6119sub-objects. If there is only one sub-object, some BIOS ASL code
6120mistakenly
6121simply returns the single object instead of a Package with one sub-
6122object.
6123This new support will repair this error by wrapping a Package object
6124around
6125the original object, creating the correct and expected Package with one
6126sub-
6127object. Names that can be repaired in this manner include: _ALR, _CSD,
6128_HPX,
6129_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6130939.
6131
6132Changed the exception code returned for invalid ACPI paths passed as
6133parameters to external interfaces such as AcpiEvaluateObject. Was
6134AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6135
6136Example Code and Data Size: These are the sizes for the OS-independent
6137acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6138debug
6139version of the code includes the debug output trace mechanism and has a
6140much
6141larger code and data size.
6142
6143  Previous Release:
6144    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6145    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6146  Current Release:
6147    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6148    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6149
6150
61512) iASL Compiler/Disassembler and Tools:
6152
6153iASL: Added the infrastructure and initial implementation of a integrated
6154C-
6155like preprocessor. This will simplify BIOS development process by
6156eliminating
6157the need for a separate preprocessing step during builds. On Windows, it
6158also
6159eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6160features including full #define() macro support are still under
6161development.
6162These preprocessor directives are supported:
6163    #define
6164    #elif
6165    #else
6166    #endif
6167    #error
6168    #if
6169    #ifdef
6170    #ifndef
6171    #include
6172    #pragma message
6173    #undef
6174    #warning
6175In addition, these new command line options are supported:
6176    -D <symbol> Define symbol for preprocessor use
6177    -li         Create preprocessed output file (*.i)
6178    -P          Preprocess only and create preprocessor output file (*.i)
6179
6180Table Compiler: Fixed a problem where the equals operator within an
6181expression
6182did not work properly.
6183
6184Updated iASL to use the current versions of Bison/Flex. Updated the
6185Windows
6186project file to invoke these tools from the standard location. ACPICA BZ
6187904.
6188Versions supported:
6189    Flex for Windows:  V2.5.4
6190    Bison for Windows: V2.4.1
6191
6192----------------------------------------
619315 February 2012. Summary of changes for version 20120215:
6194
6195
61961) ACPICA Core Subsystem:
6197
6198There have been some major changes to the sleep/wake support code, as
6199described below (a - e).
6200
6201a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6202AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6203AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6204the
6205time the _BFS method is called and the _WAK method is called. NOTE: all
6206hosts
6207must update their wake/resume code or else sleep/wake will not work
6208properly.
6209Rafael Wysocki.
6210
6211b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6212_WAK
6213method. Some machines require that the GPEs are enabled before the _WAK
6214method
6215is executed. Thomas Renninger.
6216
6217c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6218bit.
6219Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6220to
6221determine whether the system is rebooting or resuming. Matthew Garrett.
6222
6223d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6224Sleep) to
6225match the ACPI specification requirement. Rafael Wysocki.
6226
6227e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6228registers within the V5 FADT. This support adds two new files:
6229hardware/hwesleep.c implements the support for the new registers. Moved
6230all
6231sleep/wake external interfaces to hardware/hwxfsleep.c.
6232
6233
6234Added a new OSL interface for ACPI table overrides,
6235AcpiOsPhysicalTableOverride. This interface allows the host to override a
6236table via a physical address, instead of the logical address required by
6237AcpiOsTableOverride. This simplifies the host implementation. Initial
6238implementation by Thomas Renninger. The ACPICA implementation creates a
6239single
6240shared function for table overrides that attempts both a logical and a
6241physical override.
6242
6243Expanded the OSL memory read/write interfaces to 64-bit data
6244(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6245transfer support for GAS register structures passed to AcpiRead and
6246AcpiWrite.
6247
6248Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6249custom
6250build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6251model.
6252See the ACPICA reference for details. ACPICA BZ 942. This option removes
6253about
625410% of the code and 5% of the static data, and the following hardware
6255ACPI
6256features become unavailable:
6257    PM Event and Control registers
6258    SCI interrupt (and handler)
6259    Fixed Events
6260    General Purpose Events (GPEs)
6261    Global Lock
6262    ACPI PM timer
6263    FACS table (Waking vectors and Global Lock)
6264
6265Updated the unix tarball directory structure to match the ACPICA git
6266source
6267tree. This ensures that the generic unix makefiles work properly (in
6268generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6269867.
6270
6271Updated the return value of the _REV predefined method to integer value 5
6272to
6273reflect ACPI 5.0 support.
6274
6275Moved the external ACPI PM timer interface prototypes to the public
6276acpixf.h
6277file where they belong.
6278
6279Example Code and Data Size: These are the sizes for the OS-independent
6280acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6281debug
6282version of the code includes the debug output trace mechanism and has a
6283much
6284larger code and data size.
6285
6286  Previous Release:
6287    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6288    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6289  Current Release:
6290    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6291    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6292
6293
62942) iASL Compiler/Disassembler and Tools:
6295
6296Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6297descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6298incorrectly displayed.
6299
6300AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6301specification.
6302
6303----------------------------------------
630411 January 2012. Summary of changes for version 20120111:
6305
6306
63071) ACPICA Core Subsystem:
6308
6309Implemented a new mechanism to allow host device drivers to check for
6310address
6311range conflicts with ACPI Operation Regions. Both SystemMemory and
6312SystemIO
6313address spaces are supported. A new external interface,
6314AcpiCheckAddressRange,
6315allows drivers to check an address range against the ACPI namespace. See
6316the
6317ACPICA reference for additional details. Adds one new file,
6318utilities/utaddress.c. Lin Ming, Bob Moore.
6319
6320Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6321Control
6322and
6323Status registers, update the ACPI 5.0 flags, and update internal data
6324structures to handle an FADT larger than 256 bytes. The size of the ACPI
63255.0
6326FADT is 268 bytes.
6327
6328Updated all ACPICA copyrights and signons to 2012. Added the 2012
6329copyright to
6330all module headers and signons, including the standard Linux header. This
6331affects virtually every file in the ACPICA core subsystem, iASL compiler,
6332and
6333all ACPICA utilities.
6334
6335Example Code and Data Size: These are the sizes for the OS-independent
6336acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6337debug
6338version of the code includes the debug output trace mechanism and has a
6339much
6340larger code and data size.
6341
6342  Previous Release:
6343    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6344    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6345  Current Release:
6346    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6347    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6348
6349
63502) iASL Compiler/Disassembler and Tools:
6351
6352Disassembler: fixed a problem with the automatic resource tag generation
6353support. Fixes a problem where the resource tags are inadvertently not
6354constructed if the table being disassembled contains external references
6355to
6356control methods. Moved the actual construction of the tags to after the
6357final
6358namespace is constructed (after 2nd parse is invoked due to external
6359control
6360method references.) ACPICA BZ 941.
6361
6362Table Compiler: Make all "generic" operators caseless. These are the
6363operators
6364like UINT8, String, etc. Making these caseless improves ease-of-use.
6365ACPICA BZ
6366934.
6367
6368----------------------------------------
636923 November 2011. Summary of changes for version 20111123:
6370
63710) ACPI 5.0 Support:
6372
6373This release contains full support for the ACPI 5.0 specification, as
6374summarized below.
6375
6376Reduced Hardware Support:
6377-------------------------
6378
6379This support allows for ACPI systems without the usual ACPI hardware.
6380This
6381support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6382will
6383not attempt to initialize or use any of the usual ACPI hardware. Note,
6384when
6385this flag is set, all of the following ACPI hardware is assumed to be not
6386present and is not initialized or accessed:
6387
6388    General Purpose Events (GPEs)
6389    Fixed Events (PM1a/PM1b and PM Control)
6390    Power Management Timer and Console Buttons (power/sleep)
6391    Real-time Clock Alarm
6392    Global Lock
6393    System Control Interrupt (SCI)
6394    The FACS is assumed to be non-existent
6395
6396ACPI Tables:
6397------------
6398
6399All new tables and updates to existing tables are fully supported in the
6400ACPICA headers (for use by device drivers), the disassembler, and the
6401iASL
6402Data Table Compiler. ACPI 5.0 defines these new tables:
6403
6404    BGRT        /* Boot Graphics Resource Table */
6405    DRTM        /* Dynamic Root of Trust for Measurement table */
6406    FPDT        /* Firmware Performance Data Table */
6407    GTDT        /* Generic Timer Description Table */
6408    MPST        /* Memory Power State Table */
6409    PCCT        /* Platform Communications Channel Table */
6410    PMTT        /* Platform Memory Topology Table */
6411    RASF        /* RAS Feature table */
6412
6413Operation Regions/SpaceIDs:
6414---------------------------
6415
6416All new operation regions are fully supported by the iASL compiler, the
6417disassembler, and the ACPICA runtime code (for dispatch to region
6418handlers.)
6419The new operation region Space IDs are:
6420
6421    GeneralPurposeIo
6422    GenericSerialBus
6423
6424Resource Descriptors:
6425---------------------
6426
6427All new ASL resource descriptors are fully supported by the iASL
6428compiler,
6429the
6430ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6431(including
6432all new predefined resource tags). New descriptors are:
6433
6434    FixedDma
6435    GpioIo
6436    GpioInt
6437    I2cSerialBus
6438    SpiSerialBus
6439    UartSerialBus
6440
6441ASL/AML Operators, New and Modified:
6442------------------------------------
6443
6444One new operator is added, the Connection operator, which is used to
6445associate
6446a GeneralPurposeIo or GenericSerialBus resource descriptor with
6447individual
6448field objects within an operation region. Several new protocols are
6449associated
6450with the AccessAs operator. All are fully supported by the iASL compiler,
6451disassembler, and runtime ACPICA AML interpreter:
6452
6453    Connection                      // Declare Field Connection
6454attributes
6455    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6456    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6457Protocol
6458    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6459    RawDataBuffer                       // Data type for Vendor Data
6460fields
6461
6462Predefined ASL/AML Objects:
6463---------------------------
6464
6465All new predefined objects/control-methods are supported by the iASL
6466compiler
6467and the ACPICA runtime validation/repair (arguments and return values.)
6468New
6469predefined names include the following:
6470
6471Standard Predefined Names (Objects or Control Methods):
6472    _AEI, _CLS, _CPC, _CWS, _DEP,
6473    _DLM, _EVT, _GCP, _CRT, _GWS,
6474    _HRV, _PRE, _PSE, _SRT, _SUB.
6475
6476Resource Tags (Names used to access individual fields within resource
6477descriptors):
6478    _DBT, _DPL, _DRS, _END, _FLC,
6479    _IOR, _LIN, _MOD, _PAR, _PHA,
6480    _PIN, _PPI, _POL, _RXL, _SLV,
6481    _SPE, _STB, _TXL, _VEN.
6482
6483ACPICA External Interfaces:
6484---------------------------
6485
6486Several new interfaces have been defined for use by ACPI-related device
6487drivers and other host OS services:
6488
6489AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6490to
6491acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6492provided by the BIOS. They are intended to be used in conjunction with
6493the
6494ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6495mutual exclusion with the AML code/interpreter.
6496
6497AcpiGetEventResources: Returns the (formatted) resource descriptors as
6498defined
6499by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6500provides
6501resource descriptors associated with hardware-reduced platform events,
6502similar
6503to the AcpiGetCurrentResources interface.
6504
6505Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6506operation regions, information about the Connection() object and any
6507optional
6508length information is passed to the region handler within the Context
6509parameter.
6510
6511AcpiBufferToResource: This interface converts a raw AML buffer containing
6512a
6513resource template or resource descriptor to the ACPI_RESOURCE internal
6514format
6515suitable for use by device drivers. Can be used by an operation region
6516handler
6517to convert the Connection() buffer object into a ACPI_RESOURCE.
6518
6519Miscellaneous/Tools/TestSuites:
6520-------------------------------
6521
6522Support for extended _HID names (Four alpha characters instead of three).
6523Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6524Support for ACPI 5.0 features in the ASLTS test suite.
6525Fully updated documentation (ACPICA and iASL reference documents.)
6526
6527ACPI Table Definition Language:
6528-------------------------------
6529
6530Support for this language was implemented and released as a subsystem of
6531the
6532iASL compiler in 2010. (See the iASL compiler User Guide.)
6533
6534
6535Non-ACPI 5.0 changes for this release:
6536--------------------------------------
6537
65381) ACPICA Core Subsystem:
6539
6540Fix a problem with operation region declarations where a failure can
6541occur
6542if
6543the region name and an argument that evaluates to an object (such as the
6544region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6545937.
6546
6547Do not abort an ACPI table load if an invalid space ID is found within.
6548This
6549will be caught later if the offending method is executed. ACPICA BZ 925.
6550
6551Fixed an issue with the FFixedHW space ID where the ID was not always
6552recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6553
6554Fixed a problem with the 32-bit generation of the unix-specific OSL
6555(osunixxf.c). Lin Ming, ACPICA BZ 936.
6556
6557Several changes made to enable generation with the GCC 4.6 compiler.
6558ACPICA BZ
6559935.
6560
6561New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6562Index/Bank
6563field registers out-of-range.
6564
65652) iASL Compiler/Disassembler and Tools:
6566
6567iASL: Implemented the __PATH__ operator, which returns the full pathname
6568of
6569the current source file.
6570
6571AcpiHelp: Automatically display expanded keyword information for all ASL
6572operators.
6573
6574Debugger: Add "Template" command to disassemble/dump resource template
6575buffers.
6576
6577Added a new master script to generate and execute the ASLTS test suite.
6578Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6579
6580iASL: Fix problem with listing generation during processing of the
6581Switch()
6582operator where AML listing was disabled until the entire Switch block was
6583completed.
6584
6585iASL: Improve support for semicolon statement terminators. Fix "invalid
6586character" message for some cases when the semicolon is used. Semicolons
6587are
6588now allowed after every <Term> grammar element. ACPICA BZ 927.
6589
6590iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6591923.
6592
6593Disassembler: Fix problem with disassembly of the DataTableRegion
6594operator
6595where an inadvertent "Unhandled deferred opcode" message could be
6596generated.
6597
65983) Example Code and Data Size
6599
6600These are the sizes for the OS-independent acpica.lib produced by the
6601Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6602includes the debug output trace mechanism and has a much larger code and
6603data
6604size.
6605
6606  Previous Release:
6607    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6608    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6609  Current Release:
6610    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6611    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6612
6613----------------------------------------
661422 September 2011. Summary of changes for version 20110922:
6615
66160) ACPI 5.0 News:
6617
6618Support for ACPI 5.0 in ACPICA has been underway for several months and
6619will
6620be released at the same time that ACPI 5.0 is officially released.
6621
6622The ACPI 5.0 specification is on track for release in the next few
6623months.
6624
66251) ACPICA Core Subsystem:
6626
6627Fixed a problem where the maximum sleep time for the Sleep() operator was
6628intended to be limited to two seconds, but was inadvertently limited to
662920
6630seconds instead.
6631
6632Linux and Unix makefiles: Added header file dependencies to ensure
6633correct
6634generation of ACPICA core code and utilities. Also simplified the
6635makefiles
6636considerably through the use of the vpath variable to specify search
6637paths.
6638ACPICA BZ 924.
6639
66402) iASL Compiler/Disassembler and Tools:
6641
6642iASL: Implemented support to check the access length for all fields
6643created to
6644access named Resource Descriptor fields. For example, if a resource field
6645is
6646defined to be two bits, a warning is issued if a CreateXxxxField() is
6647used
6648with an incorrect bit length. This is implemented for all current
6649resource
6650descriptor names. ACPICA BZ 930.
6651
6652Disassembler: Fixed a byte ordering problem with the output of 24-bit and
665356-
6654bit integers.
6655
6656iASL: Fixed a couple of issues associated with variable-length package
6657objects. 1) properly handle constants like One, Ones, Zero -- do not make
6658a
6659VAR_PACKAGE when these are used as a package length. 2) Allow the
6660VAR_PACKAGE
6661opcode (in addition to PACKAGE) when validating object types for
6662predefined
6663names.
6664
6665iASL: Emit statistics for all output files (instead of just the ASL input
6666and
6667AML output). Includes listings, hex files, etc.
6668
6669iASL: Added -G option to the table compiler to allow the compilation of
6670custom
6671ACPI tables. The only part of a table that is required is the standard
667236-
6673byte
6674ACPI header.
6675
6676AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6677headers),
6678which also adds correct 64-bit support. Also, now all output filenames
6679are
6680completely lower case.
6681
6682AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6683loading table files. A warning is issued for any such tables. The only
6684exception is an FADT. This also fixes a possible fault when attempting to
6685load
6686non-AML tables. ACPICA BZ 932.
6687
6688AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6689a
6690missing table terminator could cause a fault when using the -p option.
6691
6692AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6693statistics.
6694
66953) Example Code and Data Size
6696
6697These are the sizes for the OS-independent acpica.lib produced by the
6698Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6699includes the debug output trace mechanism and has a much larger code and
6700data
6701size.
6702
6703  Previous Release (VC 9.0):
6704    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6705    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6706  Current Release (VC 9.0):
6707    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6708    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6709
6710
6711----------------------------------------
671223 June 2011. Summary of changes for version 20110623:
6713
67141) ACPI CA Core Subsystem:
6715
6716Updated the predefined name repair mechanism to not attempt repair of a
6717_TSS
6718return object if a _PSS object is present. We can only sort the _TSS
6719return
6720package if there is no _PSS within the same scope. This is because if
6721_PSS
6722is
6723present, the ACPI specification dictates that the _TSS Power Dissipation
6724field
6725is to be ignored, and therefore some BIOSs leave garbage values in the
6726_TSS
6727Power field(s). In this case, it is best to just return the _TSS package
6728as-
6729is. Reported by, and fixed with assistance from Fenghua Yu.
6730
6731Added an option to globally disable the control method return value
6732validation
6733and repair. This runtime option can be used to disable return value
6734repair
6735if
6736this is causing a problem on a particular machine. Also added an option
6737to
6738AcpiExec (-dr) to set this disable flag.
6739
6740All makefiles and project files: Major changes to improve generation of
6741ACPICA
6742tools. ACPICA BZ 912:
6743    Reduce default optimization levels to improve compatibility
6744    For Linux, add strict-aliasing=0 for gcc 4
6745    Cleanup and simplify use of command line defines
6746    Cleanup multithread library support
6747    Improve usage messages
6748
6749Linux-specific header: update handling of THREAD_ID and pthread. For the
675032-
6751bit case, improve casting to eliminate possible warnings, especially with
6752the
6753acpica tools.
6754
6755Example Code and Data Size: These are the sizes for the OS-independent
6756acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6757debug
6758version of the code includes the debug output trace mechanism and has a
6759much
6760larger code and data size.
6761
6762  Previous Release (VC 9.0):
6763    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6764    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6765  Current Release (VC 9.0):
6766    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6767    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6768
67692) iASL Compiler/Disassembler and Tools:
6770
6771With this release, a new utility named "acpihelp" has been added to the
6772ACPICA
6773package. This utility summarizes the ACPI specification chapters for the
6774ASL
6775and AML languages. It generates under Linux/Unix as well as Windows, and
6776provides the following functionality:
6777    Find/display ASL operator(s) -- with description and syntax.
6778    Find/display ASL keyword(s) -- with exact spelling and descriptions.
6779    Find/display ACPI predefined name(s) -- with description, number
6780        of arguments, and the return value data type.
6781    Find/display AML opcode name(s) -- with opcode, arguments, and
6782grammar.
6783    Decode/display AML opcode -- with opcode name, arguments, and
6784grammar.
6785
6786Service Layers: Make multi-thread support configurable. Conditionally
6787compile
6788the multi-thread support so that threading libraries will not be linked
6789if
6790not
6791necessary. The only tool that requires multi-thread support is AcpiExec.
6792
6793iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6794of
6795Bison appear to want the interface to yyerror to be a const char * (or at
6796least this is a problem when generating iASL on some systems.) ACPICA BZ
6797923
6798Pierre Lejeune.
6799
6800Tools: Fix for systems where O_BINARY is not defined. Only used for
6801Windows
6802versions of the tools.
6803
6804----------------------------------------
680527 May 2011. Summary of changes for version 20110527:
6806
68071) ACPI CA Core Subsystem:
6808
6809ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6810table
6811signature. Now, only allow SSDT, OEMx, and a null signature. History:
6812    1) Originally, we checked the table signature for "SSDT" or "PSDT".
6813       (PSDT is now obsolete.)
6814    2) We added support for OEMx tables, signature "OEM" plus a fourth
6815       "don't care" character.
6816    3) Valid tables were encountered with a null signature, so we just
6817       gave up on validating the signature, (05/2008).
6818    4) We encountered non-AML tables such as the MADT, which caused
6819       interpreter errors and kernel faults. So now, we once again allow
6820       only SSDT, OEMx, and now, also a null signature. (05/2011).
6821
6822Added the missing _TDL predefined name to the global name list in order
6823to
6824enable validation. Affects both the core ACPICA code and the iASL
6825compiler.
6826
6827Example Code and Data Size: These are the sizes for the OS-independent
6828acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6829debug
6830version of the code includes the debug output trace mechanism and has a
6831much
6832larger code and data size.
6833
6834  Previous Release (VC 9.0):
6835    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6836    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6837  Current Release (VC 9.0):
6838    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6839    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6840
68412) iASL Compiler/Disassembler and Tools:
6842
6843Debugger/AcpiExec: Implemented support for "complex" method arguments on
6844the
6845debugger command line. This adds support beyond simple integers --
6846including
6847Strings, Buffers, and Packages. Includes support for nested packages.
6848Increased the default command line buffer size to accommodate these
6849arguments.
6850See the ACPICA reference for details and syntax. ACPICA BZ 917.
6851
6852Debugger/AcpiExec: Implemented support for "default" method arguments for
6853the
6854Execute/Debug command. Now, the debugger will always invoke a control
6855method
6856with the required number of arguments -- even if the command line
6857specifies
6858none or insufficient arguments. It uses default integer values for any
6859missing
6860arguments. Also fixes a bug where only six method arguments maximum were
6861supported instead of the required seven.
6862
6863Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6864and
6865also return status in order to prevent buffer overruns. See the ACPICA
6866reference for details and syntax. ACPICA BZ 921
6867
6868iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6869makefiles to simplify support for the two different but similar parser
6870generators, bison and yacc.
6871
6872Updated the generic unix makefile for gcc 4. The default gcc version is
6873now
6874expected to be 4 or greater, since options specific to gcc 4 are used.
6875
6876----------------------------------------
687713 April 2011. Summary of changes for version 20110413:
6878
68791) ACPI CA Core Subsystem:
6880
6881Implemented support to execute a so-called "orphan" _REG method under the
6882EC
6883device. This change will force the execution of a _REG method underneath
6884the
6885EC
6886device even if there is no corresponding operation region of type
6887EmbeddedControl. Fixes a problem seen on some machines and apparently is
6888compatible with Windows behavior. ACPICA BZ 875.
6889
6890Added more predefined methods that are eligible for automatic NULL
6891package
6892element removal. This change adds another group of predefined names to
6893the
6894list
6895of names that can be repaired by having NULL package elements dynamically
6896removed. This group are those methods that return a single variable-
6897length
6898package containing simple data types such as integers, buffers, strings.
6899This
6900includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6901_PSL,
6902_Sx,
6903and _TZD. ACPICA BZ 914.
6904
6905Split and segregated all internal global lock functions to a new file,
6906evglock.c.
6907
6908Updated internal address SpaceID for DataTable regions. Moved this
6909internal
6910space
6911id in preparation for ACPI 5.0 changes that will include some new space
6912IDs.
6913This
6914change should not affect user/host code.
6915
6916Example Code and Data Size: These are the sizes for the OS-independent
6917acpica.lib
6918produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6919version of
6920the code includes the debug output trace mechanism and has a much larger
6921code
6922and
6923data size.
6924
6925  Previous Release (VC 9.0):
6926    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6927    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6928  Current Release (VC 9.0):
6929    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6930    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6931
69322) iASL Compiler/Disassembler and Tools:
6933
6934iASL/DTC: Major update for new grammar features. Allow generic data types
6935in
6936custom ACPI tables. Field names are now optional. Any line can be split
6937to
6938multiple lines using the continuation char (\). Large buffers now use
6939line-
6940continuation character(s) and no colon on the continuation lines. See the
6941grammar
6942update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
6943Moore.
6944
6945iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
6946statements.
6947Since the parser stuffs a "zero" as the return value for these statements
6948(due
6949to
6950the underlying AML grammar), they were seen as "return with value" by the
6951iASL
6952semantic checking. They are now seen correctly as "null" return
6953statements.
6954
6955iASL: Check if a_REG declaration has a corresponding Operation Region.
6956Adds a
6957check for each _REG to ensure that there is in fact a corresponding
6958operation
6959region declaration in the same scope. If not, the _REG method is not very
6960useful
6961since it probably won't be executed. ACPICA BZ 915.
6962
6963iASL/DTC: Finish support for expression evaluation. Added a new
6964expression
6965parser
6966that implements c-style operator precedence and parenthesization. ACPICA
6967bugzilla
6968908.
6969
6970Disassembler/DTC: Remove support for () and <> style comments in data
6971tables.
6972Now
6973that DTC has full expression support, we don't want to have comment
6974strings
6975that
6976start with a parentheses or a less-than symbol. Now, only the standard /*
6977and
6978//
6979comments are supported, as well as the bracket [] comments.
6980
6981AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
6982"unusual"
6983headers in the acpidump file. Update the header validation to support
6984these
6985tables. Problem introduced in previous AcpiXtract version in the change
6986to
6987support "wrong checksum" error messages emitted by acpidump utility.
6988
6989iASL: Add a * option to generate all template files (as a synonym for
6990ALL)
6991as
6992in
6993"iasl -T *" or "iasl -T ALL".
6994
6995iASL/DTC: Do not abort compiler on fatal errors. We do not want to
6996completely
6997abort the compiler on "fatal" errors, simply should abort the current
6998compile.
6999This allows multiple compiles with a single (possibly wildcard) compiler
7000invocation.
7001
7002----------------------------------------
700316 March 2011. Summary of changes for version 20110316:
7004
70051) ACPI CA Core Subsystem:
7006
7007Fixed a problem caused by a _PRW method appearing at the namespace root
7008scope
7009during the setup of wake GPEs. A fault could occur if a _PRW directly
7010under
7011the
7012root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7013
7014Implemented support for "spurious" Global Lock interrupts. On some
7015systems, a
7016global lock interrupt can occur without the pending flag being set. Upon
7017a
7018GL
7019interrupt, we now ensure that a thread is actually waiting for the lock
7020before
7021signaling GL availability. Rafael Wysocki, Bob Moore.
7022
7023Example Code and Data Size: These are the sizes for the OS-independent
7024acpica.lib
7025produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7026version of
7027the code includes the debug output trace mechanism and has a much larger
7028code
7029and
7030data size.
7031
7032  Previous Release (VC 9.0):
7033    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7034    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7035  Current Release (VC 9.0):
7036    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7037    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7038
70392) iASL Compiler/Disassembler and Tools:
7040
7041Implemented full support for the "SLIC" ACPI table. Includes support in
7042the
7043header files, disassembler, table compiler, and template generator. Bob
7044Moore,
7045Lin Ming.
7046
7047AcpiXtract: Correctly handle embedded comments and messages from
7048AcpiDump.
7049Apparently some or all versions of acpidump will occasionally emit a
7050comment
7051like
7052"Wrong checksum", etc., into the dump file. This was causing problems for
7053AcpiXtract. ACPICA BZ 905.
7054
7055iASL: Fix the Linux makefile by removing an inadvertent double file
7056inclusion.
7057ACPICA BZ 913.
7058
7059AcpiExec: Update installation of operation region handlers. Install one
7060handler
7061for a user-defined address space. This is used by the ASL test suite
7062(ASLTS).
7063
7064----------------------------------------
706511 February 2011. Summary of changes for version 20110211:
7066
70671) ACPI CA Core Subsystem:
7068
7069Added a mechanism to defer _REG methods for some early-installed
7070handlers.
7071Most user handlers should be installed before call to
7072AcpiEnableSubsystem.
7073However, Event handlers and region handlers should be installed after
7074AcpiInitializeObjects. Override handlers for the "default" regions should
7075be
7076installed early, however. This change executes all _REG methods for the
7077default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7078chicken/egg issues between them. ACPICA BZ 848.
7079
7080Implemented an optimization for GPE detection. This optimization will
7081simply
7082ignore GPE registers that contain no enabled GPEs -- there is no need to
7083read the register since this information is available internally. This
7084becomes more important on machines with a large GPE space. ACPICA
7085bugzilla
7086884. Lin Ming. Suggestion from Joe Liu.
7087
7088Removed all use of the highly unreliable FADT revision field. The
7089revision
7090number in the FADT has been found to be completely unreliable and cannot
7091be
7092trusted. Only the actual table length can be used to infer the version.
7093This
7094change updates the ACPICA core and the disassembler so that both no
7095longer
7096even look at the FADT version and instead depend solely upon the FADT
7097length.
7098
7099Fix an unresolved name issue for the no-debug and no-error-message source
7100generation cases. The _AcpiModuleName was left undefined in these cases,
7101but
7102it is actually needed as a parameter to some interfaces. Define
7103_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7104
7105Split several large files (makefiles and project files updated)
7106  utglobal.c   -> utdecode.c
7107  dbcomds.c    -> dbmethod.c dbnames.c
7108  dsopcode.c   -> dsargs.c dscontrol.c
7109  dsload.c     -> dsload2.c
7110  aslanalyze.c -> aslbtypes.c aslwalks.c
7111
7112Example Code and Data Size: These are the sizes for the OS-independent
7113acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7114debug version of the code includes the debug output trace mechanism and
7115has
7116a much larger code and data size.
7117
7118  Previous Release (VC 9.0):
7119    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7120    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7121  Current Release (VC 9.0):
7122    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7123    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7124
71252) iASL Compiler/Disassembler and Tools:
7126
7127iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7128These are useful C-style macros with the standard definitions. ACPICA
7129bugzilla 898.
7130
7131iASL/DTC: Added support for integer expressions and labels. Support for
7132full
7133expressions for all integer fields in all ACPI tables. Support for labels
7134in
7135"generic" portions of tables such as UEFI. See the iASL reference manual.
7136
7137Debugger: Added a command to display the status of global handlers. The
7138"handlers" command will display op region, fixed event, and miscellaneous
7139global handlers. installation status -- and for op regions, whether
7140default
7141or user-installed handler will be used.
7142
7143iASL: Warn if reserved method incorrectly returns a value. Many
7144predefined
7145names are defined such that they do not return a value. If implemented as
7146a
7147method, issue a warning if such a name explicitly returns a value. ACPICA
7148Bugzilla 855.
7149
7150iASL: Added detection of GPE method name conflicts. Detects a conflict
7151where
7152there are two GPE methods of the form _Lxy and _Exy in the same scope.
7153(For
7154example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7155
7156iASL/DTC: Fixed a couple input scanner issues with comments and line
7157numbers. Comment remover could get confused and miss a comment ending.
7158Fixed
7159a problem with line counter maintenance.
7160
7161iASL/DTC: Reduced the severity of some errors from fatal to error. There
7162is
7163no need to abort on simple errors within a field definition.
7164
7165Debugger: Simplified the output of the help command. All help output now
7166in
7167a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7168
7169----------------------------------------
717012 January 2011. Summary of changes for version 20110112:
7171
71721) ACPI CA Core Subsystem:
7173
7174Fixed a race condition between method execution and namespace walks that
7175can
7176possibly cause a fault. The problem was apparently introduced in version
717720100528 as a result of a performance optimization that reduces the
7178number
7179of
7180namespace walks upon method exit by using the delete_namespace_subtree
7181function instead of the delete_namespace_by_owner function used
7182previously.
7183Bug is a missing namespace lock in the delete_namespace_subtree function.
7184dana.myers@oracle.com
7185
7186Fixed several issues and a possible fault with the automatic "serialized"
7187method support. History: This support changes a method to "serialized" on
7188the
7189fly if the method generates an AE_ALREADY_EXISTS error, indicating the
7190possibility that it cannot handle reentrancy. This fix repairs a couple
7191of
7192issues seen in the field, especially on machines with many cores:
7193
7194    1) Delete method children only upon the exit of the last thread,
7195       so as to not delete objects out from under other running threads
7196      (and possibly causing a fault.)
7197    2) Set the "serialized" bit for the method only upon the exit of the
7198       Last thread, so as to not cause deadlock when running threads
7199       attempt to exit.
7200    3) Cleanup the use of the AML "MethodFlags" and internal method flags
7201       so that there is no longer any confusion between the two.
7202
7203    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7204
7205Debugger: Now lock the namespace for duration of a namespace dump.
7206Prevents
7207issues if the namespace is changing dynamically underneath the debugger.
7208Especially affects temporary namespace nodes, since the debugger displays
7209these also.
7210
7211Updated the ordering of include files. The ACPICA headers should appear
7212before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7213set
7214any necessary compiler-specific defines, etc. Affects the ACPI-related
7215tools
7216and utilities.
7217
7218Updated all ACPICA copyrights and signons to 2011. Added the 2011
7219copyright
7220to all module headers and signons, including the Linux header. This
7221affects
7222virtually every file in the ACPICA core subsystem, iASL compiler, and all
7223utilities.
7224
7225Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7226project files for VC++ 6.0 are now obsolete. New project files can be
7227found
7228under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7229details.
7230
7231Example Code and Data Size: These are the sizes for the OS-independent
7232acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7233debug version of the code includes the debug output trace mechanism and
7234has a
7235much larger code and data size.
7236
7237  Previous Release (VC 6.0):
7238    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7239    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7240  Current Release (VC 9.0):
7241    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7242    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7243
72442) iASL Compiler/Disassembler and Tools:
7245
7246iASL: Added generic data types to the Data Table compiler. Add "generic"
7247data
7248types such as UINT32, String, Unicode, etc., to simplify the generation
7249of
7250platform-defined tables such as UEFI. Lin Ming.
7251
7252iASL: Added listing support for the Data Table Compiler. Adds listing
7253support
7254(-l) to display actual binary output for each line of input code.
7255
7256----------------------------------------
725709 December 2010. Summary of changes for version 20101209:
7258
72591) ACPI CA Core Subsystem:
7260
7261Completed the major overhaul of the GPE support code that was begun in
7262July
72632010. Major features include: removal of _PRW execution in ACPICA (host
7264executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7265changes to existing interfaces, simplification of GPE handler operation,
7266and
7267a handful of new interfaces:
7268
7269    AcpiUpdateAllGpes
7270    AcpiFinishGpe
7271    AcpiSetupGpeForWake
7272    AcpiSetGpeWakeMask
7273    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7274
7275See the ACPICA Programmer Reference for full details and programming
7276information. See the new section 4.4 "General Purpose Event (GPE)
7277Support"
7278for a full overview, and section 8.7 "ACPI General Purpose Event
7279Management"
7280for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7281Ming,
7282Bob Moore, Rafael Wysocki.
7283
7284Implemented a new GPE feature for Windows compatibility, the "Implicit
7285Wake
7286GPE Notify". This feature will automatically issue a Notify(2) on a
7287device
7288when a Wake GPE is received if there is no corresponding GPE method or
7289handler. ACPICA BZ 870.
7290
7291Fixed a problem with the Scope() operator during table parse and load
7292phase.
7293During load phase (table load or method execution), the scope operator
7294should
7295not enter the target into the namespace. Instead, it should open a new
7296scope
7297at the target location. Linux BZ 19462, ACPICA BZ 882.
7298
7299Example Code and Data Size: These are the sizes for the OS-independent
7300acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7301debug version of the code includes the debug output trace mechanism and
7302has a
7303much larger code and data size.
7304
7305  Previous Release:
7306    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7307    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7308  Current Release:
7309    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7310    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7311
73122) iASL Compiler/Disassembler and Tools:
7313
7314iASL: Relax the alphanumeric restriction on _CID strings. These strings
7315are
7316"bus-specific" per the ACPI specification, and therefore any characters
7317are
7318acceptable. The only checks that can be performed are for a null string
7319and
7320perhaps for a leading asterisk. ACPICA BZ 886.
7321
7322iASL: Fixed a problem where a syntax error that caused a premature EOF
7323condition on the source file emitted a very confusing error message. The
7324premature EOF is now detected correctly. ACPICA BZ 891.
7325
7326Disassembler: Decode the AccessSize within a Generic Address Structure
7327(byte
7328access, word access, etc.) Note, this field does not allow arbitrary bit
7329access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7330
7331New: AcpiNames utility - Example namespace dump utility. Shows an example
7332of
7333ACPICA configuration for a minimal namespace dump utility. Uses table and
7334namespace managers, but no AML interpreter. Does not add any
7335functionality
7336over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7337partition and configure ACPICA. ACPICA BZ 883.
7338
7339AML Debugger: Increased the debugger buffer size for method return
7340objects.
7341Was 4K, increased to 16K. Also enhanced error messages for debugger
7342method
7343execution, including the buffer overflow case.
7344
7345----------------------------------------
734613 October 2010. Summary of changes for version 20101013:
7347
73481) ACPI CA Core Subsystem:
7349
7350Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7351now
7352clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7353HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7354
7355Changed the type of the predefined namespace object _TZ from ThermalZone
7356to
7357Device. This was found to be confusing to the host software that
7358processes
7359the various thermal zones, since _TZ is not really a ThermalZone.
7360However,
7361a
7362Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7363Zhang.
7364
7365Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7366string is "Windows 2006 SP2".
7367
7368Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7369nsrepair
7370code automatically repairs _HID-related strings, this type of code is no
7371longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7372878.
7373
7374Example Code and Data Size: These are the sizes for the OS-independent
7375acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7376debug version of the code includes the debug output trace mechanism and
7377has a
7378much larger code and data size.
7379
7380  Previous Release:
7381    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7382    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7383  Current Release:
7384    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7385    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7386
73872) iASL Compiler/Disassembler and Tools:
7388
7389iASL: Implemented additional compile-time validation for _HID strings.
7390The
7391non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7392length
7393of
7394the string must be exactly seven or eight characters. For both _HID and
7395_CID
7396strings, all characters must be alphanumeric. ACPICA BZ 874.
7397
7398iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7399descriptors that are mostly or all zeros, with the expectation that they
7400will
7401be filled in at runtime. iASL now allows this as long as there is a
7402"resource
7403tag" (name) associated with the descriptor, which gives the ASL a handle
7404needed to modify the descriptor. ACPICA BZ 873.
7405
7406Added single-thread support to the generic Unix application OSL.
7407Primarily
7408for iASL support, this change removes the use of semaphores in the
7409single-
7410threaded ACPICA tools/applications - increasing performance. The
7411_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7412option. ACPICA BZ 879.
7413
7414AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7415support
7416for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7417
7418iASL: Moved all compiler messages to a new file, aslmessages.h.
7419
7420----------------------------------------
742115 September 2010. Summary of changes for version 20100915:
7422
74231) ACPI CA Core Subsystem:
7424
7425Removed the AcpiOsDerivePciId OSL interface. The various host
7426implementations
7427of this function were not OS-dependent and are now obsolete and can be
7428removed from all host OSLs. This function has been replaced by
7429AcpiHwDerivePciId, which is now part of the ACPICA core code.
7430AcpiHwDerivePciId has been implemented without recursion. Adds one new
7431module, hwpci.c. ACPICA BZ 857.
7432
7433Implemented a dynamic repair for _HID and _CID strings. The following
7434problems are now repaired at runtime: 1) Remove a leading asterisk in the
7435string, and 2) the entire string is uppercased. Both repairs are in
7436accordance with the ACPI specification and will simplify host driver
7437code.
7438ACPICA BZ 871.
7439
7440The ACPI_THREAD_ID type is no longer configurable, internally it is now
7441always UINT64. This simplifies the ACPICA code, especially any printf
7442output.
7443UINT64 is the only common data type for all thread_id types across all
7444operating systems. It is now up to the host OSL to cast the native
7445thread_id
7446type to UINT64 before returning the value to ACPICA (via
7447AcpiOsGetThreadId).
7448Lin Ming, Bob Moore.
7449
7450Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7451"inline"
7452keyword is not standard across compilers, and this type allows inline to
7453be
7454configured on a per-compiler basis. Lin Ming.
7455
7456Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7457available.
7458Added an extern for this boolean in acpixf.h. Some hosts utilize this
7459value
7460during suspend/restore operations. ACPICA BZ 869.
7461
7462All code that implements error/warning messages with the "ACPI:" prefix
7463has
7464been moved to a new module, utxferror.c.
7465
7466The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7467it
7468is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7469
7470Example Code and Data Size: These are the sizes for the OS-independent
7471acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7472debug version of the code includes the debug output trace mechanism and
7473has a
7474much larger code and data size.
7475
7476  Previous Release:
7477    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7478    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7479  Current Release:
7480    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7481    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7482
74832) iASL Compiler/Disassembler and Tools:
7484
7485iASL/Disassembler: Write ACPI errors to stderr instead of the output
7486file.
7487This keeps the output files free of random error messages that may
7488originate
7489from within the namespace/interpreter code. Used this opportunity to
7490merge
7491all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7492866. Lin Ming, Bob Moore.
7493
7494Tools: update some printfs for ansi warnings on size_t. Handle width
7495change
7496of size_t on 32-bit versus 64-bit generations. Lin Ming.
7497
7498----------------------------------------
749906 August 2010. Summary of changes for version 20100806:
7500
75011) ACPI CA Core Subsystem:
7502
7503Designed and implemented a new host interface to the _OSI support code.
7504This
7505will allow the host to dynamically add or remove multiple _OSI strings,
7506as
7507well as install an optional handler that is called for each _OSI
7508invocation.
7509Also added a new AML debugger command, 'osi' to display and modify the
7510global
7511_OSI string table, and test support in the AcpiExec utility. See the
7512ACPICA
7513reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7514New Functions:
7515    AcpiInstallInterface - Add an _OSI string.
7516    AcpiRemoveInterface - Delete an _OSI string.
7517    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7518Obsolete Functions:
7519    AcpiOsValidateInterface - no longer used.
7520New Files:
7521    source/components/utilities/utosi.c
7522
7523Re-introduced the support to enable multi-byte transfers for Embedded
7524Controller (EC) operation regions. A reported problem was found to be a
7525bug
7526in the host OS, not in the multi-byte support. Previously, the maximum
7527data
7528size passed to the EC operation region handler was a single byte. There
7529are
7530often EC Fields larger than one byte that need to be transferred, and it
7531is
7532useful for the EC driver to lock these as a single transaction. This
7533change
7534enables single transfers larger than 8 bits. This effectively changes the
7535access to the EC space from ByteAcc to AnyAcc, and will probably require
7536changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7537bit
7538transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7539
7540Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7541prototype in acpiosxf.h had the output value pointer as a (void *).
7542It should be a (UINT64 *). This may affect some host OSL code.
7543
7544Fixed a couple problems with the recently modified Linux makefiles for
7545iASL
7546and AcpiExec. These new makefiles place the generated object files in the
7547local directory so that there can be no collisions between the files that
7548are
7549shared between them that are compiled with different options.
7550
7551Example Code and Data Size: These are the sizes for the OS-independent
7552acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7553debug version of the code includes the debug output trace mechanism and
7554has a
7555much larger code and data size.
7556
7557  Previous Release:
7558    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7559    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7560  Current Release:
7561    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7562    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7563
75642) iASL Compiler/Disassembler and Tools:
7565
7566iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7567the
7568namespace from and disassemble an entire group of AML files. Useful for
7569loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7570and
7571disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7572
7573iASL: Allow multiple invocations of -e option. This change allows
7574multiple
7575uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7576834.
7577Lin Ming.
7578
7579----------------------------------------
758002 July 2010. Summary of changes for version 20100702:
7581
75821) ACPI CA Core Subsystem:
7583
7584Implemented several updates to the recently added GPE reference count
7585support. The model for "wake" GPEs is changing to give the host OS
7586complete
7587control of these GPEs. Eventually, the ACPICA core will not execute any
7588_PRW
7589methods, since the host already must execute them. Also, additional
7590changes
7591were made to help ensure that the reference counts are kept in proper
7592synchronization with reality. Rafael J. Wysocki.
7593
75941) Ensure that GPEs are not enabled twice during initialization.
75952) Ensure that GPE enable masks stay in sync with the reference count.
75963) Do not inadvertently enable GPEs when writing GPE registers.
75974) Remove the internal wake reference counter and add new AcpiGpeWakeup
7598interface. This interface will set or clear individual GPEs for wakeup.
75995) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7600interfaces
7601are now used for "runtime" GPEs only.
7602
7603Changed the behavior of the GPE install/remove handler interfaces. The
7604GPE
7605is
7606no longer disabled during this process, as it was found to cause problems
7607on
7608some machines. Rafael J. Wysocki.
7609
7610Reverted a change introduced in version 20100528 to enable Embedded
7611Controller multi-byte transfers. This change was found to cause problems
7612with
7613Index Fields and possibly Bank Fields. It will be reintroduced when these
7614problems have been resolved.
7615
7616Fixed a problem with references to Alias objects within Package Objects.
7617A
7618reference to an Alias within the definition of a Package was not always
7619resolved properly. Aliases to objects like Processors, Thermal zones,
7620etc.
7621were resolved to the actual object instead of a reference to the object
7622as
7623it
7624should be. Package objects are only allowed to contain integer, string,
7625buffer, package, and reference objects. Redhat bugzilla 608648.
7626
7627Example Code and Data Size: These are the sizes for the OS-independent
7628acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7629debug version of the code includes the debug output trace mechanism and
7630has a
7631much larger code and data size.
7632
7633  Previous Release:
7634    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7635    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7636  Current Release:
7637    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7638    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7639
76402) iASL Compiler/Disassembler and Tools:
7641
7642iASL: Implemented a new compiler subsystem to allow definition and
7643compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7644These
7645are called "ACPI Data Tables", and the new compiler is the "Data Table
7646Compiler". This compiler is intended to simplify the existing error-prone
7647process of creating these tables for the BIOS, as well as allowing the
7648disassembly, modification, recompilation, and override of existing ACPI
7649data
7650tables. See the iASL User Guide for detailed information.
7651
7652iASL: Implemented a new Template Generator option in support of the new
7653Data
7654Table Compiler. This option will create examples of all known ACPI tables
7655that can be used as the basis for table development. See the iASL
7656documentation and the -T option.
7657
7658Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7659Descriptor Table).
7660
7661Updated the Linux makefiles for iASL and AcpiExec to place the generated
7662object files in the local directory so that there can be no collisions
7663between the shared files between them that are generated with different
7664options.
7665
7666Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7667Use
7668the #define __APPLE__ to enable this support.
7669
7670----------------------------------------
767128 May 2010. Summary of changes for version 20100528:
7672
7673Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7674available at www.acpi.info. This is primarily an errata release.
7675
76761) ACPI CA Core Subsystem:
7677
7678Undefined ACPI tables: We are looking for the definitions for the
7679following
7680ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7681
7682Implemented support to enable multi-byte transfers for Embedded
7683Controller
7684(EC) operation regions. Previously, the maximum data size passed to the
7685EC
7686operation region handler was a single byte. There are often EC Fields
7687larger
7688than one byte that need to be transferred, and it is useful for the EC
7689driver
7690to lock these as a single transaction. This change enables single
7691transfers
7692larger than 8 bits. This effectively changes the access to the EC space
7693from
7694ByteAcc to AnyAcc, and will probably require changes to the host OS
7695Embedded
7696Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7697bit
7698transfers. Alexey Starikovskiy, Lin Ming
7699
7700Implemented a performance enhancement for namespace search and access.
7701This
7702change enhances the performance of namespace searches and walks by adding
7703a
7704backpointer to the parent in each namespace node. On large namespaces,
7705this
7706change can improve overall ACPI performance by up to 9X. Adding a pointer
7707to
7708each namespace node increases the overall size of the internal namespace
7709by
7710about 5%, since each namespace entry usually consists of both a namespace
7711node and an ACPI operand object. However, this is the first growth of the
7712namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7713
7714Implemented a performance optimization that reduces the number of
7715namespace
7716walks. On control method exit, only walk the namespace if the method is
7717known
7718to have created namespace objects outside of its local scope. Previously,
7719the
7720entire namespace was traversed on each control method exit. This change
7721can
7722improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7723Moore.
7724
7725Added support to truncate I/O addresses to 16 bits for Windows
7726compatibility.
7727Some ASL code has been seen in the field that inadvertently has bits set
7728above bit 15. This feature is optional and is enabled if the BIOS
7729requests
7730any Windows OSI strings. It can also be enabled by the host OS. Matthew
7731Garrett, Bob Moore.
7732
7733Added support to limit the maximum time for the ASL Sleep() operator. To
7734prevent accidental deep sleeps, limit the maximum time that Sleep() will
7735actually sleep. Configurable, the default maximum is two seconds. ACPICA
7736bugzilla 854.
7737
7738Added run-time validation support for the _WDG and_WED Microsoft
7739predefined
7740methods. These objects are defined by "Windows Instrumentation", and are
7741not
7742part of the ACPI spec. ACPICA BZ 860.
7743
7744Expanded all statistic counters used during namespace and device
7745initialization from 16 to 32 bits in order to support very large
7746namespaces.
7747
7748Replaced all instances of %d in printf format specifiers with %u since
7749nearly
7750all integers in ACPICA are unsigned.
7751
7752Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7753returned
7754as AE_NO_HANDLER.
7755
7756Example Code and Data Size: These are the sizes for the OS-independent
7757acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7758debug version of the code includes the debug output trace mechanism and
7759has a
7760much larger code and data size.
7761
7762  Previous Release:
7763    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7764    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7765  Current Release:
7766    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7767    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7768
77692) iASL Compiler/Disassembler and Tools:
7770
7771iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7772methods. These objects are defined by "Windows Instrumentation", and are
7773not
7774part of the ACPI spec. ACPICA BZ 860.
7775
7776AcpiExec: added option to disable the memory tracking mechanism. The -dt
7777option will disable the tracking mechanism, which improves performance
7778considerably.
7779
7780AcpiExec: Restructured the command line options into -d (disable) and -e
7781(enable) options.
7782
7783----------------------------------------
778428 April 2010. Summary of changes for version 20100428:
7785
77861) ACPI CA Core Subsystem:
7787
7788Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7789including FADT-based and GPE Block Devices, execute any _PRW methods in
7790the
7791new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7792runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7793immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7794Devices. Provides compatibility with other ACPI implementations. Two new
7795files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7796Moore.
7797
7798Fixed a regression introduced in version 20100331 within the table
7799manager
7800where initial table loading could fail. This was introduced in the fix
7801for
7802AcpiReallocateRootTable. Also, renamed some of fields in the table
7803manager
7804data structures to clarify their meaning and use.
7805
7806Fixed a possible allocation overrun during internal object copy in
7807AcpiUtCopySimpleObject. The original code did not correctly handle the
7808case
7809where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7810847.
7811
7812Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7813possible access beyond end-of-allocation. Also, now fully validate
7814descriptor
7815(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7816
7817Example Code and Data Size: These are the sizes for the OS-independent
7818acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7819debug version of the code includes the debug output trace mechanism and
7820has a
7821much larger code and data size.
7822
7823  Previous Release:
7824    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7825    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7826  Current Release:
7827    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7828    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7829
78302) iASL Compiler/Disassembler and Tools:
7831
7832iASL: Implemented Min/Max/Len/Gran validation for address resource
7833descriptors. This change implements validation for the address fields
7834that
7835are common to all address-type resource descriptors. These checks are
7836implemented: Checks for valid Min/Max, length within the Min/Max window,
7837valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7838per
7839table 6-40 in the ACPI 4.0a specification. Also split the large
7840aslrestype1.c
7841and aslrestype2.c files into five new files. ACPICA BZ 840.
7842
7843iASL: Added support for the _Wxx predefined names. This support was
7844missing
7845and these names were not recognized by the compiler as valid predefined
7846names. ACPICA BZ 851.
7847
7848iASL: Added an error for all predefined names that are defined to return
7849no
7850value and thus must be implemented as Control Methods. These include all
7851of
7852the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7853names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7854
7855iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7856an
7857ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7858be
7859dynamically loaded via the Load() operator. Also cleaned up output for
7860the
7861-
7862ta and -tc options. ACPICA BZ 853.
7863
7864Tests: Added a new file with examples of extended iASL error checking.
7865Demonstrates the advanced error checking ability of the iASL compiler.
7866Available at tests/misc/badcode.asl.
7867
7868----------------------------------------
786931 March 2010. Summary of changes for version 20100331:
7870
78711) ACPI CA Core Subsystem:
7872
7873Completed a major update for the GPE support in order to improve support
7874for
7875shared GPEs and to simplify both host OS and ACPICA code. Added a
7876reference
7877count mechanism to support shared GPEs that require multiple device
7878drivers.
7879Several external interfaces have changed. One external interface has been
7880removed. One new external interface was added. Most of the GPE external
7881interfaces now use the GPE spinlock instead of the events mutex (and the
7882Flags parameter for many GPE interfaces has been removed.) See the
7883updated
7884ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7885Rafael
7886Wysocki. ACPICA BZ 831.
7887
7888Changed:
7889    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7890Removed:
7891    AcpiSetGpeType
7892New:
7893    AcpiSetGpe
7894
7895Implemented write support for DataTable operation regions. These regions
7896are
7897defined via the DataTableRegion() operator. Previously, only read support
7898was
7899implemented. The ACPI specification allows DataTableRegions to be
7900read/write,
7901however.
7902
7903Implemented a new subsystem option to force a copy of the DSDT to local
7904memory. Optionally copy the entire DSDT to local memory (instead of
7905simply
7906mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7907replace
7908the original DSDT, creating the need for this option. Default is FALSE,
7909do
7910not copy the DSDT.
7911
7912Implemented detection of a corrupted or replaced DSDT. This change adds
7913support to detect a DSDT that has been corrupted and/or replaced from
7914outside
7915the OS (by firmware). This is typically catastrophic for the system, but
7916has
7917been seen on some machines. Once this problem has been detected, the DSDT
7918copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7919
7920Fixed two problems with AcpiReallocateRootTable during the root table
7921copy.
7922When copying the root table to the new allocation, the length used was
7923incorrect. The new size was used instead of the current table size,
7924meaning
7925too much data was copied. Also, the count of available slots for ACPI
7926tables
7927was not set correctly. Alexey Starikovskiy, Bob Moore.
7928
7929Example Code and Data Size: These are the sizes for the OS-independent
7930acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7931debug version of the code includes the debug output trace mechanism and
7932has a
7933much larger code and data size.
7934
7935  Previous Release:
7936    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7937    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7938  Current Release:
7939    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7940    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7941
79422) iASL Compiler/Disassembler and Tools:
7943
7944iASL: Implement limited typechecking for values returned from predefined
7945control methods. The type of any returned static (unnamed) object is now
7946validated. For example, Return(1). ACPICA BZ 786.
7947
7948iASL: Fixed a predefined name object verification regression. Fixes a
7949problem
7950introduced in version 20100304. An error is incorrectly generated if a
7951predefined name is declared as a static named object with a value defined
7952using the keywords "Zero", "One", or "Ones". Lin Ming.
7953
7954iASL: Added Windows 7 support for the -g option (get local ACPI tables)
7955by
7956reducing the requested registry access rights. ACPICA BZ 842.
7957
7958Disassembler: fixed a possible fault when generating External()
7959statements.
7960Introduced in commit ae7d6fd: Properly handle externals with parent-
7961prefix
7962(carat). Fixes a string length allocation calculation. Lin Ming.
7963
7964----------------------------------------
796504 March 2010. Summary of changes for version 20100304:
7966
79671) ACPI CA Core Subsystem:
7968
7969Fixed a possible problem with the AML Mutex handling function
7970AcpiExReleaseMutex where the function could fault under the very rare
7971condition when the interpreter has blocked, the interpreter lock is
7972released,
7973the interpreter is then reentered via the same thread, and attempts to
7974acquire an AML mutex that was previously acquired. FreeBSD report 140979.
7975Lin
7976Ming.
7977
7978Implemented additional configuration support for the AML "Debug Object".
7979Output from the debug object can now be enabled via a global variable,
7980AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
7981debugging.
7982This debug output is now available in the release version of ACPICA
7983instead
7984of just the debug version. Also, the entire debug output module can now
7985be
7986configured out of the ACPICA build if desired. One new file added,
7987executer/exdebug.c. Lin Ming, Bob Moore.
7988
7989Added header support for the ACPI MCHI table (Management Controller Host
7990Interface Table). This table was added in ACPI 4.0, but the defining
7991document
7992has only recently become available.
7993
7994Standardized output of integer values for ACPICA warnings/errors. Always
7995use
79960x prefix for hex output, always use %u for unsigned integer decimal
7997output.
7998Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
7999400
8000invocations.) These invocations were converted from the original
8001ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8002
8003Example Code and Data Size: These are the sizes for the OS-independent
8004acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8005debug version of the code includes the debug output trace mechanism and
8006has a
8007much larger code and data size.
8008
8009  Previous Release:
8010    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8011    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8012  Current Release:
8013    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8014    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8015
80162) iASL Compiler/Disassembler and Tools:
8017
8018iASL: Implemented typechecking support for static (non-control method)
8019predefined named objects that are declared with the Name() operator. For
8020example, the type of this object is now validated to be of type Integer:
8021Name(_BBN, 1). This change migrates the compiler to using the core
8022predefined
8023name table instead of maintaining a local version. Added a new file,
8024aslpredef.c. ACPICA BZ 832.
8025
8026Disassembler: Added support for the ACPI 4.0 MCHI table.
8027
8028----------------------------------------
802921 January 2010. Summary of changes for version 20100121:
8030
80311) ACPI CA Core Subsystem:
8032
8033Added the 2010 copyright to all module headers and signons. This affects
8034virtually every file in the ACPICA core subsystem, the iASL compiler, the
8035tools/utilities, and the test suites.
8036
8037Implemented a change to the AcpiGetDevices interface to eliminate
8038unnecessary
8039invocations of the _STA method. In the case where a specific _HID is
8040requested, do not run _STA until a _HID match is found. This eliminates
8041potentially dozens of _STA calls during a search for a particular
8042device/HID,
8043which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8044
8045Implemented an additional repair for predefined method return values.
8046Attempt
8047to repair unexpected NULL elements within returned Package objects.
8048Create
8049an
8050Integer of value zero, a NULL String, or a zero-length Buffer as
8051appropriate.
8052ACPICA BZ 818. Lin Ming, Bob Moore.
8053
8054Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8055the
8056code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8057(with
805864-bit AML integers). It is now obsolete and this change removes it from
8059the
8060ACPICA code base, replaced by UINT64. The original typedef has been
8061retained
8062for now for compatibility with existing device driver code. ACPICA BZ
8063824.
8064
8065Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8066in
8067the parse tree object.
8068
8069Added additional warning options for the gcc-4 generation. Updated the
8070source
8071accordingly. This includes some code restructuring to eliminate
8072unreachable
8073code, elimination of some gotos, elimination of unused return values,
8074some
8075additional casting, and removal of redundant declarations.
8076
8077Example Code and Data Size: These are the sizes for the OS-independent
8078acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8079debug version of the code includes the debug output trace mechanism and
8080has a
8081much larger code and data size.
8082
8083  Previous Release:
8084    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8085    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8086  Current Release:
8087    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8088    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8089
80902) iASL Compiler/Disassembler and Tools:
8091
8092No functional changes for this release.
8093
8094----------------------------------------
809514 December 2009. Summary of changes for version 20091214:
8096
80971) ACPI CA Core Subsystem:
8098
8099Enhanced automatic data type conversions for predefined name repairs.
8100This
8101change expands the automatic repairs/conversions for predefined name
8102return
8103values to make Integers, Strings, and Buffers fully interchangeable.
8104Also,
8105a
8106Buffer can be converted to a Package of Integers if necessary. The
8107nsrepair.c
8108module was completely restructured. Lin Ming, Bob Moore.
8109
8110Implemented automatic removal of null package elements during predefined
8111name
8112repairs. This change will automatically remove embedded and trailing NULL
8113package elements from returned package objects that are defined to
8114contain
8115a
8116variable number of sub-packages. The driver is then presented with a
8117package
8118with no null elements to deal with. ACPICA BZ 819.
8119
8120Implemented a repair for the predefined _FDE and _GTM names. The expected
8121return value for both names is a Buffer of 5 DWORDs. This repair fixes
8122two
8123possible problems (both seen in the field), where a package of integers
8124is
8125returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8126Kim.
8127
8128Implemented additional module-level code support. This change will
8129properly
8130execute module-level code that is not at the root of the namespace (under
8131a
8132Device object, etc.). Now executes the code within the current scope
8133instead
8134of the root. ACPICA BZ 762. Lin Ming.
8135
8136Fixed possible mutex acquisition errors when running _REG methods. Fixes
8137a
8138problem where mutex errors can occur when running a _REG method that is
8139in
8140the same scope as a method-defined operation region or an operation
8141region
8142under a module-level IF block. This type of code is rare, so the problem
8143has
8144not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8145
8146Fixed a possible memory leak during module-level code execution. An
8147object
8148could be leaked for each block of executed module-level code if the
8149interpreter slack mode is enabled This change deletes any implicitly
8150returned
8151object from the module-level code block. Lin Ming.
8152
8153Removed messages for successful predefined repair(s). The repair
8154mechanism
8155was considered too wordy. Now, messages are only unconditionally emitted
8156if
8157the return object cannot be repaired. Existing messages for successful
8158repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8159827.
8160
8161Example Code and Data Size: These are the sizes for the OS-independent
8162acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8163debug version of the code includes the debug output trace mechanism and
8164has a
8165much larger code and data size.
8166
8167  Previous Release:
8168    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8169    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8170  Current Release:
8171    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8172    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8173
81742) iASL Compiler/Disassembler and Tools:
8175
8176iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8177files
8178were no longer automatically removed at the termination of the compile.
8179
8180acpiexec: Implemented the -f option to specify default region fill value.
8181This option specifies the value used to initialize buffers that simulate
8182operation regions. Default value is zero. Useful for debugging problems
8183that
8184depend on a specific initial value for a region or field.
8185
8186----------------------------------------
818712 November 2009. Summary of changes for version 20091112:
8188
81891) ACPI CA Core Subsystem:
8190
8191Implemented a post-order callback to AcpiWalkNamespace. The existing
8192interface only has a pre-order callback. This change adds an additional
8193parameter for a post-order callback which will be more useful for bus
8194scans.
8195ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8196
8197Modified the behavior of the operation region memory mapping cache for
8198SystemMemory. Ensure that the memory mappings created for operation
8199regions
8200do not cross 4K page boundaries. Crossing a page boundary while mapping
8201regions can cause kernel warnings on some hosts if the pages have
8202different
8203attributes. Such regions are probably BIOS bugs, and this is the
8204workaround.
8205Linux BZ 14445. Lin Ming.
8206
8207Implemented an automatic repair for predefined methods that must return
8208sorted lists. This change will repair (by sorting) packages returned by
8209_ALR,
8210_PSS, and _TSS. Drivers can now assume that the packages are correctly
8211sorted
8212and do not contain NULL package elements. Adds one new file,
8213namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8214
8215Fixed a possible fault during predefined name validation if a return
8216Package
8217object contains NULL elements. Also adds a warning if a NULL element is
8218followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8219may
8220include repair or removal of all such NULL elements where possible.
8221
8222Implemented additional module-level executable AML code support. This
8223change
8224will execute module-level code that is not at the root of the namespace
8225(under a Device object, etc.) at table load time. Module-level executable
8226AML
8227code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8228
8229Implemented a new internal function to create Integer objects. This
8230function
8231simplifies miscellaneous object creation code. ACPICA BZ 823.
8232
8233Reduced the severity of predefined repair messages, Warning to Info.
8234Since
8235the object was successfully repaired, a warning is too severe. Reduced to
8236an
8237info message for now. These messages may eventually be changed to debug-
8238only.
8239ACPICA BZ 812.
8240
8241Example Code and Data Size: These are the sizes for the OS-independent
8242acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8243debug version of the code includes the debug output trace mechanism and
8244has a
8245much larger code and data size.
8246
8247  Previous Release:
8248    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8249    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8250  Current Release:
8251    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8252    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8253
82542) iASL Compiler/Disassembler and Tools:
8255
8256iASL: Implemented Switch() with While(1) so that Break works correctly.
8257This
8258change correctly implements the Switch operator with a surrounding
8259While(1)
8260so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8261
8262iASL: Added a message if a package initializer list is shorter than
8263package
8264length. Adds a new remark for a Package() declaration if an initializer
8265list
8266exists, but is shorter than the declared length of the package. Although
8267technically legal, this is probably a coding error and it is seen in the
8268field. ACPICA BZ 815. Lin Ming, Bob Moore.
8269
8270iASL: Fixed a problem where the compiler could fault after the maximum
8271number
8272of errors was reached (200).
8273
8274acpixtract: Fixed a possible warning for pointer cast if the compiler
8275warning
8276level set very high.
8277
8278----------------------------------------
827913 October 2009. Summary of changes for version 20091013:
8280
82811) ACPI CA Core Subsystem:
8282
8283Fixed a problem where an Operation Region _REG method could be executed
8284more
8285than once. If a custom address space handler is installed by the host
8286before
8287the "initialize operation regions" phase of the ACPICA initialization,
8288any
8289_REG methods for that address space could be executed twice. This change
8290fixes the problem. ACPICA BZ 427. Lin Ming.
8291
8292Fixed a possible memory leak for the Scope() ASL operator. When the exact
8293invocation of "Scope(\)" is executed (change scope to root), one internal
8294operand object was leaked. Lin Ming.
8295
8296Implemented a run-time repair for the _MAT predefined method. If the _MAT
8297return value is defined as a Field object in the AML, and the field
8298size is less than or equal to the default width of an integer (32 or
829964),_MAT
8300can incorrectly return an Integer instead of a Buffer. ACPICA now
8301automatically repairs this problem. ACPICA BZ 810.
8302
8303Implemented a run-time repair for the _BIF and _BIX predefined methods.
8304The
8305"OEM Information" field is often incorrectly returned as an Integer with
8306value zero if the field is not supported by the platform. This is due to
8307an
8308ambiguity in the ACPI specification. The field should always be a string.
8309ACPICA now automatically repairs this problem by returning a NULL string
8310within the returned Package. ACPICA BZ 807.
8311
8312Example Code and Data Size: These are the sizes for the OS-independent
8313acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8314debug version of the code includes the debug output trace mechanism and
8315has a
8316much larger code and data size.
8317
8318  Previous Release:
8319    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8320    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8321  Current Release:
8322    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8323    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8324
83252) iASL Compiler/Disassembler and Tools:
8326
8327Disassembler: Fixed a problem where references to external symbols that
8328contained one or more parent-prefixes (carats) were not handled
8329correctly,
8330possibly causing a fault. ACPICA BZ 806. Lin Ming.
8331
8332Disassembler: Restructured the code so that all functions that handle
8333external symbols are in a single module. One new file is added,
8334common/dmextern.c.
8335
8336AML Debugger: Added a max count argument for the Batch command (which
8337executes multiple predefined methods within the namespace.)
8338
8339iASL: Updated the compiler documentation (User Reference.) Available at
8340http://www.acpica.org/documentation/. ACPICA BZ 750.
8341
8342AcpiXtract: Updated for Lint and other formatting changes. Close all open
8343files.
8344
8345----------------------------------------
834603 September 2009. Summary of changes for version 20090903:
8347
83481) ACPI CA Core Subsystem:
8349
8350For Windows Vista compatibility, added the automatic execution of an _INI
8351method located at the namespace root (\_INI). This method is executed at
8352table load time. This support is in addition to the automatic execution
8353of
8354\_SB._INI. Lin Ming.
8355
8356Fixed a possible memory leak in the interpreter for AML package objects
8357if
8358the package initializer list is longer than the defined size of the
8359package.
8360This apparently can only happen if the BIOS changes the package size on
8361the
8362fly (seen in a _PSS object), as ASL compilers do not allow this. The
8363interpreter will truncate the package to the defined size (and issue an
8364error
8365message), but previously could leave the extra objects undeleted if they
8366were
8367pre-created during the argument processing (such is the case if the
8368package
8369consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8370
8371Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8372This has been reported in the field. Previously, ACPICA would zero out
8373the
8374buffer/string. Now, the operation is treated as a noop. Provides Windows
8375compatibility. ACPICA BZ 803. Lin Ming.
8376
8377Removed an extraneous error message for ASL constructs of the form
8378Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8379statements
8380are seen in many BIOSs and are once again treated as NOOPs and no error
8381is
8382emitted when they are encountered. ACPICA BZ 785.
8383
8384Fixed an extraneous warning message if a _DSM reserved method returns a
8385Package object. _DSM can return any type of object, so validation on the
8386return type cannot be performed. ACPICA BZ 802.
8387
8388Example Code and Data Size: These are the sizes for the OS-independent
8389acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8390debug version of the code includes the debug output trace mechanism and
8391has a
8392much larger code and data size.
8393
8394  Previous Release:
8395    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8396    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8397  Current Release:
8398    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8399    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8400
84012) iASL Compiler/Disassembler and Tools:
8402
8403iASL: Fixed a problem with the use of the Alias operator and Resource
8404Templates. The correct alias is now constructed and no error is emitted.
8405ACPICA BZ 738.
8406
8407iASL: Implemented the -I option to specify additional search directories
8408for
8409include files. Allows multiple additional search paths for include files.
8410Directories are searched in the order specified on the command line
8411(after
8412the local directory is searched.) ACPICA BZ 800.
8413
8414iASL: Fixed a problem where the full pathname for include files was not
8415emitted for warnings/errors. This caused the IDE support to not work
8416properly. ACPICA BZ 765.
8417
8418iASL: Implemented the -@ option to specify a Windows-style response file
8419containing additional command line options. ACPICA BZ 801.
8420
8421AcpiExec: Added support to load multiple AML files simultaneously (such
8422as
8423a
8424DSDT and multiple SSDTs). Also added support for wildcards within the AML
8425pathname. These features allow all machine tables to be easily loaded and
8426debugged together. ACPICA BZ 804.
8427
8428Disassembler: Added missing support for disassembly of HEST table Error
8429Bank
8430subtables.
8431
8432----------------------------------------
843330 July 2009. Summary of changes for version 20090730:
8434
8435The ACPI 4.0 implementation for ACPICA is complete with this release.
8436
84371) ACPI CA Core Subsystem:
8438
8439ACPI 4.0: Added header file support for all new and changed ACPI tables.
8440Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8441new
8442for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8443BERT,
8444EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8445There
8446have been some ACPI 4.0 changes to other existing tables. Split the large
8447actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8448
8449ACPI 4.0: Implemented predefined name validation for all new names. There
8450are
845131 new names in ACPI 4.0. The predefined validation module was split into
8452two
8453files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8454
8455Implemented support for so-called "module-level executable code". This is
8456executable AML code that exists outside of any control method and is
8457intended
8458to be executed at table load time. Although illegal since ACPI 2.0, this
8459type
8460of code still exists and is apparently still being created. Blocks of
8461this
8462code are now detected and executed as intended. Currently, the code
8463blocks
8464must exist under either an If, Else, or While construct; these are the
8465typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8466
8467Implemented an automatic dynamic repair for predefined names that return
8468nested Package objects. This applies to predefined names that are defined
8469to
8470return a variable-length Package of sub-packages. If the number of sub-
8471packages is one, BIOS code is occasionally seen that creates a simple
8472single
8473package with no sub-packages. This code attempts to fix the problem by
8474wrapping a new package object around the existing package. These methods
8475can
8476be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8477BZ
8478790.
8479
8480Fixed a regression introduced in 20090625 for the AcpiGetDevices
8481interface.
8482The _HID/_CID matching was broken and no longer matched IDs correctly.
8483ACPICA
8484BZ 793.
8485
8486Fixed a problem with AcpiReset where the reset would silently fail if the
8487register was one of the protected I/O ports. AcpiReset now bypasses the
8488port
8489validation mechanism. This may eventually be driven into the
8490AcpiRead/Write
8491interfaces.
8492
8493Fixed a regression related to the recent update of the AcpiRead/Write
8494interfaces. A sleep/suspend could fail if the optional PM2 Control
8495register
8496does not exist during an attempt to write the Bus Master Arbitration bit.
8497(However, some hosts already delete the code that writes this bit, and
8498the
8499code may in fact be obsolete at this date.) ACPICA BZ 799.
8500
8501Fixed a problem where AcpiTerminate could fault if inadvertently called
8502twice
8503in succession. ACPICA BZ 795.
8504
8505Example Code and Data Size: These are the sizes for the OS-independent
8506acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8507debug version of the code includes the debug output trace mechanism and
8508has a
8509much larger code and data size.
8510
8511  Previous Release:
8512    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8513    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8514  Current Release:
8515    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8516    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8517
85182) iASL Compiler/Disassembler and Tools:
8519
8520ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8521changes to existing tables. ACPICA BZ 775.
8522
8523----------------------------------------
852425 June 2009. Summary of changes for version 20090625:
8525
8526The ACPI 4.0 Specification was released on June 16 and is available at
8527www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8528continue for the next few releases.
8529
85301) ACPI CA Core Subsystem:
8531
8532ACPI 4.0: Implemented interpreter support for the IPMI operation region
8533address space. Includes support for bi-directional data buffers and an
8534IPMI
8535address space handler (to be installed by an IPMI device driver.) ACPICA
8536BZ
8537773. Lin Ming.
8538
8539ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8540Includes
8541support in both the header files and the disassembler.
8542
8543Completed a major update for the AcpiGetObjectInfo external interface.
8544Changes include:
8545 - Support for variable, unlimited length HID, UID, and CID strings.
8546 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8547etc.)
8548 - Call the _SxW power methods on behalf of a device object.
8549 - Determine if a device is a PCI root bridge.
8550 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8551These changes will require an update to all callers of this interface.
8552See
8553the updated ACPICA Programmer Reference for details. One new source file
8554has
8555been added - utilities/utids.c. ACPICA BZ 368, 780.
8556
8557Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8558transfers. The Value parameter has been extended from 32 bits to 64 bits
8559in
8560order to support new ACPI 4.0 tables. These changes will require an
8561update
8562to
8563all callers of these interfaces. See the ACPICA Programmer Reference for
8564details. ACPICA BZ 768.
8565
8566Fixed several problems with AcpiAttachData. The handler was not invoked
8567when
8568the host node was deleted. The data sub-object was not automatically
8569deleted
8570when the host node was deleted. The interface to the handler had an
8571unused
8572parameter, this was removed. ACPICA BZ 778.
8573
8574Enhanced the function that dumps ACPI table headers. All non-printable
8575characters in the string fields are now replaced with '?' (Signature,
8576OemId,
8577OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8578these fields are occasionally seen in the field. ACPICA BZ 788.
8579
8580Fixed a problem with predefined method repair code where the code that
8581attempts to repair/convert an object of incorrect type is only executed
8582on
8583the first time the predefined method is called. The mechanism that
8584disables
8585warnings on subsequent calls was interfering with the repair mechanism.
8586ACPICA BZ 781.
8587
8588Fixed a possible memory leak in the predefined validation/repair code
8589when
8590a
8591buffer is automatically converted to an expected string object.
8592
8593Removed obsolete 16-bit files from the distribution and from the current
8594git
8595tree head. ACPICA BZ 776.
8596
8597Example Code and Data Size: These are the sizes for the OS-independent
8598acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8599debug version of the code includes the debug output trace mechanism and
8600has a
8601much larger code and data size.
8602
8603  Previous Release:
8604    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8605    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8606  Current Release:
8607    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8608    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8609
86102) iASL Compiler/Disassembler and Tools:
8611
8612ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8613operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8614
8615ACPI 4.0: iASL - implemented compile-time validation support for all new
8616predefined names and control methods (31 total). ACPICA BZ 769.
8617
8618----------------------------------------
861921 May 2009. Summary of changes for version 20090521:
8620
86211) ACPI CA Core Subsystem:
8622
8623Disabled the preservation of the SCI enable bit in the PM1 control
8624register.
8625The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8626to
8627be
8628a "preserved" bit - "OSPM always preserves this bit position", section
86294.7.3.2.1. However, some machines fail if this bit is in fact preserved
8630because the bit needs to be explicitly set by the OS as a workaround. No
8631machines fail if the bit is not preserved. Therefore, ACPICA no longer
8632attempts to preserve this bit.
8633
8634Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8635incorrectly formed _PRT package could cause a fault. Added validation to
8636ensure that each package element is actually a sub-package.
8637
8638Implemented a new interface to install or override a single control
8639method,
8640AcpiInstallMethod. This interface is useful when debugging in order to
8641repair
8642an existing method or to install a missing method without having to
8643override
8644the entire ACPI table. See the ACPICA Programmer Reference for use and
8645examples. Lin Ming, Bob Moore.
8646
8647Fixed several reference count issues with the DdbHandle object that is
8648created from a Load or LoadTable operator. Prevent premature deletion of
8649the
8650object. Also, mark the object as invalid once the table has been
8651unloaded.
8652This is needed because the handle itself may not be deleted after the
8653table
8654unload, depending on whether it has been stored in a named object by the
8655caller. Lin Ming.
8656
8657Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8658mutexes of the same sync level are acquired but then not released in
8659strict
8660opposite order, the internally maintained Current Sync Level becomes
8661confused
8662and can cause subsequent execution errors. ACPICA BZ 471.
8663
8664Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8665specification has been changed to make the SyncLevel for mutex objects
8666more
8667useful. When releasing a mutex, the SyncLevel of the mutex must now be
8668the
8669same as the current sync level. This makes more sense than the previous
8670rule
8671(SyncLevel less than or equal). This change updates the code to match the
8672specification.
8673
8674Fixed a problem with the local version of the AcpiOsPurgeCache function.
8675The
8676(local) cache must be locked during all cache object deletions. Andrew
8677Baumann.
8678
8679Updated the Load operator to use operation region interfaces. This
8680replaces
8681direct memory mapping with region access calls. Now, all region accesses
8682go
8683through the installed region handler as they should.
8684
8685Simplified and optimized the NsGetNextNode function. Reduced parameter
8686count
8687and reduced code for this frequently used function.
8688
8689Example Code and Data Size: These are the sizes for the OS-independent
8690acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8691debug version of the code includes the debug output trace mechanism and
8692has a
8693much larger code and data size.
8694
8695  Previous Release:
8696    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8697    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8698  Current Release:
8699    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8700    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8701
87022) iASL Compiler/Disassembler and Tools:
8703
8704Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8705problems
8706with sub-table disassembly and handling invalid sub-tables. Attempt
8707recovery
8708after an invalid sub-table ID.
8709
8710----------------------------------------
871122 April 2009. Summary of changes for version 20090422:
8712
87131) ACPI CA Core Subsystem:
8714
8715Fixed a compatibility issue with the recently released I/O port
8716protection
8717mechanism. For windows compatibility, 1) On a port protection violation,
8718simply ignore the request and do not return an exception (allow the
8719control
8720method to continue execution.) 2) If only part of the request overlaps a
8721protected port, read/write the individual ports that are not protected.
8722Linux
8723BZ 13036. Lin Ming
8724
8725Enhanced the execution of the ASL/AML BreakPoint operator so that it
8726actually
8727breaks into the AML debugger if the debugger is present. This matches the
8728ACPI-defined behavior.
8729
8730Fixed several possible warnings related to the use of the configurable
8731ACPI_THREAD_ID. This type can now be configured as either an integer or a
8732pointer with no warnings. Also fixes several warnings in printf-like
8733statements for the 64-bit build when the type is configured as a pointer.
8734ACPICA BZ 766, 767.
8735
8736Fixed a number of possible warnings when compiling with gcc 4+ (depending
8737on
8738warning options.) Examples include printf formats, aliasing, unused
8739globals,
8740missing prototypes, missing switch default statements, use of non-ANSI
8741library functions, use of non-ANSI constructs. See generate/unix/Makefile
8742for
8743a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8744
8745Example Code and Data Size: These are the sizes for the OS-independent
8746acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8747debug version of the code includes the debug output trace mechanism and
8748has a
8749much larger code and data size.
8750
8751  Previous Release:
8752    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8753    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8754  Current Release:
8755    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8756    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8757
87582) iASL Compiler/Disassembler and Tools:
8759
8760iASL: Fixed a generation warning from Bison 2.3 and fixed several
8761warnings
8762on
8763the 64-bit build.
8764
8765iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8766not
8767correctly digest Windows/DOS formatted files (with CR/LF).
8768
8769iASL: Added a new option for "quiet mode" (-va) that produces only the
8770compilation summary, not individual errors and warnings. Useful for large
8771batch compilations.
8772
8773AcpiExec: Implemented a new option (-z) to enable a forced
8774semaphore/mutex
8775timeout that can be used to detect hang conditions during execution of
8776AML
8777code (includes both internal semaphores and AML-defined mutexes and
8778events.)
8779
8780Added new makefiles for the generation of acpica in a generic unix-like
8781environment. These makefiles are intended to generate the acpica tools
8782and
8783utilities from the original acpica git source tree structure.
8784
8785Test Suites: Updated and cleaned up the documentation files. Updated the
8786copyrights to 2009, affecting all source files. Use the new version of
8787iASL
8788with quiet mode. Increased the number of available semaphores in the
8789Windows
8790OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8791added
8792an alternate implementation of the semaphore timeout to allow aslts to
8793execute fully on Cygwin.
8794
8795----------------------------------------
879620 March 2009. Summary of changes for version 20090320:
8797
87981) ACPI CA Core Subsystem:
8799
8800Fixed a possible race condition between AcpiWalkNamespace and dynamic
8801table
8802unloads. Added a reader/writer locking mechanism to allow multiple
8803concurrent
8804namespace walks (readers), but block a dynamic table unload until it can
8805gain
8806exclusive write access to the namespace. This fixes a problem where a
8807table
8808unload could (possibly catastrophically) delete the portion of the
8809namespace
8810that is currently being examined by a walk. Adds a new file, utlock.c,
8811that
8812implements the reader/writer lock mechanism. ACPICA BZ 749.
8813
8814Fixed a regression introduced in version 20090220 where a change to the
8815FADT
8816handling could cause the ACPICA subsystem to access non-existent I/O
8817ports.
8818
8819Modified the handling of FADT register and table (FACS/DSDT) addresses.
8820The
8821FADT can contain both 32-bit and 64-bit versions of these addresses.
8822Previously, the 64-bit versions were favored, meaning that if both 32 and
882364
8824versions were valid, but not equal, the 64-bit version was used. This was
8825found to cause some machines to fail. Now, in this case, the 32-bit
8826version
8827is used instead. This now matches the Windows behavior.
8828
8829Implemented a new mechanism to protect certain I/O ports. Provides
8830Microsoft
8831compatibility and protects the standard PC I/O ports from access via AML
8832code. Adds a new file, hwvalid.c
8833
8834Fixed a possible extraneous warning message from the FADT support. The
8835message warns of a 32/64 length mismatch between the legacy and GAS
8836definitions for a register.
8837
8838Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8839is
8840made obsolete by the port protection mechanism above. It was previously
8841used
8842to validate the entire address range of an operation region, which could
8843be
8844incorrect if the range included illegal ports, but fields within the
8845operation region did not actually access those ports. Validation is now
8846performed on a per-field basis instead of the entire region.
8847
8848Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8849Ignored bits must be "preserved" according to the ACPI spec. Usually,
8850this
8851means a read/modify/write when writing to the register. However, for
8852status
8853registers, writing a one means clear the event. Writing a zero means
8854preserve
8855the event (do not clear.) This behavior is clarified in the ACPI 4.0
8856spec,
8857and the ACPICA code now simply always writes a zero to the ignored bit.
8858
8859Modified the handling of ignored bits for the PM1 A/B Control Registers.
8860As
8861per the ACPI specification, for the control registers, preserve
8862(read/modify/write) all bits that are defined as either reserved or
8863ignored.
8864
8865Updated the handling of write-only bits in the PM1 A/B Control Registers.
8866When reading the register, zero the write-only bits as per the ACPI spec.
8867ACPICA BZ 443. Lin Ming.
8868
8869Removed "Linux" from the list of supported _OSI strings. Linux no longer
8870wants to reply true to this request. The Windows strings are the only
8871paths
8872through the AML that are tested and known to work properly.
8873
8874  Previous Release:
8875    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8876    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8877  Current Release:
8878    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8879    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8880
88812) iASL Compiler/Disassembler and Tools:
8882
8883Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8884and
8885aetables.c
8886
8887----------------------------------------
888820 February 2009. Summary of changes for version 20090220:
8889
88901) ACPI CA Core Subsystem:
8891
8892Optimized the ACPI register locking. Removed locking for reads from the
8893ACPI
8894bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8895is
8896not required when reading the single-bit registers. The
8897AcpiGetRegisterUnlocked function is no longer needed and has been
8898removed.
8899This will improve performance for reads on these registers. ACPICA BZ
8900760.
8901
8902Fixed the parameter validation for AcpiRead/Write. Now return
8903AE_BAD_PARAMETER if the input register pointer is null, and
8904AE_BAD_ADDRESS
8905if
8906the register has an address of zero. Previously, these cases simply
8907returned
8908AE_OK. For optional registers such as PM1B status/enable/control, the
8909caller
8910should check for a valid register address before calling. ACPICA BZ 748.
8911
8912Renamed the external ACPI bit register access functions. Renamed
8913AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8914functions. The new names are AcpiReadBitRegister and
8915AcpiWriteBitRegister.
8916Also, restructured the code for these functions by simplifying the code
8917path
8918and condensing duplicate code to reduce code size.
8919
8920Added new functions to transparently handle the possibly split PM1 A/B
8921registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8922functions
8923now handle the split registers for PM1 Status, Enable, and Control.
8924ACPICA
8925BZ
8926746.
8927
8928Added a function to handle the PM1 control registers,
8929AcpiHwWritePm1Control.
8930This function writes both of the PM1 control registers (A/B). These
8931registers
8932are different than the PM1 A/B status and enable registers in that
8933different
8934values can be written to the A/B registers. Most notably, the SLP_TYP
8935bits
8936can be different, as per the values returned from the _Sx predefined
8937methods.
8938
8939Removed an extra register write within AcpiHwClearAcpiStatus. This
8940function
8941was writing an optional PM1B status register twice. The existing call to
8942the
8943low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
8944A/B
8945register. ACPICA BZ 751.
8946
8947Split out the PM1 Status registers from the FADT. Added new globals for
8948these
8949registers (A/B), similar to the way the PM1 Enable registers are handled.
8950Instead of overloading the FADT Event Register blocks. This makes the
8951code
8952clearer and less prone to error.
8953
8954Fixed the warning message for when the platform contains too many ACPI
8955tables
8956for the default size of the global root table data structure. The
8957calculation
8958for the truncation value was incorrect.
8959
8960Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
8961obsolete macro, since it is now a simple reference to ->common.type.
8962There
8963were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
8964
8965Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
8966TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
8967simply SLEEP_TYPE. ACPICA BZ 754.
8968
8969Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
8970function is only needed on 64-bit host operating systems and is thus not
8971included for 32-bit hosts.
8972
8973Debug output: print the input and result for invocations of the _OSI
8974reserved
8975control method via the ACPI_LV_INFO debug level. Also, reduced some of
8976the
8977verbosity of this debug level. Len Brown.
8978
8979Example Code and Data Size: These are the sizes for the OS-independent
8980acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8981debug version of the code includes the debug output trace mechanism and
8982has a
8983much larger code and data size.
8984
8985  Previous Release:
8986    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8987    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8988  Current Release:
8989    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8990    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8991
89922) iASL Compiler/Disassembler and Tools:
8993
8994Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
8995various legal performance profiles.
8996
8997----------------------------------------
899823 January 2009. Summary of changes for version 20090123:
8999
90001) ACPI CA Core Subsystem:
9001
9002Added the 2009 copyright to all module headers and signons. This affects
9003virtually every file in the ACPICA core subsystem, the iASL compiler, and
9004the tools/utilities.
9005
9006Implemented a change to allow the host to override any ACPI table,
9007including
9008dynamically loaded tables. Previously, only the DSDT could be replaced by
9009the
9010host. With this change, the AcpiOsTableOverride interface is called for
9011each
9012table found in the RSDT/XSDT during ACPICA initialization, and also
9013whenever
9014a table is dynamically loaded via the AML Load operator.
9015
9016Updated FADT flag definitions, especially the Boot Architecture flags.
9017
9018Debugger: For the Find command, automatically pad the input ACPI name
9019with
9020underscores if the name is shorter than 4 characters. This enables a
9021match
9022with the actual namespace entry which is itself padded with underscores.
9023
9024Example Code and Data Size: These are the sizes for the OS-independent
9025acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9026debug version of the code includes the debug output trace mechanism and
9027has a
9028much larger code and data size.
9029
9030  Previous Release:
9031    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9032    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9033  Current Release:
9034    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9035    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9036
90372) iASL Compiler/Disassembler and Tools:
9038
9039Fix build error under Bison-2.4.
9040
9041Disassembler: Enhanced FADT support. Added decoding of the Boot
9042Architecture
9043flags. Now decode all flags, regardless of the FADT version. Flag output
9044includes the FADT version which first defined each flag.
9045
9046The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9047and
9048DSDT). Windows only.
9049
9050----------------------------------------
905104 December 2008. Summary of changes for version 20081204:
9052
90531) ACPI CA Core Subsystem:
9054
9055The ACPICA Programmer Reference has been completely updated and revamped
9056for
9057this release. This includes updates to the external interfaces, OSL
9058interfaces, the overview sections, and the debugger reference.
9059
9060Several new ACPICA interfaces have been implemented and documented in the
9061programmer reference:
9062AcpiReset - Writes the reset value to the FADT-defined reset register.
9063AcpiDisableAllGpes - Disable all available GPEs.
9064AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9065AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9066AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9067AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9068AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9069
9070Most of the public ACPI hardware-related interfaces have been moved to a
9071new
9072file, components/hardware/hwxface.c
9073
9074Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9075register lengths within the FADT are now used, and the low level ACPI
9076register access no longer hardcodes the ACPI register lengths. Given that
9077there may be some risk in actually trusting the FADT register lengths, a
9078run-
9079time option was added to fall back to the default hardcoded lengths if
9080the
9081FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9082option is set to true for now, and a warning is issued if a suspicious
9083FADT
9084register length is overridden with the default value.
9085
9086Fixed a reference count issue in NsRepairObject. This problem was
9087introduced
9088in version 20081031 as part of a fix to repair Buffer objects within
9089Packages. Lin Ming.
9090
9091Added semaphore support to the Linux/Unix application OS-services layer
9092(OSL). ACPICA BZ 448. Lin Ming.
9093
9094Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9095will
9096be implemented in the OSL, or will binary semaphores be used instead.
9097
9098Example Code and Data Size: These are the sizes for the OS-independent
9099acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9100debug version of the code includes the debug output trace mechanism and
9101has a
9102much larger code and data size.
9103
9104  Previous Release:
9105    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9106    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9107  Current Release:
9108    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9109    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9110
91112) iASL Compiler/Disassembler and Tools:
9112
9113iASL: Completed the '-e' option to include additional ACPI tables in
9114order
9115to
9116aid with disassembly and External statement generation. ACPICA BZ 742.
9117Lin
9118Ming.
9119
9120iASL: Removed the "named object in while loop" error. The compiler cannot
9121determine how many times a loop will execute. ACPICA BZ 730.
9122
9123Disassembler: Implemented support for FADT revision 2 (MS extension).
9124ACPICA
9125BZ 743.
9126
9127Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9128MCFG).
9129
9130----------------------------------------
913131 October 2008. Summary of changes for version 20081031:
9132
91331) ACPI CA Core Subsystem:
9134
9135Restructured the ACPICA header files into public/private. acpi.h now
9136includes
9137only the "public" acpica headers. All other acpica headers are "private"
9138and
9139should not be included by acpica users. One new file, accommon.h is used
9140to
9141include the commonly used private headers for acpica code generation.
9142Future
9143plans include moving all private headers to a new subdirectory.
9144
9145Implemented an automatic Buffer->String return value conversion for
9146predefined ACPI methods. For these methods (such as _BIF), added
9147automatic
9148conversion for return objects that are required to be a String, but a
9149Buffer
9150was found instead. This can happen when reading string battery data from
9151an
9152operation region, because it used to be difficult to convert the data
9153from
9154buffer to string from within the ASL. Ensures that the host OS is
9155provided
9156with a valid null-terminated string. Linux BZ 11822.
9157
9158Updated the FACS waking vector interfaces. Split
9159AcpiSetFirmwareWakingVector
9160into two: one for the 32-bit vector, another for the 64-bit vector. This
9161is
9162required because the host OS must setup the wake much differently for
9163each
9164vector (real vs. protected mode, etc.) and the interface itself should
9165not
9166be
9167deciding which vector to use. Also, eliminated the
9168GetFirmwareWakingVector
9169interface, as it served no purpose (only the firmware reads the vector,
9170OS
9171only writes the vector.) ACPICA BZ 731.
9172
9173Implemented a mechanism to escape infinite AML While() loops. Added a
9174loop
9175counter to force exit from AML While loops if the count becomes too
9176large.
9177This can occur in poorly written AML when the hardware does not respond
9178within a while loop and the loop does not implement a timeout. The
9179maximum
9180loop count is configurable. A new exception code is returned when a loop
9181is
9182broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9183
9184Optimized the execution of AML While loops. Previously, a control state
9185object was allocated and freed for each execution of the loop. The
9186optimization is to simply reuse the control state for each iteration.
9187This
9188speeds up the raw loop execution time by about 5%.
9189
9190Enhanced the implicit return mechanism. For Windows compatibility, return
9191an
9192implicit integer of value zero for methods that contain no executable
9193code.
9194Such methods are seen in the field as stubs (presumably), and can cause
9195drivers to fail if they expect a return value. Lin Ming.
9196
9197Allow multiple backslashes as root prefixes in namepaths. In a fully
9198qualified namepath, allow multiple backslash prefixes. This can happen
9199(and
9200is seen in the field) because of the use of a double-backslash in strings
9201(since backslash is the escape character) causing confusion. ACPICA BZ
9202739
9203Lin Ming.
9204
9205Emit a warning if two different FACS or DSDT tables are discovered in the
9206FADT. Checks if there are two valid but different addresses for the FACS
9207and
9208DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9209
9210Consolidated the method argument count validation code. Merged the code
9211that
9212validates control method argument counts into the predefined validation
9213module. Eliminates possible multiple warnings for incorrect argument
9214counts.
9215
9216Implemented ACPICA example code. Includes code for ACPICA initialization,
9217handler installation, and calling a control method. Available at
9218source/tools/examples.
9219
9220Added a global pointer for FACS table to simplify internal FACS access.
9221Use
9222the global pointer instead of using AcpiGetTableByIndex for each FACS
9223access.
9224This simplifies the code for the Global Lock and the Firmware Waking
9225Vector(s).
9226
9227Example Code and Data Size: These are the sizes for the OS-independent
9228acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9229debug version of the code includes the debug output trace mechanism and
9230has a
9231much larger code and data size.
9232
9233  Previous Release:
9234    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9235    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9236  Current Release:
9237    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9238    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9239
92402) iASL Compiler/Disassembler and Tools:
9241
9242iASL: Improved disassembly of external method calls. Added the -e option
9243to
9244allow the inclusion of additional ACPI tables to help with the
9245disassembly
9246of
9247method invocations and the generation of external declarations during the
9248disassembly. Certain external method invocations cannot be disassembled
9249properly without the actual declaration of the method. Use the -e option
9250to
9251include the table where the external method(s) are actually declared.
9252Most
9253useful for disassembling SSDTs that make method calls back to the master
9254DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9255-d
9256-e dsdt.aml ssdt1.aml
9257
9258iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9259problem where the use of an alias within a namepath would result in a not
9260found error or cause the compiler to fault. Also now allows forward
9261references from the Alias operator itself. ACPICA BZ 738.
9262
9263----------------------------------------
926426 September 2008. Summary of changes for version 20080926:
9265
92661) ACPI CA Core Subsystem:
9267
9268Designed and implemented a mechanism to validate predefined ACPI methods
9269and
9270objects. This code validates the predefined ACPI objects (objects whose
9271names
9272start with underscore) that appear in the namespace, at the time they are
9273evaluated. The argument count and the type of the returned object are
9274validated against the ACPI specification. The purpose of this validation
9275is
9276to detect problems with the BIOS-implemented predefined ACPI objects
9277before
9278the results are returned to the ACPI-related drivers. Future enhancements
9279may
9280include actual repair of incorrect return objects where possible. Two new
9281files are nspredef.c and acpredef.h.
9282
9283Fixed a fault in the AML parser if a memory allocation fails during the
9284Op
9285completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9286
9287Fixed an issue with implicit return compatibility. This change improves
9288the
9289implicit return mechanism to be more compatible with the MS interpreter.
9290Lin
9291Ming, ACPICA BZ 349.
9292
9293Implemented support for zero-length buffer-to-string conversions. Allow
9294zero
9295length strings during interpreter buffer-to-string conversions. For
9296example,
9297during the ToDecimalString and ToHexString operators, as well as implicit
9298conversions. Fiodor Suietov, ACPICA BZ 585.
9299
9300Fixed two possible memory leaks in the error exit paths of
9301AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9302are
9303similar in that they use a stack of state objects in order to eliminate
9304recursion. The stack must be fully unwound and deallocated if an error
9305occurs. Lin Ming. ACPICA BZ 383.
9306
9307Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9308global
9309ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9310Moore ACPICA BZ 442.
9311
9312Removed the obsolete version number in module headers. Removed the
9313"$Revision" number that appeared in each module header. This version
9314number
9315was useful under SourceSafe and CVS, but has no meaning under git. It is
9316not
9317only incorrect, it could also be misleading.
9318
9319Example Code and Data Size: These are the sizes for the OS-independent
9320acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9321debug version of the code includes the debug output trace mechanism and
9322has a
9323much larger code and data size.
9324
9325  Previous Release:
9326    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9327    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9328  Current Release:
9329    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9330    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9331
9332----------------------------------------
933329 August 2008. Summary of changes for version 20080829:
9334
93351) ACPI CA Core Subsystem:
9336
9337Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9338Reference. Changes include the elimination of cheating on the Object
9339field
9340for the DdbHandle subtype, addition of a reference class field to
9341differentiate the various reference types (instead of an AML opcode), and
9342the
9343cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9344
9345Reduce an error to a warning for an incorrect method argument count.
9346Previously aborted with an error if too few arguments were passed to a
9347control method via the external ACPICA interface. Now issue a warning
9348instead
9349and continue. Handles the case where the method inadvertently declares
9350too
9351many arguments, but does not actually use the extra ones. Applies mainly
9352to
9353the predefined methods. Lin Ming. Linux BZ 11032.
9354
9355Disallow the evaluation of named object types with no intrinsic value.
9356Return
9357AE_TYPE for objects that have no value and therefore evaluation is
9358undefined:
9359Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9360of
9361these types were allowed, but an exception would be generated at some
9362point
9363during the evaluation. Now, the error is generated up front.
9364
9365Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9366(nsnames.c). Fixes a leak in the error exit path.
9367
9368Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9369debug
9370levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9371ACPI_EXCEPTION
9372interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9373ACPI_LV_EVENTS.
9374
9375Removed obsolete and/or unused exception codes from the acexcep.h header.
9376There is the possibility that certain device drivers may be affected if
9377they
9378use any of these exceptions.
9379
9380The ACPICA documentation has been added to the public git source tree,
9381under
9382acpica/documents. Included are the ACPICA programmer reference, the iASL
9383compiler reference, and the changes.txt release logfile.
9384
9385Example Code and Data Size: These are the sizes for the OS-independent
9386acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9387debug version of the code includes the debug output trace mechanism and
9388has a
9389much larger code and data size.
9390
9391  Previous Release:
9392    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9393    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9394  Current Release:
9395    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9396    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9397
93982) iASL Compiler/Disassembler and Tools:
9399
9400Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9401defines _SCP with 3 arguments. Previous versions defined it with only 1
9402argument. iASL now allows both definitions.
9403
9404iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9405zero-
9406length subtables when disassembling ACPI tables. Also fixed a couple of
9407errors where a full 16-bit table type field was not extracted from the
9408input
9409properly.
9410
9411acpisrc: Improve comment counting mechanism for generating source code
9412statistics. Count first and last lines of multi-line comments as
9413whitespace,
9414not comment lines. Handle Linux legal header in addition to standard
9415acpica
9416header.
9417
9418----------------------------------------
9419
942029 July 2008. Summary of changes for version 20080729:
9421
94221) ACPI CA Core Subsystem:
9423
9424Fix a possible deadlock in the GPE dispatch. Remove call to
9425AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9426attempt
9427to acquire the GPE lock but can deadlock since the GPE lock is already
9428held
9429at dispatch time. This code was introduced in version 20060831 as a
9430response
9431to Linux BZ 6881 and has since been removed from Linux.
9432
9433Add a function to dereference returned reference objects. Examines the
9434return
9435object from a call to AcpiEvaluateObject. Any Index or RefOf references
9436are
9437automatically dereferenced in an attempt to return something useful
9438(these
9439reference types cannot be converted into an external ACPI_OBJECT.)
9440Provides
9441MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9442
9443x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9444subtables for the MADT and one new subtable for the SRAT. Includes
9445disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9446x2APIC
9447Specification, June 2008.
9448
9449Additional error checking for pathname utilities. Add error check after
9450all
9451calls to AcpiNsGetPathnameLength. Add status return from
9452AcpiNsBuildExternalPath and check after all calls. Add parameter
9453validation
9454to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9455
9456Return status from the global init function AcpiUtGlobalInitialize. This
9457is
9458used by both the kernel subsystem and the utilities such as iASL
9459compiler.
9460The function could possibly fail when the caches are initialized. Yang
9461Yi.
9462
9463Add a function to decode reference object types to strings. Created for
9464improved error messages.
9465
9466Improve object conversion error messages. Better error messages during
9467object
9468conversion from internal to the external ACPI_OBJECT. Used for external
9469calls
9470to AcpiEvaluateObject.
9471
9472Example Code and Data Size: These are the sizes for the OS-independent
9473acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9474debug version of the code includes the debug output trace mechanism and
9475has a
9476much larger code and data size.
9477
9478  Previous Release:
9479    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9480    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9481  Current Release:
9482    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9483    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9484
94852) iASL Compiler/Disassembler and Tools:
9486
9487Debugger: fix a possible hang when evaluating non-methods. Fixes a
9488problem
9489introduced in version 20080701. If the object being evaluated (via
9490execute
9491command) is not a method, the debugger can hang while trying to obtain
9492non-
9493existent parameters.
9494
9495iASL: relax error for using reserved "_T_x" identifiers. These names can
9496appear in a disassembled ASL file if they were emitted by the original
9497compiler. Instead of issuing an error or warning and forcing the user to
9498manually change these names, issue a remark instead.
9499
9500iASL: error if named object created in while loop. Emit an error if any
9501named
9502object is created within a While loop. If allowed, this code will
9503generate
9504a
9505run-time error on the second iteration of the loop when an attempt is
9506made
9507to
9508create the same named object twice. ACPICA bugzilla 730.
9509
9510iASL: Support absolute pathnames for include files. Add support for
9511absolute
9512pathnames within the Include operator. previously, only relative
9513pathnames
9514were supported.
9515
9516iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9517Descriptor.
9518The ACPI spec requires one interrupt minimum. BZ 423
9519
9520iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9521Handles the case for the Interrupt Resource Descriptor where
9522the ResourceSource argument is omitted but ResourceSourceIndex
9523is present. Now leave room for the Index. BZ 426
9524
9525iASL: Prevent error message if CondRefOf target does not exist. Fixes
9526cases
9527where an error message is emitted if the target does not exist. BZ 516
9528
9529iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9530(get ACPI tables on Windows). This was apparently broken in version
953120070919.
9532
9533AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9534where
9535the EOF happens immediately after the last table in the input file. Print
9536completion message. Previously, no message was displayed in this case.
9537
9538----------------------------------------
953901 July 2008. Summary of changes for version 20080701:
9540
95410) Git source tree / acpica.org
9542
9543Fixed a problem where a git-clone from http would not transfer the entire
9544source tree.
9545
95461) ACPI CA Core Subsystem:
9547
9548Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9549enable bit. Now performs a read-change-write of the enable register
9550instead
9551of simply writing out the cached enable mask. This will prevent
9552inadvertent
9553enabling of GPEs if a rogue GPE is received during initialization (before
9554GPE
9555handlers are installed.)
9556
9557Implemented a copy for dynamically loaded tables. Previously, dynamically
9558loaded tables were simply mapped - but on some machines this memory is
9559corrupted after suspend. Now copy the table to a local buffer. For the
9560OpRegion case, added checksum verify. Use the table length from the table
9561header, not the region length. For the Buffer case, use the table length
9562also. Dennis Noordsij, Bob Moore. BZ 10734
9563
9564Fixed a problem where the same ACPI table could not be dynamically loaded
9565and
9566unloaded more than once. Without this change, a table cannot be loaded
9567again
9568once it has been loaded/unloaded one time. The current mechanism does not
9569unregister a table upon an unload. During a load, if the same table is
9570found,
9571this no longer returns an exception. BZ 722
9572
9573Fixed a problem where the wrong descriptor length was calculated for the
9574EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9575EndTag
9576are calculated as 12 bytes long, but the actual length in the internal
9577descriptor is 16 because of the round-up to 8 on the 64-bit build.
9578Reported
9579by Linn Crosetto. BZ 728
9580
9581Fixed a possible memory leak in the Unload operator. The DdbHandle
9582returned
9583by Load() did not have its reference count decremented during unload,
9584leading
9585to a memory leak. Lin Ming. BZ 727
9586
9587Fixed a possible memory leak when deleting thermal/processor objects. Any
9588associated notify handlers (and objects) were not being deleted. Fiodor
9589Suietov. BZ 506
9590
9591Fixed the ordering of the ASCII names in the global mutex table to match
9592the
9593actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9594only.
9595Vegard Nossum. BZ 726
9596
9597Enhanced the AcpiGetObjectInfo interface to return the number of required
9598arguments if the object is a control method. Added this call to the
9599debugger
9600so the proper number of default arguments are passed to a method. This
9601prevents a warning when executing methods from AcpiExec.
9602
9603Added a check for an invalid handle in AcpiGetObjectInfo. Return
9604AE_BAD_PARAMETER if input handle is invalid. BZ 474
9605
9606Fixed an extraneous warning from exconfig.c on the 64-bit build.
9607
9608Example Code and Data Size: These are the sizes for the OS-independent
9609acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9610debug version of the code includes the debug output trace mechanism and
9611has a
9612much larger code and data size.
9613
9614  Previous Release:
9615    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9616    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9617  Current Release:
9618    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9619    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9620
96212) iASL Compiler/Disassembler and Tools:
9622
9623iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9624resource descriptor names.
9625
9626iASL: Detect invalid ASCII characters in input (windows version). Removed
9627the
9628"-CF" flag from the flex compile, enables correct detection of non-ASCII
9629characters in the input. BZ 441
9630
9631iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9632the
9633"result of operation not used" warning when the DDB handle returned from
9634LoadTable is not used. The warning is not needed. BZ 590
9635
9636AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9637method
9638to
9639pass address of table to the AML. Added option to disable OpRegion
9640simulation
9641to allow creation of an OpRegion with a real address that was passed to
9642_CFG.
9643All of this allows testing of the Load and Unload operators from
9644AcpiExec.
9645
9646Debugger: update tables command for unloaded tables. Handle unloaded
9647tables
9648and use the standard table header output routine.
9649
9650----------------------------------------
965109 June 2008. Summary of changes for version 20080609:
9652
96531) ACPI CA Core Subsystem:
9654
9655Implemented a workaround for reversed _PRT entries. A significant number
9656of
9657BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9658change dynamically detects and repairs this problem. Provides
9659compatibility
9660with MS ACPI. BZ 6859
9661
9662Simplified the internal ACPI hardware interfaces to eliminate the locking
9663flag parameter from Register Read/Write. Added a new external interface,
9664AcpiGetRegisterUnlocked.
9665
9666Fixed a problem where the invocation of a GPE control method could hang.
9667This
9668was a regression introduced in 20080514. The new method argument count
9669validation mechanism can enter an infinite loop when a GPE method is
9670dispatched. Problem fixed by removing the obsolete code that passed GPE
9671block
9672information to the notify handler via the control method parameter
9673pointer.
9674
9675Fixed a problem where the _SST execution status was incorrectly returned
9676to
9677the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9678in
967920080514. _SST is optional and a NOT_FOUND exception should never be
9680returned. BZ 716
9681
9682Fixed a problem where a deleted object could be accessed from within the
9683AML
9684parser. This was a regression introduced in version 20080123 as a fix for
9685the
9686Unload operator. Lin Ming. BZ 10669
9687
9688Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9689operands
9690and eliminated the use of a negative index in a loop. Operands are now
9691displayed in the correct order, not backwards. This also fixes a
9692regression
9693introduced in 20080514 on 64-bit systems where the elimination of
9694ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9695715
9696
9697Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9698exit
9699path did not delete a locally allocated structure.
9700
9701Updated definitions for the DMAR and SRAT tables to synchronize with the
9702current specifications. Includes disassembler support.
9703
9704Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9705loop termination value was used. Loop terminated on iteration early,
9706missing
9707one mutex. Linn Crosetto
9708
9709Example Code and Data Size: These are the sizes for the OS-independent
9710acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9711debug version of the code includes the debug output trace mechanism and
9712has a
9713much larger code and data size.
9714
9715  Previous Release:
9716    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9717    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9718  Current Release:
9719    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9720    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9721
97222) iASL Compiler/Disassembler and Tools:
9723
9724Disassembler: Implemented support for EisaId() within _CID objects. Now
9725disassemble integer _CID objects back to EisaId invocations, including
9726multiple integers within _CID packages. Includes single-step support for
9727debugger also.
9728
9729Disassembler: Added support for DMAR and SRAT table definition changes.
9730
9731----------------------------------------
973214 May 2008. Summary of changes for version 20080514:
9733
97341) ACPI CA Core Subsystem:
9735
9736Fixed a problem where GPEs were enabled too early during the ACPICA
9737initialization. This could lead to "handler not installed" errors on some
9738machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9739This
9740ensures that all operation regions and devices throughout the namespace
9741have
9742been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9743
9744Implemented a change to the enter sleep code. Moved execution of the _GTS
9745method to just before setting sleep enable bit. The execution was moved
9746from
9747AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9748immediately before the SLP_EN bit is set, as per the ACPI specification.
9749Luming Yu, BZ 1653.
9750
9751Implemented a fix to disable unknown GPEs (2nd version). Now always
9752disable
9753the GPE, even if ACPICA thinks that that it is already disabled. It is
9754possible that the AML or some other code has enabled the GPE unbeknownst
9755to
9756the ACPICA code.
9757
9758Fixed a problem with the Field operator where zero-length fields would
9759return
9760an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9761ASL
9762field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9763
9764Implemented a fix for the Load operator, now load the table at the
9765namespace
9766root. This reverts a change introduced in version 20071019. The table is
9767now
9768loaded at the namespace root even though this goes against the ACPI
9769specification. This provides compatibility with other ACPI
9770implementations.
9771The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9772Ming.
9773
9774Fixed a problem where ACPICA would not Load() tables with unusual
9775signatures.
9776Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9777acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9778Therefore, signature validation is worthless. Apparently MS ACPI accepts
9779such
9780signatures, ACPICA must be compatible. BZ 10454.
9781
9782Fixed a possible negative array index in AcpiUtValidateException. Added
9783NULL
9784fields to the exception string arrays to eliminate a -1 subtraction on
9785the
9786SubStatus field.
9787
9788Updated the debug tracking macros to reduce overall code and data size.
9789Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9790instead of pointers to static strings. Jan Beulich and Bob Moore.
9791
9792Implemented argument count checking in control method invocation via
9793AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9794too
9795many. This applies only to extern programmatic control method execution,
9796not
9797method-to-method calls within the AML. Lin Ming.
9798
9799Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9800no
9801longer needed, especially with the removal of 16-bit support. It was
9802replaced
9803mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9804bit
9805on
980632/64-bit platforms is required.
9807
9808Added the C const qualifier for appropriate string constants -- mostly
9809MODULE_NAME and printf format strings. Jan Beulich.
9810
9811Example Code and Data Size: These are the sizes for the OS-independent
9812acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9813debug version of the code includes the debug output trace mechanism and
9814has a
9815much larger code and data size.
9816
9817  Previous Release:
9818    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9819    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9820  Current Release:
9821    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9822    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9823
98242) iASL Compiler/Disassembler and Tools:
9825
9826Implemented ACPI table revision ID validation in the disassembler. Zero
9827is
9828always invalid. For DSDTs, the ID controls the interpreter integer width.
98291
9830means 32-bit and this is unusual. 2 or greater is 64-bit.
9831
9832----------------------------------------
983321 March 2008. Summary of changes for version 20080321:
9834
98351) ACPI CA Core Subsystem:
9836
9837Implemented an additional change to the GPE support in order to suppress
9838spurious or stray GPEs. The AcpiEvDisableGpe function will now
9839permanently
9840disable incoming GPEs that are neither enabled nor disabled -- meaning
9841that
9842the GPE is unknown to the system. This should prevent future interrupt
9843floods
9844from that GPE. BZ 6217 (Zhang Rui)
9845
9846Fixed a problem where NULL package elements were not returned to the
9847AcpiEvaluateObject interface correctly. The element was simply ignored
9848instead of returning a NULL ACPI_OBJECT package element, potentially
9849causing
9850a buffer overflow and/or confusing the caller who expected a fixed number
9851of
9852elements. BZ 10132 (Lin Ming, Bob Moore)
9853
9854Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9855Dword,
9856Qword), Field, BankField, and IndexField operators when invoked from
9857inside
9858an executing control method. In this case, these operators created
9859namespace
9860nodes that were incorrectly left marked as permanent nodes instead of
9861temporary nodes. This could cause a problem if there is race condition
9862between an exiting control method and a running namespace walk. (Reported
9863by
9864Linn Crosetto)
9865
9866Fixed a problem where the CreateField and CreateXXXField operators would
9867incorrectly allow duplicate names (the name of the field) with no
9868exception
9869generated.
9870
9871Implemented several changes for Notify handling. Added support for new
9872Notify
9873values (ACPI 2.0+) and improved the Notify debug output. Notify on
9874PowerResource objects is no longer allowed, as per the ACPI
9875specification.
9876(Bob Moore, Zhang Rui)
9877
9878All Reference Objects returned via the AcpiEvaluateObject interface are
9879now
9880marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9881for
9882NULL objects - either NULL package elements or unresolved named
9883references.
9884
9885Fixed a problem where an extraneous debug message was produced for
9886package
9887objects (when debugging enabled). The message "Package List length larger
9888than NumElements count" is now produced in the correct case, and is now
9889an
9890error message rather than a debug message. Added a debug message for the
9891opposite case, where NumElements is larger than the Package List (the
9892package
9893will be padded out with NULL elements as per the ACPI spec.)
9894
9895Implemented several improvements for the output of the ASL "Debug" object
9896to
9897clarify and keep all data for a given object on one output line.
9898
9899Fixed two size calculation issues with the variable-length Start
9900Dependent
9901resource descriptor.
9902
9903Example Code and Data Size: These are the sizes for the OS-independent
9904acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9905debug version of the code includes the debug output trace mechanism and
9906has
9907a much larger code and data size.
9908
9909  Previous Release:
9910    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9911    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9912  Current Release:
9913    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9914    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9915
99162) iASL Compiler/Disassembler and Tools:
9917
9918Fixed a problem with the use of the Switch operator where execution of
9919the
9920containing method by multiple concurrent threads could cause an
9921AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9922actual Switch opcode, it must be simulated with local named temporary
9923variables and if/else pairs. The solution chosen was to mark any method
9924that
9925uses Switch as Serialized, thus preventing multiple thread entries. BZ
9926469.
9927
9928----------------------------------------
992913 February 2008. Summary of changes for version 20080213:
9930
99311) ACPI CA Core Subsystem:
9932
9933Implemented another MS compatibility design change for GPE/Notify
9934handling.
9935GPEs are now cleared/enabled asynchronously to allow all pending notifies
9936to
9937complete first. It is expected that the OSL will queue the enable request
9938behind all pending notify requests (may require changes to the local host
9939OSL
9940in AcpiOsExecute). Alexey Starikovskiy.
9941
9942Fixed a problem where buffer and package objects passed as arguments to a
9943control method via the external AcpiEvaluateObject interface could cause
9944an
9945AE_AML_INTERNAL exception depending on the order and type of operators
9946executed by the target control method.
9947
9948Fixed a problem where resource descriptor size optimization could cause a
9949problem when a _CRS resource template is passed to a _SRS method. The
9950_SRS
9951resource template must use the same descriptors (with the same size) as
9952returned from _CRS. This change affects the following resource
9953descriptors:
9954IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
99559487)
9956
9957Fixed a problem where a CopyObject to RegionField, BankField, and
9958IndexField
9959objects did not perform an implicit conversion as it should. These types
9960must
9961retain their initial type permanently as per the ACPI specification.
9962However,
9963a CopyObject to all other object types should not perform an implicit
9964conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
9965
9966Fixed a problem with the AcpiGetDevices interface where the mechanism to
9967match device CIDs did not examine the entire list of available CIDs, but
9968instead aborted on the first non-matching CID. Andrew Patterson.
9969
9970Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
9971was
9972inadvertently changed to return a 16-bit value instead of a 32-bit value,
9973truncating the upper dword of a 64-bit value. This macro is only used to
9974display debug output, so no incorrect calculations were made. Also,
9975reimplemented the macro so that a 64-bit shift is not performed by
9976inefficient compilers.
9977
9978Added missing va_end statements that should correspond with each va_start
9979statement.
9980
9981Example Code and Data Size: These are the sizes for the OS-independent
9982acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9983debug version of the code includes the debug output trace mechanism and
9984has
9985a much larger code and data size.
9986
9987  Previous Release:
9988    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9989    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9990  Current Release:
9991    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9992    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9993
99942) iASL Compiler/Disassembler and Tools:
9995
9996Implemented full disassembler support for the following new ACPI tables:
9997BERT, EINJ, and ERST. Implemented partial disassembler support for the
9998complicated HEST table. These tables support the Windows Hardware Error
9999Architecture (WHEA).
10000
10001----------------------------------------
1000223 January 2008. Summary of changes for version 20080123:
10003
100041) ACPI CA Core Subsystem:
10005
10006Added the 2008 copyright to all module headers and signons. This affects
10007virtually every file in the ACPICA core subsystem, the iASL compiler, and
10008the tools/utilities.
10009
10010Fixed a problem with the SizeOf operator when used with Package and
10011Buffer
10012objects. These objects have deferred execution for some arguments, and
10013the
10014execution is now completed before the SizeOf is executed. This problem
10015caused
10016unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10017BZ
100189558
10019
10020Implemented an enhancement to the interpreter "slack mode". In the
10021absence
10022of
10023an explicit return or an implicitly returned object from the last
10024executed
10025opcode, a control method will now implicitly return an integer of value 0
10026for
10027Microsoft compatibility. (Lin Ming) BZ 392
10028
10029Fixed a problem with the Load operator where an exception was not
10030returned
10031in
10032the case where the table is already loaded. (Lin Ming) BZ 463
10033
10034Implemented support for the use of DDBHandles as an Indexed Reference, as
10035per
10036the ACPI spec. (Lin Ming) BZ 486
10037
10038Implemented support for UserTerm (Method invocation) for the Unload
10039operator
10040as per the ACPI spec. (Lin Ming) BZ 580
10041
10042Fixed a problem with the LoadTable operator where the OemId and
10043OemTableId
10044input strings could cause unexpected failures if they were shorter than
10045the
10046maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10047
10048Implemented support for UserTerm (Method invocation) for the Unload
10049operator
10050as per the ACPI spec. (Lin Ming) BZ 580
10051
10052Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10053HEST,
10054IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10055
10056Example Code and Data Size: These are the sizes for the OS-independent
10057acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10058debug version of the code includes the debug output trace mechanism and
10059has
10060a much larger code and data size.
10061
10062  Previous Release:
10063    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10064    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10065  Current Release:
10066    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10067    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10068
100692) iASL Compiler/Disassembler and Tools:
10070
10071Implemented support in the disassembler for checksum validation on
10072incoming
10073binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10074table
10075header dump at the start of the disassembly.
10076
10077Implemented additional debugging information in the namespace listing
10078file
10079created during compilation. In addition to the namespace hierarchy, the
10080full
10081pathname to each namespace object is displayed.
10082
10083Fixed a problem with the disassembler where invalid ACPI tables could
10084cause
10085faults or infinite loops.
10086
10087Fixed an unexpected parse error when using the optional "parameter types"
10088list in a control method declaration. (Lin Ming) BZ 397
10089
10090Fixed a problem where two External declarations with the same name did
10091not
10092cause an error (Lin Ming) BZ 509
10093
10094Implemented support for full TermArgs (adding Argx, Localx and method
10095invocation) for the ParameterData parameter to the LoadTable operator.
10096(Lin
10097Ming) BZ 583,587
10098
10099----------------------------------------
1010019 December 2007. Summary of changes for version 20071219:
10101
101021) ACPI CA Core Subsystem:
10103
10104Implemented full support for deferred execution for the TermArg string
10105arguments for DataTableRegion. This enables forward references and full
10106operand resolution for the three string arguments. Similar to
10107OperationRegion
10108deferred argument execution.) Lin Ming. BZ 430
10109
10110Implemented full argument resolution support for the BankValue argument
10111to
10112BankField. Previously, only constants were supported, now any TermArg may
10113be
10114used. Lin Ming BZ 387, 393
10115
10116Fixed a problem with AcpiGetDevices where the search of a branch of the
10117device tree could be terminated prematurely. In accordance with the ACPI
10118specification, the search down the current branch is terminated if a
10119device
10120is both not present and not functional (instead of just not present.)
10121Yakui
10122Zhao.
10123
10124Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10125if
10126the underlying AML code changed the GPE enable registers. Now, any
10127unknown
10128incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10129disabled
10130instead of simply ignored. Rui Zhang.
10131
10132Fixed a problem with Index Fields where the Index register was
10133incorrectly
10134limited to a maximum of 32 bits. Now any size may be used.
10135
10136Fixed a couple memory leaks associated with "implicit return" objects
10137when
10138the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10139
10140Example Code and Data Size: These are the sizes for the OS-independent
10141acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10142debug version of the code includes the debug output trace mechanism and
10143has
10144a much larger code and data size.
10145
10146  Previous Release:
10147    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10148    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10149  Current Release:
10150    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10151    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10152
10153----------------------------------------
1015414 November 2007. Summary of changes for version 20071114:
10155
101561) ACPI CA Core Subsystem:
10157
10158Implemented event counters for each of the Fixed Events, the ACPI SCI
10159(interrupt) itself, and control methods executed. Named
10160AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10161These
10162should be useful for debugging and statistics.
10163
10164Implemented a new external interface, AcpiGetStatistics, to retrieve the
10165contents of the various event counters. Returns the current values for
10166AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10167AcpiMethodCount. The interface can be expanded in the future if new
10168counters
10169are added. Device drivers should use this interface rather than access
10170the
10171counters directly.
10172
10173Fixed a problem with the FromBCD and ToBCD operators. With some
10174compilers,
10175the ShortDivide function worked incorrectly, causing problems with the
10176BCD
10177functions with large input values. A truncation from 64-bit to 32-bit
10178inadvertently occurred. Internal BZ 435. Lin Ming
10179
10180Fixed a problem with Index references passed as method arguments.
10181References
10182passed as arguments to control methods were dereferenced immediately
10183(before
10184control was passed to the called method). The references are now
10185correctly
10186passed directly to the called method. BZ 5389. Lin Ming
10187
10188Fixed a problem with CopyObject used in conjunction with the Index
10189operator.
10190The reference was incorrectly dereferenced before the copy. The reference
10191is
10192now correctly copied. BZ 5391. Lin Ming
10193
10194Fixed a problem with Control Method references within Package objects.
10195These
10196references are now correctly generated. This completes the package
10197construction overhaul that began in version 20071019.
10198
10199Example Code and Data Size: These are the sizes for the OS-independent
10200acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10201debug version of the code includes the debug output trace mechanism and
10202has
10203a much larger code and data size.
10204
10205  Previous Release:
10206    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10207    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10208  Current Release:
10209    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10210    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10211
10212
102132) iASL Compiler/Disassembler and Tools:
10214
10215The AcpiExec utility now installs handlers for all of the predefined
10216Operation Region types. New types supported are: PCI_Config, CMOS, and
10217PCIBARTarget.
10218
10219Fixed a problem with the 64-bit version of AcpiExec where the extended
10220(64-
10221bit) address fields for the DSDT and FACS within the FADT were not being
10222used, causing truncation of the upper 32-bits of these addresses. Lin
10223Ming
10224and Bob Moore
10225
10226----------------------------------------
1022719 October 2007. Summary of changes for version 20071019:
10228
102291) ACPI CA Core Subsystem:
10230
10231Fixed a problem with the Alias operator when the target of the alias is a
10232named ASL operator that opens a new scope -- Scope, Device,
10233PowerResource,
10234Processor, and ThermalZone. In these cases, any children of the original
10235operator could not be accessed via the alias, potentially causing
10236unexpected
10237AE_NOT_FOUND exceptions. (BZ 9067)
10238
10239Fixed a problem with the Package operator where all named references were
10240created as object references and left otherwise unresolved. According to
10241the
10242ACPI specification, a Package can only contain Data Objects or references
10243to
10244control methods. The implication is that named references to Data Objects
10245(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10246immediately upon package creation. This is the approach taken with this
10247change. References to all other named objects (Methods, Devices, Scopes,
10248etc.) are all now properly created as reference objects. (BZ 5328)
10249
10250Reverted a change to Notify handling that was introduced in version
1025120070508. This version changed the Notify handling from asynchronous to
10252fully synchronous (Device driver Notify handling with respect to the
10253Notify
10254ASL operator). It was found that this change caused more problems than it
10255solved and was removed by most users.
10256
10257Fixed a problem with the Increment and Decrement operators where the type
10258of
10259the target object could be unexpectedly and incorrectly changed. (BZ 353)
10260Lin Ming.
10261
10262Fixed a problem with the Load and LoadTable operators where the table
10263location within the namespace was ignored. Instead, the table was always
10264loaded into the root or current scope. Lin Ming.
10265
10266Fixed a problem with the Load operator when loading a table from a buffer
10267object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10268
10269Fixed a problem with the Debug object where a store of a DdbHandle
10270reference
10271object to the Debug object could cause a fault.
10272
10273Added a table checksum verification for the Load operator, in the case
10274where
10275the load is from a buffer. (BZ 578).
10276
10277Implemented additional parameter validation for the LoadTable operator.
10278The
10279length of the input strings SignatureString, OemIdString, and OemTableId
10280are
10281now checked for maximum lengths. (BZ 582) Lin Ming.
10282
10283Example Code and Data Size: These are the sizes for the OS-independent
10284acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10285debug version of the code includes the debug output trace mechanism and
10286has
10287a much larger code and data size.
10288
10289  Previous Release:
10290    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10291    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10292  Current Release:
10293    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10294    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10295
10296
102972) iASL Compiler/Disassembler:
10298
10299Fixed a problem where if a single file was specified and the file did not
10300exist, no error message was emitted. (Introduced with wildcard support in
10301version 20070917.)
10302
10303----------------------------------------
1030419 September 2007. Summary of changes for version 20070919:
10305
103061) ACPI CA Core Subsystem:
10307
10308Designed and implemented new external interfaces to install and remove
10309handlers for ACPI table-related events. Current events that are defined
10310are
10311LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10312they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10313AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10314
10315Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10316(acpi_serialized option on Linux) could cause some systems to hang during
10317initialization. (Bob Moore) BZ 8171
10318
10319Fixed a problem where objects of certain types (Device, ThermalZone,
10320Processor, PowerResource) can be not found if they are declared and
10321referenced from within the same control method (Lin Ming) BZ 341
10322
10323Example Code and Data Size: These are the sizes for the OS-independent
10324acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10325debug version of the code includes the debug output trace mechanism and
10326has
10327a much larger code and data size.
10328
10329  Previous Release:
10330    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10331    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10332  Current Release:
10333    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10334    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10335
10336
103372) iASL Compiler/Disassembler:
10338
10339Implemented support to allow multiple files to be compiled/disassembled
10340in
10341a
10342single invocation. This includes command line wildcard support for both
10343the
10344Windows and Unix versions of the compiler. This feature simplifies the
10345disassembly and compilation of multiple ACPI tables in a single
10346directory.
10347
10348----------------------------------------
1034908 May 2007. Summary of changes for version 20070508:
10350
103511) ACPI CA Core Subsystem:
10352
10353Implemented a Microsoft compatibility design change for the handling of
10354the
10355Notify AML operator. Previously, notify handlers were dispatched and
10356executed completely asynchronously in a deferred thread. The new design
10357still executes the notify handlers in a different thread, but the
10358original
10359thread that executed the Notify() now waits at a synchronization point
10360for
10361the notify handler to complete. Some machines depend on a synchronous
10362Notify
10363operator in order to operate correctly.
10364
10365Implemented support to allow Package objects to be passed as method
10366arguments to the external AcpiEvaluateObject interface. Previously, this
10367would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10368implemented since there were no reserved control methods that required it
10369until recently.
10370
10371Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10372that
10373contained invalid non-zero values in reserved fields could cause later
10374failures because these fields have meaning in later revisions of the
10375FADT.
10376For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10377fields
10378are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10379
10380Fixed a problem where the Global Lock handle was not properly updated if
10381a
10382thread that acquired the Global Lock via executing AML code then
10383attempted
10384to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10385Joe
10386Liu.
10387
10388Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10389could be corrupted if the interrupt being removed was at the head of the
10390list. Reported by Linn Crosetto.
10391
10392Example Code and Data Size: These are the sizes for the OS-independent
10393acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10394debug version of the code includes the debug output trace mechanism and
10395has
10396a much larger code and data size.
10397
10398  Previous Release:
10399    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10400    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10401  Current Release:
10402    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10403    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10404
10405----------------------------------------
1040620 March 2007. Summary of changes for version 20070320:
10407
104081) ACPI CA Core Subsystem:
10409
10410Implemented a change to the order of interpretation and evaluation of AML
10411operand objects within the AML interpreter. The interpreter now evaluates
10412operands in the order that they appear in the AML stream (and the
10413corresponding ASL code), instead of in the reverse order (after the
10414entire
10415operand list has been parsed). The previous behavior caused several
10416subtle
10417incompatibilities with the Microsoft AML interpreter as well as being
10418somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10419
10420Implemented a change to the ACPI Global Lock support. All interfaces to
10421the
10422global lock now allow the same thread to acquire the lock multiple times.
10423This affects the AcpiAcquireGlobalLock external interface to the global
10424lock
10425as well as the internal use of the global lock to support AML fields -- a
10426control method that is holding the global lock can now simultaneously
10427access
10428AML fields that require global lock protection. Previously, in both
10429cases,
10430this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10431to
10432AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10433Controller. There is no change to the behavior of the AML Acquire
10434operator,
10435as this can already be used to acquire a mutex multiple times by the same
10436thread. BZ 8066. With assistance from Alexey Starikovskiy.
10437
10438Fixed a problem where invalid objects could be referenced in the AML
10439Interpreter after error conditions. During operand evaluation, ensure
10440that
10441the internal "Return Object" field is cleared on error and only valid
10442pointers are stored there. Caused occasional access to deleted objects
10443that
10444resulted in "large reference count" warning messages. Valery Podrezov.
10445
10446Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10447on
10448deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10449Podrezov.
10450
10451Fixed an internal problem with the handling of result objects on the
10452interpreter result stack. BZ 7872. Valery Podrezov.
10453
10454Removed obsolete code that handled the case where AML_NAME_OP is the
10455target
10456of a reference (Reference.Opcode). This code was no longer necessary. BZ
104577874. Valery Podrezov.
10458
10459Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10460was
10461a
10462remnant from the previously discontinued 16-bit support.
10463
10464Example Code and Data Size: These are the sizes for the OS-independent
10465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10466debug version of the code includes the debug output trace mechanism and
10467has
10468a much larger code and data size.
10469
10470  Previous Release:
10471    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10472    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10473  Current Release:
10474    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10475    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10476
10477----------------------------------------
1047826 January 2007. Summary of changes for version 20070126:
10479
104801) ACPI CA Core Subsystem:
10481
10482Added the 2007 copyright to all module headers and signons. This affects
10483virtually every file in the ACPICA core subsystem, the iASL compiler, and
10484the utilities.
10485
10486Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10487during a table load. A bad pointer was passed in the case where the DSDT
10488is
10489overridden, causing a fault in this case.
10490
10491Example Code and Data Size: These are the sizes for the OS-independent
10492acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10493debug version of the code includes the debug output trace mechanism and
10494has
10495a much larger code and data size.
10496
10497  Previous Release:
10498    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10499    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10500  Current Release:
10501    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10502    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10503
10504----------------------------------------
1050515 December 2006. Summary of changes for version 20061215:
10506
105071) ACPI CA Core Subsystem:
10508
10509Support for 16-bit ACPICA has been completely removed since it is no
10510longer
10511necessary and it clutters the code. All 16-bit macros, types, and
10512conditional compiles have been removed, cleaning up and simplifying the
10513code
10514across the entire subsystem. DOS support is no longer needed since the
10515bootable Linux firmware kit is now available.
10516
10517The handler for the Global Lock is now removed during AcpiTerminate to
10518enable a clean subsystem restart, via the implementation of the
10519AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10520HP)
10521
10522Implemented enhancements to the multithreading support within the
10523debugger
10524to enable improved multithreading debugging and evaluation of the
10525subsystem.
10526(Valery Podrezov)
10527
10528Debugger: Enhanced the Statistics/Memory command to emit the total
10529(maximum)
10530memory used during the execution, as well as the maximum memory consumed
10531by
10532each of the various object types. (Valery Podrezov)
10533
10534Example Code and Data Size: These are the sizes for the OS-independent
10535acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10536debug version of the code includes the debug output trace mechanism and
10537has
10538a much larger code and data size.
10539
10540  Previous Release:
10541    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10542    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10543  Current Release:
10544    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10545    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10546
10547
105482) iASL Compiler/Disassembler and Tools:
10549
10550AcpiExec: Implemented a new option (-m) to display full memory use
10551statistics upon subsystem/program termination. (Valery Podrezov)
10552
10553----------------------------------------
1055409 November 2006. Summary of changes for version 20061109:
10555
105561) ACPI CA Core Subsystem:
10557
10558Optimized the Load ASL operator in the case where the source operand is
10559an
10560operation region. Simply map the operation region memory, instead of
10561performing a bytewise read. (Region must be of type SystemMemory, see
10562below.)
10563
10564Fixed the Load ASL operator for the case where the source operand is a
10565region field. A buffer object is also allowed as the source operand. BZ
10566480
10567
10568Fixed a problem where the Load ASL operator allowed the source operand to
10569be
10570an operation region of any type. It is now restricted to regions of type
10571SystemMemory, as per the ACPI specification. BZ 481
10572
10573Additional cleanup and optimizations for the new Table Manager code.
10574
10575AcpiEnable will now fail if all of the required ACPI tables are not
10576loaded
10577(FADT, FACS, DSDT). BZ 477
10578
10579Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10580this
10581header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10582manually optimized to be aligned and will not work if it is byte-packed.
10583
10584Example Code and Data Size: These are the sizes for the OS-independent
10585acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10586debug version of the code includes the debug output trace mechanism and
10587has
10588a much larger code and data size.
10589
10590  Previous Release:
10591    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10592    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10593  Current Release:
10594    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10595    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10596
10597
105982) iASL Compiler/Disassembler and Tools:
10599
10600Fixed a problem where the presence of the _OSI predefined control method
10601within complex expressions could cause an internal compiler error.
10602
10603AcpiExec: Implemented full region support for multiple address spaces.
10604SpaceId is now part of the REGION object. BZ 429
10605
10606----------------------------------------
1060711 October 2006. Summary of changes for version 20061011:
10608
106091) ACPI CA Core Subsystem:
10610
10611Completed an AML interpreter performance enhancement for control method
10612execution. Previously a 2-pass parse/execution, control methods are now
10613completely parsed and executed in a single pass. This improves overall
10614interpreter performance by ~25%, reduces code size, and reduces CPU stack
10615use. (Valery Podrezov + interpreter changes in version 20051202 that
10616eliminated namespace loading during the pass one parse.)
10617
10618Implemented _CID support for PCI Root Bridge detection. If the _HID does
10619not
10620match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10621now
10622obtained and also checked for an ID match.
10623
10624Implemented additional support for the PCI _ADR execution: upsearch until
10625a
10626device scope is found before executing _ADR. This allows PCI_Config
10627operation regions to be declared locally within control methods
10628underneath
10629PCI device objects.
10630
10631Fixed a problem with a possible race condition between threads executing
10632AcpiWalkNamespace and the AML interpreter. This condition was removed by
10633modifying AcpiWalkNamespace to (by default) ignore all temporary
10634namespace
10635entries created during any concurrent control method execution. An
10636additional namespace race condition is known to exist between
10637AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10638investigation.
10639
10640Restructured the AML ParseLoop function, breaking it into several
10641subfunctions in order to reduce CPU stack use and improve
10642maintainability.
10643(Mikhail Kouzmich)
10644
10645AcpiGetHandle: Fix for parameter validation to detect invalid
10646combinations
10647of prefix handle and pathname. BZ 478
10648
10649Example Code and Data Size: These are the sizes for the OS-independent
10650acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10651debug version of the code includes the debug output trace mechanism and
10652has
10653a much larger code and data size.
10654
10655  Previous Release:
10656    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10657    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10658  Current Release:
10659    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10660    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10661
106622) iASL Compiler/Disassembler and Tools:
10663
10664Ported the -g option (get local ACPI tables) to the new ACPICA Table
10665Manager
10666to restore original behavior.
10667
10668----------------------------------------
1066927 September 2006. Summary of changes for version 20060927:
10670
106711) ACPI CA Core Subsystem:
10672
10673Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10674These functions now use a spinlock for mutual exclusion and the interrupt
10675level indication flag is not needed.
10676
10677Fixed a problem with the Global Lock where the lock could appear to be
10678obtained before it is actually obtained. The global lock semaphore was
10679inadvertently created with one unit instead of zero units. (BZ 464)
10680Fiodor
10681Suietov.
10682
10683Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10684during
10685a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10686
10687Example Code and Data Size: These are the sizes for the OS-independent
10688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10689debug version of the code includes the debug output trace mechanism and
10690has
10691a much larger code and data size.
10692
10693  Previous Release:
10694    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10695    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10696  Current Release:
10697    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10698    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10699
10700
107012) iASL Compiler/Disassembler and Tools:
10702
10703Fixed a compilation problem with the pre-defined Resource Descriptor
10704field
10705names where an "object does not exist" error could be incorrectly
10706generated
10707if the parent ResourceTemplate pathname places the template within a
10708different namespace scope than the current scope. (BZ 7212)
10709
10710Fixed a problem where the compiler could hang after syntax errors
10711detected
10712in an ElseIf construct. (BZ 453)
10713
10714Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10715operator. An incorrect output filename was produced when this parameter
10716was
10717a null string (""). Now, the original input filename is used as the AML
10718output filename, with an ".aml" extension.
10719
10720Implemented a generic batch command mode for the AcpiExec utility
10721(execute
10722any AML debugger command) (Valery Podrezov).
10723
10724----------------------------------------
1072512 September 2006. Summary of changes for version 20060912:
10726
107271) ACPI CA Core Subsystem:
10728
10729Enhanced the implementation of the "serialized mode" of the interpreter
10730(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10731specified, instead of creating a serialization semaphore per control
10732method,
10733the interpreter lock is simply no longer released before a blocking
10734operation during control method execution. This effectively makes the AML
10735Interpreter single-threaded. The overhead of a semaphore per-method is
10736eliminated.
10737
10738Fixed a regression where an error was no longer emitted if a control
10739method
10740attempts to create 2 objects of the same name. This once again returns
10741AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10742that
10743will dynamically serialize the control method to possible prevent future
10744errors. (BZ 440)
10745
10746Integrated a fix for a problem with PCI Express HID detection in the PCI
10747Config Space setup procedure. (BZ 7145)
10748
10749Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10750AcpiHwInitialize function - the FADT registers are now validated when the
10751table is loaded.
10752
10753Added two new warnings during FADT verification - 1) if the FADT is
10754larger
10755than the largest known FADT version, and 2) if there is a mismatch
10756between
10757a
1075832-bit block address and the 64-bit X counterpart (when both are non-
10759zero.)
10760
10761Example Code and Data Size: These are the sizes for the OS-independent
10762acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10763debug version of the code includes the debug output trace mechanism and
10764has
10765a much larger code and data size.
10766
10767  Previous Release:
10768    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10769    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10770  Current Release:
10771    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10772    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10773
10774
107752) iASL Compiler/Disassembler and Tools:
10776
10777Fixed a problem with the implementation of the Switch() operator where
10778the
10779temporary variable was declared too close to the actual Switch, instead
10780of
10781at method level. This could cause a problem if the Switch() operator is
10782within a while loop, causing an error on the second iteration. (BZ 460)
10783
10784Disassembler - fix for error emitted for unknown type for target of scope
10785operator. Now, ignore it and continue.
10786
10787Disassembly of an FADT now verifies the input FADT and reports any errors
10788found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10789
10790Disassembly of raw data buffers with byte initialization data now
10791prefixes
10792each output line with the current buffer offset.
10793
10794Disassembly of ASF! table now includes all variable-length data fields at
10795the end of some of the subtables.
10796
10797The disassembler now emits a comment if a buffer appears to be a
10798ResourceTemplate, but cannot be disassembled as such because the EndTag
10799does
10800not appear at the very end of the buffer.
10801
10802AcpiExec - Added the "-t" command line option to enable the serialized
10803mode
10804of the AML interpreter.
10805
10806----------------------------------------
1080731 August 2006. Summary of changes for version 20060831:
10808
108091) ACPI CA Core Subsystem:
10810
10811Miscellaneous fixes for the Table Manager:
10812- Correctly initialize internal common FADT for all 64-bit "X" fields
10813- Fixed a couple table mapping issues during table load
10814- Fixed a couple alignment issues for IA64
10815- Initialize input array to zero in AcpiInitializeTables
10816- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
10817AcpiGetTableByIndex
10818
10819Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10820now
10821immediately disabled to prevent the waking GPE from firing again and to
10822prevent other wake GPEs from interrupting the wake process.
10823
10824Added the AcpiGpeCount global that tracks the number of processed GPEs,
10825to
10826be used for debugging systems with a large number of ACPI interrupts.
10827
10828Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10829both the ACPICA headers and the disassembler.
10830
10831Example Code and Data Size: These are the sizes for the OS-independent
10832acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10833debug version of the code includes the debug output trace mechanism and
10834has
10835a much larger code and data size.
10836
10837  Previous Release:
10838    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10839    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10840  Current Release:
10841    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10842    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10843
10844
108452) iASL Compiler/Disassembler and Tools:
10846
10847Disassembler support for the DMAR ACPI table.
10848
10849----------------------------------------
1085023 August 2006. Summary of changes for version 20060823:
10851
108521) ACPI CA Core Subsystem:
10853
10854The Table Manager component has been completely redesigned and
10855reimplemented. The new design is much simpler, and reduces the overall
10856code
10857and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10858is
10859now possible to obtain the ACPI tables very early during kernel
10860initialization, even before dynamic memory management is initialized.
10861(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10862
10863Obsolete ACPICA interfaces:
10864
10865- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10866init
10867time).
10868- AcpiLoadTable: Not needed.
10869- AcpiUnloadTable: Not needed.
10870
10871New ACPICA interfaces:
10872
10873- AcpiInitializeTables: Must be called before the table manager can be
10874used.
10875- AcpiReallocateRootTable: Used to transfer the root table to dynamically
10876allocated memory after it becomes available.
10877- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10878tables
10879in the RSDT/XSDT.
10880
10881Other ACPICA changes:
10882
10883- AcpiGetTableHeader returns the actual mapped table header, not a copy.
10884Use
10885AcpiOsUnmapMemory to free this mapping.
10886- AcpiGetTable returns the actual mapped table. The mapping is managed
10887internally and must not be deleted by the caller. Use of this interface
10888causes no additional dynamic memory allocation.
10889- AcpiFindRootPointer: Support for physical addressing has been
10890eliminated,
10891it appeared to be unused.
10892- The interface to AcpiOsMapMemory has changed to be consistent with the
10893other allocation interfaces.
10894- The interface to AcpiOsGetRootPointer has changed to eliminate
10895unnecessary
10896parameters.
10897- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1089864-
10899bit platforms. Was previously 64 bits on all platforms.
10900- The interface to the ACPI Global Lock acquire/release macros have
10901changed
10902slightly since ACPICA no longer keeps a local copy of the FACS with a
10903constructed pointer to the actual global lock.
10904
10905Porting to the new table manager:
10906
10907- AcpiInitializeTables: Must be called once, and can be called anytime
10908during the OS initialization process. It allows the host to specify an
10909area
10910of memory to be used to store the internal version of the RSDT/XSDT (root
10911table). This allows the host to access ACPI tables before memory
10912management
10913is initialized and running.
10914- AcpiReallocateRootTable: Can be called after memory management is
10915running
10916to copy the root table to a dynamically allocated array, freeing up the
10917scratch memory specified in the call to AcpiInitializeTables.
10918- AcpiSubsystemInitialize: This existing interface is independent of the
10919Table Manager, and does not have to be called before the Table Manager
10920can
10921be used, it only must be called before the rest of ACPICA can be used.
10922- ACPI Tables: Some changes have been made to the names and structure of
10923the
10924actbl.h and actbl1.h header files and may require changes to existing
10925code.
10926For example, bitfields have been completely removed because of their lack
10927of
10928portability across C compilers.
10929- Update interfaces to the Global Lock acquire/release macros if local
10930versions are used. (see acwin.h)
10931
10932Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10933
10934New files: tbfind.c
10935
10936Example Code and Data Size: These are the sizes for the OS-independent
10937acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10938debug version of the code includes the debug output trace mechanism and
10939has
10940a much larger code and data size.
10941
10942  Previous Release:
10943    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10944    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10945  Current Release:
10946    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10947    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10948
10949
109502) iASL Compiler/Disassembler and Tools:
10951
10952No changes for this release.
10953
10954----------------------------------------
1095521 July 2006. Summary of changes for version 20060721:
10956
109571) ACPI CA Core Subsystem:
10958
10959The full source code for the ASL test suite used to validate the iASL
10960compiler and the ACPICA core subsystem is being released with the ACPICA
10961source for the first time. The source is contained in a separate package
10962and
10963consists of over 1100 files that exercise all ASL/AML operators. The
10964package
10965should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
10966Fiodor
10967Suietov)
10968
10969Completed a new design and implementation for support of the ACPI Global
10970Lock. On the OS side, the global lock is now treated as a standard AML
10971mutex. Previously, multiple OS threads could "acquire" the global lock
10972simultaneously. However, this could cause the BIOS to be starved out of
10973the
10974lock - especially in cases such as the Embedded Controller driver where
10975there is a tight coupling between the OS and the BIOS.
10976
10977Implemented an optimization for the ACPI Global Lock interrupt mechanism.
10978The Global Lock interrupt handler no longer queues the execution of a
10979separate thread to signal the global lock semaphore. Instead, the
10980semaphore
10981is signaled directly from the interrupt handler.
10982
10983Implemented support within the AML interpreter for package objects that
10984contain a larger AML length (package list length) than the package
10985element
10986count. In this case, the length of the package is truncated to match the
10987package element count. Some BIOS code apparently modifies the package
10988length
10989on the fly, and this change supports this behavior. Provides
10990compatibility
10991with the MS AML interpreter. (With assistance from Fiodor Suietov)
10992
10993Implemented a temporary fix for the BankValue parameter of a Bank Field
10994to
10995support all constant values, now including the Zero and One opcodes.
10996Evaluation of this parameter must eventually be converted to a full
10997TermArg
10998evaluation. A not-implemented error is now returned (temporarily) for
10999non-
11000constant values for this parameter.
11001
11002Fixed problem reports (Fiodor Suietov) integrated:
11003- Fix for premature object deletion after CopyObject on Operation Region
11004(BZ
11005350)
11006
11007Example Code and Data Size: These are the sizes for the OS-independent
11008acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11009debug version of the code includes the debug output trace mechanism and
11010has
11011a much larger code and data size.
11012
11013  Previous Release:
11014    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
11015    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
11016  Current Release:
11017    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11018    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11019
11020
110212) iASL Compiler/Disassembler and Tools:
11022
11023No changes for this release.
11024
11025----------------------------------------
1102607 July 2006. Summary of changes for version 20060707:
11027
110281) ACPI CA Core Subsystem:
11029
11030Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11031that do not allow the initialization of address pointers within packed
11032structures - even though the hardware itself may support misaligned
11033transfers. Some of the debug data structures are packed by default to
11034minimize size.
11035
11036Added an error message for the case where AcpiOsGetThreadId() returns
11037zero.
11038A non-zero value is required by the core ACPICA code to ensure the proper
11039operation of AML mutexes and recursive control methods.
11040
11041The DSDT is now the only ACPI table that determines whether the AML
11042interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11043but
11044the hooks for per-table 32/64 switching have been removed from the code.
11045A
11046clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11047
11048Fixed a possible leak of an OwnerID in the error path of
11049AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11050deletion to a single place in AcpiTbUninstallTable to correct possible
11051leaks
11052when using the AcpiTbDeleteTablesByType interface (with assistance from
11053Lance Ortiz.)
11054
11055Fixed a problem with Serialized control methods where the semaphore
11056associated with the method could be over-signaled after multiple method
11057invocations.
11058
11059Fixed two issues with the locking of the internal namespace data
11060structure.
11061Both the Unload() operator and AcpiUnloadTable interface now lock the
11062namespace during the namespace deletion associated with the table unload
11063(with assistance from Linn Crosetto.)
11064
11065Fixed problem reports (Valery Podrezov) integrated:
11066- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11067
11068Fixed problem reports (Fiodor Suietov) integrated:
11069- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11070- On Address Space handler deletion, needless deactivation call (BZ 374)
11071- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11072375)
11073- Possible memory leak, Notify sub-objects of Processor, Power,
11074ThermalZone
11075(BZ 376)
11076- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11077- Minimum Length of RSDT should be validated (BZ 379)
11078- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11079Handler (BZ (380)
11080- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11081loaded
11082(BZ 381)
11083
11084Example Code and Data Size: These are the sizes for the OS-independent
11085acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11086debug version of the code includes the debug output trace mechanism and
11087has
11088a much larger code and data size.
11089
11090  Previous Release:
11091    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11092    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11093  Current Release:
11094    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11095    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11096
11097
110982) iASL Compiler/Disassembler and Tools:
11099
11100Fixed problem reports:
11101Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11102436)
11103
11104----------------------------------------
1110523 June 2006. Summary of changes for version 20060623:
11106
111071) ACPI CA Core Subsystem:
11108
11109Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11110allows the type to be customized to the host OS for improved efficiency
11111(since a spinlock is usually a very small object.)
11112
11113Implemented support for "ignored" bits in the ACPI registers. According
11114to
11115the ACPI specification, these bits should be preserved when writing the
11116registers via a read/modify/write cycle. There are 3 bits preserved in
11117this
11118manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11119
11120Implemented the initial deployment of new OSL mutex interfaces. Since
11121some
11122host operating systems have separate mutex and semaphore objects, this
11123feature was requested. The base code now uses mutexes (and the new mutex
11124interfaces) wherever a binary semaphore was used previously. However, for
11125the current release, the mutex interfaces are defined as macros to map
11126them
11127to the existing semaphore interfaces. Therefore, no OSL changes are
11128required
11129at this time. (See acpiosxf.h)
11130
11131Fixed several problems with the support for the control method SyncLevel
11132parameter. The SyncLevel now works according to the ACPI specification
11133and
11134in concert with the Mutex SyncLevel parameter, since the current
11135SyncLevel
11136is a property of the executing thread. Mutual exclusion for control
11137methods
11138is now implemented with a mutex instead of a semaphore.
11139
11140Fixed three instances of the use of the C shift operator in the bitfield
11141support code (exfldio.c) to avoid the use of a shift value larger than
11142the
11143target data width. The behavior of C compilers is undefined in this case
11144and
11145can cause unpredictable results, and therefore the case must be detected
11146and
11147avoided. (Fiodor Suietov)
11148
11149Added an info message whenever an SSDT or OEM table is loaded dynamically
11150via the Load() or LoadTable() ASL operators. This should improve
11151debugging
11152capability since it will show exactly what tables have been loaded
11153(beyond
11154the tables present in the RSDT/XSDT.)
11155
11156Example Code and Data Size: These are the sizes for the OS-independent
11157acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11158debug version of the code includes the debug output trace mechanism and
11159has
11160a much larger code and data size.
11161
11162  Previous Release:
11163    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11164    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11165  Current Release:
11166    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11167    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11168
11169
111702) iASL Compiler/Disassembler and Tools:
11171
11172No changes for this release.
11173
11174----------------------------------------
1117508 June 2006. Summary of changes for version 20060608:
11176
111771) ACPI CA Core Subsystem:
11178
11179Converted the locking mutex used for the ACPI hardware to a spinlock.
11180This
11181change should eliminate all problems caused by attempting to acquire a
11182semaphore at interrupt level, and it means that all ACPICA external
11183interfaces that directly access the ACPI hardware can be safely called
11184from
11185interrupt level. OSL code that implements the semaphore interfaces should
11186be
11187able to eliminate any workarounds for being called at interrupt level.
11188
11189Fixed a regression introduced in 20060526 where the ACPI device
11190initialization could be prematurely aborted with an AE_NOT_FOUND if a
11191device
11192did not have an optional _INI method.
11193
11194Fixed an IndexField issue where a write to the Data Register should be
11195limited in size to the AccessSize (width) of the IndexField itself. (BZ
11196433,
11197Fiodor Suietov)
11198
11199Fixed problem reports (Valery Podrezov) integrated:
11200- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11201
11202Fixed problem reports (Fiodor Suietov) integrated:
11203- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11204
11205Removed four global mutexes that were obsolete and were no longer being
11206used.
11207
11208Example Code and Data Size: These are the sizes for the OS-independent
11209acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11210debug version of the code includes the debug output trace mechanism and
11211has
11212a much larger code and data size.
11213
11214  Previous Release:
11215    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11216    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11217  Current Release:
11218    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11219    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11220
11221
112222) iASL Compiler/Disassembler and Tools:
11223
11224Fixed a fault when using -g option (get tables from registry) on Windows
11225machines.
11226
11227Fixed problem reports integrated:
11228- Generate error if CreateField NumBits parameter is zero. (BZ 405)
11229- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11230Suietov)
11231- Global table revision override (-r) is ignored (BZ 413)
11232
11233----------------------------------------
1123426 May 2006. Summary of changes for version 20060526:
11235
112361) ACPI CA Core Subsystem:
11237
11238Restructured, flattened, and simplified the internal interfaces for
11239namespace object evaluation - resulting in smaller code, less CPU stack
11240use,
11241and fewer interfaces. (With assistance from Mikhail Kouzmich)
11242
11243Fixed a problem with the CopyObject operator where the first parameter
11244was
11245not typed correctly for the parser, interpreter, compiler, and
11246disassembler.
11247Caused various errors and unexpected behavior.
11248
11249Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11250produced incorrect results with some C compilers. Since the behavior of C
11251compilers when the shift value is larger than the datatype width is
11252apparently not well defined, the interpreter now detects this condition
11253and
11254simply returns zero as expected in all such cases. (BZ 395)
11255
11256Fixed problem reports (Valery Podrezov) integrated:
11257- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11258- Allow interpreter to handle nested method declarations (BZ 5361)
11259
11260Fixed problem reports (Fiodor Suietov) integrated:
11261- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11262355)
11263- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11264356)
11265- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11266- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11267- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11268- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11269- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11270- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11271- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11272365)
11273- Status of the Global Initialization Handler call not used (BZ 366)
11274- Incorrect object parameter to Global Initialization Handler (BZ 367)
11275
11276Example Code and Data Size: These are the sizes for the OS-independent
11277acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11278debug version of the code includes the debug output trace mechanism and
11279has
11280a much larger code and data size.
11281
11282  Previous Release:
11283    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11284    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11285  Current Release:
11286    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11287    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11288
11289
112902) iASL Compiler/Disassembler and Tools:
11291
11292Modified the parser to allow the names IO, DMA, and IRQ to be used as
11293namespace identifiers with no collision with existing resource descriptor
11294macro names. This provides compatibility with other ASL compilers and is
11295most useful for disassembly/recompilation of existing tables without
11296parse
11297errors. (With assistance from Thomas Renninger)
11298
11299Disassembler: fixed an incorrect disassembly problem with the
11300DataTableRegion and CopyObject operators. Fixed a possible fault during
11301disassembly of some Alias operators.
11302
11303----------------------------------------
1130412 May 2006. Summary of changes for version 20060512:
11305
113061) ACPI CA Core Subsystem:
11307
11308Replaced the AcpiOsQueueForExecution interface with a new interface named
11309AcpiOsExecute. The major difference is that the new interface does not
11310have
11311a Priority parameter, this appeared to be useless and has been replaced
11312by
11313a
11314Type parameter. The Type tells the host what type of execution is being
11315requested, such as global lock handler, notify handler, GPE handler, etc.
11316This allows the host to queue and execute the request as appropriate for
11317the
11318request type, possibly using different work queues and different
11319priorities
11320for the various request types. This enables fixes for multithreading
11321deadlock problems such as BZ #5534, and will require changes to all
11322existing
11323OS interface layers. (Alexey Starikovskiy and Bob Moore)
11324
11325Fixed a possible memory leak associated with the support for the so-
11326called
11327"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11328Suietov)
11329
11330Fixed a problem with the Load() operator where a table load from an
11331operation region could overwrite an internal table buffer by up to 7
11332bytes
11333and cause alignment faults on IPF systems. (With assistance from Luming
11334Yu)
11335
11336Example Code and Data Size: These are the sizes for the OS-independent
11337acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11338debug version of the code includes the debug output trace mechanism and
11339has
11340a much larger code and data size.
11341
11342  Previous Release:
11343    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11344    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11345  Current Release:
11346    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11347    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11348
11349
11350
113512) iASL Compiler/Disassembler and Tools:
11352
11353Disassembler: Implemented support to cross reference the internal
11354namespace
11355and automatically generate ASL External() statements for symbols not
11356defined
11357within the current table being disassembled. This will simplify the
11358disassembly and recompilation of interdependent tables such as SSDTs
11359since
11360these statements will no longer have to be added manually.
11361
11362Disassembler: Implemented experimental support to automatically detect
11363invocations of external control methods and generate appropriate
11364External()
11365statements. This is problematic because the AML cannot be correctly
11366parsed
11367until the number of arguments for each control method is known.
11368Currently,
11369standalone method invocations and invocations as the source operand of a
11370Store() statement are supported.
11371
11372Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11373LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11374LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11375more readable and likely closer to the original ASL source.
11376
11377----------------------------------------
1137821 April 2006. Summary of changes for version 20060421:
11379
113801) ACPI CA Core Subsystem:
11381
11382Removed a device initialization optimization introduced in 20051216 where
11383the _STA method was not run unless an _INI was also present for the same
11384device. This optimization could cause problems because it could allow
11385_INI
11386methods to be run within a not-present device subtree. (If a not-present
11387device had no _INI, _STA would not be run, the not-present status would
11388not
11389be discovered, and the children of the device would be incorrectly
11390traversed.)
11391
11392Implemented a new _STA optimization where namespace subtrees that do not
11393contain _INI are identified and ignored during device initialization.
11394Selectively running _STA can significantly improve boot time on large
11395machines (with assistance from Len Brown.)
11396
11397Implemented support for the device initialization case where the returned
11398_STA flags indicate a device not-present but functioning. In this case,
11399_INI
11400is not run, but the device children are examined for presence, as per the
11401ACPI specification.
11402
11403Implemented an additional change to the IndexField support in order to
11404conform to MS behavior. The value written to the Index Register is not
11405simply a byte offset, it is a byte offset in units of the access width of
11406the parent Index Field. (Fiodor Suietov)
11407
11408Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11409interface is called during the creation of all AML operation regions, and
11410allows the host OS to exert control over what addresses it will allow the
11411AML code to access. Operation Regions whose addresses are disallowed will
11412cause a runtime exception when they are actually accessed (will not
11413affect
11414or abort table loading.) See oswinxf or osunixxf for an example
11415implementation.
11416
11417Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11418interface allows the host OS to match the various "optional"
11419interface/behavior strings for the _OSI predefined control method as
11420appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11421for an example implementation.
11422
11423Restructured and corrected various problems in the exception handling
11424code
11425paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11426(with assistance from Takayoshi Kochi.)
11427
11428Modified the Linux source converter to ignore quoted string literals
11429while
11430converting identifiers from mixed to lower case. This will correct
11431problems
11432with the disassembler and other areas where such strings must not be
11433modified.
11434
11435The ACPI_FUNCTION_* macros no longer require quotes around the function
11436name. This allows the Linux source converter to convert the names, now
11437that
11438the converter ignores quoted strings.
11439
11440Example Code and Data Size: These are the sizes for the OS-independent
11441acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11442debug version of the code includes the debug output trace mechanism and
11443has
11444a much larger code and data size.
11445
11446  Previous Release:
11447
11448    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11449    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11450  Current Release:
11451    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11452    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11453
11454
114552) iASL Compiler/Disassembler and Tools:
11456
11457Implemented 3 new warnings for iASL, and implemented multiple warning
11458levels
11459(w2 flag).
11460
114611) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11462not
11463WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11464check for the possible timeout, a warning is issued.
11465
114662) Useless operators: If an ASL operator does not specify an optional
11467target
11468operand and it also does not use the function return value from the
11469operator, a warning is issued since the operator effectively does
11470nothing.
11471
114723) Unreferenced objects: If a namespace object is created, but never
11473referenced, a warning is issued. This is a warning level 2 since there
11474are
11475cases where this is ok, such as when a secondary table is loaded that
11476uses
11477the unreferenced objects. Even so, care is taken to only flag objects
11478that
11479don't look like they will ever be used. For example, the reserved methods
11480(starting with an underscore) are usually not referenced because it is
11481expected that the OS will invoke them.
11482
11483----------------------------------------
1148431 March 2006. Summary of changes for version 20060331:
11485
114861) ACPI CA Core Subsystem:
11487
11488Implemented header file support for the following additional ACPI tables:
11489ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11490support,
11491all current and known ACPI tables are now defined in the ACPICA headers
11492and
11493are available for use by device drivers and other software.
11494
11495Implemented support to allow tables that contain ACPI names with invalid
11496characters to be loaded. Previously, this would cause the table load to
11497fail, but since there are several known cases of such tables on existing
11498machines, this change was made to enable ACPI support for them. Also,
11499this
11500matches the behavior of the Microsoft ACPI implementation.
11501
11502Fixed a couple regressions introduced during the memory optimization in
11503the
1150420060317 release. The namespace node definition required additional
11505reorganization and an internal datatype that had been changed to 8-bit
11506was
11507restored to 32-bit. (Valery Podrezov)
11508
11509Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11510could be passed through to AcpiOsReleaseObject which is unexpected. Such
11511null pointers are now trapped and ignored, matching the behavior of the
11512previous implementation before the deployment of AcpiOsReleaseObject.
11513(Valery Podrezov, Fiodor Suietov)
11514
11515Fixed a memory mapping leak during the deletion of a SystemMemory
11516operation
11517region where a cached memory mapping was not deleted. This became a
11518noticeable problem for operation regions that are defined within
11519frequently
11520used control methods. (Dana Meyers)
11521
11522Reorganized the ACPI table header files into two main files: one for the
11523ACPI tables consumed by the ACPICA core, and another for the
11524miscellaneous
11525ACPI tables that are consumed by the drivers and other software. The
11526various
11527FADT definitions were merged into one common section and three different
11528tables (ACPI 1.0, 1.0+, and 2.0)
11529
11530Example Code and Data Size: These are the sizes for the OS-independent
11531acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11532debug version of the code includes the debug output trace mechanism and
11533has
11534a much larger code and data size.
11535
11536  Previous Release:
11537    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11538    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11539  Current Release:
11540    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11541    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11542
11543
115442) iASL Compiler/Disassembler and Tools:
11545
11546Disassembler: Implemented support to decode and format all non-AML ACPI
11547tables (tables other than DSDTs and SSDTs.) This includes the new tables
11548added to the ACPICA headers, therefore all current and known ACPI tables
11549are
11550supported.
11551
11552Disassembler: The change to allow ACPI names with invalid characters also
11553enables the disassembly of such tables. Invalid characters within names
11554are
11555changed to '*' to make the name printable; the iASL compiler will still
11556generate an error for such names, however, since this is an invalid ACPI
11557character.
11558
11559Implemented an option for AcpiXtract (-a) to extract all tables found in
11560the
11561input file. The default invocation extracts only the DSDTs and SSDTs.
11562
11563Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11564makefile for the AcpiXtract utility.
11565
11566----------------------------------------
1156717 March 2006. Summary of changes for version 20060317:
11568
115691) ACPI CA Core Subsystem:
11570
11571Implemented the use of a cache object for all internal namespace nodes.
11572Since there are about 1000 static nodes in a typical system, this will
11573decrease memory use for cache implementations that minimize per-
11574allocation
11575overhead (such as a slab allocator.)
11576
11577Removed the reference count mechanism for internal namespace nodes, since
11578it
11579was deemed unnecessary. This reduces the size of each namespace node by
11580about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11581case,
11582and 32 bytes for the 64-bit case.
11583
11584Optimized several internal data structures to reduce object size on 64-
11585bit
11586platforms by packing data within the 64-bit alignment. This includes the
11587frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11588instances corresponding to the namespace objects.
11589
11590Added two new strings for the predefined _OSI method: "Windows 2001.1
11591SP1"
11592and "Windows 2006".
11593
11594Split the allocation tracking mechanism out to a separate file, from
11595utalloc.c to uttrack.c. This mechanism appears to be only useful for
11596application-level code. Kernels may wish to not include uttrack.c in
11597distributions.
11598
11599Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11600associated
11601code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11602macros.)
11603
11604Code and Data Size: These are the sizes for the acpica.lib produced by
11605the
11606Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11607ACPI
11608driver or OSPM code. The debug version of the code includes the debug
11609output
11610trace mechanism and has a much larger code and data size. Note that these
11611values will vary depending on the efficiency of the compiler and the
11612compiler options used during generation.
11613
11614  Previous Release:
11615    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11616    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11617  Current Release:
11618    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11619    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11620
11621
116222) iASL Compiler/Disassembler and Tools:
11623
11624Implemented an ANSI C version of the acpixtract utility. This version
11625will
11626automatically extract the DSDT and all SSDTs from the input acpidump text
11627file and dump the binary output to separate files. It can also display a
11628summary of the input file including the headers for each table found and
11629will extract any single ACPI table, with any signature. (See
11630source/tools/acpixtract)
11631
11632----------------------------------------
1163310 March 2006. Summary of changes for version 20060310:
11634
116351) ACPI CA Core Subsystem:
11636
11637Tagged all external interfaces to the subsystem with the new
11638ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11639assist
11640kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11641macro. The default definition is NULL.
11642
11643Added the ACPI_THREAD_ID type for the return value from
11644AcpiOsGetThreadId.
11645This allows the host to define this as necessary to simplify kernel
11646integration. The default definition is ACPI_NATIVE_UINT.
11647
11648Fixed two interpreter problems related to error processing, the deletion
11649of
11650objects, and placing invalid pointers onto the internal operator result
11651stack. BZ 6028, 6151 (Valery Podrezov)
11652
11653Increased the reference count threshold where a warning is emitted for
11654large
11655reference counts in order to eliminate unnecessary warnings on systems
11656with
11657large namespaces (especially 64-bit.) Increased the value from 0x400 to
116580x800.
11659
11660Due to universal disagreement as to the meaning of the 'c' in the
11661calloc()
11662function, the ACPI_MEM_CALLOCATE macro has been renamed to
11663ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11664ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11665ACPI_FREE.
11666
11667Code and Data Size: These are the sizes for the acpica.lib produced by
11668the
11669Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11670ACPI
11671driver or OSPM code. The debug version of the code includes the debug
11672output
11673trace mechanism and has a much larger code and data size. Note that these
11674values will vary depending on the efficiency of the compiler and the
11675compiler options used during generation.
11676
11677  Previous Release:
11678    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11679    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11680  Current Release:
11681    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11682    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11683
11684
116852) iASL Compiler/Disassembler:
11686
11687Disassembler: implemented support for symbolic resource descriptor
11688references. If a CreateXxxxField operator references a fixed offset
11689within
11690a
11691resource descriptor, a name is assigned to the descriptor and the offset
11692is
11693translated to the appropriate resource tag and pathname. The addition of
11694this support brings the disassembled code very close to the original ASL
11695source code and helps eliminate run-time errors when the disassembled
11696code
11697is modified (and recompiled) in such a way as to invalidate the original
11698fixed offsets.
11699
11700Implemented support for a Descriptor Name as the last parameter to the
11701ASL
11702Register() macro. This parameter was inadvertently left out of the ACPI
11703specification, and will be added for ACPI 3.0b.
11704
11705Fixed a problem where the use of the "_OSI" string (versus the full path
11706"\_OSI") caused an internal compiler error. ("No back ptr to op")
11707
11708Fixed a problem with the error message that occurs when an invalid string
11709is
11710used for a _HID object (such as one with an embedded asterisk:
11711"*PNP010A".)
11712The correct message is now displayed.
11713
11714----------------------------------------
1171517 February 2006. Summary of changes for version 20060217:
11716
117171) ACPI CA Core Subsystem:
11718
11719Implemented a change to the IndexField support to match the behavior of
11720the
11721Microsoft AML interpreter. The value written to the Index register is now
11722a
11723byte offset, no longer an index based upon the width of the Data
11724register.
11725This should fix IndexField problems seen on some machines where the Data
11726register is not exactly one byte wide. The ACPI specification will be
11727clarified on this point.
11728
11729Fixed a problem where several resource descriptor types could overrun the
11730internal descriptor buffer due to size miscalculation: VendorShort,
11731VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11732affect all platforms.
11733
11734Fixed a problem where individual resource descriptors were misaligned
11735within
11736the internal buffer, causing alignment faults on IA64 platforms.
11737
11738Code and Data Size: These are the sizes for the acpica.lib produced by
11739the
11740Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11741ACPI
11742driver or OSPM code. The debug version of the code includes the debug
11743output
11744trace mechanism and has a much larger code and data size. Note that these
11745values will vary depending on the efficiency of the compiler and the
11746compiler options used during generation.
11747
11748  Previous Release:
11749    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11750    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11751  Current Release:
11752    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11753    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11754
11755
117562) iASL Compiler/Disassembler:
11757
11758Implemented support for new reserved names: _WDG and _WED are Microsoft
11759extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11760defined method (Throttling Depth Limit.)
11761
11762Fixed a problem where a zero-length VendorShort or VendorLong resource
11763descriptor was incorrectly emitted as a descriptor of length one.
11764
11765----------------------------------------
1176610 February 2006. Summary of changes for version 20060210:
11767
117681) ACPI CA Core Subsystem:
11769
11770Removed a couple of extraneous ACPI_ERROR messages that appeared during
11771normal execution. These became apparent after the conversion from
11772ACPI_DEBUG_PRINT.
11773
11774Fixed a problem where the CreateField operator could hang if the BitIndex
11775or
11776NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11777
11778Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11779failed with an exception. This also fixes a couple of related RefOf and
11780DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11781
11782Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11783of
11784AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11785BZ
117865480)
11787
11788Implemented a memory cleanup at the end of the execution of each
11789iteration
11790of an AML While() loop, preventing the accumulation of outstanding
11791objects.
11792(Valery Podrezov, BZ 5427)
11793
11794Eliminated a chunk of duplicate code in the object resolution code.
11795(Valery
11796Podrezov, BZ 5336)
11797
11798Fixed several warnings during the 64-bit code generation.
11799
11800The AcpiSrc source code conversion tool now inserts one line of
11801whitespace
11802after an if() statement that is followed immediately by a comment,
11803improving
11804readability of the Linux code.
11805
11806Code and Data Size: The current and previous library sizes for the core
11807subsystem are shown below. These are the code and data sizes for the
11808acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11809These
11810values do not include any ACPI driver or OSPM code. The debug version of
11811the
11812code includes the debug output trace mechanism and has a much larger code
11813and data size. Note that these values will vary depending on the
11814efficiency
11815of the compiler and the compiler options used during generation.
11816
11817  Previous Release:
11818    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11819    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11820  Current Release:
11821    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11822    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11823
11824
118252) iASL Compiler/Disassembler:
11826
11827Fixed a problem with the disassembly of a BankField operator with a
11828complex
11829expression for the BankValue parameter.
11830
11831----------------------------------------
1183227 January 2006. Summary of changes for version 20060127:
11833
118341) ACPI CA Core Subsystem:
11835
11836Implemented support in the Resource Manager to allow unresolved
11837namestring
11838references within resource package objects for the _PRT method. This
11839support
11840is in addition to the previously implemented unresolved reference support
11841within the AML parser. If the interpreter slack mode is enabled, these
11842unresolved references will be passed through to the caller as a NULL
11843package
11844entry.
11845
11846Implemented and deployed new macros and functions for error and warning
11847messages across the subsystem. These macros are simpler and generate less
11848code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11849ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11850macros remain defined to allow ACPI drivers time to migrate to the new
11851macros.
11852
11853Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11854the
11855Acquire/Release Lock OSL interfaces.
11856
11857Fixed a problem where Alias ASL operators are sometimes not correctly
11858resolved, in both the interpreter and the iASL compiler.
11859
11860Fixed several problems with the implementation of the
11861ConcatenateResTemplate
11862ASL operator. As per the ACPI specification, zero length buffers are now
11863treated as a single EndTag. One-length buffers always cause a fatal
11864exception. Non-zero length buffers that do not end with a full 2-byte
11865EndTag
11866cause a fatal exception.
11867
11868Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11869interface. (With assistance from Thomas Renninger)
11870
11871Code and Data Size: The current and previous library sizes for the core
11872subsystem are shown below. These are the code and data sizes for the
11873acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11874These
11875values do not include any ACPI driver or OSPM code. The debug version of
11876the
11877code includes the debug output trace mechanism and has a much larger code
11878and data size. Note that these values will vary depending on the
11879efficiency
11880of the compiler and the compiler options used during generation.
11881
11882  Previous Release:
11883    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11884    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11885  Current Release:
11886    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11887    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11888
11889
118902) iASL Compiler/Disassembler:
11891
11892Fixed an internal error that was generated for any forward references to
11893ASL
11894Alias objects.
11895
11896----------------------------------------
1189713 January 2006. Summary of changes for version 20060113:
11898
118991) ACPI CA Core Subsystem:
11900
11901Added 2006 copyright to all module headers and signons. This affects
11902virtually every file in the ACPICA core subsystem, iASL compiler, and the
11903utilities.
11904
11905Enhanced the ACPICA error reporting in order to simplify user migration
11906to
11907the non-debug version of ACPICA. Replaced all instances of the
11908ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11909debug
11910levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11911respectively. This preserves all error and warning messages in the non-
11912debug
11913version of the ACPICA code (this has been referred to as the "debug lite"
11914option.) Over 200 cases were converted to create a total of over 380
11915error/warning messages across the ACPICA code. This increases the code
11916and
11917data size of the default non-debug version of the code somewhat (about
1191813K),
11919but all error/warning reporting may be disabled if desired (and code
11920eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11921configuration option. The size of the debug version of ACPICA remains
11922about
11923the same.
11924
11925Fixed a memory leak within the AML Debugger "Set" command. One object was
11926not properly deleted for every successful invocation of the command.
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:  76.6K Code, 12.3K Data,  88.9K Total
11941    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11942  Current Release:
11943    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11944    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11945
11946
119472) iASL Compiler/Disassembler:
11948
11949The compiler now officially supports the ACPI 3.0a specification that was
11950released on December 30, 2005. (Specification is available at
11951www.acpi.info)
11952
11953----------------------------------------
1195416 December 2005. Summary of changes for version 20051216:
11955
119561) ACPI CA Core Subsystem:
11957
11958Implemented optional support to allow unresolved names within ASL Package
11959objects. A null object is inserted in the package when a named reference
11960cannot be located in the current namespace. Enabled via the interpreter
11961slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
11962machines
11963that contain such code.
11964
11965Implemented an optimization to the initialization sequence that can
11966improve
11967boot time. During ACPI device initialization, the _STA method is now run
11968if
11969and only if the _INI method exists. The _STA method is used to determine
11970if
11971the device is present; An _INI can only be run if _STA returns present,
11972but
11973it is a waste of time to run the _STA method if the _INI does not exist.
11974(Prototype and assistance from Dong Wei)
11975
11976Implemented use of the C99 uintptr_t for the pointer casting macros if it
11977is
11978available in the current compiler. Otherwise, the default (void *) cast
11979is
11980used as before.
11981
11982Fixed some possible memory leaks found within the execution path of the
11983Break, Continue, If, and CreateField operators. (Valery Podrezov)
11984
11985Fixed a problem introduced in the 20051202 release where an exception is
11986generated during method execution if a control method attempts to declare
11987another method.
11988
11989Moved resource descriptor string constants that are used by both the AML
11990disassembler and AML debugger to the common utilities directory so that
11991these components are independent.
11992
11993Implemented support in the AcpiExec utility (-e switch) to globally
11994ignore
11995exceptions during control method execution (method is not aborted.)
11996
11997Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
11998generation.
11999
12000Code and Data Size: The current and previous library sizes for the core
12001subsystem are shown below. These are the code and data sizes for the
12002acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12003These
12004values do not include any ACPI driver or OSPM code. The debug version of
12005the
12006code includes the debug output trace mechanism and has a much larger code
12007and data size. Note that these values will vary depending on the
12008efficiency
12009of the compiler and the compiler options used during generation.
12010
12011  Previous Release:
12012    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12013    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12014  Current Release:
12015    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12016    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12017
12018
120192) iASL Compiler/Disassembler:
12020
12021Fixed a problem where a CPU stack overflow fault could occur if a
12022recursive
12023method call was made from within a Return statement.
12024
12025----------------------------------------
1202602 December 2005. Summary of changes for version 20051202:
12027
120281) ACPI CA Core Subsystem:
12029
12030Modified the parsing of control methods to no longer create namespace
12031objects during the first pass of the parse. Objects are now created only
12032during the execute phase, at the moment the namespace creation operator
12033is
12034encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12035This
12036should eliminate ALREADY_EXISTS exceptions seen on some machines where
12037reentrant control methods are protected by an AML mutex. The mutex will
12038now
12039correctly block multiple threads from attempting to create the same
12040object
12041more than once.
12042
12043Increased the number of available Owner Ids for namespace object tracking
12044from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12045on
12046some machines with a large number of ACPI tables (either static or
12047dynamic).
12048
12049Fixed a problem with the AcpiExec utility where a fault could occur when
12050the
12051-b switch (batch mode) is used.
12052
12053Enhanced the namespace dump routine to output the owner ID for each
12054namespace object.
12055
12056Code and Data Size: The current and previous library sizes for the core
12057subsystem are shown below. These are the code and data sizes for the
12058acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12059These
12060values do not include any ACPI driver or OSPM code. The debug version of
12061the
12062code includes the debug output trace mechanism and has a much larger code
12063and data size. Note that these values will vary depending on the
12064efficiency
12065of the compiler and the compiler options used during generation.
12066
12067  Previous Release:
12068    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12069    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12070  Current Release:
12071    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12072    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12073
12074
120752) iASL Compiler/Disassembler:
12076
12077Fixed a parse error during compilation of certain Switch/Case constructs.
12078To
12079simplify the parse, the grammar now allows for multiple Default
12080statements
12081and this error is now detected and flagged during the analysis phase.
12082
12083Disassembler: The disassembly now includes the contents of the original
12084table header within a comment at the start of the file. This includes the
12085name and version of the original ASL compiler.
12086
12087----------------------------------------
1208817 November 2005. Summary of changes for version 20051117:
12089
120901) ACPI CA Core Subsystem:
12091
12092Fixed a problem in the AML parser where the method thread count could be
12093decremented below zero if any errors occurred during the method parse
12094phase.
12095This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12096machines.
12097This also fixed a related regression with the mechanism that detects and
12098corrects methods that cannot properly handle reentrancy (related to the
12099deployment of the new OwnerId mechanism.)
12100
12101Eliminated the pre-parsing of control methods (to detect errors) during
12102table load. Related to the problem above, this was causing unwind issues
12103if
12104any errors occurred during the parse, and it seemed to be overkill. A
12105table
12106load should not be aborted if there are problems with any single control
12107method, thus rendering this feature rather pointless.
12108
12109Fixed a problem with the new table-driven resource manager where an
12110internal
12111buffer overflow could occur for small resource templates.
12112
12113Implemented a new external interface, AcpiGetVendorResource. This
12114interface
12115will find and return a vendor-defined resource descriptor within a _CRS
12116or
12117_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12118Helgaas.
12119
12120Removed the length limit (200) on string objects as per the upcoming ACPI
121213.0A specification. This affects the following areas of the interpreter:
121221)
12123any implicit conversion of a Buffer to a String, 2) a String object
12124result
12125of the ASL Concatenate operator, 3) the String object result of the ASL
12126ToString operator.
12127
12128Fixed a problem in the Windows OS interface layer (OSL) where a
12129WAIT_FOREVER
12130on a semaphore object would incorrectly timeout. This allows the
12131multithreading features of the AcpiExec utility to work properly under
12132Windows.
12133
12134Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12135the recently added file named "utresrc.c".
12136
12137Code and Data Size: The current and previous library sizes for the core
12138subsystem are shown below. These are the code and data sizes for the
12139acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12140These
12141values do not include any ACPI driver or OSPM code. The debug version of
12142the
12143code includes the debug output trace mechanism and has a much larger code
12144and data size. Note that these values will vary depending on the
12145efficiency
12146of the compiler and the compiler options used during generation.
12147
12148  Previous Release:
12149    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12150    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12151  Current Release:
12152    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12153    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12154
12155
121562) iASL Compiler/Disassembler:
12157
12158Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12159specification. For the iASL compiler, this means that string literals
12160within
12161the source ASL can be of any length.
12162
12163Enhanced the listing output to dump the AML code for resource descriptors
12164immediately after the ASL code for each descriptor, instead of in a block
12165at
12166the end of the entire resource template.
12167
12168Enhanced the compiler debug output to dump the entire original parse tree
12169constructed during the parse phase, before any transforms are applied to
12170the
12171tree. The transformed tree is dumped also.
12172
12173----------------------------------------
1217402 November 2005. Summary of changes for version 20051102:
12175
121761) ACPI CA Core Subsystem:
12177
12178Modified the subsystem initialization sequence to improve GPE support.
12179The
12180GPE initialization has been split into two parts in order to defer
12181execution
12182of the _PRW methods (Power Resources for Wake) until after the hardware
12183is
12184fully initialized and the SCI handler is installed. This allows the _PRW
12185methods to access fields protected by the Global Lock. This will fix
12186systems
12187where a NO_GLOBAL_LOCK exception has been seen during initialization.
12188
12189Converted the ACPI internal object disassemble and display code within
12190the
12191AML debugger to fully table-driven operation, reducing code size and
12192increasing maintainability.
12193
12194Fixed a regression with the ConcatenateResTemplate() ASL operator
12195introduced
12196in the 20051021 release.
12197
12198Implemented support for "local" internal ACPI object types within the
12199debugger "Object" command and the AcpiWalkNamespace external interfaces.
12200These local types include RegionFields, BankFields, IndexFields, Alias,
12201and
12202reference objects.
12203
12204Moved common AML resource handling code into a new file, "utresrc.c".
12205This
12206code is shared by both the Resource Manager and the AML Debugger.
12207
12208Code and Data Size: The current and previous library sizes for the core
12209subsystem are shown below. These are the code and data sizes for the
12210acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12211These
12212values do not include any ACPI driver or OSPM code. The debug version of
12213the
12214code includes the debug output trace mechanism and has a much larger code
12215and data size. Note that these values will vary depending on the
12216efficiency
12217of the compiler and the compiler options used during generation.
12218
12219  Previous Release:
12220    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12221    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12222  Current Release:
12223    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12224    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12225
12226
122272) iASL Compiler/Disassembler:
12228
12229Fixed a problem with very large initializer lists (more than 4000
12230elements)
12231for both Buffer and Package objects where the parse stack could overflow.
12232
12233Enhanced the pre-compile source code scan for non-ASCII characters to
12234ignore
12235characters within comment fields. The scan is now always performed and is
12236no
12237longer optional, detecting invalid characters within a source file
12238immediately rather than during the parse phase or later.
12239
12240Enhanced the ASL grammar definition to force early reductions on all
12241list-
12242style grammar elements so that the overall parse stack usage is greatly
12243reduced. This should improve performance and reduce the possibility of
12244parse
12245stack overflow.
12246
12247Eliminated all reduce/reduce conflicts in the iASL parser generation.
12248Also,
12249with the addition of a %expected statement, the compiler generates from
12250source with no warnings.
12251
12252Fixed a possible segment fault in the disassembler if the input filename
12253does not contain a "dot" extension (Thomas Renninger).
12254
12255----------------------------------------
1225621 October 2005. Summary of changes for version 20051021:
12257
122581) ACPI CA Core Subsystem:
12259
12260Implemented support for the EM64T and other x86-64 processors. This
12261essentially entails recognizing that these processors support non-aligned
12262memory transfers. Previously, all 64-bit processors were assumed to lack
12263hardware support for non-aligned transfers.
12264
12265Completed conversion of the Resource Manager to nearly full table-driven
12266operation. Specifically, the resource conversion code (convert AML to
12267internal format and the reverse) and the debug code to dump internal
12268resource descriptors are fully table-driven, reducing code and data size
12269and
12270improving maintainability.
12271
12272The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12273word
12274on 64-bit processors instead of a fixed 32-bit word. (With assistance
12275from
12276Alexey Starikovskiy)
12277
12278Implemented support within the resource conversion code for the Type-
12279Specific byte within the various ACPI 3.0 *WordSpace macros.
12280
12281Fixed some issues within the resource conversion code for the type-
12282specific
12283flags for both Memory and I/O address resource descriptors. For Memory,
12284implemented support for the MTP and TTP flags. For I/O, split the TRS and
12285TTP flags into two separate fields.
12286
12287Code and Data Size: The current and previous library sizes for the core
12288subsystem are shown below. These are the code and data sizes for the
12289acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12290These
12291values do not include any ACPI driver or OSPM code. The debug version of
12292the
12293code includes the debug output trace mechanism and has a much larger code
12294and data size. Note that these values will vary depending on the
12295efficiency
12296of the compiler and the compiler options used during generation.
12297
12298  Previous Release:
12299    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12300    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12301  Current Release:
12302    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12303    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12304
12305
12306
123072) iASL Compiler/Disassembler:
12308
12309Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12310the
12311corresponding ResourceSource string was not also present in a resource
12312descriptor declaration. This restriction caused problems with existing
12313AML/ASL code that includes the Index byte without the string. When such
12314AML
12315was disassembled, it could not be compiled without modification. Further,
12316the modified code created a resource template with a different size than
12317the
12318original, breaking code that used fixed offsets into the resource
12319template
12320buffer.
12321
12322Removed a recent feature of the disassembler to ignore a lone
12323ResourceIndex
12324byte. This byte is now emitted if present so that the exact AML can be
12325reproduced when the disassembled code is recompiled.
12326
12327Improved comments and text alignment for the resource descriptor code
12328emitted by the disassembler.
12329
12330Implemented disassembler support for the ACPI 3.0 AccessSize field within
12331a
12332Register() resource descriptor.
12333
12334----------------------------------------
1233530 September 2005. Summary of changes for version 20050930:
12336
123371) ACPI CA Core Subsystem:
12338
12339Completed a major overhaul of the Resource Manager code - specifically,
12340optimizations in the area of the AML/internal resource conversion code.
12341The
12342code has been optimized to simplify and eliminate duplicated code, CPU
12343stack
12344use has been decreased by optimizing function parameters and local
12345variables, and naming conventions across the manager have been
12346standardized
12347for clarity and ease of maintenance (this includes function, parameter,
12348variable, and struct/typedef names.) The update may force changes in some
12349driver code, depending on how resources are handled by the host OS.
12350
12351All Resource Manager dispatch and information tables have been moved to a
12352single location for clarity and ease of maintenance. One new file was
12353created, named "rsinfo.c".
12354
12355The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12356guarantee that the argument is not evaluated twice, making them less
12357prone
12358to macro side-effects. However, since there exists the possibility of
12359additional stack use if a particular compiler cannot optimize them (such
12360as
12361in the debug generation case), the original macros are optionally
12362available.
12363Note that some invocations of the return_VALUE macro may now cause size
12364mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12365to
12366eliminate these. (From Randy Dunlap)
12367
12368Implemented a new mechanism to enable debug tracing for individual
12369control
12370methods. A new external interface, AcpiDebugTrace, is provided to enable
12371this mechanism. The intent is to allow the host OS to easily enable and
12372disable tracing for problematic control methods. This interface can be
12373easily exposed to a user or debugger interface if desired. See the file
12374psxface.c for details.
12375
12376AcpiUtCallocate will now return a valid pointer if a length of zero is
12377specified - a length of one is used and a warning is issued. This matches
12378the behavior of AcpiUtAllocate.
12379
12380Code and Data Size: The current and previous library sizes for the core
12381subsystem are shown below. These are the code and data sizes for the
12382acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12383These
12384values do not include any ACPI driver or OSPM code. The debug version of
12385the
12386code includes the debug output trace mechanism and has a much larger code
12387and data size. Note that these values will vary depending on the
12388efficiency
12389of the compiler and the compiler options used during generation.
12390
12391  Previous Release:
12392    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12393    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12394  Current Release:
12395    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12396    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12397
12398
123992) iASL Compiler/Disassembler:
12400
12401A remark is issued if the effective compile-time length of a package or
12402buffer is zero. Previously, this was a warning.
12403
12404----------------------------------------
1240516 September 2005. Summary of changes for version 20050916:
12406
124071) ACPI CA Core Subsystem:
12408
12409Fixed a problem within the Resource Manager where support for the Generic
12410Register descriptor was not fully implemented. This descriptor is now
12411fully
12412recognized, parsed, disassembled, and displayed.
12413
12414Completely restructured the Resource Manager code to utilize table-driven
12415dispatch and lookup, eliminating many of the large switch() statements.
12416This
12417reduces overall subsystem code size and code complexity. Affects the
12418resource parsing and construction, disassembly, and debug dump output.
12419
12420Cleaned up and restructured the debug dump output for all resource
12421descriptors. Improved readability of the output and reduced code size.
12422
12423Fixed a problem where changes to internal data structures caused the
12424optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12425
12426Code and Data Size: The current and previous library sizes for the core
12427subsystem are shown below. These are the code and data sizes for the
12428acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12429These
12430values do not include any ACPI driver or OSPM code. The debug version of
12431the
12432code includes the debug output trace mechanism and has a much larger code
12433and data size. Note that these values will vary depending on the
12434efficiency
12435of the compiler and the compiler options used during generation.
12436
12437  Previous Release:
12438    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12439    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12440  Current Release:
12441    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12442    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12443
12444
124452) iASL Compiler/Disassembler:
12446
12447Updated the disassembler to automatically insert an EndDependentFn()
12448macro
12449into the ASL stream if this macro is missing in the original AML code,
12450simplifying compilation of the resulting ASL module.
12451
12452Fixed a problem in the disassembler where a disassembled ResourceSource
12453string (within a large resource descriptor) was not surrounded by quotes
12454and
12455not followed by a comma, causing errors when the resulting ASL module was
12456compiled. Also, escape sequences within a ResourceSource string are now
12457handled correctly (especially "\\")
12458
12459----------------------------------------
1246002 September 2005. Summary of changes for version 20050902:
12461
124621) ACPI CA Core Subsystem:
12463
12464Fixed a problem with the internal Owner ID allocation and deallocation
12465mechanisms for control method execution and recursive method invocation.
12466This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12467messages seen on some systems. Recursive method invocation depth is
12468currently limited to 255. (Alexey Starikovskiy)
12469
12470Completely eliminated all vestiges of support for the "module-level
12471executable code" until this support is fully implemented and debugged.
12472This
12473should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12474some systems that invoke this support.
12475
12476Fixed a problem within the resource manager code where the transaction
12477flags
12478for a 64-bit address descriptor were handled incorrectly in the type-
12479specific flag byte.
12480
12481Consolidated duplicate code within the address descriptor resource
12482manager
12483code, reducing overall subsystem code size.
12484
12485Fixed a fault when using the AML debugger "disassemble" command to
12486disassemble individual control methods.
12487
12488Removed references to the "release_current" directory within the Unix
12489release package.
12490
12491Code and Data Size: The current and previous core subsystem library sizes
12492are shown below. These are the code and data sizes for the acpica.lib
12493produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12494include any ACPI driver or OSPM code. The debug version of the code
12495includes
12496the debug output trace mechanism and has a much larger code and data
12497size.
12498Note that these values will vary depending on the efficiency of the
12499compiler
12500and the compiler options used during generation.
12501
12502  Previous Release:
12503    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12504    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12505  Current Release:
12506    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12507    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12508
12509
125102) iASL Compiler/Disassembler:
12511
12512Implemented an error check for illegal duplicate values in the interrupt
12513and
12514dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12515Interrupt().
12516
12517Implemented error checking for the Irq() and IrqNoFlags() macros to
12518detect
12519too many values in the interrupt list (16 max) and invalid values in the
12520list (range 0 - 15)
12521
12522The maximum length string literal within an ASL file is now restricted to
12523200 characters as per the ACPI specification.
12524
12525Fixed a fault when using the -ln option (generate namespace listing).
12526
12527Implemented an error check to determine if a DescriptorName within a
12528resource descriptor has already been used within the current scope.
12529
12530----------------------------------------
1253115 August 2005.  Summary of changes for version 20050815:
12532
125331) ACPI CA Core Subsystem:
12534
12535Implemented a full bytewise compare to determine if a table load request
12536is
12537attempting to load a duplicate table. The compare is performed if the
12538table
12539signatures and table lengths match. This will allow different tables with
12540the same OEM Table ID and revision to be loaded - probably against the
12541ACPI
12542specification, but discovered in the field nonetheless.
12543
12544Added the changes.txt logfile to each of the zipped release packages.
12545
12546Code and Data Size: Current and previous core subsystem library sizes are
12547shown below. These are the code and data sizes for the acpica.lib
12548produced
12549by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12550any ACPI driver or OSPM code. The debug version of the code includes the
12551debug output trace mechanism and has a much larger code and data size.
12552Note
12553that these values will vary depending on the efficiency of the compiler
12554and
12555the compiler options used during generation.
12556
12557  Previous Release:
12558    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12559    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12560  Current Release:
12561    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12562    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12563
12564
125652) iASL Compiler/Disassembler:
12566
12567Fixed a problem where incorrect AML code could be generated for Package
12568objects if optimization is disabled (via the -oa switch).
12569
12570Fixed a problem with where incorrect AML code is generated for variable-
12571length packages when the package length is not specified and the number
12572of
12573initializer values is greater than 255.
12574
12575
12576----------------------------------------
1257729 July 2005.  Summary of changes for version 20050729:
12578
125791) ACPI CA Core Subsystem:
12580
12581Implemented support to ignore an attempt to install/load a particular
12582ACPI
12583table more than once. Apparently there exists BIOS code that repeatedly
12584attempts to load the same SSDT upon certain events. With assistance from
12585Venkatesh Pallipadi.
12586
12587Restructured the main interface to the AML parser in order to correctly
12588handle all exceptional conditions. This will prevent leakage of the
12589OwnerId
12590resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12591some
12592machines. With assistance from Alexey Starikovskiy.
12593
12594Support for "module level code" has been disabled in this version due to
12595a
12596number of issues that have appeared on various machines. The support can
12597be
12598enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12599compilation. When the issues are fully resolved, the code will be enabled
12600by
12601default again.
12602
12603Modified the internal functions for debug print support to define the
12604FunctionName parameter as a (const char *) for compatibility with
12605compiler
12606built-in macros such as __FUNCTION__, etc.
12607
12608Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12609
12610Implemented support to display an object count summary for the AML
12611Debugger
12612commands Object and Methods.
12613
12614Code and Data Size: Current and previous core subsystem library sizes are
12615shown below. These are the code and data sizes for the acpica.lib
12616produced
12617by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12618any ACPI driver or OSPM code. The debug version of the code includes the
12619debug output trace mechanism and has a much larger code and data size.
12620Note
12621that these values will vary depending on the efficiency of the compiler
12622and
12623the compiler options used during generation.
12624
12625  Previous Release:
12626    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12627    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12628  Current Release:
12629    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12630    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12631
12632
126332) iASL Compiler/Disassembler:
12634
12635Fixed a regression that appeared in the 20050708 version of the compiler
12636where an error message was inadvertently emitted for invocations of the
12637_OSI
12638reserved control method.
12639
12640----------------------------------------
1264108 July 2005.  Summary of changes for version 20050708:
12642
126431) ACPI CA Core Subsystem:
12644
12645The use of the CPU stack in the debug version of the subsystem has been
12646considerably reduced. Previously, a debug structure was declared in every
12647function that used the debug macros. This structure has been removed in
12648favor of declaring the individual elements as parameters to the debug
12649functions. This reduces the cumulative stack use during nested execution
12650of
12651ACPI function calls at the cost of a small increase in the code size of
12652the
12653debug version of the subsystem. With assistance from Alexey Starikovskiy
12654and
12655Len Brown.
12656
12657Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12658headers to define a macro that will return the current function name at
12659runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12660by
12661the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12662compiler-dependent header, the function name is saved on the CPU stack
12663(one
12664pointer per function.) This mechanism is used because apparently there
12665exists no standard ANSI-C defined macro that that returns the function
12666name.
12667
12668Redesigned and reimplemented the "Owner ID" mechanism used to track
12669namespace objects created/deleted by ACPI tables and control method
12670execution. A bitmap is now used to allocate and free the IDs, thus
12671solving
12672the wraparound problem present in the previous implementation. The size
12673of
12674the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12675Starikovskiy).
12676
12677Removed the UINT32_BIT and UINT16_BIT types that were used for the
12678bitfield
12679flag definitions within the headers for the predefined ACPI tables. These
12680have been replaced by UINT8_BIT in order to increase the code portability
12681of
12682the subsystem. If the use of UINT8 remains a problem, we may be forced to
12683eliminate bitfields entirely because of a lack of portability.
12684
12685Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12686This
12687is a frequently used function and this improvement increases the
12688performance
12689of the entire subsystem (Alexey Starikovskiy).
12690
12691Fixed several possible memory leaks and the inverse - premature object
12692deletion (Alexey Starikovskiy).
12693
12694Code and Data Size: Current and previous core subsystem library sizes are
12695shown below. These are the code and data sizes for the acpica.lib
12696produced
12697by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12698any ACPI driver or OSPM code. The debug version of the code includes the
12699debug output trace mechanism and has a much larger code and data size.
12700Note
12701that these values will vary depending on the efficiency of the compiler
12702and
12703the compiler options used during generation.
12704
12705  Previous Release:
12706    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12707    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12708  Current Release:
12709    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12710    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12711
12712----------------------------------------
1271324 June 2005.  Summary of changes for version 20050624:
12714
127151) ACPI CA Core Subsystem:
12716
12717Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12718the host-defined cache object. This allows the OSL implementation to
12719define
12720and type this object in any manner desired, simplifying the OSL
12721implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12722Linux, and should be defined in the OS-specific header file for other
12723operating systems as required.
12724
12725Changed the interface to AcpiOsAcquireObject to directly return the
12726requested object as the function return (instead of ACPI_STATUS.) This
12727change was made for performance reasons, since this is the purpose of the
12728interface in the first place. AcpiOsAcquireObject is now similar to the
12729AcpiOsAllocate interface.
12730
12731Implemented a new AML debugger command named Businfo. This command
12732displays
12733information about all devices that have an associate _PRT object. The
12734_ADR,
12735_HID, _UID, and _CID are displayed for these devices.
12736
12737Modified the initialization sequence in AcpiInitializeSubsystem to call
12738the
12739OSL interface AcpiOslInitialize first, before any local initialization.
12740This
12741change was required because the global initialization now calls OSL
12742interfaces.
12743
12744Enhanced the Dump command to display the entire contents of Package
12745objects
12746(including all sub-objects and their values.)
12747
12748Restructured the code base to split some files because of size and/or
12749because the code logically belonged in a separate file. New files are
12750listed
12751below. All makefiles and project files included in the ACPI CA release
12752have
12753been updated.
12754    utilities/utcache.c           /* Local cache interfaces */
12755    utilities/utmutex.c           /* Local mutex support */
12756    utilities/utstate.c           /* State object support */
12757    interpreter/parser/psloop.c   /* Main AML parse loop */
12758
12759Code and Data Size: Current and previous core subsystem library sizes are
12760shown below. These are the code and data sizes for the acpica.lib
12761produced
12762by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12763any ACPI driver or OSPM code. The debug version of the code includes the
12764debug output trace mechanism and has a much larger code and data size.
12765Note
12766that these values will vary depending on the efficiency of the compiler
12767and
12768the compiler options used during generation.
12769
12770  Previous Release:
12771    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12772    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12773  Current Release:
12774    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12775    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12776
12777
127782) iASL Compiler/Disassembler:
12779
12780Fixed a regression introduced in version 20050513 where the use of a
12781Package
12782object within a Case() statement caused a compile time exception. The
12783original behavior has been restored (a Match() operator is emitted.)
12784
12785----------------------------------------
1278617 June 2005.  Summary of changes for version 20050617:
12787
127881) ACPI CA Core Subsystem:
12789
12790Moved the object cache operations into the OS interface layer (OSL) to
12791allow
12792the host OS to handle these operations if desired (for example, the Linux
12793OSL will invoke the slab allocator). This support is optional; the
12794compile
12795time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12796cache
12797code in the ACPI CA core. The new OSL interfaces are shown below. See
12798utalloc.c for an example implementation, and acpiosxf.h for the exact
12799interface definitions. With assistance from Alexey Starikovskiy.
12800    AcpiOsCreateCache
12801    AcpiOsDeleteCache
12802    AcpiOsPurgeCache
12803    AcpiOsAcquireObject
12804    AcpiOsReleaseObject
12805
12806Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12807return
12808and restore a flags parameter. This fits better with many OS lock models.
12809Note: the current execution state (interrupt handler or not) is no longer
12810passed to these interfaces. If necessary, the OSL must determine this
12811state
12812by itself, a simple and fast operation. With assistance from Alexey
12813Starikovskiy.
12814
12815Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12816present if the revision of the RSDP was 2 or greater. According to the
12817ACPI
12818specification, the XSDT is optional in all cases, and the table manager
12819therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12820Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12821contain
12822only the RSDT.
12823
12824Fixed an interpreter problem with the Mid() operator in the case of an
12825input
12826string where the resulting output string is of zero length. It now
12827correctly
12828returns a valid, null terminated string object instead of a string object
12829with a null pointer.
12830
12831Fixed a problem with the control method argument handling to allow a
12832store
12833to an Arg object that already contains an object of type Device. The
12834Device
12835object is now correctly overwritten. Previously, an error was returned.
12836
12837
12838Enhanced the debugger Find command to emit object values in addition to
12839the
12840found object pathnames. The output format is the same as the dump
12841namespace
12842command.
12843
12844Enhanced the debugger Set command. It now has the ability to set the
12845value
12846of any Named integer object in the namespace (Previously, only method
12847locals
12848and args could be set.)
12849
12850Code and Data Size: Current and previous core subsystem library sizes are
12851shown below. These are the code and data sizes for the acpica.lib
12852produced
12853by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12854any ACPI driver or OSPM code. The debug version of the code includes the
12855debug output trace mechanism and has a much larger code and data size.
12856Note
12857that these values will vary depending on the efficiency of the compiler
12858and
12859the compiler options used during generation.
12860
12861  Previous Release:
12862    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12863    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12864  Current Release:
12865    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12866    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12867
12868
128692) iASL Compiler/Disassembler:
12870
12871Fixed a regression in the disassembler where if/else/while constructs
12872were
12873output incorrectly. This problem was introduced in the previous release
12874(20050526). This problem also affected the single-step disassembly in the
12875debugger.
12876
12877Fixed a problem where compiling the reserved _OSI method would randomly
12878(but
12879rarely) produce compile errors.
12880
12881Enhanced the disassembler to emit compilable code in the face of
12882incorrect
12883AML resource descriptors. If the optional ResourceSourceIndex is present,
12884but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12885disassembly. Otherwise, the resulting code cannot be compiled without
12886errors.
12887
12888----------------------------------------
1288926 May 2005.  Summary of changes for version 20050526:
12890
128911) ACPI CA Core Subsystem:
12892
12893Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12894the module level (not within a control method.) These opcodes are
12895executed
12896exactly once at the time the table is loaded. This type of code was legal
12897up
12898until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12899in
12900order to provide backwards compatibility with earlier BIOS
12901implementations.
12902This eliminates the "Encountered executable code at module level" warning
12903that was previously generated upon detection of such code.
12904
12905Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12906inadvertently be generated during the lookup of namespace objects in the
12907second pass parse of ACPI tables and control methods. It appears that
12908this
12909problem could occur during the resolution of forward references to
12910namespace
12911objects.
12912
12913Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12914corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12915allows the deadlock detection debug code to be compiled out in the normal
12916case, improving mutex performance (and overall subsystem performance)
12917considerably.
12918
12919Implemented a handful of miscellaneous fixes for possible memory leaks on
12920error conditions and error handling control paths. These fixes were
12921suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12922
12923Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12924(tbxfroot.c)
12925to prevent a fault in this error case.
12926
12927Code and Data Size: Current and previous core subsystem library sizes are
12928shown below. These are the code and data sizes for the acpica.lib
12929produced
12930by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12931any ACPI driver or OSPM code. The debug version of the code includes the
12932debug output trace mechanism and has a much larger code and data size.
12933Note
12934that these values will vary depending on the efficiency of the compiler
12935and
12936the compiler options used during generation.
12937
12938  Previous Release:
12939    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12940    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12941  Current Release:
12942    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12943    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12944
12945
129462) iASL Compiler/Disassembler:
12947
12948Implemented support to allow Type 1 and Type 2 ASL operators to appear at
12949the module level (not within a control method.) These operators will be
12950executed once at the time the table is loaded. This type of code was
12951legal
12952up until the release of ACPI 2.0B (2002) and is now supported by the iASL
12953compiler in order to provide backwards compatibility with earlier BIOS
12954ASL
12955code.
12956
12957The ACPI integer width (specified via the table revision ID or the -r
12958override, 32 or 64 bits) is now used internally during compile-time
12959constant
12960folding to ensure that constants are truncated to 32 bits if necessary.
12961Previously, the revision ID value was only emitted in the AML table
12962header.
12963
12964An error message is now generated for the Mutex and Method operators if
12965the
12966SyncLevel parameter is outside the legal range of 0 through 15.
12967
12968Fixed a problem with the Method operator ParameterTypes list handling
12969(ACPI
129703.0). Previously, more than 2 types or 2 arguments generated a syntax
12971error.
12972The actual underlying implementation of method argument typechecking is
12973still under development, however.
12974
12975----------------------------------------
1297613 May 2005.  Summary of changes for version 20050513:
12977
129781) ACPI CA Core Subsystem:
12979
12980Implemented support for PCI Express root bridges -- added support for
12981device
12982PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
12983
12984The interpreter now automatically truncates incoming 64-bit constants to
1298532
12986bits if currently executing out of a 32-bit ACPI table (Revision < 2).
12987This
12988also affects the iASL compiler constant folding. (Note: as per below, the
12989iASL compiler no longer allows 64-bit constants within 32-bit tables.)
12990
12991Fixed a problem where string and buffer objects with "static" pointers
12992(pointers to initialization data within an ACPI table) were not handled
12993consistently. The internal object copy operation now always copies the
12994data
12995to a newly allocated buffer, regardless of whether the source object is
12996static or not.
12997
12998Fixed a problem with the FromBCD operator where an implicit result
12999conversion was improperly performed while storing the result to the
13000target
13001operand. Since this is an "explicit conversion" operator, the implicit
13002conversion should never be performed on the output.
13003
13004Fixed a problem with the CopyObject operator where a copy to an existing
13005named object did not always completely overwrite the existing object
13006stored
13007at name. Specifically, a buffer-to-buffer copy did not delete the
13008existing
13009buffer.
13010
13011Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13012and
13013structs for consistency.
13014
13015Code and Data Size: Current and previous core subsystem library sizes are
13016shown below. These are the code and data sizes for the acpica.lib
13017produced
13018by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13019any ACPI driver or OSPM code. The debug version of the code includes the
13020debug output trace mechanism and has a much larger code and data size.
13021Note
13022that these values will vary depending on the efficiency of the compiler
13023and
13024the compiler options used during generation.
13025
13026  Previous Release:
13027    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13028    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13029  Current Release: (Same sizes)
13030    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13031    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13032
13033
130342) iASL Compiler/Disassembler:
13035
13036The compiler now emits a warning if an attempt is made to generate a 64-
13037bit
13038integer constant from within a 32-bit ACPI table (Revision < 2). The
13039integer
13040is truncated to 32 bits.
13041
13042Fixed a problem with large package objects: if the static length of the
13043package is greater than 255, the "variable length package" opcode is
13044emitted. Previously, this caused an error. This requires an update to the
13045ACPI spec, since it currently (incorrectly) states that packages larger
13046than
13047255 elements are not allowed.
13048
13049The disassembler now correctly handles variable length packages and
13050packages
13051larger than 255 elements.
13052
13053----------------------------------------
1305408 April 2005.  Summary of changes for version 20050408:
13055
130561) ACPI CA Core Subsystem:
13057
13058Fixed three cases in the interpreter where an "index" argument to an ASL
13059function was still (internally) 32 bits instead of the required 64 bits.
13060This was the Index argument to the Index, Mid, and Match operators.
13061
13062The "strupr" function is now permanently local (AcpiUtStrupr), since this
13063is
13064not a POSIX-defined function and not present in most kernel-level C
13065libraries. All references to the C library strupr function have been
13066removed
13067from the headers.
13068
13069Completed the deployment of static functions/prototypes. All prototypes
13070with
13071the static attribute have been moved from the headers to the owning C
13072file.
13073
13074Implemented an extract option (-e) for the AcpiBin utility (AML binary
13075utility). This option allows the utility to extract individual ACPI
13076tables
13077from the output of AcpiDmp. It provides the same functionality of the
13078acpixtract.pl perl script without the worry of setting the correct perl
13079options. AcpiBin runs on Windows and has not yet been generated/validated
13080in
13081the Linux/Unix environment (but should be soon).
13082
13083Updated and fixed the table dump option for AcpiBin (-d). This option
13084converts a single ACPI table to a hex/ascii file, similar to the output
13085of
13086AcpiDmp.
13087
13088Code and Data Size: Current and previous core subsystem library sizes are
13089shown below. These are the code and data sizes for the acpica.lib
13090produced
13091by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13092any ACPI driver or OSPM code. The debug version of the code includes the
13093debug output trace mechanism and has a much larger code and data size.
13094Note
13095that these values will vary depending on the efficiency of the compiler
13096and
13097the compiler options used during generation.
13098
13099  Previous Release:
13100    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13101    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13102  Current Release:
13103    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13104    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13105
13106
131072) iASL Compiler/Disassembler:
13108
13109Disassembler fix: Added a check to ensure that the table length found in
13110the
13111ACPI table header within the input file is not longer than the actual
13112input
13113file size. This indicates some kind of file or table corruption.
13114
13115----------------------------------------
1311629 March 2005.  Summary of changes for version 20050329:
13117
131181) ACPI CA Core Subsystem:
13119
13120An error is now generated if an attempt is made to create a Buffer Field
13121of
13122length zero (A CreateField with a length operand of zero.)
13123
13124The interpreter now issues a warning whenever executable code at the
13125module
13126level is detected during ACPI table load. This will give some idea of the
13127prevalence of this type of code.
13128
13129Implemented support for references to named objects (other than control
13130methods) within package objects.
13131
13132Enhanced package object output for the debug object. Package objects are
13133now
13134completely dumped, showing all elements.
13135
13136Enhanced miscellaneous object output for the debug object. Any object can
13137now be written to the debug object (for example, a device object can be
13138written, and the type of the object will be displayed.)
13139
13140The "static" qualifier has been added to all local functions across both
13141the
13142core subsystem and the iASL compiler.
13143
13144The number of "long" lines (> 80 chars) within the source has been
13145significantly reduced, by about 1/3.
13146
13147Cleaned up all header files to ensure that all CA/iASL functions are
13148prototyped (even static functions) and the formatting is consistent.
13149
13150Two new header files have been added, acopcode.h and acnames.h.
13151
13152Removed several obsolete functions that were no longer used.
13153
13154Code and Data Size: Current and previous core subsystem library sizes are
13155shown below. These are the code and data sizes for the acpica.lib
13156produced
13157by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13158any ACPI driver or OSPM code. The debug version of the code includes the
13159debug output trace mechanism and has a much larger code and data size.
13160Note
13161that these values will vary depending on the efficiency of the compiler
13162and
13163the compiler options used during generation.
13164
13165  Previous Release:
13166    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13167    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13168  Current Release:
13169    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13170    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13171
13172
13173
131742) iASL Compiler/Disassembler:
13175
13176Fixed a problem with the resource descriptor generation/support. For the
13177ResourceSourceIndex and the ResourceSource fields, both must be present,
13178or
13179both must be not present - can't have one without the other.
13180
13181The compiler now returns non-zero from the main procedure if any errors
13182have
13183occurred during the compilation.
13184
13185
13186----------------------------------------
1318709 March 2005.  Summary of changes for version 20050309:
13188
131891) ACPI CA Core Subsystem:
13190
13191The string-to-buffer implicit conversion code has been modified again
13192after
13193a change to the ACPI specification.  In order to match the behavior of
13194the
13195other major ACPI implementation, the target buffer is no longer truncated
13196if
13197the source string is smaller than an existing target buffer. This change
13198requires an update to the ACPI spec, and should eliminate the recent
13199AE_AML_BUFFER_LIMIT issues.
13200
13201The "implicit return" support was rewritten to a new algorithm that
13202solves
13203the general case. Rather than attempt to determine when a method is about
13204to
13205exit, the result of every ASL operator is saved momentarily until the
13206very
13207next ASL operator is executed. Therefore, no matter how the method exits,
13208there will always be a saved implicit return value. This feature is only
13209enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13210eliminate
13211AE_AML_NO_RETURN_VALUE errors when enabled.
13212
13213Implemented implicit conversion support for the predicate (operand) of
13214the
13215If, Else, and While operators. String and Buffer arguments are
13216automatically
13217converted to Integers.
13218
13219Changed the string-to-integer conversion behavior to match the new ACPI
13220errata: "If no integer object exists, a new integer is created. The ASCII
13221string is interpreted as a hexadecimal constant. Each string character is
13222interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13223with the first character as the most significant digit, and ending with
13224the
13225first non-hexadecimal character or end-of-string." This means that the
13226first
13227non-hex character terminates the conversion and this is the code that was
13228changed.
13229
13230Fixed a problem where the ObjectType operator would fail (fault) when
13231used
13232on an Index of a Package which pointed to a null package element. The
13233operator now properly returns zero (Uninitialized) in this case.
13234
13235Fixed a problem where the While operator used excessive memory by not
13236properly popping the result stack during execution. There was no memory
13237leak
13238after execution, however. (Code provided by Valery Podrezov.)
13239
13240Fixed a problem where references to control methods within Package
13241objects
13242caused the method to be invoked, instead of producing a reference object
13243pointing to the method.
13244
13245Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13246to
13247improve performance and reduce code size. (Code provided by Alexey
13248Starikovskiy.)
13249
13250Code and Data Size: Current and previous core subsystem library sizes are
13251shown below. These are the code and data sizes for the acpica.lib
13252produced
13253by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13254any ACPI driver or OSPM code. The debug version of the code includes the
13255debug output trace mechanism and has a much larger code and data size.
13256Note
13257that these values will vary depending on the efficiency of the compiler
13258and
13259the compiler options used during generation.
13260
13261  Previous Release:
13262    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13263    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13264  Current Release:
13265    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13266    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13267
13268
132692) iASL Compiler/Disassembler:
13270
13271Fixed a problem with the Return operator with no arguments. Since the AML
13272grammar for the byte encoding requires an operand for the Return opcode,
13273the
13274compiler now emits a Return(Zero) for this case.  An ACPI specification
13275update has been written for this case.
13276
13277For tables other than the DSDT, namepath optimization is automatically
13278disabled. This is because SSDTs can be loaded anywhere in the namespace,
13279the
13280compiler has no knowledge of where, and thus cannot optimize namepaths.
13281
13282Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13283inadvertently omitted from the ACPI specification, and will require an
13284update to the spec.
13285
13286The source file scan for ASCII characters is now optional (-a). This
13287change
13288was made because some vendors place non-ascii characters within comments.
13289However, the scan is simply a brute-force byte compare to ensure all
13290characters in the file are in the range 0x00 to 0x7F.
13291
13292Fixed a problem with the CondRefOf operator where the compiler was
13293inappropriately checking for the existence of the target. Since the point
13294of
13295the operator is to check for the existence of the target at run-time, the
13296compiler no longer checks for the target existence.
13297
13298Fixed a problem where errors generated from the internal AML interpreter
13299during constant folding were not handled properly, causing a fault.
13300
13301Fixed a problem with overly aggressive range checking for the Stall
13302operator. The valid range (max 255) is now only checked if the operand is
13303of
13304type Integer. All other operand types cannot be statically checked.
13305
13306Fixed a problem where control method references within the RefOf,
13307DeRefOf,
13308and ObjectType operators were not treated properly. They are now treated
13309as
13310actual references, not method invocations.
13311
13312Fixed and enhanced the "list namespace" option (-ln). This option was
13313broken
13314a number of releases ago.
13315
13316Improved error handling for the Field, IndexField, and BankField
13317operators.
13318The compiler now cleanly reports and recovers from errors in the field
13319component (FieldUnit) list.
13320
13321Fixed a disassembler problem where the optional ResourceDescriptor fields
13322TRS and TTP were not always handled correctly.
13323
13324Disassembler - Comments in output now use "//" instead of "/*"
13325
13326----------------------------------------
1332728 February 2005.  Summary of changes for version 20050228:
13328
133291) ACPI CA Core Subsystem:
13330
13331Fixed a problem where the result of an Index() operator (an object
13332reference) must increment the reference count on the target object for
13333the
13334life of the object reference.
13335
13336Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13337Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13338WordSpace
13339resource descriptors.
13340
13341Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13342Space Descriptor" string, indicating interpreter support for the
13343descriptors
13344above.
13345
13346Implemented header support for the new ACPI 3.0 FADT flag bits.
13347
13348Implemented header support for the new ACPI 3.0 PCI Express bits for the
13349PM1
13350status/enable registers.
13351
13352Updated header support for the MADT processor local Apic struct and MADT
13353platform interrupt source struct for new ACPI 3.0 fields.
13354
13355Implemented header support for the SRAT and SLIT ACPI tables.
13356
13357Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13358flag
13359at runtime.
13360
13361Code and Data Size: Current and previous core subsystem library sizes are
13362shown below. These are the code and data sizes for the acpica.lib
13363produced
13364by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13365any ACPI driver or OSPM code. The debug version of the code includes the
13366debug output trace mechanism and has a much larger code and data size.
13367Note
13368that these values will vary depending on the efficiency of the compiler
13369and
13370the compiler options used during generation.
13371
13372  Previous Release:
13373    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13374    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13375  Current Release:
13376    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13377    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13378
13379
133802) iASL Compiler/Disassembler:
13381
13382Fixed a problem with the internal 64-bit String-to-integer conversion
13383with
13384strings less than two characters long.
13385
13386Fixed a problem with constant folding where the result of the Index()
13387operator can not be considered a constant. This means that Index() cannot
13388be
13389a type3 opcode and this will require an update to the ACPI specification.
13390
13391Disassembler: Implemented support for the TTP, MTP, and TRS resource
13392descriptor fields. These fields were inadvertently ignored and not output
13393in
13394the disassembly of the resource descriptor.
13395
13396
13397 ----------------------------------------
1339811 February 2005.  Summary of changes for version 20050211:
13399
134001) ACPI CA Core Subsystem:
13401
13402Implemented ACPI 3.0 support for implicit conversion within the Match()
13403operator. MatchObjects can now be of type integer, buffer, or string
13404instead
13405of just type integer.  Package elements are implicitly converted to the
13406type
13407of the MatchObject. This change aligns the behavior of Match() with the
13408behavior of the other logical operators (LLess(), etc.) It also requires
13409an
13410errata change to the ACPI specification as this support was intended for
13411ACPI 3.0, but was inadvertently omitted.
13412
13413Fixed a problem with the internal implicit "to buffer" conversion.
13414Strings
13415that are converted to buffers will cause buffer truncation if the string
13416is
13417smaller than the target buffer. Integers that are converted to buffers
13418will
13419not cause buffer truncation, only zero extension (both as per the ACPI
13420spec.) The problem was introduced when code was added to truncate the
13421buffer, but this should not be performed in all cases, only the string
13422case.
13423
13424Fixed a problem with the Buffer and Package operators where the
13425interpreter
13426would get confused if two such operators were used as operands to an ASL
13427operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13428stack was not being popped after the execution of these operators,
13429resulting
13430in an AE_NO_RETURN_VALUE exception.
13431
13432Fixed a problem with constructs of the form Store(Index(...),...). The
13433reference object returned from Index was inadvertently resolved to an
13434actual
13435value. This problem was introduced in version 20050114 when the behavior
13436of
13437Store() was modified to restrict the object types that can be used as the
13438source operand (to match the ACPI specification.)
13439
13440Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13441
13442Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13443
13444Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13445
13446Code and Data Size: Current and previous core subsystem library sizes are
13447shown below. These are the code and data sizes for the acpica.lib
13448produced
13449by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13450any ACPI driver or OSPM code. The debug version of the code includes the
13451debug output trace mechanism and has a much larger code and data size.
13452Note
13453that these values will vary depending on the efficiency of the compiler
13454and
13455the compiler options used during generation.
13456
13457  Previous Release:
13458    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13459    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13460  Current Release:
13461    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13462    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13463
13464
134652) iASL Compiler/Disassembler:
13466
13467Fixed a code generation problem in the constant folding optimization code
13468where incorrect code was generated if a constant was reduced to a buffer
13469object (i.e., a reduced type 5 opcode.)
13470
13471Fixed a typechecking problem for the ToBuffer operator. Caused by an
13472incorrect return type in the internal opcode information table.
13473
13474----------------------------------------
1347525 January 2005.  Summary of changes for version 20050125:
13476
134771) ACPI CA Core Subsystem:
13478
13479Fixed a recently introduced problem with the Global Lock where the
13480underlying semaphore was not created.  This problem was introduced in
13481version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13482Acquire() operation on _GL.
13483
13484The local object cache is now optional, and is disabled by default. Both
13485AcpiExec and the iASL compiler enable the cache because they run in user
13486mode and this enhances their performance. #define
13487ACPI_ENABLE_OBJECT_CACHE
13488to enable the local cache.
13489
13490Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13491the
13492optional "implicit return" support where an error was returned if no
13493return
13494object was expected, but one was implicitly returned. AE_OK is now
13495returned
13496in this case and the implicitly returned object is deleted.
13497AcpiUtEvaluateObject is only occasionally used, and only to execute
13498reserved
13499methods such as _STA and _INI where the return type is known up front.
13500
13501Fixed a few issues with the internal convert-to-integer code. It now
13502returns
13503an error if an attempt is made to convert a null string, a string of only
13504blanks/tabs, or a zero-length buffer. This affects both implicit
13505conversion
13506and explicit conversion via the ToInteger() operator.
13507
13508The internal debug code in AcpiUtAcquireMutex has been commented out. It
13509is
13510not needed for normal operation and should increase the performance of
13511the
13512entire subsystem. The code remains in case it is needed for debug
13513purposes
13514again.
13515
13516The AcpiExec source and makefile are included in the Unix/Linux package
13517for
13518the first time.
13519
13520Code and Data Size: Current and previous core subsystem library sizes are
13521shown below. These are the code and data sizes for the acpica.lib
13522produced
13523by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13524any ACPI driver or OSPM code. The debug version of the code includes the
13525debug output trace mechanism and has a much larger code and data size.
13526Note
13527that these values will vary depending on the efficiency of the compiler
13528and
13529the compiler options used during generation.
13530
13531  Previous Release:
13532    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13533    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13534  Current Release:
13535    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13536    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13537
135382) iASL Compiler/Disassembler:
13539
13540Switch/Case support: A warning is now issued if the type of the Switch
13541value
13542cannot be determined at compile time. For example, Switch(Arg0) will
13543generate the warning, and the type is assumed to be an integer. As per
13544the
13545ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13546the
13547warning.
13548
13549Switch/Case support: Implemented support for buffer and string objects as
13550the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13551buffers and strings.
13552
13553Switch/Case support: The emitted code for the LEqual() comparisons now
13554uses
13555the switch value as the first operand, not the second. The case value is
13556now
13557the second operand, and this allows the case value to be implicitly
13558converted to the type of the switch value, not the other way around.
13559
13560Switch/Case support: Temporary variables are now emitted immediately
13561within
13562the control method, not at the global level. This means that there are
13563now
1356436 temps available per-method, not 36 temps per-module as was the case
13565with
13566the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13567
13568----------------------------------------
1356914 January 2005.  Summary of changes for version 20050114:
13570
13571Added 2005 copyright to all module headers.  This affects every module in
13572the core subsystem, iASL compiler, and the utilities.
13573
135741) ACPI CA Core Subsystem:
13575
13576Fixed an issue with the String-to-Buffer conversion code where the string
13577null terminator was not included in the buffer after conversion, but
13578there
13579is existing ASL that assumes the string null terminator is included. This
13580is
13581the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13582introduced in the previous version when the code was updated to correctly
13583set the converted buffer size as per the ACPI specification. The ACPI
13584spec
13585is ambiguous and will be updated to specify that the null terminator must
13586be
13587included in the converted buffer. This also affects the ToBuffer() ASL
13588operator.
13589
13590Fixed a problem with the Mid() ASL/AML operator where it did not work
13591correctly on Buffer objects. Newly created sub-buffers were not being
13592marked
13593as initialized.
13594
13595
13596Fixed a problem in AcpiTbFindTable where incorrect string compares were
13597performed on the OemId and OemTableId table header fields.  These fields
13598are
13599not null terminated, so strncmp is now used instead of strcmp.
13600
13601Implemented a restriction on the Store() ASL/AML operator to align the
13602behavior with the ACPI specification.  Previously, any object could be
13603used
13604as the source operand.  Now, the only objects that may be used are
13605Integers,
13606Buffers, Strings, Packages, Object References, and DDB Handles.  If
13607necessary, the original behavior can be restored by enabling the
13608EnableInterpreterSlack flag.
13609
13610Enhanced the optional "implicit return" support to allow an implicit
13611return
13612value from methods that are invoked externally via the AcpiEvaluateObject
13613interface.  This enables implicit returns from the _STA and _INI methods,
13614for example.
13615
13616Changed the Revision() ASL/AML operator to return the current version of
13617the
13618AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13619returned
13620the supported ACPI version (This is the function of the _REV method).
13621
13622Updated the _REV predefined method to return the currently supported
13623version
13624of ACPI, now 3.
13625
13626Implemented batch mode option for the AcpiExec utility (-b).
13627
13628Code and Data Size: Current and previous core subsystem library sizes are
13629shown below. These are the code and data sizes for the acpica.lib
13630produced
13631by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13632any ACPI driver or OSPM code. The debug version of the code includes the
13633debug output trace mechanism and has a much larger code and data size.
13634Note
13635that these values will vary depending on the efficiency of the compiler
13636and
13637the compiler options used during generation.
13638
13639  Previous Release:
13640    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13641    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13642  Current Release:
13643    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13644    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13645
13646----------------------------------------
1364710 December 2004.  Summary of changes for version 20041210:
13648
13649ACPI 3.0 support is nearing completion in both the iASL compiler and the
13650ACPI CA core subsystem.
13651
136521) ACPI CA Core Subsystem:
13653
13654Fixed a problem in the ToDecimalString operator where the resulting
13655string
13656length was incorrectly calculated. The length is now calculated exactly,
13657eliminating incorrect AE_STRING_LIMIT exceptions.
13658
13659Fixed a problem in the ToHexString operator to allow a maximum 200
13660character
13661string to be produced.
13662
13663Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13664copy
13665routine where the length of the resulting buffer was not truncated to the
13666new size (if the target buffer already existed).
13667
13668Code and Data Size: Current and previous core subsystem library sizes are
13669shown below. These are the code and data sizes for the acpica.lib
13670produced
13671by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13672any ACPI driver or OSPM code. The debug version of the code includes the
13673debug output trace mechanism and has a much larger code and data size.
13674Note
13675that these values will vary depending on the efficiency of the compiler
13676and
13677the compiler options used during generation.
13678
13679  Previous Release:
13680    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13681    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13682  Current Release:
13683    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13684    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13685
13686
136872) iASL Compiler/Disassembler:
13688
13689Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13690ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13691Includes support in the disassembler.
13692
13693Implemented support for the new (ACPI 3.0) parameter to the Register
13694macro,
13695AccessSize.
13696
13697Fixed a problem where the _HE resource name for the Interrupt macro was
13698referencing bit 0 instead of bit 1.
13699
13700Implemented check for maximum 255 interrupts in the Interrupt macro.
13701
13702Fixed a problem with the predefined resource descriptor names where
13703incorrect AML code was generated if the offset within the resource buffer
13704was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
13705but did not update the surrounding package lengths.
13706
13707Changes to the Dma macro:  All channels within the channel list must be
13708in
13709the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
13710optional (default is BusMaster).
13711
13712Implemented check for maximum 7 data bytes for the VendorShort macro.
13713
13714The ReadWrite parameter is now optional for the Memory32 and similar
13715macros.
13716
13717----------------------------------------
1371803 December 2004.  Summary of changes for version 20041203:
13719
137201) ACPI CA Core Subsystem:
13721
13722The low-level field insertion/extraction code (exfldio) has been
13723completely
13724rewritten to eliminate unnecessary complexity, bugs, and boundary
13725conditions.
13726
13727Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13728ToDecimalString
13729operators where the input operand could be inadvertently deleted if no
13730conversion was necessary (e.g., if the input to ToInteger was an Integer
13731object.)
13732
13733Fixed a problem with the ToDecimalString and ToHexString where an
13734incorrect
13735exception code was returned if the resulting string would be > 200 chars.
13736AE_STRING_LIMIT is now returned.
13737
13738Fixed a problem with the Concatenate operator where AE_OK was always
13739returned, even if the operation failed.
13740
13741Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13742semaphores to be allocated.
13743
13744Code and Data Size: Current and previous core subsystem library sizes are
13745shown below. These are the code and data sizes for the acpica.lib
13746produced
13747by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13748any ACPI driver or OSPM code. The debug version of the code includes the
13749debug output trace mechanism and has a much larger code and data size.
13750Note
13751that these values will vary depending on the efficiency of the compiler
13752and
13753the compiler options used during generation.
13754
13755  Previous Release:
13756    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13757    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13758  Current Release:
13759    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13760    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13761
13762
137632) iASL Compiler/Disassembler:
13764
13765Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
13766recently introduced in 20041119.
13767
13768Fixed a problem with the ToUUID macro where the upper nybble of each
13769buffer
13770byte was inadvertently set to zero.
13771
13772----------------------------------------
1377319 November 2004.  Summary of changes for version 20041119:
13774
137751) ACPI CA Core Subsystem:
13776
13777Fixed a problem in the internal ConvertToInteger routine where new
13778integers
13779were not truncated to 32 bits for 32-bit ACPI tables. This routine
13780converts
13781buffers and strings to integers.
13782
13783Implemented support to store a value to an Index() on a String object.
13784This
13785is an ACPI 2.0 feature that had not yet been implemented.
13786
13787Implemented new behavior for storing objects to individual package
13788elements
13789(via the Index() operator). The previous behavior was to invoke the
13790implicit
13791conversion rules if an object was already present at the index.  The new
13792behavior is to simply delete any existing object and directly store the
13793new
13794object. Although the ACPI specification seems unclear on this subject,
13795other
13796ACPI implementations behave in this manner.  (This is the root of the
13797AE_BAD_HEX_CONSTANT issue.)
13798
13799Modified the RSDP memory scan mechanism to support the extended checksum
13800for
13801ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13802RSDP signature is found with a valid checksum.
13803
13804Code and Data Size: Current and previous core subsystem library sizes are
13805shown below. These are the code and data sizes for the acpica.lib
13806produced
13807by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13808any ACPI driver or OSPM code. The debug version of the code includes the
13809debug output trace mechanism and has a much larger code and data size.
13810Note
13811that these values will vary depending on the efficiency of the compiler
13812and
13813the compiler options used during generation.
13814
13815  Previous Release:
13816    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13817    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13818  Current Release:
13819    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13820    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13821
13822
138232) iASL Compiler/Disassembler:
13824
13825Fixed a missing semicolon in the aslcompiler.y file.
13826
13827----------------------------------------
1382805 November 2004.  Summary of changes for version 20041105:
13829
138301) ACPI CA Core Subsystem:
13831
13832Implemented support for FADT revision 2.  This was an interim table
13833(between
13834ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13835
13836Implemented optional support to allow uninitialized LocalX and ArgX
13837variables in a control method.  The variables are initialized to an
13838Integer
13839object with a value of zero.  This support is enabled by setting the
13840AcpiGbl_EnableInterpreterSlack flag to TRUE.
13841
13842Implemented support for Integer objects for the SizeOf operator.  Either
138434
13844or 8 is returned, depending on the current integer size (32-bit or 64-
13845bit,
13846depending on the parent table revision).
13847
13848Fixed a problem in the implementation of the SizeOf and ObjectType
13849operators
13850where the operand was resolved to a value too early, causing incorrect
13851return values for some objects.
13852
13853Fixed some possible memory leaks during exceptional conditions.
13854
13855Code and Data Size: Current and previous core subsystem library sizes are
13856shown below. These are the code and data sizes for the acpica.lib
13857produced
13858by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13859any ACPI driver or OSPM code. The debug version of the code includes the
13860debug output trace mechanism and has a much larger code and data size.
13861Note
13862that these values will vary depending on the efficiency of the compiler
13863and
13864the compiler options used during generation.
13865
13866  Previous Release:
13867    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13868    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13869  Current Release:
13870    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13871    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13872
13873
138742) iASL Compiler/Disassembler:
13875
13876Implemented support for all ACPI 3.0 reserved names and methods.
13877
13878Implemented all ACPI 3.0 grammar elements in the front-end, including
13879support for semicolons.
13880
13881Implemented the ACPI 3.0 Function() and ToUUID() macros
13882
13883Fixed a problem in the disassembler where a Scope() operator would not be
13884emitted properly if the target of the scope was in another table.
13885
13886----------------------------------------
1388715 October 2004.  Summary of changes for version 20041015:
13888
13889Note:  ACPI CA is currently undergoing an in-depth and complete formal
13890evaluation to test/verify the following areas. Other suggestions are
13891welcome. This will result in an increase in the frequency of releases and
13892the number of bug fixes in the next few months.
13893  - Functional tests for all ASL/AML operators
13894  - All implicit/explicit type conversions
13895  - Bit fields and operation regions
13896  - 64-bit math support and 32-bit-only "truncated" math support
13897  - Exceptional conditions, both compiler and interpreter
13898  - Dynamic object deletion and memory leaks
13899  - ACPI 3.0 support when implemented
13900  - External interfaces to the ACPI subsystem
13901
13902
139031) ACPI CA Core Subsystem:
13904
13905Fixed two alignment issues on 64-bit platforms - within debug statements
13906in
13907AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13908Address
13909field within the non-aligned ACPI generic address structure.
13910
13911Fixed a problem in the Increment and Decrement operators where incorrect
13912operand resolution could result in the inadvertent modification of the
13913original integer when the integer is passed into another method as an
13914argument and the arg is then incremented/decremented.
13915
13916Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13917bit
13918BCD number were truncated during conversion.
13919
13920Fixed a problem in the ToDecimal operator where the length of the
13921resulting
13922string could be set incorrectly too long if the input operand was a
13923Buffer
13924object.
13925
13926Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13927(0)
13928within a buffer would prematurely terminate a compare between buffer
13929objects.
13930
13931Added a check for string overflow (>200 characters as per the ACPI
13932specification) during the Concatenate operator with two string operands.
13933
13934Code and Data Size: Current and previous core subsystem library sizes are
13935shown below. These are the code and data sizes for the acpica.lib
13936produced
13937by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13938any ACPI driver or OSPM code. The debug version of the code includes the
13939debug output trace mechanism and has a much larger code and data size.
13940Note
13941that these values will vary depending on the efficiency of the compiler
13942and
13943the compiler options used during generation.
13944
13945  Previous Release:
13946    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13947    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13948  Current Release:
13949    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13950    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13951
13952
13953
139542) iASL Compiler/Disassembler:
13955
13956Allow the use of the ObjectType operator on uninitialized Locals and Args
13957(returns 0 as per the ACPI specification).
13958
13959Fixed a problem where the compiler would fault if there was a syntax
13960error
13961in the FieldName of all of the various CreateXXXField operators.
13962
13963Disallow the use of lower case letters within the EISAID macro, as per
13964the
13965ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
13966Where
13967U is an uppercase letter and N is a hex digit.
13968
13969
13970----------------------------------------
1397106 October 2004.  Summary of changes for version 20041006:
13972
139731) ACPI CA Core Subsystem:
13974
13975Implemented support for the ACPI 3.0 Timer operator. This ASL function
13976implements a 64-bit timer with 100 nanosecond granularity.
13977
13978Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
13979implement the ACPI 3.0 Timer operator.  This allows the host OS to
13980implement
13981the timer with the best clock available. Also, it keeps the core
13982subsystem
13983out of the clock handling business, since the host OS (usually) performs
13984this function.
13985
13986Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
13987functions use a 64-bit address which is part of the packed ACPI Generic
13988Address Structure. Since the structure is non-aligned, the alignment
13989macros
13990are now used to extract the address to a local variable before use.
13991
13992Fixed a problem where the ToInteger operator assumed all input strings
13993were
13994hexadecimal. The operator now handles both decimal strings and hex
13995strings
13996(prefixed with "0x").
13997
13998Fixed a problem where the string length in the string object created as a
13999result of the internal ConvertToString procedure could be incorrect. This
14000potentially affected all implicit conversions and also the
14001ToDecimalString
14002and ToHexString operators.
14003
14004Fixed two problems in the ToString operator. If the length parameter was
14005zero, an incorrect string object was created and the value of the input
14006length parameter was inadvertently changed from zero to Ones.
14007
14008Fixed a problem where the optional ResourceSource string in the
14009ExtendedIRQ
14010resource macro was ignored.
14011
14012Simplified the interfaces to the internal division functions, reducing
14013code
14014size and complexity.
14015
14016Code and Data Size: Current and previous core subsystem library sizes are
14017shown below. These are the code and data sizes for the acpica.lib
14018produced
14019by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14020any ACPI driver or OSPM code. The debug version of the code includes the
14021debug output trace mechanism and has a much larger code and data size.
14022Note
14023that these values will vary depending on the efficiency of the compiler
14024and
14025the compiler options used during generation.
14026
14027  Previous Release:
14028    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14029    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14030  Current Release:
14031    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14032    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14033
14034
140352) iASL Compiler/Disassembler:
14036
14037Implemented support for the ACPI 3.0 Timer operator.
14038
14039Fixed a problem where the Default() operator was inadvertently ignored in
14040a
14041Switch/Case block.  This was a problem in the translation of the Switch
14042statement to If...Else pairs.
14043
14044Added support to allow a standalone Return operator, with no parentheses
14045(or
14046operands).
14047
14048Fixed a problem with code generation for the ElseIf operator where the
14049translated Else...If parse tree was improperly constructed leading to the
14050loss of some code.
14051
14052----------------------------------------
1405322 September 2004.  Summary of changes for version 20040922:
14054
140551) ACPI CA Core Subsystem:
14056
14057Fixed a problem with the implementation of the LNot() operator where
14058"Ones"
14059was not returned for the TRUE case. Changed the code to return Ones
14060instead
14061of (!Arg) which was usually 1. This change affects iASL constant folding
14062for
14063this operator also.
14064
14065Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14066not
14067initialized properly -- Now zero the entire buffer in this case where the
14068buffer already exists.
14069
14070Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14071Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14072related code considerably. This will require changes/updates to all OS
14073interface layers (OSLs.)
14074
14075Implemented a new external interface, AcpiInstallExceptionHandler, to
14076allow
14077a system exception handler to be installed. This handler is invoked upon
14078any
14079run-time exception that occurs during control method execution.
14080
14081Added support for the DSDT in AcpiTbFindTable. This allows the
14082DataTableRegion() operator to access the local copy of the DSDT.
14083
14084Code and Data Size: Current and previous core subsystem library sizes are
14085shown below. These are the code and data sizes for the acpica.lib
14086produced
14087by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14088any ACPI driver or OSPM code. The debug version of the code includes the
14089debug output trace mechanism and has a much larger code and data size.
14090Note
14091that these values will vary depending on the efficiency of the compiler
14092and
14093the compiler options used during generation.
14094
14095  Previous Release:
14096    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14097    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14098  Current Release:
14099    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14100    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14101
14102
141032) iASL Compiler/Disassembler:
14104
14105Fixed a problem with constant folding and the LNot operator. LNot was
14106returning 1 in the TRUE case, not Ones as per the ACPI specification.
14107This
14108could result in the generation of an incorrect folded/reduced constant.
14109
14110End-Of-File is now allowed within a "//"-style comment.  A parse error no
14111longer occurs if such a comment is at the very end of the input ASL
14112source
14113file.
14114
14115Implemented the "-r" option to override the Revision in the table header.
14116The initial use of this option will be to simplify the evaluation of the
14117AML
14118interpreter by allowing a single ASL source module to be compiled for
14119either
1412032-bit or 64-bit integers.
14121
14122
14123----------------------------------------
1412427 August 2004.  Summary of changes for version 20040827:
14125
141261) ACPI CA Core Subsystem:
14127
14128- Implemented support for implicit object conversion in the non-numeric
14129logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14130and
14131LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
14132the second operand is implicitly converted on the fly to match the type
14133of
14134the first operand.  For example:
14135
14136    LEqual (Source1, Source2)
14137
14138Source1 and Source2 must each evaluate to an integer, a string, or a
14139buffer.
14140The data type of Source1 dictates the required type of Source2. Source2
14141is
14142implicitly converted if necessary to match the type of Source1.
14143
14144- Updated and corrected the behavior of the string conversion support.
14145The
14146rules concerning conversion of buffers to strings (according to the ACPI
14147specification) are as follows:
14148
14149ToDecimalString - explicit byte-wise conversion of buffer to string of
14150decimal values (0-255) separated by commas. ToHexString - explicit byte-
14151wise
14152conversion of buffer to string of hex values (0-FF) separated by commas.
14153ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
14154byte
14155copy with no transform except NULL terminated. Any other implicit buffer-
14156to-
14157string conversion - byte-wise conversion of buffer to string of hex
14158values
14159(0-FF) separated by spaces.
14160
14161- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14162
14163- Fixed a problem in AcpiNsGetPathnameLength where the returned length
14164was
14165one byte too short in the case of a node in the root scope.  This could
14166cause a fault during debug output.
14167
14168- Code and Data Size: Current and previous core subsystem library sizes
14169are
14170shown below.  These are the code and data sizes for the acpica.lib
14171produced
14172by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14173any ACPI driver or OSPM code.  The debug version of the code includes the
14174debug output trace mechanism and has a much larger code and data size.
14175Note
14176that these values will vary depending on the efficiency of the compiler
14177and
14178the compiler options used during generation.
14179
14180  Previous Release:
14181    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14182    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14183  Current Release:
14184    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14185    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14186
14187
141882) iASL Compiler/Disassembler:
14189
14190- Fixed a Linux generation error.
14191
14192
14193----------------------------------------
1419416 August 2004.  Summary of changes for version 20040816:
14195
141961) ACPI CA Core Subsystem:
14197
14198Designed and implemented support within the AML interpreter for the so-
14199called "implicit return".  This support returns the result of the last
14200ASL
14201operation within a control method, in the absence of an explicit Return()
14202operator.  A few machines depend on this behavior, even though it is not
14203explicitly supported by the ASL language.  It is optional support that
14204can
14205be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14206
14207Removed support for the PCI_Config address space from the internal low
14208level
14209hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
14210support was not used internally, and would not work correctly anyway
14211because
14212the PCI bus number and segment number were not supported.  There are
14213separate interfaces for PCI configuration space access because of the
14214unique
14215interface.
14216
14217Code and Data Size: Current and previous core subsystem library sizes are
14218shown below.  These are the code and data sizes for the acpica.lib
14219produced
14220by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14221any ACPI driver or OSPM code.  The debug version of the code includes the
14222debug output trace mechanism and has a much larger code and data size.
14223Note
14224that these values will vary depending on the efficiency of the compiler
14225and
14226the compiler options used during generation.
14227
14228  Previous Release:
14229    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14230    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14231  Current Release:
14232    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14233    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14234
14235
142362) iASL Compiler/Disassembler:
14237
14238Fixed a problem where constants in ASL expressions at the root level (not
14239within a control method) could be inadvertently truncated during code
14240generation.  This problem was introduced in the 20040715 release.
14241
14242
14243----------------------------------------
1424415 July 2004.  Summary of changes for version 20040715:
14245
142461) ACPI CA Core Subsystem:
14247
14248Restructured the internal HW GPE interfaces to pass/track the current
14249state
14250of interrupts (enabled/disabled) in order to avoid possible deadlock and
14251increase flexibility of the interfaces.
14252
14253Implemented a "lexicographical compare" for String and Buffer objects
14254within
14255the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14256-
14257as per further clarification to the ACPI specification.  Behavior is
14258similar
14259to C library "strcmp".
14260
14261Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14262external function.  In the 32-bit non-debug case, the stack use has been
14263reduced from 168 bytes to 32 bytes.
14264
14265Deployed a new run-time configuration flag,
14266AcpiGbl_EnableInterpreterSlack,
14267whose purpose is to allow the AML interpreter to forgive certain bad AML
14268constructs.  Default setting is FALSE.
14269
14270Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14271IO
14272support code.  If enabled, it allows field access to go beyond the end of
14273a
14274region definition if the field is within the region length rounded up to
14275the
14276next access width boundary (a common coding error.)
14277
14278Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14279ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14280these
14281symbols are lowercase by the latest version of the AcpiSrc tool.
14282
14283The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14284rename "Register" to simply "Reg" to prevent certain compilers from
14285complaining.
14286
14287Code and Data Size: Current and previous core subsystem library sizes are
14288shown below.  These are the code and data sizes for the acpica.lib
14289produced
14290by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14291any ACPI driver or OSPM code.  The debug version of the code includes the
14292debug output trace mechanism and has a much larger code and data size.
14293Note
14294that these values will vary depending on the efficiency of the compiler
14295and
14296the compiler options used during generation.
14297
14298  Previous Release:
14299    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14300    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14301  Current Release:
14302    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14303    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14304
14305
143062) iASL Compiler/Disassembler:
14307
14308Implemented full support for Package objects within the Case() operator.
14309Note: The Break() operator is currently not supported within Case blocks
14310(TermLists) as there is some question about backward compatibility with
14311ACPI
143121.0 interpreters.
14313
14314
14315Fixed a problem where complex terms were not supported properly within
14316the
14317Switch() operator.
14318
14319Eliminated extraneous warning for compiler-emitted reserved names of the
14320form "_T_x".  (Used in Switch/Case operators.)
14321
14322Eliminated optimization messages for "_T_x" objects and small constants
14323within the DefinitionBlock operator.
14324
14325
14326----------------------------------------
1432715 June 2004.  Summary of changes for version 20040615:
14328
143291) ACPI CA Core Subsystem:
14330
14331Implemented support for Buffer and String objects (as per ACPI 2.0) for
14332the
14333following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14334LLessEqual.
14335
14336All directory names in the entire source package are lower case, as they
14337were in earlier releases.
14338
14339Implemented "Disassemble" command in the AML debugger that will
14340disassemble
14341a single control method.
14342
14343Code and Data Size: Current and previous core subsystem library sizes are
14344shown below.  These are the code and data sizes for the acpica.lib
14345produced
14346by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14347any ACPI driver or OSPM code.  The debug version of the code includes the
14348debug output trace mechanism and has a much larger code and data size.
14349Note
14350that these values will vary depending on the efficiency of the compiler
14351and
14352the compiler options used during generation.
14353
14354  Previous Release:
14355    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14356    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14357
14358  Current Release:
14359    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14360    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14361
14362
143632) iASL Compiler/Disassembler:
14364
14365Implemented support for Buffer and String objects (as per ACPI 2.0) for
14366the
14367following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14368LLessEqual.
14369
14370All directory names in the entire source package are lower case, as they
14371were in earlier releases.
14372
14373Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14374not found.
14375
14376Fixed an issue with the Windows version of the compiler where later
14377versions
14378of Windows place the FADT in the registry under the name "FADT" and not
14379"FACP" as earlier versions did.  This applies when using the -g or -
14380d<nofilename> options.  The compiler now looks for both strings as
14381necessary.
14382
14383Fixed a problem with compiler namepath optimization where a namepath
14384within
14385the Scope() operator could not be optimized if the namepath was a subpath
14386of
14387the current scope path.
14388
14389----------------------------------------
1439027 May 2004.  Summary of changes for version 20040527:
14391
143921) ACPI CA Core Subsystem:
14393
14394Completed a new design and implementation for EBDA (Extended BIOS Data
14395Area)
14396support in the RSDP scan code.  The original code improperly scanned for
14397the
14398EBDA by simply scanning from memory location 0 to 0x400.  The correct
14399method
14400is to first obtain the EBDA pointer from within the BIOS data area, then
14401scan 1K of memory starting at the EBDA pointer.  There appear to be few
14402if
14403any machines that place the RSDP in the EBDA, however.
14404
14405Integrated a fix for a possible fault during evaluation of BufferField
14406arguments.  Obsolete code that was causing the problem was removed.
14407
14408Found and fixed a problem in the Field Support Code where data could be
14409corrupted on a bit field read that starts on an aligned boundary but does
14410not end on an aligned boundary.  Merged the read/write "datum length"
14411calculation code into a common procedure.
14412
14413Rolled in a couple of changes to the FreeBSD-specific header.
14414
14415
14416Code and Data Size: Current and previous core subsystem library sizes are
14417shown below.  These are the code and data sizes for the acpica.lib
14418produced
14419by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14420any ACPI driver or OSPM code.  The debug version of the code includes the
14421debug output trace mechanism and has a much larger code and data size.
14422Note
14423that these values will vary depending on the efficiency of the compiler
14424and
14425the compiler options used during generation.
14426
14427  Previous Release:
14428    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14429    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14430  Current Release:
14431    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14432    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14433
14434
144352) iASL Compiler/Disassembler:
14436
14437Fixed a generation warning produced by some overly-verbose compilers for
14438a
1443964-bit constant.
14440
14441----------------------------------------
1444214 May 2004.  Summary of changes for version 20040514:
14443
144441) ACPI CA Core Subsystem:
14445
14446Fixed a problem where hardware GPE enable bits sometimes not set properly
14447during and after GPE method execution.  Result of 04/27 changes.
14448
14449Removed extra "clear all GPEs" when sleeping/waking.
14450
14451Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14452AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14453to
14454the new AcpiEv* calls as appropriate.
14455
14456ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14457is
14458now "Microsoft Windows NT" for maximum compatibility.  However this can
14459be
14460changed by modifying the acconfig.h file.
14461
14462Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14463traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14464
14465Run _INI methods on ThermalZone objects.  This is against the ACPI
14466specification, but there is apparently ASL code in the field that has
14467these
14468_INI methods, and apparently "other" AML interpreters execute them.
14469
14470Performed a full 16/32/64 bit lint that resulted in some small changes.
14471
14472Added a sleep simulation command to the AML debugger to test sleep code.
14473
14474Code and Data Size: Current and previous core subsystem library sizes are
14475shown below.  These are the code and data sizes for the acpica.lib
14476produced
14477by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14478any ACPI driver or OSPM code.  The debug version of the code includes the
14479debug output trace mechanism and has a much larger code and data size.
14480Note
14481that these values will vary depending on the efficiency of the compiler
14482and
14483the compiler options used during generation.
14484
14485  Previous Release:
14486    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14487    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14488  Current Release:
14489    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14490    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14491
14492----------------------------------------
1449327 April 2004.  Summary of changes for version 20040427:
14494
144951) ACPI CA Core Subsystem:
14496
14497Completed a major overhaul of the GPE handling within ACPI CA.  There are
14498now three types of GPEs:  wake-only, runtime-only, and combination
14499wake/run.
14500The only GPEs allowed to be combination wake/run are for button-style
14501devices such as a control-method power button, control-method sleep
14502button,
14503or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14504not
14505referenced by any _PRW methods are marked for "runtime" and hardware
14506enabled.  Any GPE that is referenced by a _PRW method is marked for
14507"wake"
14508(and disabled at runtime).  However, at sleep time, only those GPEs that
14509have been specifically enabled for wake via the AcpiEnableGpe interface
14510will
14511actually be hardware enabled.
14512
14513A new external interface has been added, AcpiSetGpeType(), that is meant
14514to
14515be used by device drivers to force a GPE to a particular type.  It will
14516be
14517especially useful for the drivers for the button devices mentioned above.
14518
14519Completed restructuring of the ACPI CA initialization sequence so that
14520default operation region handlers are installed before GPEs are
14521initialized
14522and the _PRW methods are executed.  This will prevent errors when the
14523_PRW
14524methods attempt to access system memory or I/O space.
14525
14526GPE enable/disable no longer reads the GPE enable register.  We now keep
14527the
14528enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14529thus no longer depend on the hardware to maintain these bits.
14530
14531Always clear the wake status and fixed/GPE status bits before sleep, even
14532for state S5.
14533
14534Improved the AML debugger output for displaying the GPE blocks and their
14535current status.
14536
14537Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14538where
14539x = 0,1,2,3,4.
14540
14541Fixed a problem where the physical address was incorrectly calculated
14542when
14543the Load() operator was used to directly load from an Operation Region
14544(vs.
14545loading from a Field object.)  Also added check for minimum table length
14546for
14547this case.
14548
14549Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14550mutex release.
14551
14552Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14553consistency with the other fields returned.
14554
14555Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14556structure for each GPE in the system, so the size of this structure is
14557important.
14558
14559CPU stack requirement reduction:  Cleaned up the method execution and
14560object
14561evaluation paths so that now a parameter structure is passed, instead of
14562copying the various method parameters over and over again.
14563
14564In evregion.c:  Correctly exit and reenter the interpreter region if and
14565only if dispatching an operation region request to a user-installed
14566handler.
14567Do not exit/reenter when dispatching to a default handler (e.g., default
14568system memory or I/O handlers)
14569
14570
14571Notes for updating drivers for the new GPE support.  The following
14572changes
14573must be made to ACPI-related device drivers that are attached to one or
14574more
14575GPEs: (This information will be added to the ACPI CA Programmer
14576Reference.)
14577
145781) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14579must
14580explicitly call AcpiEnableGpe.
145812) There is a new interface called AcpiSetGpeType. This should be called
14582before enabling the GPE.  Also, this interface will automatically disable
14583the GPE if it is currently enabled.
145843) AcpiEnableGpe no longer supports a GPE type flag.
14585
14586Specific drivers that must be changed:
145871) EC driver:
14588    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14589AeGpeHandler, NULL);
14590    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14591    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14592
145932) Button Drivers (Power, Lid, Sleep):
14594Run _PRW method under parent device
14595If _PRW exists: /* This is a control-method button */
14596    Extract GPE number and possibly GpeDevice
14597    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14598    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14599
14600For all other devices that have _PRWs, we automatically set the GPE type
14601to
14602ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14603This
14604must be done on a selective basis, usually requiring some kind of user
14605app
14606to allow the user to pick the wake devices.
14607
14608
14609Code and Data Size: Current and previous core subsystem library sizes are
14610shown below.  These are the code and data sizes for the acpica.lib
14611produced
14612by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14613any ACPI driver or OSPM code.  The debug version of the code includes the
14614debug output trace mechanism and has a much larger code and data size.
14615Note
14616that these values will vary depending on the efficiency of the compiler
14617and
14618the compiler options used during generation.
14619
14620  Previous Release:
14621    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14622    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14623  Current Release:
14624
14625    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14626    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14627
14628
14629
14630----------------------------------------
1463102 April 2004.  Summary of changes for version 20040402:
14632
146331) ACPI CA Core Subsystem:
14634
14635Fixed an interpreter problem where an indirect store through an ArgX
14636parameter was incorrectly applying the "implicit conversion rules" during
14637the store.  From the ACPI specification: "If the target is a method local
14638or
14639argument (LocalX or ArgX), no conversion is performed and the result is
14640stored directly to the target".  The new behavior is to disable implicit
14641conversion during ALL stores to an ArgX.
14642
14643Changed the behavior of the _PRW method scan to ignore any and all errors
14644returned by a given _PRW.  This prevents the scan from aborting from the
14645failure of any single _PRW.
14646
14647Moved the runtime configuration parameters from the global init procedure
14648to
14649static variables in acglobal.h.  This will allow the host to override the
14650default values easily.
14651
14652Code and Data Size: Current and previous core subsystem library sizes are
14653shown below.  These are the code and data sizes for the acpica.lib
14654produced
14655by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14656any ACPI driver or OSPM code.  The debug version of the code includes the
14657debug output trace mechanism and has a much larger code and data size.
14658Note
14659that these values will vary depending on the efficiency of the compiler
14660and
14661the compiler options used during generation.
14662
14663  Previous Release:
14664    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14665    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14666  Current Release:
14667    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14668    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14669
14670
146712) iASL Compiler/Disassembler:
14672
14673iASL now fully disassembles SSDTs.  However, External() statements are
14674not
14675generated automatically for unresolved symbols at this time.  This is a
14676planned feature for future implementation.
14677
14678Fixed a scoping problem in the disassembler that occurs when the type of
14679the
14680target of a Scope() operator is overridden.  This problem caused an
14681incorrectly nested internal namespace to be constructed.
14682
14683Any warnings or errors that are emitted during disassembly are now
14684commented
14685out automatically so that the resulting file can be recompiled without
14686any
14687hand editing.
14688
14689----------------------------------------
1469026 March 2004.  Summary of changes for version 20040326:
14691
146921) ACPI CA Core Subsystem:
14693
14694Implemented support for "wake" GPEs via interaction between GPEs and the
14695_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
14696identified as a WAKE GPE and by default will no longer be enabled at
14697runtime.  Previously, we were blindly enabling all GPEs with a
14698corresponding
14699_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14700We
14701believe this has been the cause of thousands of "spurious" GPEs on some
14702systems.
14703
14704This new GPE behavior is can be reverted to the original behavior (enable
14705ALL GPEs at runtime) via a runtime flag.
14706
14707Fixed a problem where aliased control methods could not access objects
14708properly.  The proper scope within the namespace was not initialized
14709(transferred to the target of the aliased method) before executing the
14710target method.
14711
14712Fixed a potential race condition on internal object deletion on the
14713return
14714object in AcpiEvaluateObject.
14715
14716Integrated a fix for resource descriptors where both _MEM and _MTP were
14717being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
14718wide, 0x0F instead of 0x03.)
14719
14720Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14721preventing
14722a
14723fault in some cases.
14724
14725Updated Notify() values for debug statements in evmisc.c
14726
14727Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14728
14729Code and Data Size: Current and previous core subsystem library sizes are
14730shown below.  These are the code and data sizes for the acpica.lib
14731produced
14732by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14733any ACPI driver or OSPM code.  The debug version of the code includes the
14734debug output trace mechanism and has a much larger code and data size.
14735Note
14736that these values will vary depending on the efficiency of the compiler
14737and
14738the compiler options used during generation.
14739
14740  Previous Release:
14741
14742    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14743    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14744  Current Release:
14745    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14746    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14747
14748----------------------------------------
1474911 March 2004.  Summary of changes for version 20040311:
14750
147511) ACPI CA Core Subsystem:
14752
14753Fixed a problem where errors occurring during the parse phase of control
14754method execution did not abort cleanly.  For example, objects created and
14755installed in the namespace were not deleted.  This caused all subsequent
14756invocations of the method to return the AE_ALREADY_EXISTS exception.
14757
14758Implemented a mechanism to force a control method to "Serialized"
14759execution
14760if the method attempts to create namespace objects. (The root of the
14761AE_ALREADY_EXISTS problem.)
14762
14763Implemented support for the predefined _OSI "internal" control method.
14764Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14765and
14766"Windows 2001.1", and can be easily upgraded for new strings as
14767necessary.
14768This feature will allow "other" operating systems to execute the fully
14769tested, "Windows" code path through the ASL code
14770
14771Global Lock Support:  Now allows multiple acquires and releases with any
14772internal thread.  Removed concept of "owning thread" for this special
14773mutex.
14774
14775Fixed two functions that were inappropriately declaring large objects on
14776the
14777CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
14778during
14779method execution considerably.
14780
14781Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14782S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14783
14784Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14785defined on the machine.
14786
14787Implemented two runtime options:  One to force all control method
14788execution
14789to "Serialized" to mimic Windows behavior, another to disable _OSI
14790support
14791if it causes problems on a given machine.
14792
14793Code and Data Size: Current and previous core subsystem library sizes are
14794shown below.  These are the code and data sizes for the acpica.lib
14795produced
14796by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14797any ACPI driver or OSPM code.  The debug version of the code includes the
14798debug output trace mechanism and has a much larger code and data size.
14799Note
14800that these values will vary depending on the efficiency of the compiler
14801and
14802the compiler options used during generation.
14803
14804  Previous Release:
14805    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14806    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14807  Current Release:
14808    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14809    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14810
148112) iASL Compiler/Disassembler:
14812
14813Fixed an array size problem for FreeBSD that would cause the compiler to
14814fault.
14815
14816----------------------------------------
1481720 February 2004.  Summary of changes for version 20040220:
14818
14819
148201) ACPI CA Core Subsystem:
14821
14822Implemented execution of _SxD methods for Device objects in the
14823GetObjectInfo interface.
14824
14825Fixed calls to _SST method to pass the correct arguments.
14826
14827Added a call to _SST on wake to restore to "working" state.
14828
14829Check for End-Of-Buffer failure case in the WalkResources interface.
14830
14831Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14832structures to the beginning of the file.
14833
14834After wake, clear GPE status register(s) before enabling GPEs.
14835
14836After wake, clear/enable power button.  (Perhaps we should clear/enable
14837all
14838fixed events upon wake.)
14839
14840Fixed a couple of possible memory leaks in the Namespace manager.
14841
14842Integrated latest acnetbsd.h file.
14843
14844----------------------------------------
1484511 February 2004.  Summary of changes for version 20040211:
14846
14847
148481) ACPI CA Core Subsystem:
14849
14850Completed investigation and implementation of the call-by-reference
14851mechanism for control method arguments.
14852
14853Fixed a problem where a store of an object into an indexed package could
14854fail if the store occurs within a different method than the method that
14855created the package.
14856
14857Fixed a problem where the ToDecimal operator could return incorrect
14858results.
14859
14860Fixed a problem where the CopyObject operator could fail on some of the
14861more
14862obscure objects (e.g., Reference objects.)
14863
14864Improved the output of the Debug object to display buffer, package, and
14865index objects.
14866
14867Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14868return
14869the expected result.
14870
14871Added permanent ACPI_REPORT_ERROR macros for all instances of the
14872ACPI_AML_INTERNAL exception.
14873
14874Integrated latest version of acfreebsd.h
14875
14876----------------------------------------
1487716 January 2004.  Summary of changes for version 20040116:
14878
14879The purpose of this release is primarily to update the copyright years in
14880each module, thus causing a huge number of diffs.  There are a few small
14881functional changes, however.
14882
148831) ACPI CA Core Subsystem:
14884
14885Improved error messages when there is a problem finding one or more of
14886the
14887required base ACPI tables
14888
14889Reintroduced the definition of APIC_HEADER in actbl.h
14890
14891Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14892
14893Removed extraneous reference to NewObj in dsmthdat.c
14894
148952) iASL compiler
14896
14897Fixed a problem introduced in December that disabled the correct
14898disassembly
14899of Resource Templates
14900
14901
14902----------------------------------------
1490303 December 2003.  Summary of changes for version 20031203:
14904
149051) ACPI CA Core Subsystem:
14906
14907Changed the initialization of Operation Regions during subsystem
14908init to perform two entire walks of the ACPI namespace; The first
14909to initialize the regions themselves, the second to execute the
14910_REG methods.  This fixed some interdependencies across _REG
14911methods found on some machines.
14912
14913Fixed a problem where a Store(Local0, Local1) could simply update
14914the object reference count, and not create a new copy of the
14915object if the Local1 is uninitialized.
14916
14917Implemented support for the _SST reserved method during sleep
14918transitions.
14919
14920Implemented support to clear the SLP_TYP and SLP_EN bits when
14921waking up, this is apparently required by some machines.
14922
14923When sleeping, clear the wake status only if SleepState is not S5.
14924
14925Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14926pointer arithmetic advanced a string pointer too far.
14927
14928Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14929could be returned if the requested table has not been loaded.
14930
14931Within the support for IRQ resources, restructured the handling of
14932the active and edge/level bits.
14933
14934Fixed a few problems in AcpiPsxExecute() where memory could be
14935leaked under certain error conditions.
14936
14937Improved error messages for the cases where the ACPI mode could
14938not be entered.
14939
14940Code and Data Size: Current and previous core subsystem library
14941sizes are shown below.  These are the code and data sizes for the
14942acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14943these values do not include any ACPI driver or OSPM code.  The
14944debug version of the code includes the debug output trace
14945mechanism and has a much larger code and data size.  Note that
14946these values will vary depending on the efficiency of the compiler
14947and the compiler options used during generation.
14948
14949  Previous Release (20031029):
14950    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14951    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14952  Current Release:
14953    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14954    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14955
149562) iASL Compiler/Disassembler:
14957
14958Implemented a fix for the iASL disassembler where a bad index was
14959generated.  This was most noticeable on 64-bit platforms
14960
14961
14962----------------------------------------
1496329 October 2003.  Summary of changes for version 20031029:
14964
149651) ACPI CA Core Subsystem:
14966
14967
14968Fixed a problem where a level-triggered GPE with an associated
14969_Lxx control method was incorrectly cleared twice.
14970
14971Fixed a problem with the Field support code where an access can
14972occur beyond the end-of-region if the field is non-aligned but
14973extends to the very end of the parent region (resulted in an
14974AE_AML_REGION_LIMIT exception.)
14975
14976Fixed a problem with ACPI Fixed Events where an RT Clock handler
14977would not get invoked on an RTC event.  The RTC event bitmasks for
14978the PM1 registers were not being initialized properly.
14979
14980Implemented support for executing _STA and _INI methods for
14981Processor objects.  Although this is currently not part of the
14982ACPI specification, there is existing ASL code that depends on the
14983init-time execution of these methods.
14984
14985Implemented and deployed a GetDescriptorName function to decode
14986the various types of internal descriptors.  Guards against null
14987descriptors during debug output also.
14988
14989Implemented and deployed a GetNodeName function to extract the 4-
14990character namespace node name.  This function simplifies the debug
14991and error output, as well as guarding against null pointers during
14992output.
14993
14994Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
14995simplify the debug and error output of 64-bit integers.  This
14996macro replaces the HIDWORD and LODWORD macros for dumping these
14997integers.
14998
14999Updated the implementation of the Stall() operator to only call
15000AcpiOsStall(), and also return an error if the operand is larger
15001than 255.  This preserves the required behavior of not
15002relinquishing the processor, as would happen if AcpiOsSleep() was
15003called for "long stalls".
15004
15005Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15006initialized are now treated as NOOPs.
15007
15008Cleaned up a handful of warnings during 64-bit generation.
15009
15010Fixed a reported error where and incorrect GPE number was passed
15011to the GPE dispatch handler.  This value is only used for error
15012output, however.  Used this opportunity to clean up and streamline
15013the GPE dispatch code.
15014
15015Code and Data Size: Current and previous core subsystem library
15016sizes are shown below.  These are the code and data sizes for the
15017acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15018these values do not include any ACPI driver or OSPM code.  The
15019
15020debug version of the code includes the debug output trace
15021mechanism and has a much larger code and data size.  Note that
15022these values will vary depending on the efficiency of the compiler
15023and the compiler options used during generation.
15024
15025  Previous Release (20031002):
15026    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15027    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15028  Current Release:
15029    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15030    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15031
15032
150332) iASL Compiler/Disassembler:
15034
15035Updated the iASL compiler to return an error if the operand to the
15036Stall() operator is larger than 255.
15037
15038
15039----------------------------------------
1504002 October 2003.  Summary of changes for version 20031002:
15041
15042
150431) ACPI CA Core Subsystem:
15044
15045Fixed a problem with Index Fields where the index was not
15046incremented for fields that require multiple writes to the
15047index/data registers (Fields that are wider than the data
15048register.)
15049
15050Fixed a problem with all Field objects where a write could go
15051beyond the end-of-field if the field was larger than the access
15052granularity and therefore required multiple writes to complete the
15053request.  An extra write beyond the end of the field could happen
15054inadvertently.
15055
15056Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15057would incorrectly be returned if the width of the Data Register
15058was larger than the specified field access width.
15059
15060Completed fixes for LoadTable() and Unload() and verified their
15061operation.  Implemented full support for the "DdbHandle" object
15062throughout the ACPI CA subsystem.
15063
15064Implemented full support for the MADT and ECDT tables in the ACPI
15065CA header files.  Even though these tables are not directly
15066consumed by ACPI CA, the header definitions are useful for ACPI
15067device drivers.
15068
15069Integrated resource descriptor fixes posted to the Linux ACPI
15070list.  This included checks for minimum descriptor length, and
15071support for trailing NULL strings within descriptors that have
15072optional string elements.
15073
15074Code and Data Size: Current and previous core subsystem library
15075sizes are shown below.  These are the code and data sizes for the
15076acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15077these values do not include any ACPI driver or OSPM code.  The
15078debug version of the code includes the debug output trace
15079mechanism and has a much larger code and data size.  Note that
15080these values will vary depending on the efficiency of the compiler
15081and the compiler options used during generation.
15082
15083  Previous Release (20030918):
15084    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15085    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15086  Current Release:
15087    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15088    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15089
15090
150912) iASL Compiler:
15092
15093Implemented detection of non-ASCII characters within the input
15094source ASL file.  This catches attempts to compile binary (AML)
15095files early in the compile, with an informative error message.
15096
15097Fixed a problem where the disassembler would fault if the output
15098filename could not be generated or if the output file could not be
15099opened.
15100
15101----------------------------------------
1510218 September 2003.  Summary of changes for version 20030918:
15103
15104
151051) ACPI CA Core Subsystem:
15106
15107Found and fixed a longstanding problem with the late execution of
15108the various deferred AML opcodes (such as Operation Regions,
15109Buffer Fields, Buffers, and Packages).  If the name string
15110specified for the name of the new object placed the object in a
15111scope other than the current scope, the initialization/execution
15112of the opcode failed.  The solution to this problem was to
15113implement a mechanism where the late execution of such opcodes
15114does not attempt to lookup/create the name a second time in an
15115incorrect scope.  This fixes the "region size computed
15116incorrectly" problem.
15117
15118Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15119Global Lock AE_BAD_PARAMETER error.
15120
15121Fixed several 64-bit issues with prototypes, casting and data
15122types.
15123
15124Removed duplicate prototype from acdisasm.h
15125
15126Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15127
15128Code and Data Size: Current and previous core subsystem library
15129sizes are shown below.  These are the code and data sizes for the
15130acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15131these values do not include any ACPI driver or OSPM code.  The
15132debug version of the code includes the debug output trace
15133mechanism and has a much larger code and data size.  Note that
15134these values will vary depending on the efficiency of the compiler
15135and the compiler options used during generation.
15136
15137  Previous Release:
15138
15139    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15140    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15141  Current Release:
15142    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15143    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15144
15145
151462) Linux:
15147
15148Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15149correct sleep time in seconds.
15150
15151----------------------------------------
1515214 July 2003.  Summary of changes for version 20030619:
15153
151541) ACPI CA Core Subsystem:
15155
15156Parse SSDTs in order discovered, as opposed to reverse order
15157(Hrvoje Habjanic)
15158
15159Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15160Klausner,
15161   Nate Lawson)
15162
15163
151642) Linux:
15165
15166Dynamically allocate SDT list (suggested by Andi Kleen)
15167
15168proc function return value cleanups (Andi Kleen)
15169
15170Correctly handle NMI watchdog during long stalls (Andrew Morton)
15171
15172Make it so acpismp=force works (reported by Andrew Morton)
15173
15174
15175----------------------------------------
1517619 June 2003.  Summary of changes for version 20030619:
15177
151781) ACPI CA Core Subsystem:
15179
15180Fix To/FromBCD, eliminating the need for an arch-specific #define.
15181
15182Do not acquire a semaphore in the S5 shutdown path.
15183
15184Fix ex_digits_needed for 0. (Takayoshi Kochi)
15185
15186Fix sleep/stall code reversal. (Andi Kleen)
15187
15188Revert a change having to do with control method calling
15189semantics.
15190
151912) Linux:
15192
15193acpiphp update (Takayoshi Kochi)
15194
15195Export acpi_disabled for sonypi (Stelian Pop)
15196
15197Mention acpismp=force in config help
15198
15199Re-add acpitable.c and acpismp=force. This improves backwards
15200
15201compatibility and also cleans up the code to a significant degree.
15202
15203Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15204
15205----------------------------------------
1520622 May 2003.  Summary of changes for version 20030522:
15207
152081) ACPI CA Core Subsystem:
15209
15210Found and fixed a reported problem where an AE_NOT_FOUND error
15211occurred occasionally during _BST evaluation.  This turned out to
15212be an Owner ID allocation issue where a called method did not get
15213a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15214ID UINT16 would wraparound so that the ID would be the same as the
15215caller's and the called method would delete the caller's
15216namespace.
15217
15218Implemented extended error reporting for control methods that are
15219aborted due to a run-time exception.  Output includes the exact
15220AML instruction that caused the method abort, a dump of the method
15221locals and arguments at the time of the abort, and a trace of all
15222nested control method calls.
15223
15224Modified the interpreter to allow the creation of buffers of zero
15225length from the AML code. Implemented new code to ensure that no
15226attempt is made to actually allocate a memory buffer (of length
15227zero) - instead, a simple buffer object with a NULL buffer pointer
15228and length zero is created.  A warning is no longer issued when
15229the AML attempts to create a zero-length buffer.
15230
15231Implemented a workaround for the "leading asterisk issue" in
15232_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15233asterisk is automatically removed if present in any HID, UID, or
15234CID strings.  The iASL compiler will still flag this asterisk as
15235an error, however.
15236
15237Implemented full support for _CID methods that return a package of
15238multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15239now additionally returns a device _CID list if present.  This
15240required a change to the external interface in order to pass an
15241ACPI_BUFFER object as a parameter since the _CID list is of
15242variable length.
15243
15244Fixed a problem with the new AE_SAME_HANDLER exception where
15245handler initialization code did not know about this exception.
15246
15247Code and Data Size: Current and previous core subsystem library
15248sizes are shown below.  These are the code and data sizes for the
15249acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15250these values do not include any ACPI driver or OSPM code.  The
15251debug version of the code includes the debug output trace
15252mechanism and has a much larger code and data size.  Note that
15253these values will vary depending on the efficiency of the compiler
15254and the compiler options used during generation.
15255
15256  Previous Release (20030509):
15257    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15258    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15259  Current Release:
15260    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15261    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15262
15263
152642) Linux:
15265
15266Fixed a bug in which we would reinitialize the ACPI interrupt
15267after it was already working, thus disabling all ACPI and the IRQs
15268for any other device sharing the interrupt. (Thanks to Stian
15269Jordet)
15270
15271Toshiba driver update (John Belmonte)
15272
15273Return only 0 or 1 for our interrupt handler status (Andrew
15274Morton)
15275
15276
152773) iASL Compiler:
15278
15279Fixed a reported problem where multiple (nested) ElseIf()
15280statements were not handled correctly by the compiler, resulting
15281in incorrect warnings and incorrect AML code.  This was a problem
15282in both the ASL parser and the code generator.
15283
15284
152854) Documentation:
15286
15287Added changes to existing interfaces, new exception codes, and new
15288text concerning reference count object management versus garbage
15289collection.
15290
15291----------------------------------------
1529209 May 2003.  Summary of changes for version 20030509.
15293
15294
152951) ACPI CA Core Subsystem:
15296
15297Changed the subsystem initialization sequence to hold off
15298installation of address space handlers until the hardware has been
15299initialized and the system has entered ACPI mode.  This is because
15300the installation of space handlers can cause _REG methods to be
15301run.  Previously, the _REG methods could potentially be run before
15302ACPI mode was enabled.
15303
15304Fixed some memory leak issues related to address space handler and
15305notify handler installation.  There were some problems with the
15306reference count mechanism caused by the fact that the handler
15307objects are shared across several namespace objects.
15308
15309Fixed a reported problem where reference counts within the
15310namespace were not properly updated when named objects created by
15311method execution were deleted.
15312
15313Fixed a reported problem where multiple SSDTs caused a deletion
15314issue during subsystem termination.  Restructured the table data
15315structures to simplify the linked lists and the related code.
15316
15317Fixed a problem where the table ID associated with secondary
15318tables (SSDTs) was not being propagated into the namespace objects
15319created by those tables.  This would only present a problem for
15320tables that are unloaded at run-time, however.
15321
15322Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15323type as the length parameter (instead of UINT32).
15324
15325Solved a long-standing problem where an ALREADY_EXISTS error
15326appears on various systems.  This problem could happen when there
15327are multiple PCI_Config operation regions under a single PCI root
15328bus.  This doesn't happen very frequently, but there are some
15329systems that do this in the ASL.
15330
15331Fixed a reported problem where the internal DeleteNode function
15332was incorrectly handling the case where a namespace node was the
15333first in the parent's child list, and had additional peers (not
15334the only child, but first in the list of children.)
15335
15336Code and Data Size: Current core subsystem library sizes are shown
15337below.  These are the code and data sizes for the acpica.lib
15338produced by the Microsoft Visual C++ 6.0 compiler, and these
15339values do not include any ACPI driver or OSPM code.  The debug
15340version of the code includes the debug output trace mechanism and
15341has a much larger code and data size.  Note that these values will
15342vary depending on the efficiency of the compiler and the compiler
15343options used during generation.
15344
15345  Previous Release
15346    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15347    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15348  Current Release:
15349    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15350    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15351
15352
153532) Linux:
15354
15355Allow ":" in OS override string (Ducrot Bruno)
15356
15357Kobject fix (Greg KH)
15358
15359
153603 iASL Compiler/Disassembler:
15361
15362Fixed a problem in the generation of the C source code files (AML
15363is emitted in C source statements for BIOS inclusion) where the
15364Ascii dump that appears within a C comment at the end of each line
15365could cause a compile time error if the AML sequence happens to
15366have an open comment or close comment sequence embedded.
15367
15368
15369----------------------------------------
1537024 April 2003.  Summary of changes for version 20030424.
15371
15372
153731) ACPI CA Core Subsystem:
15374
15375Support for big-endian systems has been implemented.  Most of the
15376support has been invisibly added behind big-endian versions of the
15377ACPI_MOVE_* macros.
15378
15379Fixed a problem in AcpiHwDisableGpeBlock() and
15380AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15381low level hardware write routine.  The offset parameter was
15382actually eliminated from the low level read/write routines because
15383they had become obsolete.
15384
15385Fixed a problem where a handler object was deleted twice during
15386the removal of a fixed event handler.
15387
15388
153892) Linux:
15390
15391A fix for SMP systems with link devices was contributed by
15392
15393Compaq's Dan Zink.
15394
15395(2.5) Return whether we handled the interrupt in our IRQ handler.
15396(Linux ISRs no longer return void, so we can propagate the handler
15397return value from the ACPI CA core back to the OS.)
15398
15399
15400
154013) Documentation:
15402
15403The ACPI CA Programmer Reference has been updated to reflect new
15404interfaces and changes to existing interfaces.
15405
15406----------------------------------------
1540728 March 2003.  Summary of changes for version 20030328.
15408
154091) ACPI CA Core Subsystem:
15410
15411The GPE Block Device support has been completed.  New interfaces
15412are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15413interfaces (enable, disable, clear, getstatus) have been split
15414into separate interfaces for Fixed Events and General Purpose
15415Events (GPEs) in order to support GPE Block Devices properly.
15416
15417Fixed a problem where the error message "Failed to acquire
15418semaphore" would appear during operations on the embedded
15419controller (EC).
15420
15421Code and Data Size: Current core subsystem library sizes are shown
15422below.  These are the code and data sizes for the acpica.lib
15423produced by the Microsoft Visual C++ 6.0 compiler, and these
15424values do not include any ACPI driver or OSPM code.  The debug
15425version of the code includes the debug output trace mechanism and
15426has a much larger code and data size.  Note that these values will
15427vary depending on the efficiency of the compiler and the compiler
15428options used during generation.
15429
15430  Previous Release
15431    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15432    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15433  Current Release:
15434    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15435    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15436
15437
15438----------------------------------------
1543928 February 2003.  Summary of changes for version 20030228.
15440
15441
154421) ACPI CA Core Subsystem:
15443
15444The GPE handling and dispatch code has been completely overhauled
15445in preparation for support of GPE Block Devices (ID ACPI0006).
15446This affects internal data structures and code only; there should
15447be no differences visible externally.  One new file has been
15448added, evgpeblk.c
15449
15450The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15451fields that are used to determine the GPE block lengths.  The
15452REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15453structures are ignored.  This is per the ACPI specification but it
15454isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15455(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15456
15457In the SCI interrupt handler, removed the read of the PM1_CONTROL
15458register to look at the SCI_EN bit.  On some machines, this read
15459causes an SMI event and greatly slows down SCI events.  (This may
15460in fact be the cause of slow battery status response on some
15461systems.)
15462
15463Fixed a problem where a store of a NULL string to a package object
15464could cause the premature deletion of the object.  This was seen
15465during execution of the battery _BIF method on some systems,
15466resulting in no battery data being returned.
15467
15468Added AcpiWalkResources interface to simplify parsing of resource
15469lists.
15470
15471Code and Data Size: Current core subsystem library sizes are shown
15472below.  These are the code and data sizes for the acpica.lib
15473produced by the Microsoft Visual C++ 6.0 compiler, and these
15474values do not include any ACPI driver or OSPM code.  The debug
15475version of the code includes the debug output trace mechanism and
15476has a much larger code and data size.  Note that these values will
15477vary depending on the efficiency of the compiler and the compiler
15478options used during generation.
15479
15480  Previous Release
15481    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15482    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15483  Current Release:
15484    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15485    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15486
15487
154882) Linux
15489
15490S3 fixes (Ole Rohne)
15491
15492Update ACPI PHP driver with to use new acpi_walk_resource API
15493(Bjorn Helgaas)
15494
15495Add S4BIOS support (Pavel Machek)
15496
15497Map in entire table before performing checksum (John Stultz)
15498
15499Expand the mem= cmdline to allow the specification of reserved and
15500ACPI DATA blocks (Pavel Machek)
15501
15502Never use ACPI on VISWS
15503
15504Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15505
15506Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15507causing us to think that some systems support C2 when they really
15508don't.
15509
15510Do not count processor objects for non-present CPUs (Thanks to
15511Dominik Brodowski)
15512
15513
155143) iASL Compiler:
15515
15516Fixed a problem where ASL include files could not be found and
15517opened.
15518
15519Added support for the _PDC reserved name.
15520
15521
15522----------------------------------------
1552322 January 2003.  Summary of changes for version 20030122.
15524
15525
155261) ACPI CA Core Subsystem:
15527
15528Added a check for constructs of the form:  Store (Local0, Local0)
15529where Local0 is not initialized.  Apparently, some BIOS
15530programmers believe that this is a NOOP.  Since this store doesn't
15531do anything anyway, the new prototype behavior will ignore this
15532error.  This is a case where we can relax the strict checking in
15533the interpreter in the name of compatibility.
15534
15535
155362) Linux
15537
15538The AcpiSrc Source Conversion Utility has been released with the
15539Linux package for the first time.  This is the utility that is
15540used to convert the ACPI CA base source code to the Linux version.
15541
15542(Both) Handle P_BLK lengths shorter than 6 more gracefully
15543
15544(Both) Move more headers to include/acpi, and delete an unused
15545header.
15546
15547(Both) Move drivers/acpi/include directory to include/acpi
15548
15549(Both) Boot functions don't use cmdline, so don't pass it around
15550
15551(Both) Remove include of unused header (Adrian Bunk)
15552
15553(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15554the
15555former now also includes the latter, acpiphp.h only needs the one,
15556now.
15557
15558(2.5) Make it possible to select method of bios restoring after S3
15559resume. [=> no more ugly ifdefs] (Pavel Machek)
15560
15561(2.5) Make proc write interfaces work (Pavel Machek)
15562
15563(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15564
15565(2.5) Break out ACPI Perf code into its own module, under cpufreq
15566(Dominik Brodowski)
15567
15568(2.4) S4BIOS support (Ducrot Bruno)
15569
15570(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15571Visinoni)
15572
15573
155743) iASL Compiler:
15575
15576Added support to disassemble SSDT and PSDTs.
15577
15578Implemented support to obtain SSDTs from the Windows registry if
15579available.
15580
15581
15582----------------------------------------
1558309 January 2003.  Summary of changes for version 20030109.
15584
155851) ACPI CA Core Subsystem:
15586
15587Changed the behavior of the internal Buffer-to-String conversion
15588function.  The current ACPI specification states that the contents
15589of the buffer are "converted to a string of two-character
15590hexadecimal numbers, each separated by a space".  Unfortunately,
15591this definition is not backwards compatible with existing ACPI 1.0
15592implementations (although the behavior was not defined in the ACPI
155931.0 specification).  The new behavior simply copies data from the
15594buffer to the string until a null character is found or the end of
15595the buffer is reached.  The new String object is always null
15596terminated.  This problem was seen during the generation of _BIF
15597battery data where incorrect strings were returned for battery
15598type, etc.  This will also require an errata to the ACPI
15599specification.
15600
15601Renamed all instances of NATIVE_UINT and NATIVE_INT to
15602ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15603
15604Copyright in all module headers (both Linux and non-Linux) has be
15605updated to 2003.
15606
15607Code and Data Size: Current core subsystem library sizes are shown
15608below.  These are the code and data sizes for the acpica.lib
15609produced by the Microsoft Visual C++ 6.0 compiler, and these
15610values do not include any ACPI driver or OSPM code.  The debug
15611version of the code includes the debug output trace mechanism and
15612has a much larger code and data size.  Note that these values will
15613vary depending on the efficiency of the compiler and the compiler
15614options used during generation.
15615
15616  Previous Release
15617    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15618    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15619  Current Release:
15620    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15621    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15622
15623
156242) Linux
15625
15626Fixed an oops on module insertion/removal (Matthew Tippett)
15627
15628(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15629
15630(2.5) Replace pr_debug (Randy Dunlap)
15631
15632(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15633
15634(Both) Eliminate spawning of thread from timer callback, in favor
15635of schedule_work()
15636
15637(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15638
15639(Both) Added define for Fixed Function HW region (Matthew Wilcox)
15640
15641(Both) Add missing statics to button.c (Pavel Machek)
15642
15643Several changes have been made to the source code translation
15644utility that generates the Linux Code in order to make the code
15645more "Linux-like":
15646
15647All typedefs on structs and unions have been removed in keeping
15648with the Linux coding style.
15649
15650Removed the non-Linux SourceSafe module revision number from each
15651module header.
15652
15653Completed major overhaul of symbols to be lowercase for linux.
15654Doubled the number of symbols that are lowercase.
15655
15656Fixed a problem where identifiers within procedure headers and
15657within quotes were not fully lower cased (they were left with a
15658starting capital.)
15659
15660Some C macros whose only purpose is to allow the generation of 16-
15661bit code are now completely removed in the Linux code, increasing
15662readability and maintainability.
15663
15664----------------------------------------
15665
1566612 December 2002.  Summary of changes for version 20021212.
15667
15668
156691) ACPI CA Core Subsystem:
15670
15671Fixed a problem where the creation of a zero-length AML Buffer
15672would cause a fault.
15673
15674Fixed a problem where a Buffer object that pointed to a static AML
15675buffer (in an ACPI table) could inadvertently be deleted, causing
15676memory corruption.
15677
15678Fixed a problem where a user buffer (passed in to the external
15679ACPI CA interfaces) could be overwritten if the buffer was too
15680small to complete the operation, causing memory corruption.
15681
15682Fixed a problem in the Buffer-to-String conversion code where a
15683string of length one was always returned, regardless of the size
15684of the input Buffer object.
15685
15686Removed the NATIVE_CHAR data type across the entire source due to
15687lack of need and lack of consistent use.
15688
15689Code and Data Size: Current core subsystem library sizes are shown
15690below.  These are the code and data sizes for the acpica.lib
15691produced by the Microsoft Visual C++ 6.0 compiler, and these
15692values do not include any ACPI driver or OSPM code.  The debug
15693version of the code includes the debug output trace mechanism and
15694has a much larger code and data size.  Note that these values will
15695vary depending on the efficiency of the compiler and the compiler
15696options used during generation.
15697
15698  Previous Release
15699    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15700    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15701  Current Release:
15702    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15703    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15704
15705
15706----------------------------------------
1570705 December 2002.  Summary of changes for version 20021205.
15708
157091) ACPI CA Core Subsystem:
15710
15711Fixed a problem where a store to a String or Buffer object could
15712cause corruption of the DSDT if the object type being stored was
15713the same as the target object type and the length of the object
15714being stored was equal to or smaller than the original (existing)
15715target object.  This was seen to cause corruption of battery _BIF
15716buffers if the _BIF method modified the buffer on the fly.
15717
15718Fixed a problem where an internal error was generated if a control
15719method invocation was used in an OperationRegion, Buffer, or
15720Package declaration.  This was caused by the deferred parsing of
15721the control method and thus the deferred creation of the internal
15722method object.  The solution to this problem was to create the
15723internal method object at the moment the method is encountered in
15724the first pass - so that subsequent references to the method will
15725able to obtain the required parameter count and thus properly
15726parse the method invocation.  This problem presented itself as an
15727AE_AML_INTERNAL during the pass 1 parse phase during table load.
15728
15729Fixed a problem where the internal String object copy routine did
15730not always allocate sufficient memory for the target String object
15731and caused memory corruption.  This problem was seen to cause
15732"Allocation already present in list!" errors as memory allocation
15733became corrupted.
15734
15735Implemented a new function for the evaluation of namespace objects
15736that allows the specification of the allowable return object
15737types.  This simplifies a lot of code that checks for a return
15738object of one or more specific objects returned from the
15739evaluation (such as _STA, etc.)  This may become and external
15740function if it would be useful to ACPI-related drivers.
15741
15742Completed another round of prefixing #defines with "ACPI_" for
15743clarity.
15744
15745Completed additional code restructuring to allow more modular
15746linking for iASL compiler and AcpiExec.  Several files were split
15747creating new files.  New files:  nsparse.c dsinit.c evgpe.c
15748
15749Implemented an abort mechanism to terminate an executing control
15750method via the AML debugger.  This feature is useful for debugging
15751control methods that depend (wait) for specific hardware
15752responses.
15753
15754Code and Data Size: Current core subsystem library sizes are shown
15755below.  These are the code and data sizes for the acpica.lib
15756produced by the Microsoft Visual C++ 6.0 compiler, and these
15757values do not include any ACPI driver or OSPM code.  The debug
15758version of the code includes the debug output trace mechanism and
15759has a much larger code and data size.  Note that these values will
15760vary depending on the efficiency of the compiler and the compiler
15761options used during generation.
15762
15763  Previous Release
15764    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15765    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15766  Current Release:
15767    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15768    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15769
15770
157712) iASL Compiler/Disassembler
15772
15773Fixed a compiler code generation problem for "Interrupt" Resource
15774Descriptors.  If specified in the ASL, the optional "Resource
15775Source Index" and "Resource Source" fields were not inserted into
15776the correct location within the AML resource descriptor, creating
15777an invalid descriptor.
15778
15779Fixed a disassembler problem for "Interrupt" resource descriptors.
15780The optional "Resource Source Index" and "Resource Source" fields
15781were ignored.
15782
15783
15784----------------------------------------
1578522 November 2002.  Summary of changes for version 20021122.
15786
15787
157881) ACPI CA Core Subsystem:
15789
15790Fixed a reported problem where an object stored to a Method Local
15791or Arg was not copied to a new object during the store - the
15792object pointer was simply copied to the Local/Arg.  This caused
15793all subsequent operations on the Local/Arg to also affect the
15794original source of the store operation.
15795
15796Fixed a problem where a store operation to a Method Local or Arg
15797was not completed properly if the Local/Arg contained a reference
15798(from RefOf) to a named field.  The general-purpose store-to-
15799namespace-node code is now used so that this case is handled
15800automatically.
15801
15802Fixed a problem where the internal object copy routine would cause
15803a protection fault if the object being copied was a Package and
15804contained either 1) a NULL package element or 2) a nested sub-
15805package.
15806
15807Fixed a problem with the GPE initialization that resulted from an
15808ambiguity in the ACPI specification.  One section of the
15809specification states that both the address and length of the GPE
15810block must be zero if the block is not supported.  Another section
15811implies that only the address need be zero if the block is not
15812supported.  The code has been changed so that both the address and
15813the length must be non-zero to indicate a valid GPE block (i.e.,
15814if either the address or the length is zero, the GPE block is
15815invalid.)
15816
15817Code and Data Size: Current core subsystem library sizes are shown
15818below.  These are the code and data sizes for the acpica.lib
15819produced by the Microsoft Visual C++ 6.0 compiler, and these
15820values do not include any ACPI driver or OSPM code.  The debug
15821version of the code includes the debug output trace mechanism and
15822has a much larger code and data size.  Note that these values will
15823vary depending on the efficiency of the compiler and the compiler
15824options used during generation.
15825
15826  Previous Release
15827    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15828    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15829  Current Release:
15830    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15831    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15832
15833
158342) Linux
15835
15836Cleaned up EC driver. Exported an external EC read/write
15837interface. By going through this, other drivers (most notably
15838sonypi) will be able to serialize access to the EC.
15839
15840
158413) iASL Compiler/Disassembler
15842
15843Implemented support to optionally generate include files for both
15844ASM and C (the -i switch).  This simplifies BIOS development by
15845automatically creating include files that contain external
15846declarations for the symbols that are created within the
15847
15848(optionally generated) ASM and C AML source files.
15849
15850
15851----------------------------------------
1585215 November 2002.  Summary of changes for version 20021115.
15853
158541) ACPI CA Core Subsystem:
15855
15856Fixed a memory leak problem where an error during resolution of
15857
15858method arguments during a method invocation from another method
15859failed to cleanup properly by deleting all successfully resolved
15860argument objects.
15861
15862Fixed a problem where the target of the Index() operator was not
15863correctly constructed if the source object was a package.  This
15864problem has not been detected because the use of a target operand
15865with Index() is very rare.
15866
15867Fixed a problem with the Index() operator where an attempt was
15868made to delete the operand objects twice.
15869
15870Fixed a problem where an attempt was made to delete an operand
15871twice during execution of the CondRefOf() operator if the target
15872did not exist.
15873
15874Implemented the first of perhaps several internal create object
15875functions that create and initialize a specific object type.  This
15876consolidates duplicated code wherever the object is created, thus
15877shrinking the size of the subsystem.
15878
15879Implemented improved debug/error messages for errors that occur
15880during nested method invocations.  All executing method pathnames
15881are displayed (with the error) as the call stack is unwound - thus
15882simplifying debug.
15883
15884Fixed a problem introduced in the 10/02 release that caused
15885premature deletion of a buffer object if a buffer was used as an
15886ASL operand where an integer operand is required (Thus causing an
15887implicit object conversion from Buffer to Integer.)  The change in
15888the 10/02 release was attempting to fix a memory leak (albeit
15889incorrectly.)
15890
15891Code and Data Size: Current core subsystem library sizes are shown
15892below.  These are the code and data sizes for the acpica.lib
15893produced by the Microsoft Visual C++ 6.0 compiler, and these
15894values do not include any ACPI driver or OSPM code.  The debug
15895version of the code includes the debug output trace mechanism and
15896has a much larger code and data size.  Note that these values will
15897vary depending on the efficiency of the compiler and the compiler
15898options used during generation.
15899
15900  Previous Release
15901    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15902    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15903  Current Release:
15904    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15905    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15906
15907
159082) Linux
15909
15910Changed the implementation of the ACPI semaphores to use down()
15911instead of down_interruptable().  It is important that the
15912execution of ACPI control methods not be interrupted by signals.
15913Methods must run to completion, or the system may be left in an
15914unknown/unstable state.
15915
15916Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15917(Shawn Starr)
15918
15919
159203) iASL Compiler/Disassembler
15921
15922
15923Changed the default location of output files.  All output files
15924are now placed in the current directory by default instead of in
15925the directory of the source file.  This change may affect some
15926existing makefiles, but it brings the behavior of the compiler in
15927line with other similar tools.  The location of the output files
15928can be overridden with the -p command line switch.
15929
15930
15931----------------------------------------
1593211 November 2002.  Summary of changes for version 20021111.
15933
15934
159350) ACPI Specification 2.0B is released and is now available at:
15936http://www.acpi.info/index.html
15937
15938
159391) ACPI CA Core Subsystem:
15940
15941Implemented support for the ACPI 2.0 SMBus Operation Regions.
15942This includes the early detection and handoff of the request to
15943the SMBus region handler (avoiding all of the complex field
15944support code), and support for the bidirectional return packet
15945from an SMBus write operation.  This paves the way for the
15946development of SMBus drivers in each host operating system.
15947
15948Fixed a problem where the semaphore WAIT_FOREVER constant was
15949defined as 32 bits, but must be 16 bits according to the ACPI
15950specification.  This had the side effect of causing ASL
15951Mutex/Event timeouts even though the ASL code requested a wait
15952forever.  Changed all internal references to the ACPI timeout
15953parameter to 16 bits to prevent future problems.  Changed the name
15954of WAIT_FOREVER to ACPI_WAIT_FOREVER.
15955
15956Code and Data Size: Current core subsystem library sizes are shown
15957below.  These are the code and data sizes for the acpica.lib
15958produced by the Microsoft Visual C++ 6.0 compiler, and these
15959values do not include any ACPI driver or OSPM code.  The debug
15960version of the code includes the debug output trace mechanism and
15961has a much larger code and data size.  Note that these values will
15962vary depending on the efficiency of the compiler and the compiler
15963options used during generation.
15964
15965  Previous Release
15966    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15967    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15968  Current Release:
15969    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15970    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15971
15972
159732) Linux
15974
15975Module loading/unloading fixes (John Cagle)
15976
15977
159783) iASL Compiler/Disassembler
15979
15980Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
15981
15982Implemented support for the disassembly of all SMBus protocol
15983keywords (SMBQuick, SMBWord, etc.)
15984
15985----------------------------------------
1598601 November 2002.  Summary of changes for version 20021101.
15987
15988
159891) ACPI CA Core Subsystem:
15990
15991Fixed a problem where platforms that have a GPE1 block but no GPE0
15992block were not handled correctly.  This resulted in a "GPE
15993overlap" error message.  GPE0 is no longer required.
15994
15995Removed code added in the previous release that inserted nodes
15996into the namespace in alphabetical order.  This caused some side-
15997effects on various machines.  The root cause of the problem is
15998still under investigation since in theory, the internal ordering
15999of the namespace nodes should not matter.
16000
16001
16002Enhanced error reporting for the case where a named object is not
16003found during control method execution.  The full ACPI namepath
16004(name reference) of the object that was not found is displayed in
16005this case.
16006
16007Note: as a result of the overhaul of the namespace object types in
16008the previous release, the namespace nodes for the predefined
16009scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16010instead of ACPI_TYPE_ANY.  This simplifies the namespace
16011management code but may affect code that walks the namespace tree
16012looking for specific object types.
16013
16014Code and Data Size: Current core subsystem library sizes are shown
16015below.  These are the code and data sizes for the acpica.lib
16016produced by the Microsoft Visual C++ 6.0 compiler, and these
16017values do not include any ACPI driver or OSPM code.  The debug
16018version of the code includes the debug output trace mechanism and
16019has a much larger code and data size.  Note that these values will
16020vary depending on the efficiency of the compiler and the compiler
16021options used during generation.
16022
16023  Previous Release
16024    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16025    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16026  Current Release:
16027    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16028    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16029
16030
160312) Linux
16032
16033Fixed a problem introduced in the previous release where the
16034Processor and Thermal objects were not recognized and installed in
16035/proc.  This was related to the scope type change described above.
16036
16037
160383) iASL Compiler/Disassembler
16039
16040Implemented the -g option to get all of the required ACPI tables
16041from the registry and save them to files (Windows version of the
16042compiler only.)  The required tables are the FADT, FACS, and DSDT.
16043
16044Added ACPI table checksum validation during table disassembly in
16045order to catch corrupted tables.
16046
16047
16048----------------------------------------
1604922 October 2002.  Summary of changes for version 20021022.
16050
160511) ACPI CA Core Subsystem:
16052
16053Implemented a restriction on the Scope operator that the target
16054must already exist in the namespace at the time the operator is
16055encountered (during table load or method execution).  In other
16056words, forward references are not allowed and Scope() cannot
16057create a new object. This changes the previous behavior where the
16058interpreter would create the name if not found.  This new behavior
16059correctly enables the search-to-root algorithm during namespace
16060lookup of the target name.  Because of this upsearch, this fixes
16061the known Compaq _SB_.OKEC problem and makes both the AML
16062interpreter and iASL compiler compatible with other ACPI
16063implementations.
16064
16065Completed a major overhaul of the internal ACPI object types for
16066the ACPI Namespace and the associated operand objects.  Many of
16067these types had become obsolete with the introduction of the two-
16068pass namespace load.  This cleanup simplifies the code and makes
16069the entire namespace load mechanism much clearer and easier to
16070understand.
16071
16072Improved debug output for tracking scope opening/closing to help
16073diagnose scoping issues.  The old scope name as well as the new
16074scope name are displayed.  Also improved error messages for
16075problems with ASL Mutex objects and error messages for GPE
16076problems.
16077
16078Cleaned up the namespace dump code, removed obsolete code.
16079
16080All string output (for all namespace/object dumps) now uses the
16081common ACPI string output procedure which handles escapes properly
16082and does not emit non-printable characters.
16083
16084Fixed some issues with constants in the 64-bit version of the
16085local C library (utclib.c)
16086
16087
160882) Linux
16089
16090EC Driver:  No longer attempts to acquire the Global Lock at
16091interrupt level.
16092
16093
160943) iASL Compiler/Disassembler
16095
16096Implemented ACPI 2.0B grammar change that disallows all Type 1 and
160972 opcodes outside of a control method.  This means that the
16098"executable" operators (versus the "namespace" operators) cannot
16099be used at the table level; they can only be used within a control
16100method.
16101
16102Implemented the restriction on the Scope() operator where the
16103target must already exist in the namespace at the time the
16104operator is encountered (during ASL compilation). In other words,
16105forward references are not allowed and Scope() cannot create a new
16106object.  This makes the iASL compiler compatible with other ACPI
16107implementations and makes the Scope() implementation adhere to the
16108ACPI specification.
16109
16110Fixed a problem where namepath optimization for the Alias operator
16111was optimizing the wrong path (of the two namepaths.)  This caused
16112a "Missing alias link" error message.
16113
16114Fixed a problem where an "unknown reserved name" warning could be
16115incorrectly generated for names like "_SB" when the trailing
16116underscore is not used in the original ASL.
16117
16118Fixed a problem where the reserved name check did not handle
16119NamePaths with multiple NameSegs correctly.  The first nameseg of
16120the NamePath was examined instead of the last NameSeg.
16121
16122
16123----------------------------------------
16124
1612502 October 2002.  Summary of changes for this release.
16126
16127
161281) ACPI CA Core Subsystem version 20021002:
16129
16130Fixed a problem where a store/copy of a string to an existing
16131string did not always set the string length properly in the String
16132object.
16133
16134Fixed a reported problem with the ToString operator where the
16135behavior was identical to the ToHexString operator instead of just
16136simply converting a raw buffer to a string data type.
16137
16138Fixed a problem where CopyObject and the other "explicit"
16139conversion operators were not updating the internal namespace node
16140type as part of the store operation.
16141
16142Fixed a memory leak during implicit source operand conversion
16143where the original object was not deleted if it was converted to a
16144new object of a different type.
16145
16146Enhanced error messages for all problems associated with namespace
16147lookups.  Common procedure generates and prints the lookup name as
16148well as the formatted status.
16149
16150Completed implementation of a new design for the Alias support
16151within the namespace.  The existing design did not handle the case
16152where a new object was assigned to one of the two names due to the
16153use of an explicit conversion operator, resulting in the two names
16154pointing to two different objects.  The new design simply points
16155the Alias name to the original name node - not to the object.
16156This results in a level of indirection that must be handled in the
16157name resolution mechanism.
16158
16159Code and Data Size: Current core subsystem library sizes are shown
16160below.  These are the code and data sizes for the acpica.lib
16161produced by the Microsoft Visual C++ 6.0 compiler, and these
16162values do not include any ACPI driver or OSPM code.  The debug
16163version of the code includes the debug output trace mechanism and
16164has a larger code and data size.  Note that these values will vary
16165depending on the efficiency of the compiler and the compiler
16166options used during generation.
16167
16168  Previous Release
16169    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16170    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16171  Current Release:
16172    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16173    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16174
16175
161762) Linux
16177
16178Initialize thermal driver's timer before it is used. (Knut
16179Neumann)
16180
16181Allow handling negative celsius values. (Kochi Takayoshi)
16182
16183Fix thermal management and make trip points. R/W (Pavel Machek)
16184
16185Fix /proc/acpi/sleep. (P. Christeas)
16186
16187IA64 fixes. (David Mosberger)
16188
16189Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
16190
16191Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16192Brodowski)
16193
16194
161953) iASL Compiler/Disassembler
16196
16197Clarified some warning/error messages.
16198
16199
16200----------------------------------------
1620118 September 2002.  Summary of changes for this release.
16202
16203
162041) ACPI CA Core Subsystem version 20020918:
16205
16206Fixed a reported problem with reference chaining (via the Index()
16207and RefOf() operators) in the ObjectType() and SizeOf() operators.
16208The definition of these operators includes the dereferencing of
16209all chained references to return information on the base object.
16210
16211Fixed a problem with stores to indexed package elements - the
16212existing code would not complete the store if an "implicit
16213conversion" was not performed.  In other words, if the existing
16214object (package element) was to be replaced completely, the code
16215didn't handle this case.
16216
16217Relaxed typechecking on the ASL "Scope" operator to allow the
16218target name to refer to an object of type Integer, String, or
16219Buffer, in addition to the scoping object types (Device,
16220predefined Scopes, Processor, PowerResource, and ThermalZone.)
16221This allows existing AML code that has workarounds for a bug in
16222Windows to function properly.  A warning is issued, however.  This
16223affects both the AML interpreter and the iASL compiler. Below is
16224an example of this type of ASL code:
16225
16226      Name(DEB,0x00)
16227      Scope(DEB)
16228      {
16229
16230Fixed some reported problems with 64-bit integer support in the
16231local implementation of C library functions (clib.c)
16232
16233
162342) Linux
16235
16236Use ACPI fix map region instead of IOAPIC region, since it is
16237undefined in non-SMP.
16238
16239Ensure that the SCI has the proper polarity and trigger, even on
16240systems that do not have an interrupt override entry in the MADT.
16241
162422.5 big driver reorganization (Pat Mochel)
16243
16244Use early table mapping code from acpitable.c (Andi Kleen)
16245
16246New blacklist entries (Andi Kleen)
16247
16248Blacklist improvements. Split blacklist code out into a separate
16249file. Move checking the blacklist to very early. Previously, we
16250would use ACPI tables, and then halfway through init, check the
16251blacklist -- too late. Now, it's early enough to completely fall-
16252back to non-ACPI.
16253
16254
162553) iASL Compiler/Disassembler version 20020918:
16256
16257Fixed a problem where the typechecking code didn't know that an
16258alias could point to a method.  In other words, aliases were not
16259being dereferenced during typechecking.
16260
16261
16262----------------------------------------
1626329 August 2002.  Summary of changes for this release.
16264
162651) ACPI CA Core Subsystem Version 20020829:
16266
16267If the target of a Scope() operator already exists, it must be an
16268object type that actually opens a scope -- such as a Device,
16269Method, Scope, etc.  This is a fatal runtime error.  Similar error
16270check has been added to the iASL compiler also.
16271
16272Tightened up the namespace load to disallow multiple names in the
16273same scope.  This previously was allowed if both objects were of
16274the same type.  (i.e., a lookup was the same as entering a new
16275name).
16276
16277
162782) Linux
16279
16280Ensure that the ACPI interrupt has the proper trigger and
16281polarity.
16282
16283local_irq_disable is extraneous. (Matthew Wilcox)
16284
16285Make "acpi=off" actually do what it says, and not use the ACPI
16286interpreter *or* the tables.
16287
16288Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16289Takayoshi)
16290
16291
162923) iASL Compiler/Disassembler  Version 20020829:
16293
16294Implemented namepath optimization for name declarations.  For
16295example, a declaration like "Method (\_SB_.ABCD)" would get
16296optimized to "Method (ABCD)" if the declaration is within the
16297\_SB_ scope.  This optimization is in addition to the named
16298reference path optimization first released in the previous
16299version. This would seem to complete all possible optimizations
16300for namepaths within the ASL/AML.
16301
16302If the target of a Scope() operator already exists, it must be an
16303object type that actually opens a scope -- such as a Device,
16304Method, Scope, etc.
16305
16306Implemented a check and warning for unreachable code in the same
16307block below a Return() statement.
16308
16309Fixed a problem where the listing file was not generated if the
16310compiler aborted if the maximum error count was exceeded (200).
16311
16312Fixed a problem where the typechecking of method return values was
16313broken.  This includes the check for a return value when the
16314method is invoked as a TermArg (a return value is expected.)
16315
16316Fixed a reported problem where EOF conditions during a quoted
16317string or comment caused a fault.
16318
16319
16320----------------------------------------
1632115 August 2002.  Summary of changes for this release.
16322
163231) ACPI CA Core Subsystem Version 20020815:
16324
16325Fixed a reported problem where a Store to a method argument that
16326contains a reference did not perform the indirect store correctly.
16327This problem was created during the conversion to the new
16328reference object model - the indirect store to a method argument
16329code was not updated to reflect the new model.
16330
16331Reworked the ACPI mode change code to better conform to ACPI 2.0,
16332handle corner cases, and improve code legibility (Kochi Takayoshi)
16333
16334Fixed a problem with the pathname parsing for the carat (^)
16335prefix.  The heavy use of the carat operator by the new namepath
16336optimization in the iASL compiler uncovered a problem with the AML
16337interpreter handling of this prefix.  In the case where one or
16338more carats precede a single nameseg, the nameseg was treated as
16339standalone and the search rule (to root) was inadvertently
16340applied.  This could cause both the iASL compiler and the
16341interpreter to find the wrong object or to miss the error that
16342should occur if the object does not exist at that exact pathname.
16343
16344Found and fixed the problem where the HP Pavilion DSDT would not
16345load.  This was a relatively minor tweak to the table loading code
16346(a problem caused by the unexpected encounter with a method
16347invocation not within a control method), but it does not solve the
16348overall issue of the execution of AML code at the table level.
16349This investigation is still ongoing.
16350
16351Code and Data Size: Current core subsystem library sizes are shown
16352below.  These are the code and data sizes for the acpica.lib
16353produced by the Microsoft Visual C++ 6.0 compiler, and these
16354values do not include any ACPI driver or OSPM code.  The debug
16355version of the code includes the debug output trace mechanism and
16356has a larger code and data size.  Note that these values will vary
16357depending on the efficiency of the compiler and the compiler
16358options used during generation.
16359
16360  Previous Release
16361    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16362    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16363  Current Release:
16364    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16365    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16366
16367
163682) Linux
16369
16370Remove redundant slab.h include (Brad Hards)
16371
16372Fix several bugs in thermal.c (Herbert Nachtnebel)
16373
16374Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16375
16376Change acpi_system_suspend to use updated irq functions (Pavel
16377Machek)
16378
16379Export acpi_get_firmware_table (Matthew Wilcox)
16380
16381Use proper root proc entry for ACPI (Kochi Takayoshi)
16382
16383Fix early-boot table parsing (Bjorn Helgaas)
16384
16385
163863) iASL Compiler/Disassembler
16387
16388Reworked the compiler options to make them more consistent and to
16389use two-letter options where appropriate.  We were running out of
16390sensible letters.   This may break some makefiles, so check the
16391current options list by invoking the compiler with no parameters.
16392
16393Completed the design and implementation of the ASL namepath
16394optimization option for the compiler.  This option optimizes all
16395references to named objects to the shortest possible path.  The
16396first attempt tries to utilize a single nameseg (4 characters) and
16397the "search-to-root" algorithm used by the interpreter.  If that
16398cannot be used (because either the name is not in the search path
16399or there is a conflict with another object with the same name),
16400the pathname is optimized using the carat prefix (usually a
16401shorter string than specifying the entire path from the root.)
16402
16403Implemented support to obtain the DSDT from the Windows registry
16404(when the disassembly option is specified with no input file).
16405Added this code as the implementation for AcpiOsTableOverride in
16406the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16407utility) to scan memory for the DSDT to the AcpiOsTableOverride
16408function in the DOS OSL to make the disassembler truly OS
16409independent.
16410
16411Implemented a new option to disassemble and compile in one step.
16412When used without an input filename, this option will grab the
16413DSDT from the local machine, disassemble it, and compile it in one
16414step.
16415
16416Added a warning message for invalid escapes (a backslash followed
16417by any character other than the allowable escapes).  This catches
16418the quoted string error "\_SB_" (which should be "\\_SB_" ).
16419
16420Also, there are numerous instances in the ACPI specification where
16421this error occurs.
16422
16423Added a compiler option to disable all optimizations.  This is
16424basically the "compatibility mode" because by using this option,
16425the AML code will come out exactly the same as other ASL
16426compilers.
16427
16428Added error messages for incorrectly ordered dependent resource
16429functions.  This includes: missing EndDependentFn macro at end of
16430dependent resource list, nested dependent function macros (both
16431start and end), and missing StartDependentFn macro.  These are
16432common errors that should be caught at compile time.
16433
16434Implemented _OSI support for the disassembler and compiler.  _OSI
16435must be included in the namespace for proper disassembly (because
16436the disassembler must know the number of arguments.)
16437
16438Added an "optimization" message type that is optional (off by
16439default).  This message is used for all optimizations - including
16440constant folding, integer optimization, and namepath optimization.
16441
16442----------------------------------------
1644325 July 2002.  Summary of changes for this release.
16444
16445
164461) ACPI CA Core Subsystem Version 20020725:
16447
16448The AML Disassembler has been enhanced to produce compilable ASL
16449code and has been integrated into the iASL compiler (see below) as
16450well as the single-step disassembly for the AML debugger and the
16451disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16452resource templates and macros are fully supported.  The
16453disassembler has been tested on over 30 different AML files,
16454producing identical AML when the resulting disassembled ASL file
16455is recompiled with the same ASL compiler.
16456
16457Modified the Resource Manager to allow zero interrupts and zero
16458dma channels during the GetCurrentResources call.  This was
16459causing problems on some platforms.
16460
16461Added the AcpiOsRedirectOutput interface to the OSL to simplify
16462output redirection for the AcpiOsPrintf and AcpiOsVprintf
16463interfaces.
16464
16465Code and Data Size: Current core subsystem library sizes are shown
16466below.  These are the code and data sizes for the acpica.lib
16467produced by the Microsoft Visual C++ 6.0 compiler, and these
16468values do not include any ACPI driver or OSPM code.  The debug
16469version of the code includes the debug output trace mechanism and
16470has a larger code and data size.  Note that these values will vary
16471depending on the efficiency of the compiler and the compiler
16472options used during generation.
16473
16474  Previous Release
16475    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16476    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16477  Current Release:
16478    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16479    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16480
16481
164822) Linux
16483
16484Fixed a panic in the EC driver (Dominik Brodowski)
16485
16486Implemented checksum of the R/XSDT itself during Linux table scan
16487(Richard Schaal)
16488
16489
164903) iASL compiler
16491
16492The AML disassembler is integrated into the compiler.  The "-d"
16493option invokes the disassembler  to completely disassemble an
16494input AML file, producing as output a text ASL file with the
16495extension ".dsl" (to avoid name collisions with existing .asl
16496source files.)  A future enhancement will allow the disassembler
16497to obtain the BIOS DSDT from the registry under Windows.
16498
16499Fixed a problem with the VendorShort and VendorLong resource
16500descriptors where an invalid AML sequence was created.
16501
16502Implemented a fix for BufferData term in the ASL parser.  It was
16503inadvertently defined twice, allowing invalid syntax to pass and
16504causing reduction conflicts.
16505
16506Fixed a problem where the Ones opcode could get converted to a
16507value of zero if "Ones" was used where a byte, word or dword value
16508was expected.  The 64-bit value is now truncated to the correct
16509size with the correct value.
16510
16511
16512
16513----------------------------------------
1651402 July 2002.  Summary of changes for this release.
16515
16516
165171) ACPI CA Core Subsystem Version 20020702:
16518
16519The Table Manager code has been restructured to add several new
16520features.  Tables that are not required by the core subsystem
16521(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16522validated in any way and are returned from AcpiGetFirmwareTable if
16523requested.  The AcpiOsTableOverride interface is now called for
16524each table that is loaded by the subsystem in order to allow the
16525host to override any table it chooses.  Previously, only the DSDT
16526could be overridden.  Added one new files, tbrsdt.c and
16527tbgetall.c.
16528
16529Fixed a problem with the conversion of internal package objects to
16530external objects (when a package is returned from a control
16531method.)  The return buffer length was set to zero instead of the
16532proper length of the package object.
16533
16534Fixed a reported problem with the use of the RefOf and DeRefOf
16535operators when passing reference arguments to control methods.  A
16536new type of Reference object is used internally for references
16537produced by the RefOf operator.
16538
16539Added additional error messages in the Resource Manager to explain
16540AE_BAD_DATA errors when they occur during resource parsing.
16541
16542Split the AcpiEnableSubsystem into two primitives to enable a
16543finer granularity initialization sequence.  These two calls should
16544be called in this order: AcpiEnableSubsystem (flags),
16545AcpiInitializeObjects (flags).  The flags parameter remains the
16546same.
16547
16548
165492) Linux
16550
16551Updated the ACPI utilities module to understand the new style of
16552fully resolved package objects that are now returned from the core
16553subsystem.  This eliminates errors of the form:
16554
16555    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16556    acpi_utils-0430 [145] acpi_evaluate_reference:
16557        Invalid element in package (not a device reference)
16558
16559The method evaluation utility uses the new buffer allocation
16560scheme instead of calling AcpiEvaluate Object twice.
16561
16562Added support for ECDT. This allows the use of the Embedded
16563
16564Controller before the namespace has been fully initialized, which
16565is necessary for ACPI 2.0 support, and for some laptops to
16566initialize properly. (Laptops using ECDT are still rare, so only
16567limited testing was performed of the added functionality.)
16568
16569Fixed memory leaks in the EC driver.
16570
16571Eliminated a brittle code structure in acpi_bus_init().
16572
16573Eliminated the acpi_evaluate() helper function in utils.c. It is
16574no longer needed since acpi_evaluate_object can optionally
16575allocate memory for the return object.
16576
16577Implemented fix for keyboard hang when getting battery readings on
16578some systems (Stephen White)
16579
16580PCI IRQ routing update (Dominik Brodowski)
16581
16582Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16583support
16584
16585----------------------------------------
1658611 June 2002.  Summary of changes for this release.
16587
16588
165891) ACPI CA Core Subsystem Version 20020611:
16590
16591Fixed a reported problem where constants such as Zero and One
16592appearing within _PRT packages were not handled correctly within
16593the resource manager code.  Originally reported against the ASL
16594compiler because the code generator now optimizes integers to
16595their minimal AML representation (i.e. AML constants if possible.)
16596The _PRT code now handles all AML constant opcodes correctly
16597(Zero, One, Ones, Revision).
16598
16599Fixed a problem with the Concatenate operator in the AML
16600interpreter where a buffer result object was incorrectly marked as
16601not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16602
16603All package sub-objects are now fully resolved before they are
16604returned from the external ACPI interfaces.  This means that name
16605strings are resolved to object handles, and constant operators
16606(Zero, One, Ones, Revision) are resolved to Integers.
16607
16608Implemented immediate resolution of the AML Constant opcodes
16609(Zero, One, Ones, Revision) to Integer objects upon detection
16610within the AML stream. This has simplified and reduced the
16611generated code size of the subsystem by eliminating about 10
16612switch statements for these constants (which previously were
16613contained in Reference objects.)  The complicating issues are that
16614the Zero opcode is used as a "placeholder" for unspecified
16615optional target operands and stores to constants are defined to be
16616no-ops.
16617
16618Code and Data Size: Current core subsystem library sizes are shown
16619below. These are the code and data sizes for the acpica.lib
16620produced by the Microsoft Visual C++ 6.0 compiler, and these
16621values do not include any ACPI driver or OSPM code.  The debug
16622version of the code includes the debug output trace mechanism and
16623has a larger code and data size.  Note that these values will vary
16624depending on the efficiency of the compiler and the compiler
16625options used during generation.
16626
16627  Previous Release
16628    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16629    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16630  Current Release:
16631    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16632    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16633
16634
166352) Linux
16636
16637
16638Added preliminary support for obtaining _TRA data for PCI root
16639bridges (Bjorn Helgaas).
16640
16641
166423) iASL Compiler Version X2046:
16643
16644Fixed a problem where the "_DDN" reserved name was defined to be a
16645control method with one argument.  There are no arguments, and
16646_DDN does not have to be a control method.
16647
16648Fixed a problem with the Linux version of the compiler where the
16649source lines printed with error messages were the wrong lines.
16650This turned out to be the "LF versus CR/LF" difference between
16651Windows and Unix.  This appears to be the longstanding issue
16652concerning listing output and error messages.
16653
16654Fixed a problem with the Linux version of compiler where opcode
16655names within error messages were wrong.  This was caused by a
16656slight difference in the output of the Flex tool on Linux versus
16657Windows.
16658
16659Fixed a problem with the Linux compiler where the hex output files
16660contained some garbage data caused by an internal buffer overrun.
16661
16662
16663----------------------------------------
1666417 May 2002.  Summary of changes for this release.
16665
16666
166671) ACPI CA Core Subsystem Version 20020517:
16668
16669Implemented a workaround to an BIOS bug discovered on the HP
16670OmniBook where the FADT revision number and the table size are
16671inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16672behavior is to fallback to using only the ACPI 1.0 fields of the
16673FADT if the table is too small to be a ACPI 2.0 table as claimed
16674by the revision number.  Although this is a BIOS bug, this is a
16675case where the workaround is simple enough and with no side
16676effects, so it seemed prudent to add it.  A warning message is
16677issued, however.
16678
16679Implemented minimum size checks for the fixed-length ACPI tables -
16680- the FADT and FACS, as well as consistency checks between the
16681revision number and the table size.
16682
16683Fixed a reported problem in the table override support where the
16684new table pointer was incorrectly treated as a physical address
16685instead of a logical address.
16686
16687Eliminated the use of the AE_AML_ERROR exception and replaced it
16688with more descriptive codes.
16689
16690Fixed a problem where an exception would occur if an ASL Field was
16691defined with no named Field Units underneath it (used by some
16692index fields).
16693
16694Code and Data Size: Current core subsystem library sizes are shown
16695below.  These are the code and data sizes for the acpica.lib
16696produced by the Microsoft Visual C++ 6.0 compiler, and these
16697values do not include any ACPI driver or OSPM code.  The debug
16698version of the code includes the debug output trace mechanism and
16699has a larger code and data size.  Note that these values will vary
16700depending on the efficiency of the compiler and the compiler
16701options used during generation.
16702
16703  Previous Release
16704    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16705    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16706  Current Release:
16707    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16708    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16709
16710
16711
167122) Linux
16713
16714Much work done on ACPI init (MADT and PCI IRQ routing support).
16715(Paul D. and Dominik Brodowski)
16716
16717Fix PCI IRQ-related panic on boot (Sam Revitch)
16718
16719Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16720
16721Fix "MHz" typo (Dominik Brodowski)
16722
16723Fix RTC year 2000 issue (Dominik Brodowski)
16724
16725Preclude multiple button proc entries (Eric Brunet)
16726
16727Moved arch-specific code out of include/platform/aclinux.h
16728
167293) iASL Compiler Version X2044:
16730
16731Implemented error checking for the string used in the EISAID macro
16732(Usually used in the definition of the _HID object.)  The code now
16733strictly enforces the PnP format - exactly 7 characters, 3
16734uppercase letters and 4 hex digits.
16735
16736If a raw string is used in the definition of the _HID object
16737(instead of the EISAID macro), the string must contain all
16738alphanumeric characters (e.g., "*PNP0011" is not allowed because
16739of the asterisk.)
16740
16741Implemented checking for invalid use of ACPI reserved names for
16742most of the name creation operators (Name, Device, Event, Mutex,
16743OperationRegion, PowerResource, Processor, and ThermalZone.)
16744Previously, this check was only performed for control methods.
16745
16746Implemented an additional check on the Name operator to emit an
16747error if a reserved name that must be implemented in ASL as a
16748control method is used.  We know that a reserved name must be a
16749method if it is defined with input arguments.
16750
16751The warning emitted when a namespace object reference is not found
16752during the cross reference phase has been changed into an error.
16753The "External" directive should be used for names defined in other
16754modules.
16755
16756
167574) Tools and Utilities
16758
16759The 16-bit tools (adump16 and aexec16) have been regenerated and
16760tested.
16761
16762Fixed a problem with the output of both acpidump and adump16 where
16763the indentation of closing parentheses and brackets was not
16764
16765aligned properly with the parent block.
16766
16767
16768----------------------------------------
1676903 May 2002.  Summary of changes for this release.
16770
16771
167721) ACPI CA Core Subsystem Version 20020503:
16773
16774Added support a new OSL interface that allows the host operating
16775
16776system software to override the DSDT found in the firmware -
16777AcpiOsTableOverride.  With this interface, the OSL can examine the
16778version of the firmware DSDT and replace it with a different one
16779if desired.
16780
16781Added new external interfaces for accessing ACPI registers from
16782device drivers and other system software - AcpiGetRegister and
16783AcpiSetRegister.  This was simply an externalization of the
16784existing AcpiHwBitRegister interfaces.
16785
16786Fixed a regression introduced in the previous build where the
16787ASL/AML CreateField operator always returned an error,
16788"destination must be a NS Node".
16789
16790Extended the maximum time (before failure) to successfully enable
16791ACPI mode to 3 seconds.
16792
16793Code and Data Size: Current core subsystem library sizes are shown
16794below.  These are the code and data sizes for the acpica.lib
16795produced by the Microsoft Visual C++ 6.0 compiler, and these
16796values do not include any ACPI driver or OSPM code.  The debug
16797version of the code includes the debug output trace mechanism and
16798has a larger code and data size.  Note that these values will vary
16799depending on the efficiency of the compiler and the compiler
16800options used during generation.
16801
16802  Previous Release
16803    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16804    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16805  Current Release:
16806    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16807    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16808
16809
168102) Linux
16811
16812Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16813free. While 3 out of 4 of our in-house systems work fine, the last
16814one still hangs when testing the LAPIC timer.
16815
16816Renamed many files in 2.5 kernel release to omit "acpi_" from the
16817name.
16818
16819Added warning on boot for Presario 711FR.
16820
16821Sleep improvements (Pavel Machek)
16822
16823ACPI can now be built without CONFIG_PCI enabled.
16824
16825IA64: Fixed memory map functions (JI Lee)
16826
16827
168283) iASL Compiler Version X2043:
16829
16830Added support to allow the compiler to be integrated into the MS
16831VC++ development environment for one-button compilation of single
16832files or entire projects -- with error-to-source-line mapping.
16833
16834Implemented support for compile-time constant folding for the
16835Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16836specification.  This allows the ASL writer to use expressions
16837instead of Integer/Buffer/String constants in terms that must
16838evaluate to constants at compile time and will also simplify the
16839emitted AML in any such sub-expressions that can be folded
16840(evaluated at compile-time.)  This increases the size of the
16841compiler significantly because a portion of the ACPI CA AML
16842interpreter is included within the compiler in order to pre-
16843evaluate constant expressions.
16844
16845
16846Fixed a problem with the "Unicode" ASL macro that caused the
16847compiler to fault.  (This macro is used in conjunction with the
16848_STR reserved name.)
16849
16850Implemented an AML opcode optimization to use the Zero, One, and
16851Ones opcodes where possible to further reduce the size of integer
16852constants and thus reduce the overall size of the generated AML
16853code.
16854
16855Implemented error checking for new reserved terms for ACPI version
168562.0A.
16857
16858Implemented the -qr option to display the current list of ACPI
16859reserved names known to the compiler.
16860
16861Implemented the -qc option to display the current list of ASL
16862operators that are allowed within constant expressions and can
16863therefore be folded at compile time if the operands are constants.
16864
16865
168664) Documentation
16867
16868Updated the Programmer's Reference for new interfaces, data types,
16869and memory allocation model options.
16870
16871Updated the iASL Compiler User Reference to apply new format and
16872add information about new features and options.
16873
16874----------------------------------------
1687519 April 2002.  Summary of changes for this release.
16876
168771) ACPI CA Core Subsystem Version 20020419:
16878
16879The source code base for the Core Subsystem has been completely
16880cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16881versions.  The Lint option files used are included in the
16882/acpi/generate/lint directory.
16883
16884Implemented enhanced status/error checking across the entire
16885Hardware manager subsystem.  Any hardware errors (reported from
16886the OSL) are now bubbled up and will abort a running control
16887method.
16888
16889
16890Fixed a problem where the per-ACPI-table integer width (32 or 64)
16891was stored only with control method nodes, causing a fault when
16892non-control method code was executed during table loading.  The
16893solution implemented uses a global variable to indicate table
16894width across the entire ACPI subsystem.  Therefore, ACPI CA does
16895not support mixed integer widths across different ACPI tables
16896(DSDT, SSDT).
16897
16898Fixed a problem where NULL extended fields (X fields) in an ACPI
168992.0 ACPI FADT caused the table load to fail.  Although the
16900existing ACPI specification is a bit fuzzy on this topic, the new
16901behavior is to fall back on a ACPI 1.0 field if the corresponding
16902ACPI 2.0 X field is zero (even though the table revision indicates
16903a full ACPI 2.0 table.)  The ACPI specification will be updated to
16904clarify this issue.
16905
16906Fixed a problem with the SystemMemory operation region handler
16907where memory was always accessed byte-wise even if the AML-
16908specified access width was larger than a byte.  This caused
16909problems on systems with memory-mapped I/O.  Memory is now
16910accessed with the width specified.  On systems that do not support
16911non-aligned transfers, a check is made to guarantee proper address
16912alignment before proceeding in order to avoid an AML-caused
16913alignment fault within the kernel.
16914
16915
16916Fixed a problem with the ExtendedIrq resource where only one byte
16917of the 4-byte Irq field was extracted.
16918
16919Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
16920function was out of date and required a rewrite.
16921
16922Code and Data Size: Current core subsystem library sizes are shown
16923below.  These are the code and data sizes for the acpica.lib
16924produced by the Microsoft Visual C++ 6.0 compiler, and these
16925values do not include any ACPI driver or OSPM code.  The debug
16926version of the code includes the debug output trace mechanism and
16927has a larger code and data size.  Note that these values will vary
16928depending on the efficiency of the compiler and the compiler
16929options used during generation.
16930
16931  Previous Release
16932    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16933    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16934  Current Release:
16935    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16936    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16937
16938
169392) Linux
16940
16941PCI IRQ routing fixes (Dominik Brodowski)
16942
16943
169443) iASL Compiler Version X2042:
16945
16946Implemented an additional compile-time error check for a field
16947unit whose size + minimum access width would cause a run-time
16948access beyond the end-of-region.  Previously, only the field size
16949itself was checked.
16950
16951The Core subsystem and iASL compiler now share a common parse
16952object in preparation for compile-time evaluation of the type
169533/4/5 ASL operators.
16954
16955
16956----------------------------------------
16957Summary of changes for this release: 03_29_02
16958
169591) ACPI CA Core Subsystem Version 20020329:
16960
16961Implemented support for late evaluation of TermArg operands to
16962Buffer and Package objects.  This allows complex expressions to be
16963used in the declarations of these object types.
16964
16965Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
169661.0, if the field was larger than 32 bits, it was returned as a
16967buffer - otherwise it was returned as an integer.  In ACPI 2.0,
16968the field is returned as a buffer only if the field is larger than
1696964 bits.  The TableRevision is now considered when making this
16970conversion to avoid incompatibility with existing ASL code.
16971
16972Implemented logical addressing for AcpiOsGetRootPointer.  This
16973allows an RSDP with either a logical or physical address.  With
16974this support, the host OS can now override all ACPI tables with
16975one logical RSDP.  Includes implementation of  "typed" pointer
16976support to allow a common data type for both physical and logical
16977pointers internally.  This required a change to the
16978AcpiOsGetRootPointer interface.
16979
16980Implemented the use of ACPI 2.0 Generic Address Structures for all
16981GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
16982mapped I/O for these ACPI features.
16983
16984Initialization now ignores not only non-required tables (All
16985tables other than the FADT, FACS, DSDT, and SSDTs), but also does
16986not validate the table headers of unrecognized tables.
16987
16988Fixed a problem where a notify handler could only be
16989installed/removed on an object of type Device.  All "notify"
16990
16991objects are now supported -- Devices, Processor, Power, and
16992Thermal.
16993
16994Removed most verbosity from the ACPI_DB_INFO debug level.  Only
16995critical information is returned when this debug level is enabled.
16996
16997Code and Data Size: Current core subsystem library sizes are shown
16998below.  These are the code and data sizes for the acpica.lib
16999produced by the Microsoft Visual C++ 6.0 compiler, and these
17000values do not include any ACPI driver or OSPM code.  The debug
17001version of the code includes the debug output trace mechanism and
17002has a larger code and data size.  Note that these values will vary
17003depending on the efficiency of the compiler and the compiler
17004options used during generation.
17005
17006  Previous Release
17007    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17008    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17009  Current Release:
17010    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17011    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17012
17013
170142) Linux:
17015
17016The processor driver (acpi_processor.c) now fully supports ACPI
170172.0-based processor performance control (e.g. Intel(R)
17018SpeedStep(TM) technology) Note that older laptops that only have
17019the Intel "applet" interface are not supported through this.  The
17020'limit' and 'performance' interface (/proc) are fully functional.
17021[Note that basic policy for controlling performance state
17022transitions will be included in the next version of ospmd.]  The
17023idle handler was modified to more aggressively use C2, and PIIX4
17024errata handling underwent a complete overhaul (big thanks to
17025Dominik Brodowski).
17026
17027Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17028based devices in the ACPI namespace are now dynamically bound
17029(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17030This allows, among other things, ACPI to resolve bus numbers for
17031subordinate PCI bridges.
17032
17033Enhanced PCI IRQ routing to get the proper bus number for _PRT
17034entries defined underneath PCI bridges.
17035
17036Added IBM 600E to bad bios list due to invalid _ADR value for
17037PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17038
17039In the process of adding full MADT support (e.g. IOAPIC) for IA32
17040(acpi.c, mpparse.c) -- stay tuned.
17041
17042Added back visual differentiation between fixed-feature and
17043control-method buttons in dmesg.  Buttons are also subtyped (e.g.
17044button/power/PWRF) to simplify button identification.
17045
17046We no longer use -Wno-unused when compiling debug. Please ignore
17047any "_THIS_MODULE defined but not used" messages.
17048
17049Can now shut down the system using "magic sysrq" key.
17050
17051
170523) iASL Compiler version 2041:
17053
17054Fixed a problem where conversion errors for hex/octal/decimal
17055constants were not reported.
17056
17057Implemented a fix for the General Register template Address field.
17058This field was 8 bits when it should be 64.
17059
17060Fixed a problem where errors/warnings were no longer being emitted
17061within the listing output file.
17062
17063Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17064exactly 4 characters, alphanumeric only.
17065
17066
17067
17068
17069----------------------------------------
17070Summary of changes for this release: 03_08_02
17071
17072
170731) ACPI CA Core Subsystem Version 20020308:
17074
17075Fixed a problem with AML Fields where the use of the "AccessAny"
17076keyword could cause an interpreter error due to attempting to read
17077or write beyond the end of the parent Operation Region.
17078
17079Fixed a problem in the SystemMemory Operation Region handler where
17080an attempt was made to map memory beyond the end of the region.
17081This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17082errors on some Linux systems.
17083
17084Fixed a problem where the interpreter/namespace "search to root"
17085algorithm was not functioning for some object types.  Relaxed the
17086internal restriction on the search to allow upsearches for all
17087external object types as well as most internal types.
17088
17089
170902) Linux:
17091
17092We now use safe_halt() macro versus individual calls to sti | hlt.
17093
17094Writing to the processor limit interface should now work. "echo 1"
17095will increase the limit, 2 will decrease, and 0 will reset to the
17096
17097default.
17098
17099
171003) ASL compiler:
17101
17102Fixed segfault on Linux version.
17103
17104
17105----------------------------------------
17106Summary of changes for this release: 02_25_02
17107
171081) ACPI CA Core Subsystem:
17109
17110
17111Fixed a problem where the GPE bit masks were not initialized
17112properly, causing erratic GPE behavior.
17113
17114Implemented limited support for multiple calling conventions.  The
17115code can be generated with either the VPL (variable parameter
17116list, or "C") convention, or the FPL (fixed parameter list, or
17117"Pascal") convention.  The core subsystem is about 3.4% smaller
17118when generated with FPL.
17119
17120
171212) Linux
17122
17123Re-add some /proc/acpi/event functionality that was lost during
17124the rewrite
17125
17126Resolved issue with /proc events for fixed-feature buttons showing
17127up as the system device.
17128
17129Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17130
17131Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17132
17133Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17134
17135Fixed limit interface & usage to fix bugs with passive cooling
17136hysterisis.
17137
17138Restructured PRT support.
17139
17140
17141----------------------------------------
17142Summary of changes for this label: 02_14_02
17143
17144
171451) ACPI CA Core Subsystem:
17146
17147Implemented support in AcpiLoadTable to allow loading of FACS and
17148FADT tables.
17149
17150Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17151been removed.  All 64-bit platforms should be migrated to the ACPI
171522.0 tables.  The actbl71.h header has been removed from the source
17153tree.
17154
17155All C macros defined within the subsystem have been prefixed with
17156"ACPI_" to avoid collision with other system include files.
17157
17158Removed the return value for the two AcpiOsPrint interfaces, since
17159it is never used and causes lint warnings for ignoring the return
17160value.
17161
17162Added error checking to all internal mutex acquire and release
17163calls.  Although a failure from one of these interfaces is
17164probably a fatal system error, these checks will cause the
17165immediate abort of the currently executing method or interface.
17166
17167Fixed a problem where the AcpiSetCurrentResources interface could
17168fault.  This was a side effect of the deployment of the new memory
17169allocation model.
17170
17171Fixed a couple of problems with the Global Lock support introduced
17172in the last major build.  The "common" (1.0/2.0) internal FACS was
17173being overwritten with the FACS signature and clobbering the
17174Global Lock pointer.  Also, the actual firmware FACS was being
17175unmapped after construction of the "common" FACS, preventing
17176access to the actual Global Lock field within it.  The "common"
17177internal FACS is no longer installed as an actual ACPI table; it
17178is used simply as a global.
17179
17180Code and Data Size: Current core subsystem library sizes are shown
17181below.  These are the code and data sizes for the acpica.lib
17182produced by the Microsoft Visual C++ 6.0 compiler, and these
17183values do not include any ACPI driver or OSPM code.  The debug
17184version of the code includes the debug output trace mechanism and
17185has a larger code and data size.  Note that these values will vary
17186depending on the efficiency of the compiler and the compiler
17187options used during generation.
17188
17189  Previous Release (02_07_01)
17190    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17191    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17192  Current Release:
17193    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17194    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17195
17196
171972) Linux
17198
17199Updated Linux-specific code for core macro and OSL interface
17200changes described above.
17201
17202Improved /proc/acpi/event. It now can be opened only once and has
17203proper poll functionality.
17204
17205Fixed and restructured power management (acpi_bus).
17206
17207Only create /proc "view by type" when devices of that class exist.
17208
17209Fixed "charging/discharging" bug (and others) in acpi_battery.
17210
17211Improved thermal zone code.
17212
17213
172143) ASL Compiler, version X2039:
17215
17216
17217Implemented the new compiler restriction on ASL String hex/octal
17218escapes to non-null, ASCII values.  An error results if an invalid
17219value is used.  (This will require an ACPI 2.0 specification
17220change.)
17221
17222AML object labels that are output to the optional C and ASM source
17223are now prefixed with both the ACPI table signature and table ID
17224to help guarantee uniqueness within a large BIOS project.
17225
17226
17227----------------------------------------
17228Summary of changes for this label: 02_01_02
17229
172301) ACPI CA Core Subsystem:
17231
17232ACPI 2.0 support is complete in the entire Core Subsystem and the
17233ASL compiler. All new ACPI 2.0 operators are implemented and all
17234other changes for ACPI 2.0 support are complete.  With
17235simultaneous code and data optimizations throughout the subsystem,
17236ACPI 2.0 support has been implemented with almost no additional
17237cost in terms of code and data size.
17238
17239Implemented a new mechanism for allocation of return buffers.  If
17240the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17241be allocated on behalf of the caller.  Consolidated all return
17242buffer validation and allocation to a common procedure.  Return
17243buffers will be allocated via the primary OSL allocation interface
17244since it appears that a separate pool is not needed by most users.
17245If a separate pool is required for these buffers, the caller can
17246still use the original mechanism and pre-allocate the buffer(s).
17247
17248Implemented support for string operands within the DerefOf
17249operator.
17250
17251Restructured the Hardware and Event managers to be table driven,
17252simplifying the source code and reducing the amount of generated
17253code.
17254
17255Split the common read/write low-level ACPI register bitfield
17256procedure into a separate read and write, simplifying the code
17257considerably.
17258
17259Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17260used only a handful of times and didn't have enough critical mass
17261for a separate interface.  Replaced with a common calloc procedure
17262in the core.
17263
17264Fixed a reported problem with the GPE number mapping mechanism
17265that allows GPE1 numbers to be non-contiguous with GPE0.
17266Reorganized the GPE information and shrunk a large array that was
17267originally large enough to hold info for all possible GPEs (256)
17268to simply large enough to hold all GPEs up to the largest GPE
17269number on the machine.
17270
17271Fixed a reported problem with resource structure alignment on 64-
17272bit platforms.
17273
17274Changed the AcpiEnableEvent and AcpiDisableEvent external
17275interfaces to not require any flags for the common case of
17276enabling/disabling a GPE.
17277
17278Implemented support to allow a "Notify" on a Processor object.
17279
17280Most TBDs in comments within the source code have been resolved
17281and eliminated.
17282
17283
17284Fixed a problem in the interpreter where a standalone parent
17285prefix (^) was not handled correctly in the interpreter and
17286debugger.
17287
17288Removed obsolete and unnecessary GPE save/restore code.
17289
17290Implemented Field support in the ASL Load operator.  This allows a
17291table to be loaded from a named field, in addition to loading a
17292table directly from an Operation Region.
17293
17294Implemented timeout and handle support in the external Global Lock
17295interfaces.
17296
17297Fixed a problem in the AcpiDump utility where pathnames were no
17298longer being generated correctly during the dump of named objects.
17299
17300Modified the AML debugger to give a full display of if/while
17301predicates instead of just one AML opcode at a time.  (The
17302predicate can have several nested ASL statements.)  The old method
17303was confusing during single stepping.
17304
17305Code and Data Size: Current core subsystem library sizes are shown
17306below. These are the code and data sizes for the acpica.lib
17307produced by the Microsoft Visual C++ 6.0 compiler, and these
17308values do not include any ACPI driver or OSPM code.  The debug
17309version of the code includes the debug output trace mechanism and
17310has a larger code and data size.  Note that these values will vary
17311depending on the efficiency of the compiler and the compiler
17312options used during generation.
17313
17314  Previous Release (12_18_01)
17315     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17316     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17317   Current Release:
17318     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17319     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17320
173212) Linux
17322
17323 Implemented fix for PIIX reverse throttling errata (Processor
17324driver)
17325
17326Added new Limit interface (Processor and Thermal drivers)
17327
17328New thermal policy (Thermal driver)
17329
17330Many updates to /proc
17331
17332Battery "low" event support (Battery driver)
17333
17334Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17335
17336IA32 - IA64 initialization unification, no longer experimental
17337
17338Menuconfig options redesigned
17339
173403) ASL Compiler, version X2037:
17341
17342Implemented several new output features to simplify integration of
17343AML code into  firmware: 1) Output the AML in C source code with
17344labels for each named ASL object.  The    original ASL source code
17345is interleaved as C comments. 2) Output the AML in ASM source code
17346with labels and interleaved ASL    source. 3) Output the AML in
17347raw hex table form, in either C or ASM.
17348
17349Implemented support for optional string parameters to the
17350LoadTable operator.
17351
17352Completed support for embedded escape sequences within string
17353literals.  The compiler now supports all single character escapes
17354as well as the Octal and Hex escapes.  Note: the insertion of a
17355null byte into a string literal (via the hex/octal escape) causes
17356the string to be immediately terminated.  A warning is issued.
17357
17358Fixed a problem where incorrect AML was generated for the case
17359where an ASL namepath consists of a single parent prefix (
17360
17361) with no trailing name segments.
17362
17363The compiler has been successfully generated with a 64-bit C
17364compiler.
17365
17366
17367
17368
17369----------------------------------------
17370Summary of changes for this label: 12_18_01
17371
173721) Linux
17373
17374Enhanced blacklist with reason and severity fields. Any table's
17375signature may now be used to identify a blacklisted system.
17376
17377Call _PIC control method to inform the firmware which interrupt
17378model the OS is using. Turn on any disabled link devices.
17379
17380Cleaned up busmgr /proc error handling (Andreas Dilger)
17381
17382 2) ACPI CA Core Subsystem:
17383
17384Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17385while loop)
17386
17387Completed implementation of the ACPI 2.0 "Continue",
17388"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17389operators.  All new ACPI 2.0 operators are now implemented in both
17390the ASL compiler and the AML interpreter.  The only remaining ACPI
173912.0 task is support for the String data type in the DerefOf
17392operator.  Fixed a problem with AcquireMutex where the status code
17393was lost if the caller had to actually wait for the mutex.
17394
17395Increased the maximum ASL Field size from 64K bits to 4G bits.
17396
17397Completed implementation of the external Global Lock interfaces --
17398AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17399Handler parameters were added.
17400
17401Completed another pass at removing warnings and issues when
17402compiling with 64-bit compilers.  The code now compiles cleanly
17403with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17404add and subtract (diff) macros have changed considerably.
17405
17406
17407Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1740864-bit platforms, 32-bits on all others.  This type is used
17409wherever memory allocation and/or the C sizeof() operator is used,
17410and affects the OSL memory allocation interfaces AcpiOsAllocate
17411and AcpiOsCallocate.
17412
17413Implemented sticky user breakpoints in the AML debugger.
17414
17415Code and Data Size: Current core subsystem library sizes are shown
17416below. These are the code and data sizes for the acpica.lib
17417produced by the Microsoft Visual C++ 6.0 compiler, and these
17418values do not include any ACPI driver or OSPM code.  The debug
17419version of the code includes the debug output trace mechanism and
17420has a larger code and data size. Note that these values will vary
17421depending on the efficiency of the compiler and the compiler
17422options used during generation.
17423
17424  Previous Release (12_05_01)
17425     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17426     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17427   Current Release:
17428     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17429     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17430
17431 3) ASL Compiler, version X2034:
17432
17433Now checks for (and generates an error if detected) the use of a
17434Break or Continue statement without an enclosing While statement.
17435
17436
17437Successfully generated the compiler with the Intel 64-bit C
17438compiler.
17439
17440 ----------------------------------------
17441Summary of changes for this label: 12_05_01
17442
17443 1) ACPI CA Core Subsystem:
17444
17445The ACPI 2.0 CopyObject operator is fully implemented.  This
17446operator creates a new copy of an object (and is also used to
17447bypass the "implicit conversion" mechanism of the Store operator.)
17448
17449The ACPI 2.0 semantics for the SizeOf operator are fully
17450implemented.  The change is that performing a SizeOf on a
17451reference object causes an automatic dereference of the object to
17452tha actual value before the size is evaluated. This behavior was
17453undefined in ACPI 1.0.
17454
17455The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17456have been implemented.  The interrupt polarity and mode are now
17457independently set.
17458
17459Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17460appearing in Package objects were not properly converted to
17461integers when the internal Package was converted to an external
17462object (via the AcpiEvaluateObject interface.)
17463
17464Fixed a problem with the namespace object deletion mechanism for
17465objects created by control methods.  There were two parts to this
17466problem: 1) Objects created during the initialization phase method
17467parse were not being deleted, and 2) The object owner ID mechanism
17468to track objects was broken.
17469
17470Fixed a problem where the use of the ASL Scope operator within a
17471control method would result in an invalid opcode exception.
17472
17473Fixed a problem introduced in the previous label where the buffer
17474length required for the _PRT structure was not being returned
17475correctly.
17476
17477Code and Data Size: Current core subsystem library sizes are shown
17478below. These are the code and data sizes for the acpica.lib
17479produced by the Microsoft Visual C++ 6.0 compiler, and these
17480values do not include any ACPI driver or OSPM code.  The debug
17481version of the code includes the debug output trace mechanism and
17482has a larger code and data size.  Note that these values will vary
17483depending on the efficiency of the compiler and the compiler
17484options used during generation.
17485
17486  Previous Release (11_20_01)
17487     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17488     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17489
17490  Current Release:
17491     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17492     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17493
17494 2) Linux:
17495
17496Updated all files to apply cleanly against 2.4.16.
17497
17498Added basic PCI Interrupt Routing Table (PRT) support for IA32
17499(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17500version supports both static and dynamic PRT entries, but dynamic
17501entries are treated as if they were static (not yet
17502reconfigurable).  Architecture- specific code to use this data is
17503absent on IA32 but should be available shortly.
17504
17505Changed the initialization sequence to start the ACPI interpreter
17506(acpi_init) prior to initialization of the PCI driver (pci_init)
17507in init/main.c.  This ordering is required to support PRT and
17508facilitate other (future) enhancement.  A side effect is that the
17509ACPI bus driver and certain device drivers can no longer be loaded
17510as modules.
17511
17512Modified the 'make menuconfig' options to allow PCI Interrupt
17513Routing support to be included without the ACPI Bus and other
17514device drivers.
17515
17516 3) ASL Compiler, version X2033:
17517
17518Fixed some issues with the use of the new CopyObject and
17519DataTableRegion operators.  Both are fully functional.
17520
17521 ----------------------------------------
17522Summary of changes for this label: 11_20_01
17523
17524 20 November 2001.  Summary of changes for this release.
17525
17526 1) ACPI CA Core Subsystem:
17527
17528Updated Index support to match ACPI 2.0 semantics.  Storing a
17529Integer, String, or Buffer to an Index of a Buffer will store only
17530the least-significant byte of the source to the Indexed buffer
17531byte.  Multiple writes are not performed.
17532
17533Fixed a problem where the access type used in an AccessAs ASL
17534operator was not recorded correctly into the field object.
17535
17536Fixed a problem where ASL Event objects were created in a
17537signalled state. Events are now created in an unsignalled state.
17538
17539The internal object cache is now purged after table loading and
17540initialization to reduce the use of dynamic kernel memory -- on
17541the assumption that object use is greatest during the parse phase
17542of the entire table (versus the run-time use of individual control
17543methods.)
17544
17545ACPI 2.0 variable-length packages are now fully operational.
17546
17547Code and Data Size: Code and Data optimizations have permitted new
17548feature development with an actual reduction in the library size.
17549Current core subsystem library sizes are shown below.  These are
17550the code and data sizes for the acpica.lib produced by the
17551Microsoft Visual C++ 6.0 compiler, and these values do not include
17552any ACPI driver or OSPM code.  The debug version of the code
17553includes the debug output trace mechanism and has a larger code
17554and data size.  Note that these values will vary depending on the
17555efficiency of the compiler and the compiler options used during
17556generation.
17557
17558  Previous Release (11_09_01):
17559     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17560     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17561
17562  Current Release:
17563     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17564     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17565
17566 2) Linux:
17567
17568Enhanced the ACPI boot-time initialization code to allow the use
17569of Local APIC tables for processor enumeration on IA-32, and to
17570pave the way for a fully MPS-free boot (on SMP systems) in the
17571near future.  This functionality replaces
17572arch/i386/kernel/acpitables.c, which was introduced in an earlier
175732.4.15-preX release.  To enable this feature you must add
17574"acpi_boot=on" to the kernel command line -- see the help entry
17575for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17576the works...
17577
17578Restructured the configuration options to allow boot-time table
17579parsing support without inclusion of the ACPI Interpreter (and
17580other) code.
17581
17582NOTE: This release does not include fixes for the reported events,
17583power-down, and thermal passive cooling issues (coming soon).
17584
17585 3) ASL Compiler:
17586
17587Added additional typechecking for Fields within restricted access
17588Operation Regions.  All fields within EC and CMOS regions must be
17589declared with ByteAcc. All fields within SMBus regions must be
17590declared with the BufferAcc access type.
17591
17592Fixed a problem where the listing file output of control methods
17593no longer interleaved the actual AML code with the ASL source
17594code.
17595
17596
17597
17598
17599----------------------------------------
17600Summary of changes for this label: 11_09_01
17601
176021) ACPI CA Core Subsystem:
17603
17604Implemented ACPI 2.0-defined support for writes to fields with a
17605Buffer, String, or Integer source operand that is smaller than the
17606target field. In these cases, the source operand is zero-extended
17607to fill the target field.
17608
17609Fixed a problem where a Field starting bit offset (within the
17610parent operation region) was calculated incorrectly if the
17611
17612alignment of the field differed from the access width.  This
17613affected CreateWordField, CreateDwordField, CreateQwordField, and
17614possibly other fields that use the "AccessAny" keyword.
17615
17616Fixed a problem introduced in the 11_02_01 release where indirect
17617stores through method arguments did not operate correctly.
17618
176192) Linux:
17620
17621Implemented boot-time ACPI table parsing support
17622(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17623facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17624legacy BIOS interfaces (e.g. MPS) for the configuration of system
17625processors, memory, and interrupts during setup_arch().  Note that
17626this patch does not include the required architecture-specific
17627changes required to apply this information -- subsequent patches
17628will be posted for both IA32 and IA64 to achieve this.
17629
17630Added low-level sleep support for IA32 platforms, courtesy of Pat
17631Mochel. This allows IA32 systems to transition to/from various
17632sleeping states (e.g. S1, S3), although the lack of a centralized
17633driver model and power-manageable drivers will prevent its
17634(successful) use on most systems.
17635
17636Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17637submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17638tables" option, etc.
17639
17640Increased the default timeout for the EC driver from 1ms to 10ms
17641(1000 cycles of 10us) to try to address AE_TIME errors during EC
17642transactions.
17643
17644 ----------------------------------------
17645Summary of changes for this label: 11_02_01
17646
176471) ACPI CA Core Subsystem:
17648
17649ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17650(QWordAcc keyword). All ACPI 2.0 64-bit support is now
17651implemented.
17652
17653OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17654changes to support ACPI 2.0 Qword field access.  Read/Write
17655PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17656accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17657the value parameter for the address space handler interface is now
17658an ACPI_INTEGER.  OSL implementations of these interfaces must now
17659handle the case where the Width parameter is 64.
17660
17661Index Fields: Fixed a problem where unaligned bit assembly and
17662disassembly for IndexFields was not supported correctly.
17663
17664Index and Bank Fields:  Nested Index and Bank Fields are now
17665supported. During field access, a check is performed to ensure
17666that the value written to an Index or Bank register is not out of
17667the range of the register.  The Index (or Bank) register is
17668written before each access to the field data. Future support will
17669include allowing individual IndexFields to be wider than the
17670DataRegister width.
17671
17672Fields: Fixed a problem where the AML interpreter was incorrectly
17673attempting to write beyond the end of a Field/OpRegion.  This was
17674a boundary case that occurred when a DWORD field was written to a
17675BYTE access OpRegion, forcing multiple writes and causing the
17676interpreter to write one datum too many.
17677
17678Fields: Fixed a problem with Field/OpRegion access where the
17679starting bit address of a field was incorrectly calculated if the
17680current access type was wider than a byte (WordAcc, DwordAcc, or
17681QwordAcc).
17682
17683Fields: Fixed a problem where forward references to individual
17684FieldUnits (individual Field names within a Field definition) were
17685not resolved during the AML table load.
17686
17687Fields: Fixed a problem where forward references from a Field
17688definition to the parent Operation Region definition were not
17689resolved during the AML table load.
17690
17691Fields: Duplicate FieldUnit names within a scope are now detected
17692during AML table load.
17693
17694Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17695returned an incorrect name for the root node.
17696
17697Code and Data Size: Code and Data optimizations have permitted new
17698feature development with an actual reduction in the library size.
17699Current core subsystem library sizes are shown below.  These are
17700the code and data sizes for the acpica.lib produced by the
17701Microsoft Visual C++ 6.0 compiler, and these values do not include
17702any ACPI driver or OSPM code.  The debug version of the code
17703includes the debug output trace mechanism and has a larger code
17704and data size.  Note that these values will vary depending on the
17705efficiency of the compiler and the compiler options used during
17706generation.
17707
17708  Previous Release (10_18_01):
17709     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17710     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17711
17712  Current Release:
17713     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17714     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17715
17716 2) Linux:
17717
17718Improved /proc processor output (Pavel Machek) Re-added
17719MODULE_LICENSE("GPL") to all modules.
17720
17721 3) ASL Compiler version X2030:
17722
17723Duplicate FieldUnit names within a scope are now detected and
17724flagged as errors.
17725
17726 4) Documentation:
17727
17728Programmer Reference updated to reflect OSL and address space
17729handler interface changes described above.
17730
17731----------------------------------------
17732Summary of changes for this label: 10_18_01
17733
17734ACPI CA Core Subsystem:
17735
17736Fixed a problem with the internal object reference count mechanism
17737that occasionally caused premature object deletion. This resolves
17738all of the outstanding problem reports where an object is deleted
17739in the middle of an interpreter evaluation.  Although this problem
17740only showed up in rather obscure cases, the solution to the
17741problem involved an adjustment of all reference counts involving
17742objects attached to namespace nodes.
17743
17744Fixed a problem with Field support in the interpreter where
17745writing to an aligned field whose length is an exact multiple (2
17746or greater) of the field access granularity would cause an attempt
17747to write beyond the end of the field.
17748
17749The top level AML opcode execution functions within the
17750interpreter have been renamed with a more meaningful and
17751consistent naming convention.  The modules exmonad.c and
17752exdyadic.c were eliminated.  New modules are exoparg1.c,
17753exoparg2.c, exoparg3.c, and exoparg6.c.
17754
17755Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17756
17757Fixed a problem where the AML debugger was causing some internal
17758objects to not be deleted during subsystem termination.
17759
17760Fixed a problem with the external AcpiEvaluateObject interface
17761where the subsystem would fault if the named object to be
17762evaluated referred to a constant such as Zero, Ones, etc.
17763
17764Fixed a problem with IndexFields and BankFields where the
17765subsystem would fault if the index, data, or bank registers were
17766not defined in the same scope as the field itself.
17767
17768Added printf format string checking for compilers that support
17769this feature.  Corrected more than 50 instances of issues with
17770format specifiers within invocations of ACPI_DEBUG_PRINT
17771throughout the core subsystem code.
17772
17773The ASL "Revision" operator now returns the ACPI support level
17774implemented in the core - the value "2" since the ACPI 2.0 support
17775is more than 50% implemented.
17776
17777Enhanced the output of the AML debugger "dump namespace" command
17778to output in a more human-readable form.
17779
17780Current core subsystem library code sizes are shown below.  These
17781
17782are the code and data sizes for the acpica.lib produced by the
17783Microsoft Visual C++ 6.0 compiler, and these values do not include
17784any ACPI driver or OSPM code.  The debug version of the code
17785includes the full debug trace mechanism -- leading to a much
17786
17787larger code and data size.  Note that these values will vary
17788depending on the efficiency of the compiler and the compiler
17789options used during generation.
17790
17791     Previous Label (09_20_01):
17792     Non-Debug Version:    65K Code,     5K Data,     70K Total
17793     Debug Version:       138K Code,    58K Data,    196K Total
17794
17795     This Label:
17796
17797     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17798     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17799
17800Linux:
17801
17802Implemented a "Bad BIOS Blacklist" to track machines that have
17803known ASL/AML problems.
17804
17805Enhanced the /proc interface for the thermal zone driver and added
17806support for _HOT (the critical suspend trip point).  The 'info'
17807file now includes threshold/policy information, and allows setting
17808of _SCP (cooling preference) and _TZP (polling frequency) values
17809to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17810frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17811preference to the passive/quiet mode (if supported by the ASL).
17812
17813Implemented a workaround for a gcc bug that resuted in an OOPs
17814when loading the control method battery driver.
17815
17816 ----------------------------------------
17817Summary of changes for this label: 09_20_01
17818
17819 ACPI CA Core Subsystem:
17820
17821The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17822modified to allow individual GPE levels to be flagged as wake-
17823enabled (i.e., these GPEs are to remain enabled when the platform
17824sleeps.)
17825
17826The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17827support wake-enabled GPEs.  This means that upon entering the
17828sleep state, all GPEs that are not wake-enabled are disabled.
17829When leaving the sleep state, these GPEs are re-enabled.
17830
17831A local double-precision divide/modulo module has been added to
17832enhance portability to OS kernels where a 64-bit math library is
17833not available.  The new module is "utmath.c".
17834
17835Several optimizations have been made to reduce the use of CPU
17836stack.  Originally over 2K, the maximum stack usage is now below
178372K at 1860  bytes (1.82k)
17838
17839Fixed a problem with the AcpiGetFirmwareTable interface where the
17840root table pointer was not mapped into a logical address properly.
17841
17842Fixed a problem where a NULL pointer was being dereferenced in the
17843interpreter code for the ASL Notify operator.
17844
17845Fixed a problem where the use of the ASL Revision operator
17846returned an error. This operator now returns the current version
17847of the ACPI CA core subsystem.
17848
17849Fixed a problem where objects passed as control method parameters
17850to AcpiEvaluateObject were always deleted at method termination.
17851However, these objects may end up being stored into the namespace
17852by the called method.  The object reference count mechanism was
17853applied to these objects instead of a force delete.
17854
17855Fixed a problem where static strings or buffers (contained in the
17856AML code) that are declared as package elements within the ASL
17857code could cause a fault because the interpreter would attempt to
17858delete them.  These objects are now marked with the "static
17859object" flag to prevent any attempt to delete them.
17860
17861Implemented an interpreter optimization to use operands directly
17862from the state object instead of extracting the operands to local
17863variables.  This reduces stack use and code size, and improves
17864performance.
17865
17866The module exxface.c was eliminated as it was an unnecessary extra
17867layer of code.
17868
17869Current core subsystem library code sizes are shown below.  These
17870are the code and data sizes for the acpica.lib produced by the
17871Microsoft Visual C++ 6.0 compiler, and these values do not include
17872any ACPI driver or OSPM code.  The debug version of the code
17873includes the full debug trace mechanism -- leading to a much
17874larger code and data size.  Note that these values will vary
17875depending on the efficiency of the compiler and the compiler
17876options used during generation.
17877
17878  Non-Debug Version:  65K Code,   5K Data,   70K Total
17879(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
17880Total  (Previously 195K)
17881
17882Linux:
17883
17884Support for ACPI 2.0 64-bit integers has been added.   All ACPI
17885Integer objects are now 64 bits wide
17886
17887All Acpi data types and structures are now in lower case.  Only
17888Acpi macros are upper case for differentiation.
17889
17890 Documentation:
17891
17892Changes to the external interfaces as described above.
17893
17894 ----------------------------------------
17895Summary of changes for this label: 08_31_01
17896
17897 ACPI CA Core Subsystem:
17898
17899A bug with interpreter implementation of the ASL Divide operator
17900was found and fixed.  The implicit function return value (not the
17901explicit store operands) was returning the remainder instead of
17902the quotient.  This was a longstanding bug and it fixes several
17903known outstanding issues on various platforms.
17904
17905The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17906been further optimized for size.  There are 700 invocations of the
17907DEBUG_PRINT macro alone, so each optimization reduces the size of
17908the debug version of the subsystem significantly.
17909
17910A stack trace mechanism has been implemented.  The maximum stack
17911usage is about 2K on 32-bit platforms.  The debugger command "stat
17912stack" will display the current maximum stack usage.
17913
17914All public symbols and global variables within the subsystem are
17915now prefixed with the string "Acpi".  This keeps all of the
17916symbols grouped together in a kernel map, and avoids conflicts
17917with other kernel subsystems.
17918
17919Most of the internal fixed lookup tables have been moved into the
17920code segment via the const operator.
17921
17922Several enhancements have been made to the interpreter to both
17923reduce the code size and improve performance.
17924
17925Current core subsystem library code sizes are shown below.  These
17926are the code and data sizes for the acpica.lib produced by the
17927Microsoft Visual C++ 6.0 compiler, and these values do not include
17928any ACPI driver or OSPM code.  The debug version of the code
17929includes the full debug trace mechanism which contains over 700
17930invocations of the DEBUG_PRINT macro, 500 function entry macro
17931invocations, and over 900 function exit macro invocations --
17932leading to a much larger code and data size.  Note that these
17933values will vary depending on the efficiency of the compiler and
17934the compiler options used during generation.
17935
17936        Non-Debug Version:  64K Code,   5K Data,   69K Total
17937Debug Version:     137K Code,  58K Data,  195K Total
17938
17939 Linux:
17940
17941Implemented wbinvd() macro, pending a kernel-wide definition.
17942
17943Fixed /proc/acpi/event to handle poll() and short reads.
17944
17945 ASL Compiler, version X2026:
17946
17947Fixed a problem introduced in the previous label where the AML
17948
17949code emitted for package objects produced packages with zero
17950length.
17951
17952 ----------------------------------------
17953Summary of changes for this label: 08_16_01
17954
17955ACPI CA Core Subsystem:
17956
17957The following ACPI 2.0 ASL operators have been implemented in the
17958AML interpreter (These are already supported by the Intel ASL
17959compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
17960ToBuffer.  Support for 64-bit AML constants is implemented in the
17961AML parser, debugger, and disassembler.
17962
17963The internal memory tracking mechanism (leak detection code) has
17964been upgraded to reduce the memory overhead (a separate tracking
17965block is no longer allocated for each memory allocation), and now
17966supports all of the internal object caches.
17967
17968The data structures and code for the internal object caches have
17969been coelesced and optimized so that there is a single cache and
17970memory list data structure and a single group of functions that
17971implement generic cache management.  This has reduced the code
17972size in both the debug and release versions of the subsystem.
17973
17974The DEBUG_PRINT macro(s) have been optimized for size and replaced
17975by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
17976different, because it generates a single call to an internal
17977function.  This results in a savings of about 90 bytes per
17978invocation, resulting in an overall code and data savings of about
1797916% in the debug version of the subsystem.
17980
17981 Linux:
17982
17983Fixed C3 disk corruption problems and re-enabled C3 on supporting
17984machines.
17985
17986Integrated low-level sleep code by Patrick Mochel.
17987
17988Further tweaked source code Linuxization.
17989
17990Other minor fixes.
17991
17992 ASL Compiler:
17993
17994Support for ACPI 2.0 variable length packages is fixed/completed.
17995
17996Fixed a problem where the optional length parameter for the ACPI
179972.0 ToString operator.
17998
17999Fixed multiple extraneous error messages when a syntax error is
18000detected within the declaration line of a control method.
18001
18002 ----------------------------------------
18003Summary of changes for this label: 07_17_01
18004
18005ACPI CA Core Subsystem:
18006
18007Added a new interface named AcpiGetFirmwareTable to obtain any
18008ACPI table via the ACPI signature.  The interface can be called at
18009any time during kernel initialization, even before the kernel
18010virtual memory manager is initialized and paging is enabled.  This
18011allows kernel subsystems to obtain ACPI tables very early, even
18012before the ACPI CA subsystem is initialized.
18013
18014Fixed a problem where Fields defined with the AnyAcc attribute
18015could be resolved to the incorrect address under the following
18016conditions: 1) the field width is larger than 8 bits and 2) the
18017parent operation region is not defined on a DWORD boundary.
18018
18019Fixed a problem where the interpreter is not being locked during
18020namespace initialization (during execution of the _INI control
18021methods), causing an error when an attempt is made to release it
18022later.
18023
18024ACPI 2.0 support in the AML Interpreter has begun and will be
18025ongoing throughout the rest of this year.  In this label, The Mod
18026operator is implemented.
18027
18028Added a new data type to contain full PCI addresses named
18029ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18030and Function values.
18031
18032 Linux:
18033
18034Enhanced the Linux version of the source code to change most
18035capitalized ACPI type names to lowercase. For example, all
18036instances of ACPI_STATUS are changed to acpi_status.  This will
18037result in a large diff, but the change is strictly cosmetic and
18038aligns the CA code closer to the Linux coding standard.
18039
18040OSL Interfaces:
18041
18042The interfaces to the PCI configuration space have been changed to
18043add the PCI Segment number and to split the single 32-bit combined
18044DeviceFunction field into two 16-bit fields.  This was
18045accomplished by moving the four values that define an address in
18046PCI configuration space (segment, bus, device, and function) to
18047the new ACPI_PCI_ID structure.
18048
18049The changes to the PCI configuration space interfaces led to a
18050reexamination of the complete set of address space access
18051interfaces for PCI, I/O, and Memory.  The previously existing 18
18052interfaces have proven difficult to maintain (any small change
18053must be propagated across at least 6 interfaces) and do not easily
18054allow for future expansion to 64 bits if necessary.  Also, on some
18055systems, it would not be appropriate to demultiplex the access
18056width (8, 16, 32,or 64) before calling the OSL if the
18057corresponding native OS interfaces contain a similar access width
18058parameter.  For these reasons, the 18 address space interfaces
18059have been replaced by these 6 new ones:
18060
18061AcpiOsReadPciConfiguration
18062AcpiOsWritePciConfiguration
18063AcpiOsReadMemory
18064AcpiOsWriteMemory
18065AcpiOsReadPort
18066AcpiOsWritePort
18067
18068Added a new interface named AcpiOsGetRootPointer to allow the OSL
18069to perform the platform and/or OS-specific actions necessary to
18070obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
18071interface will simply call down to the CA core to perform the low-
18072memory search for the table.  On IA-64, the RSDP is obtained from
18073EFI.  Migrating this interface to the OSL allows the CA core to
18074
18075remain OS and platform independent.
18076
18077Added a new interface named AcpiOsSignal to provide a generic
18078"function code and pointer" interface for various miscellaneous
18079signals and notifications that must be made to the host OS.   The
18080first such signals are intended to support the ASL Fatal and
18081Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
18082interface has been obsoleted.
18083
18084The definition of the AcpiFormatException interface has been
18085changed to simplify its use.  The caller no longer must supply a
18086buffer to the call; A pointer to a const string is now returned
18087directly.  This allows the call to be easily used in printf
18088statements, etc. since the caller does not have to manage a local
18089buffer.
18090
18091
18092 ASL Compiler, Version X2025:
18093
18094The ACPI 2.0 Switch/Case/Default operators have been implemented
18095and are fully functional.  They will work with all ACPI 1.0
18096interpreters, since the operators are simply translated to If/Else
18097pairs.
18098
18099The ACPI 2.0 ElseIf operator is implemented and will also work
18100with 1.0 interpreters, for the same reason.
18101
18102Implemented support for ACPI 2.0 variable-length packages.  These
18103packages have a separate opcode, and their size is determined by
18104the interpreter at run-time.
18105
18106Documentation The ACPI CA Programmer Reference has been updated to
18107reflect the new interfaces and changes to existing interfaces.
18108
18109 ------------------------------------------
18110Summary of changes for this label: 06_15_01
18111
18112 ACPI CA Core Subsystem:
18113
18114Fixed a problem where a DWORD-accessed field within a Buffer
18115object would get its byte address inadvertently rounded down to
18116the nearest DWORD.  Buffers are always Byte-accessible.
18117
18118 ASL Compiler, version X2024:
18119
18120Fixed a problem where the Switch() operator would either fault or
18121hang the compiler.  Note however, that the AML code for this ACPI
181222.0 operator is not yet implemented.
18123
18124Compiler uses the new AcpiOsGetTimer interface to obtain compile
18125timings.
18126
18127Implementation of the CreateField operator automatically converts
18128a reference to a named field within a resource descriptor from a
18129byte offset to a bit offset if required.
18130
18131Added some missing named fields from the resource descriptor
18132support. These are the names that are automatically created by the
18133compiler to reference fields within a descriptor.  They are only
18134valid at compile time and are not passed through to the AML
18135interpreter.
18136
18137Resource descriptor named fields are now typed as Integers and
18138subject to compile-time typechecking when used in expressions.
18139
18140 ------------------------------------------
18141Summary of changes for this label: 05_18_01
18142
18143 ACPI CA Core Subsystem:
18144
18145Fixed a couple of problems in the Field support code where bits
18146from adjacent fields could be returned along with the proper field
18147bits. Restructured the field support code to improve performance,
18148readability and maintainability.
18149
18150New DEBUG_PRINTP macro automatically inserts the procedure name
18151into the output, saving hundreds of copies of procedure name
18152strings within the source, shrinking the memory footprint of the
18153debug version of the core subsystem.
18154
18155 Source Code Structure:
18156
18157The source code directory tree was restructured to reflect the
18158current organization of the component architecture.  Some files
18159and directories have been moved and/or renamed.
18160
18161 Linux:
18162
18163Fixed leaking kacpidpc processes.
18164
18165Fixed queueing event data even when /proc/acpi/event is not
18166opened.
18167
18168 ASL Compiler, version X2020:
18169
18170Memory allocation performance enhancement - over 24X compile time
18171improvement on large ASL files.  Parse nodes and namestring
18172buffers are now allocated from a large internal compiler buffer.
18173
18174The temporary .SRC file is deleted unless the "-s" option is
18175specified
18176
18177The "-d" debug output option now sends all output to the .DBG file
18178instead of the console.
18179
18180"External" second parameter is now optional
18181
18182"ElseIf" syntax now properly allows the predicate
18183
18184Last operand to "Load" now recognized as a Target operand
18185
18186Debug object can now be used anywhere as a normal object.
18187
18188ResourceTemplate now returns an object of type BUFFER
18189
18190EISAID now returns an object of type INTEGER
18191
18192"Index" now works with a STRING operand
18193
18194"LoadTable" now accepts optional parameters
18195
18196"ToString" length parameter is now optional
18197
18198"Interrupt (ResourceType," parse error fixed.
18199
18200"Register" with a user-defined region space parse error fixed
18201
18202Escaped backslash at the end of a string ("\\") scan/parse error
18203fixed
18204
18205"Revision" is now an object of type INTEGER.
18206
18207
18208
18209------------------------------------------
18210Summary of changes for this label: 05_02_01
18211
18212Linux:
18213
18214/proc/acpi/event now blocks properly.
18215
18216Removed /proc/sys/acpi. You can still dump your DSDT from
18217/proc/acpi/dsdt.
18218
18219 ACPI CA Core Subsystem:
18220
18221Fixed a problem introduced in the previous label where some of the
18222"small" resource descriptor types were not recognized.
18223
18224Improved error messages for the case where an ASL Field is outside
18225the range of the parent operation region.
18226
18227 ASL Compiler, version X2018:
18228
18229
18230Added error detection for ASL Fields that extend beyond the length
18231of the parent operation region (only if the length of the region
18232is known at compile time.)  This includes fields that have a
18233minimum access width that is smaller than the parent region, and
18234individual field units that are partially or entirely beyond the
18235extent of the parent.
18236
18237
18238
18239------------------------------------------
18240Summary of changes for this label: 04_27_01
18241
18242 ACPI CA Core Subsystem:
18243
18244Fixed a problem where the namespace mutex could be released at the
18245wrong time during execution of AcpiRemoveAddressSpaceHandler.
18246
18247Added optional thread ID output for debug traces, to simplify
18248debugging of multiple threads.  Added context switch notification
18249when the debug code realizes that a different thread is now
18250executing ACPI code.
18251
18252Some additional external data types have been prefixed with the
18253string "ACPI_" for consistency.  This may effect existing code.
18254The data types affected are the external callback typedefs - e.g.,
18255
18256WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18257
18258 Linux:
18259
18260Fixed an issue with the OSL semaphore implementation where a
18261thread was waking up with an error from receiving a SIGCHLD
18262signal.
18263
18264Linux version of ACPI CA now uses the system C library for string
18265manipulation routines instead of a local implementation.
18266
18267Cleaned up comments and removed TBDs.
18268
18269 ASL Compiler, version X2017:
18270
18271Enhanced error detection and reporting for all file I/O
18272operations.
18273
18274 Documentation:
18275
18276Programmer Reference updated to version 1.06.
18277
18278
18279
18280------------------------------------------
18281Summary of changes for this label: 04_13_01
18282
18283 ACPI CA Core Subsystem:
18284
18285Restructured support for BufferFields and RegionFields.
18286BankFields support is now fully operational.  All known 32-bit
18287limitations on field sizes have been removed.  Both BufferFields
18288and (Operation) RegionFields are now supported by the same field
18289management code.
18290
18291Resource support now supports QWORD address and IO resources. The
1829216/32/64 bit address structures and the Extended IRQ structure
18293have been changed to properly handle Source Resource strings.
18294
18295A ThreadId of -1 is now used to indicate a "mutex not acquired"
18296condition internally and must never be returned by AcpiOsThreadId.
18297This reserved value was changed from 0 since Unix systems allow a
18298thread ID of 0.
18299
18300Linux:
18301
18302Driver code reorganized to enhance portability
18303
18304Added a kernel configuration option to control ACPI_DEBUG
18305
18306Fixed the EC driver to honor _GLK.
18307
18308ASL Compiler, version X2016:
18309
18310Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18311address space was set to 0, not 0x7f as it should be.
18312
18313 ------------------------------------------
18314Summary of changes for this label: 03_13_01
18315
18316 ACPI CA Core Subsystem:
18317
18318During ACPI initialization, the _SB_._INI method is now run if
18319present.
18320
18321Notify handler fix - notifies are deferred until the parent method
18322completes execution.  This fixes the "mutex already acquired"
18323issue seen occasionally.
18324
18325Part of the "implicit conversion" rules in ACPI 2.0 have been
18326found to cause compatibility problems with existing ASL/AML.  The
18327convert "result-to-target-type" implementation has been removed
18328for stores to method Args and Locals.  Source operand conversion
18329is still fully implemented.  Possible changes to ACPI 2.0
18330specification pending.
18331
18332Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18333length.
18334
18335Fix for compiler warnings for 64-bit compiles.
18336
18337 Linux:
18338
18339/proc output aligned for easier parsing.
18340
18341Release-version compile problem fixed.
18342
18343New kernel configuration options documented in Configure.help.
18344
18345IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18346context" message.
18347
18348 OSPM:
18349
18350Power resource driver integrated with bus manager.
18351
18352Fixed kernel fault during active cooling for thermal zones.
18353
18354Source Code:
18355
18356The source code tree has been restructured.
18357
18358
18359
18360------------------------------------------
18361Summary of changes for this label: 03_02_01
18362
18363 Linux OS Services Layer (OSL):
18364
18365Major revision of all Linux-specific code.
18366
18367Modularized all ACPI-specific drivers.
18368
18369Added new thermal zone and power resource drivers.
18370
18371Revamped /proc interface (new functionality is under /proc/acpi).
18372
18373New kernel configuration options.
18374
18375 Linux known issues:
18376
18377New kernel configuration options not documented in Configure.help
18378yet.
18379
18380
18381Module dependencies not currently implemented. If used, they
18382should be loaded in this order: busmgr, power, ec, system,
18383processor, battery, ac_adapter, button, thermal.
18384
18385Modules will not load if CONFIG_MODVERSION is set.
18386
18387IBM 600E - entering S5 may reboot instead of shutting down.
18388
18389IBM 600E - Sleep button may generate "Invalid <NULL> context"
18390message.
18391
18392Some systems may fail with "execution mutex already acquired"
18393message.
18394
18395 ACPI CA Core Subsystem:
18396
18397Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18398for the  deadlock detection code. Defined to return a non-zero, 32-
18399bit thread ID for the currently executing thread.  May be a non-
18400zero constant integer on single-thread systems.
18401
18402Implemented deadlock detection for internal subsystem mutexes.  We
18403may add conditional compilation for this code (debug only) later.
18404
18405ASL/AML Mutex object semantics are now fully supported.  This
18406includes multiple acquires/releases by owner and support for the
18407
18408Mutex SyncLevel parameter.
18409
18410A new "Force Release" mechanism automatically frees all ASL
18411Mutexes that have been acquired but not released when a thread
18412exits the interpreter.  This forces conformance to the ACPI spec
18413("All mutexes must be released when an invocation exits") and
18414prevents deadlocked ASL threads.  This mechanism can be expanded
18415(later) to monitor other resource acquisitions if OEM ASL code
18416continues to misbehave (which it will).
18417
18418Several new ACPI exception codes have been added for the Mutex
18419support.
18420
18421Recursive method calls are now allowed and supported (the ACPI
18422spec does in fact allow recursive method calls.)  The number of
18423recursive calls is subject to the restrictions imposed by the
18424SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18425parameter.
18426
18427Implemented support for the SyncLevel parameter for control
18428methods (ACPI 2.0 feature)
18429
18430Fixed a deadlock problem when multiple threads attempted to use
18431the interpreter.
18432
18433Fixed a problem where the string length of a String package
18434element was not always set in a package returned from
18435AcpiEvaluateObject.
18436
18437Fixed a problem where the length of a String package element was
18438not always included in the length of the overall package returned
18439from AcpiEvaluateObject.
18440
18441Added external interfaces (Acpi*) to the ACPI debug memory
18442manager.  This manager keeps a list of all outstanding
18443allocations, and can therefore detect memory leaks and attempts to
18444free memory blocks more than once. Useful for code such as the
18445power manager, etc.  May not be appropriate for device drivers.
18446Performance with the debug code enabled is slow.
18447
18448The ACPI Global Lock is now an optional hardware element.
18449
18450 ASL Compiler Version X2015:
18451
18452Integrated changes to allow the compiler to be generated on
18453multiple platforms.
18454
18455Linux makefile added to generate the compiler on Linux
18456
18457 Source Code:
18458
18459All platform-specific headers have been moved to their own
18460subdirectory, Include/Platform.
18461
18462New source file added, Interpreter/ammutex.c
18463
18464New header file, Include/acstruct.h
18465
18466 Documentation:
18467
18468The programmer reference has been updated for the following new
18469interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18470
18471 ------------------------------------------
18472Summary of changes for this label: 02_08_01
18473
18474Core ACPI CA Subsystem: Fixed a problem where an error was
18475incorrectly returned if the return resource buffer was larger than
18476the actual data (in the resource interfaces).
18477
18478References to named objects within packages are resolved to the
18479
18480full pathname string before packages are returned directly (via
18481the AcpiEvaluateObject interface) or indirectly via the resource
18482interfaces.
18483
18484Linux OS Services Layer (OSL):
18485
18486Improved /proc battery interface.
18487
18488
18489Added C-state debugging output and other miscellaneous fixes.
18490
18491ASL Compiler Version X2014:
18492
18493All defined method arguments can now be used as local variables,
18494including the ones that are not actually passed in as parameters.
18495The compiler tracks initialization of the arguments and issues an
18496exception if they are used without prior assignment (just like
18497locals).
18498
18499The -o option now specifies a filename prefix that is used for all
18500output files, including the AML output file.  Otherwise, the
18501default behavior is as follows:  1) the AML goes to the file
18502specified in the DSDT.  2) all other output files use the input
18503source filename as the base.
18504
18505 ------------------------------------------
18506Summary of changes for this label: 01_25_01
18507
18508Core ACPI CA Subsystem: Restructured the implementation of object
18509store support within the  interpreter.  This includes support for
18510the Store operator as well  as any ASL operators that include a
18511target operand.
18512
18513Partially implemented support for Implicit Result-to-Target
18514conversion. This is when a result object is converted on the fly
18515to the type of  an existing target object.  Completion of this
18516support is pending  further analysis of the ACPI specification
18517concerning this matter.
18518
18519CPU-specific code has been removed from the subsystem (hardware
18520directory).
18521
18522New Power Management Timer functions added
18523
18524Linux OS Services Layer (OSL): Moved system state transition code
18525to the core, fixed it, and modified  Linux OSL accordingly.
18526
18527Fixed C2 and C3 latency calculations.
18528
18529
18530We no longer use the compilation date for the version message on
18531initialization, but retrieve the version from AcpiGetSystemInfo().
18532
18533Incorporated for fix Sony VAIO machines.
18534
18535Documentation:  The Programmer Reference has been updated and
18536reformatted.
18537
18538
18539ASL Compiler:  Version X2013: Fixed a problem where the line
18540numbering and error reporting could get out  of sync in the
18541presence of multiple include files.
18542
18543 ------------------------------------------
18544Summary of changes for this label: 01_15_01
18545
18546Core ACPI CA Subsystem:
18547
18548Implemented support for type conversions in the execution of the
18549ASL  Concatenate operator (The second operand is converted to
18550match the type  of the first operand before concatenation.)
18551
18552Support for implicit source operand conversion is partially
18553implemented.   The ASL source operand types Integer, Buffer, and
18554String are freely  interchangeable for most ASL operators and are
18555converted by the interpreter  on the fly as required.  Implicit
18556Target operand conversion (where the  result is converted to the
18557target type before storing) is not yet implemented.
18558
18559Support for 32-bit and 64-bit BCD integers is implemented.
18560
18561Problem fixed where a field read on an aligned field could cause a
18562read  past the end of the field.
18563
18564New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18565does not return a value, but the caller expects one.  (The ASL
18566compiler flags this as a warning.)
18567
18568ASL Compiler:
18569
18570Version X2011:
185711. Static typechecking of all operands is implemented. This
18572prevents the use of invalid objects (such as using a Package where
18573an Integer is required) at compile time instead of at interpreter
18574run-time.
185752. The ASL source line is printed with ALL errors and warnings.
185763. Bug fix for source EOF without final linefeed.
185774. Debug option is split into a parse trace and a namespace trace.
185785. Namespace output option (-n) includes initial values for
18579integers and strings.
185806. Parse-only option added for quick syntax checking.
185817. Compiler checks for duplicate ACPI name declarations
18582
18583Version X2012:
185841. Relaxed typechecking to allow interchangeability between
18585strings, integers, and buffers.  These types are now converted by
18586the interpreter at runtime.
185872. Compiler reports time taken by each internal subsystem in the
18588debug         output file.
18589
18590
18591 ------------------------------------------
18592Summary of changes for this label: 12_14_00
18593
18594ASL Compiler:
18595
18596This is the first official release of the compiler. Since the
18597compiler requires elements of the Core Subsystem, this label
18598synchronizes everything.
18599
18600------------------------------------------
18601Summary of changes for this label: 12_08_00
18602
18603
18604Fixed a problem where named references within the ASL definition
18605of both OperationRegions and CreateXXXFields did not work
18606properly.  The symptom was an AE_AML_OPERAND_TYPE during
18607initialization of the region/field. This is similar (but not
18608related internally) to the problem that was fixed in the last
18609label.
18610
18611Implemented both 32-bit and 64-bit support for the BCD ASL
18612functions ToBCD and FromBCD.
18613
18614Updated all legal headers to include "2000" in the copyright
18615years.
18616
18617 ------------------------------------------
18618Summary of changes for this label: 12_01_00
18619
18620Fixed a problem where method invocations within the ASL definition
18621of both OperationRegions and CreateXXXFields did not work
18622properly.  The symptom was an AE_AML_OPERAND_TYPE during
18623initialization of the region/field:
18624
18625  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18626[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18627(0x3005)
18628
18629Fixed a problem where operators with more than one nested
18630subexpression would fail.  The symptoms were varied, by mostly
18631AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18632problem that has gone unnoticed until now.
18633
18634  Subtract (Add (1,2), Multiply (3,4))
18635
18636Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18637previous build (The prefix part of a relative path was handled
18638incorrectly).
18639
18640Fixed a problem where Operation Region initialization failed if
18641the operation region name was a "namepath" instead of a simple
18642"nameseg". Symptom was an AE_NO_OPERAND error.
18643
18644Fixed a problem where an assignment to a local variable via the
18645indirect RefOf mechanism only worked for the first such
18646assignment.  Subsequent assignments were ignored.
18647
18648 ------------------------------------------
18649Summary of changes for this label: 11_15_00
18650
18651ACPI 2.0 table support with backwards support for ACPI 1.0 and the
186520.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18653the AML  interpreter does NOT have support for the new 2.0 ASL
18654grammar terms at this time.
18655
18656All ACPI hardware access is via the GAS structures in the ACPI 2.0
18657FADT.
18658
18659All physical memory addresses across all platforms are now 64 bits
18660wide. Logical address width remains dependent on the platform
18661(i.e., "void *").
18662
18663AcpiOsMapMemory interface changed to a 64-bit physical address.
18664
18665The AML interpreter integer size is now 64 bits, as per the ACPI
186662.0 specification.
18667
18668For backwards compatibility with ACPI 1.0, ACPI tables with a
18669revision number less than 2 use 32-bit integers only.
18670
18671Fixed a problem where the evaluation of OpRegion operands did not
18672always resolve them to numbers properly.
18673
18674------------------------------------------
18675Summary of changes for this label: 10_20_00
18676
18677Fix for CBN_._STA issue.  This fix will allow correct access to
18678CBN_ OpRegions when the _STA returns 0x8.
18679
18680Support to convert ACPI constants (Ones, Zeros, One) to actual
18681values before a package object is returned
18682
18683Fix for method call as predicate to if/while construct causing
18684incorrect if/while behavior
18685
18686Fix for Else block package lengths sometimes calculated wrong (if
18687block > 63 bytes)
18688
18689Fix for Processor object length field, was always zero
18690
18691Table load abort if FACP sanity check fails
18692
18693Fix for problem with Scope(name) if name already exists
18694
18695Warning emitted if a named object referenced cannot be found
18696(resolved) during method execution.
18697
18698
18699
18700
18701
18702------------------------------------------
18703Summary of changes for this label: 9_29_00
18704
18705New table initialization interfaces: AcpiInitializeSubsystem no
18706longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18707necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18708>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18709AcpiLoadTables
18710
18711Note: These interface changes require changes to all existing OSDs
18712
18713The PCI_Config default address space handler is always installed
18714at the root namespace object.
18715
18716-------------------------------------------
18717Summary of changes for this label: 09_15_00
18718
18719The new initialization architecture is implemented.  New
18720interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18721AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18722
18723(Namespace is automatically loaded when a table is loaded)
18724
18725The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1872652 bytes to 32 bytes.  There is usually one of these for every
18727namespace object, so the memory savings is significant.
18728
18729Implemented just-in-time evaluation of the CreateField operators.
18730
18731Bug fixes for IA-64 support have been integrated.
18732
18733Additional code review comments have been implemented
18734
18735The so-called "third pass parse" has been replaced by a final walk
18736through the namespace to initialize all operation regions (address
18737spaces) and fields that have not yet been initialized during the
18738execution of the various _INI and REG methods.
18739
18740New file - namespace/nsinit.c
18741
18742-------------------------------------------
18743Summary of changes for this label: 09_01_00
18744
18745Namespace manager data structures have been reworked to change the
18746primary  object from a table to a single object.  This has
18747resulted in dynamic memory  savings of 3X within the namespace and
187482X overall in the ACPI CA subsystem.
18749
18750Fixed problem where the call to AcpiEvFindPciRootBuses was
18751inadvertently left  commented out.
18752
18753Reduced the warning count when generating the source with the GCC
18754compiler.
18755
18756Revision numbers added to each module header showing the
18757SourceSafe version of the file.  Please refer to this version
18758number when giving us feedback or comments on individual modules.
18759
18760The main object types within the subsystem have been renamed to
18761clarify their  purpose:
18762
18763ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18764ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18765ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18766
18767NOTE: no changes to the initialization sequence are included in
18768this label.
18769
18770-------------------------------------------
18771Summary of changes for this label: 08_23_00
18772
18773Fixed problem where TerminateControlMethod was being called
18774multiple times per  method
18775
18776Fixed debugger problem where single stepping caused a semaphore to
18777be  oversignalled
18778
18779Improved performance through additional parse object caching -
18780added  ACPI_EXTENDED_OP type
18781
18782-------------------------------------------
18783Summary of changes for this label: 08_10_00
18784
18785Parser/Interpreter integration:  Eliminated the creation of
18786complete parse trees  for ACPI tables and control methods.
18787Instead, parse subtrees are created and  then deleted as soon as
18788they are processed (Either entered into the namespace or  executed
18789by the interpreter).  This reduces the use of dynamic kernel
18790memory  significantly. (about 10X)
18791
18792Exception codes broken into classes and renumbered.  Be sure to
18793recompile all  code that includes acexcep.h.  Hopefully we won't
18794have to renumber the codes  again now that they are split into
18795classes (environment, programmer, AML code,  ACPI table, and
18796internal).
18797
18798Fixed some additional alignment issues in the Resource Manager
18799subcomponent
18800
18801Implemented semaphore tracking in the AcpiExec utility, and fixed
18802several places  where mutexes/semaphores were being unlocked
18803without a corresponding lock  operation.  There are no known
18804semaphore or mutex "leaks" at this time.
18805
18806Fixed the case where an ASL Return operator is used to return an
18807unnamed  package.
18808
18809-------------------------------------------
18810Summary of changes for this label: 07_28_00
18811
18812Fixed a problem with the way addresses were calculated in
18813AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
18814manifested itself when a Field was  created with WordAccess or
18815DwordAccess, but the field unit defined within the  Field was less
18816
18817than a Word or Dword.
18818
18819Fixed a problem in AmlDumpOperands() module's loop to pull
18820operands off of the  operand stack to display information. The
18821problem manifested itself as a TLB  error on 64-bit systems when
18822accessing an operand stack with two or more  operands.
18823
18824Fixed a problem with the PCI configuration space handlers where
18825context was  getting confused between accesses. This required a
18826change to the generic address  space handler and address space
18827setup definitions. Handlers now get both a  global handler context
18828(this is the one passed in by the user when executing
18829AcpiInstallAddressSpaceHandler() and a specific region context
18830that is unique to  each region (For example, the _ADR, _SEG and
18831_BBN values associated with a  specific region). The generic
18832function definitions have changed to the  following:
18833
18834typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18835UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18836*HandlerContext, // This used to be void *Context void
18837*RegionContext); // This is an additional parameter
18838
18839typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18840RegionHandle, UINT32 Function, void *HandlerContext,  void
18841**RegionContext); // This used to be **ReturnContext
18842
18843-------------------------------------------
18844Summary of changes for this label: 07_21_00
18845
18846Major file consolidation and rename.  All files within the
18847interpreter have been  renamed as well as most header files.  This
18848was done to prevent collisions with  existing files in the host
18849OSs -- filenames such as "config.h" and "global.h"  seem to be
18850quite common.  The VC project files have been updated.  All
18851makefiles  will require modification.
18852
18853The parser/interpreter integration continues in Phase 5 with the
18854implementation  of a complete 2-pass parse (the AML is parsed
18855twice) for each table;  This  avoids the construction of a huge
18856parse tree and therefore reduces the amount of  dynamic memory
18857required by the subsystem.  Greater use of the parse object cache
18858means that performance is unaffected.
18859
18860Many comments from the two code reviews have been rolled in.
18861
18862The 64-bit alignment support is complete.
18863
18864-------------------------------------------
18865Summary of changes for this label: 06_30_00
18866
18867With a nod and a tip of the hat to the technology of yesteryear,
18868we've added  support in the source code for 80 column output
18869devices.  The code is now mostly  constrained to 80 columns or
18870less to support environments and editors that 1)  cannot display
18871or print more than 80 characters on a single line, and 2) cannot
18872disable line wrapping.
18873
18874A major restructuring of the namespace data structure has been
18875completed.  The  result is 1) cleaner and more
18876understandable/maintainable code, and 2) a  significant reduction
18877in the dynamic memory requirement for each named ACPI  object
18878(almost half).
18879
18880-------------------------------------------
18881Summary of changes for this label: 06_23_00
18882
18883Linux support has been added.  In order to obtain approval to get
18884the ACPI CA  subsystem into the Linux kernel, we've had to make
18885quite a few changes to the  base subsystem that will affect all
18886users (all the changes are generic and OS- independent).  The
18887effects of these global changes have been somewhat far  reaching.
18888Files have been merged and/or renamed and interfaces have been
18889renamed.   The major changes are described below.
18890
18891Osd* interfaces renamed to AcpiOs* to eliminate namespace
18892pollution/confusion  within our target kernels.  All OSD
18893interfaces must be modified to match the new  naming convention.
18894
18895Files merged across the subsystem.  A number of the smaller source
18896and header  files have been merged to reduce the file count and
18897increase the density of the  existing files.  There are too many
18898to list here.  In general, makefiles that  call out individual
18899files will require rebuilding.
18900
18901Interpreter files renamed.  All interpreter files now have the
18902prefix am*  instead of ie* and is*.
18903
18904Header files renamed:  The acapi.h file is now acpixf.h.  The
18905acpiosd.h file is  now acpiosxf.h.  We are removing references to
18906the acronym "API" since it is  somewhat windowsy. The new name is
18907"external interface" or xface or xf in the  filenames.j
18908
18909
18910All manifest constants have been forced to upper case (some were
18911mixed case.)   Also, the string "ACPI_" has been prepended to many
18912(not all) of the constants,  typedefs, and structs.
18913
18914The globals "DebugLevel" and "DebugLayer" have been renamed
18915"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
18916
18917All other globals within the subsystem are now prefixed with
18918"AcpiGbl_" Internal procedures within the subsystem are now
18919prefixed with "Acpi" (with only  a few exceptions).  The original
18920two-letter abbreviation for the subcomponent  remains after "Acpi"
18921- for example, CmCallocate became AcpiCmCallocate.
18922
18923Added a source code translation/conversion utility.  Used to
18924generate the Linux  source code, it can be modified to generate
18925other types of source as well. Can  also be used to cleanup
18926existing source by removing extraneous spaces and blank  lines.
18927Found in tools/acpisrc/*
18928
18929OsdUnMapMemory was renamed to OsdUnmapMemory and then
18930AcpiOsUnmapMemory.  (UnMap  became Unmap).
18931
18932A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18933When set to  one, this indicates that the caller wants to use the
18934
18935semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
18936both types.  However, implementers of this  call may want to use
18937different OS primitives depending on the type of semaphore
18938requested.  For example, some operating systems provide separate
18939
18940"mutex" and  "semaphore" interfaces - where the mutex interface is
18941much faster because it  doesn't have all the overhead of a full
18942semaphore implementation.
18943
18944Fixed a deadlock problem where a method that accesses the PCI
18945address space can  block forever if it is the first access to the
18946space.
18947
18948-------------------------------------------
18949Summary of changes for this label: 06_02_00
18950
18951Support for environments that cannot handle unaligned data
18952accesses (e.g.  firmware and OS environments devoid of alignment
18953handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
18954been added (via configurable macros) in  these three areas: -
18955Transfer of data from the raw AML byte stream is done via byte
18956moves instead of    word/dword/qword moves. - External objects are
18957aligned within the user buffer, including package   elements (sub-
18958objects). - Conversion of name strings to UINT32 Acpi Names is now
18959done byte-wise.
18960
18961The Store operator was modified to mimic Microsoft's
18962implementation when storing  to a Buffer Field.
18963
18964Added a check of the BM_STS bit before entering C3.
18965
18966The methods subdirectory has been obsoleted and removed.  A new
18967file, cmeval.c  subsumes the functionality.
18968
18969A 16-bit (DOS) version of AcpiExec has been developed.  The
18970makefile is under  the acpiexec directory.
18971