xref: /dragonfly/sys/contrib/dev/acpica/changes.txt (revision 7d89978d)
1----------------------------------------
214 February 2020. Summary of changes for version 20200214:
3
4
51) ACPICA kernel-resident subsystem:
6
7Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
8in a guest when it receives a sleep trigger from the hypervisor. When the
9guest resumes from this power state, it does not see the SleepEnabled
10bit. In other words, the sleepHibernation (S4) is triggered in a guest
11when it receives a sleep trigger from the hypervisor. When the guest
12resumes from this power state, it does not see the SleepEnabled bit. In
13other words, the sleep button is not enabled on waking from an S4 state.
14This causes subsequent invocation of sleep state to fail since the
15guest.button is not enabled on waking from an S4 state. This causes
16subsequent invocation of sleep state to fail in the guest. Fix this
17problem by enabling the sleep button in ACPI legacy wake. From Anchal
18Agarwal <anchalag@amazon.com>.
19
20Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
21for checking the status bits of all enabled GPEs in one go. It is needed
22to distinguish spurious SCIs from genuine ones when deciding whether or
23not to wake up the system from suspend-to-idle.
24
25Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
26using HOST in their environment to represent the host name for their
27machines. Avoid this problem by renaming this variable from HOST to
28ACPI_HOST.
29
30MSVC 2017 project files: Enable multiprocessor generation to improve
31build performance.
32
33Added a macro to get the byte width of a Generic Address structure. New
34ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
35ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
36
37
382) iASL Compiler/Disassembler and ACPICA tools:
39
40iASL: Implemented full support for the (optional, rarely used) ReturnType
41and ParameterTypesList for the Method, Function, and External operators.
42For Method declarations, the number of individual ParameterTypes must
43match the declaration of the number of arguments (NumArgs). This also
44Fixes a problem with the External operator where extra/extraneous bytes
45were emitted in the AML code if the optional ReturnType/ParameterTypes
46were specified for a MethodObj declaration.
47New error message:
481) Method NumArgs count does not match length of ParameterTypes list
49
50iASL: Implemented detection of type mismatches between External
51declarations and named object declarations. Also, detect type mismatches
52between multiple External declarations of the same Name.
53New error messages:
541) Type mismatch between external declaration and actual object
55declaration detected
562) Type mismatch between multiple external declarations detected
57
58iASL: Implemented new error messages for External operators that specify
59a ReturnType and/or ParameterTypesList for any object type other than
60control methods (MethodObj).
61New error messages:
621) Return type is only allowed for Externals declared as MethodObj
632) Parameter type is only allowed for Externals declared as MethodObj
64
65iASL: Implemented two new remark/warning messages for ASL code that
66creates named objects from within a control method. This is very
67inefficient since the named object must be created and deleted each time
68the method is executed.
69New messages:
701) Creation of named objects within a method is highly inefficient, use
71globals or method local variables instead (remark)
722) Static OperationRegion should be declared outside control method
73(warning)
74
75iASL: Improved illegal forward reference detection by adding support to
76detect forward-reference method invocations.
77
78iASL: Detect and issue an error message for NameStrings that contain too
79many individual NameSegs (>255). This is an AML limitation that is
80defined in the ACPI specification.
81New message:
821) NameString contains too many NameSegs (>255)
83
84acpidump: windows: use GetSystemFirmwareTable API for all tables except
85SSDT. By using this API, acpidump is able to get all tables in the XSDT
86
87iASL: Removed unused parser file and updated msvc2017 project files.
88Removed the obsolete AslCompiler.y from the repository.
89
90iASL: msvc2017: Fixed macros in the file dependency list to prevent
91unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
92
93Disassembler: Prevent spilling error messages to the output file. All
94errors are directed to the console instead. These error messages
95prevented re-compilation of the resulting disassembled ASL output file
96(.DSL).
97
98
99----------------------------------------
10010 January 2020. Summary of changes for version 20200110:
101
102
1031) ACPICA kernel-resident subsystem:
104
105Updated all copyrights to 2020. This affects all ACPICA source code
106modules.
107
108
1092) iASL Compiler/Disassembler and ACPICA tools:
110
111ASL test suite (ASLTS): Updated all copyrights to 2020.
112
113Tools and utilities: Updated all signon copyrights to 2020.
114
115iASL: fix forward reference analysis for field declarations. Fixes
116forward reference analysis for field declarations by searching the
117parent scope for the named object when the object is not present in
118the current scope.
119
120iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
121full pathname of the name that already exists is printed.
122
123iASL: Enhance duplicate Case() detection for buffers. Add check for
124buffers with no initializer list (these buffers will be filled with
125zeros at runtime.)
126
127
128----------------------------------------
12913 December 2019. Summary of changes for version 20191213:
130
131
1321) ACPICA kernel-resident subsystem:
133
134Return a Buffer object for all fields created via the CreateField
135operator. Previously, an Integer would be returned if the size of
136the field was less than or equal to the current size of an Integer.
137Although this goes against the ACPI specification, it provides
138compatibility with other ACPI implementations. Also updated the
139ASLTS test suite to reflect this new behavior.
140
1412) iASL Compiler/Disassembler and ACPICA tools:
142
143iASL: Implemented detection of (and throw an error for) duplicate
144values for Case statements within a single Switch statement. Duplicate
145Integers, Strings, and Buffers are supported.
146
147iASL: Fix error logging issue during multiple file compilation --
148Switch to the correct input file during error node creation.
149
150iASL: For duplicate named object creation, now emit an error instead
151of a warning - since this will cause a runtime error.
152
153AcpiSrc: Add unix line-ending support for non-Windows builds.
154
155iASL: Add an error condition for an attempt to create a NameString
156with > 255 NameSegs (the max allowable via the AML definition).
157
158
159----------------------------------------
16018 October 2019. Summary of changes for version 20191018:
161
162
1631) ACPICA kernel-resident subsystem:
164
165Debugger: added a new command: ?Fields [address space ID]?. This command
166dumps the contents of all field units that are defined within the
167namespace with a particular address space ID.
168
169Modified the external interface AcpiLoadTable() to return a table index.
170This table index can be used for unloading a table for debugging.
171    ACPI_STATUS
172    AcpiLoadTable (
173        ACPI_TABLE_HEADER       *Table,
174        UINT32                  *TableIndex))
175
176Implemented a new external interface: AcpiUnloadTable() This new function
177takes a table index as an argument and unloads the table. Useful for
178debugging only.
179    ACPI_STATUS
180    AcpiUnloadTable (
181        UINT32                  TableIndex))
182
183Ported the AcpiNames utility to use the new table initialization
184sequence. The utility was broken before this change. Also, it was
185required to include most of the AML interpreter into the utility in order
186to process table initialization (module-level code execution.)
187
188Update for results from running Clang V8.0.1. This fixes all "dead
189assignment" warnings. There are still several "Dereference of NULL
190pointer" warnings, but these have been found to be false positive
191warnings.
192
193
1942) iASL Compiler/Disassembler and ACPICA tools:
195
196iASL: numerous table compiler changes to ensure that the usage of
197yacc/bison syntax is POSIX-compliant.
198
199iASL/disassembler: several simple bug fixes in the data table
200disassembler.
201
202Acpiexec: expanded the initialization file (the -fi option) to initialize
203strings, buffers, packages, and field units.
204
205
206----------------------------------------
20716 August 2019. Summary of changes for version 20190816:
208
209This release is available at https://acpica.org/downloads
210
211
2121) ACPICA kernel-resident subsystem:
213
214Modified the OwnerId mechanism to allow for more Owner Ids. The previous
215limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
216exceptions on machines with a large number of initialization threads,
217many CPU cores and nested initialization control methods.
218
219Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
220checking if the given GPE (as represented by a GPE device handle and a
221GPE number) is currently active and dispatching it (if that's the case)
222outside of interrupt context.
223
224Table load: exit the interpreter before initializing objects within the
225new table This prevents re-acquiring the interpreter lock when loading
226tables
227
228Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
229uk Kim
230
231Macros: removed pointer math on a null pointer. Causes warnings on some
232compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
233instead of using arithmetic.
234
235Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
236across all "printf-like" internal functions. Also, cleanup all calls to
237such functions (both in 32-bit mode and 64-bit mode) now that they are
238analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
239
240
2412) iASL Compiler/Disassembler and ACPICA tools:
242
243iASL: implemented a new data table compiler flex/bison front-end. This
244change is internal and is not intended to result in changes to the
245compiled code. This new compiler front-end can be invoked using the -tp
246option for now, until the old mechanism is removed.
247
248ASLTS: Implemented a new data table compiler test suite. This test suite
249generates all table templates and compile/disassemble/re-compile/binary-
250compare each file.
251
252iASL: return -1 if AML files were not generated due to compiler errors
253
254iASL: added a warning on use of the now-legacy ASL Processor () keyword.
255
256iASL: added an error on _UID object declaration that returns a String
257within a Processor () declaration. A _UID for a processor must be an
258Integer.
259
260iASL: added a null terminator to name strings that consist only of
261multiple parent prefixes (^)
262
263iASL: added support to compile both ASL and data table files in a single
264command.
265
266Updated the tool generation project files that were recently migrated to
267MSVC 2017 to eliminate all new warnings. The new project files appear in
268the directory \acpica\generate\msvc2017. This change effectively
269deprecates the older project files in \acpica\generate\msvc9.
270
271
272----------------------------------------
27303 July 2019. Summary of changes for version 20190703:
274
275
2761) ACPICA kernel-resident subsystem:
277
278Remove legacy module-level support code. There were still some remnants
279of the legacy module-level code executions. Since we no longer support
280this option, this is essentially dead code and has been removed from the
281ACPICA source.
282
283iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
284scope. If these named objects are declared outside the root scope, they
285will not be invoked by any host Operating System.
286
287Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
288one) can be enabled in two situations. First, the GPEs with existing _Lxx
289and _Exx methods are enabled implicitly by ACPICA during system
290initialization.  Second, the GPEs without these methods (like GPEs listed
291by _PRW objects for wakeup devices) need to be enabled directly by the
292code that is going to use them (e.g. ACPI power management or device
293drivers).
294
295In the former case, if the status of a given GPE is set to start with,
296its handler method (either _Lxx or _Exx) needs to be invoked to take care
297of the events (possibly) signaled before the GPE was enabled. In the
298latter case, however, the first caller of AcpiEnableGpe() for a given GPE
299should not be expected to care about any events that might be signaled
300through it earlier.  In that case, it is better to clear the status of
301the GPE before enabling it, to prevent stale events from triggering
302unwanted actions (like spurious system resume, for example).
303
304For this reason, modify AcpiEvAddGpeReference() to take an additional
305boolean argument indicating whether or not the GPE status needs to be
306cleared when its reference counter changes from zero to one and make
307AcpiEnableGpe() pass TRUE to it through that new argument.
308
309
3102) iASL Compiler/Disassembler and ACPICA tools:
311
312The tool generation process has been migrated to MSVC 2017, and all
313project files have been upgraded. The new project files appear in the
314directory \acpica\generate\msvc2017. This change effectively deprecates
315the older project files in \acpica\generate\msvc9.
316
317iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
318scope. If these named objects are declared outside the root scope, they
319will not be invoked by any host Operating System
320
321----------------------------------------
32209 May 2019. Summary of changes for version 20190509:
323
324
3251) ACPICA kernel-resident subsystem:
326
327Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
328them") that causes problems with Thunderbolt controllers to occur if a
329dock device is connected at init time (the xhci_hcd and thunderbolt
330modules crash which prevents peripherals connected through them from
331working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
332Dispatch active GPEs at init time") to get undone, so the problem
333addressed by commit ecc1165b8b74 appears again as a result of it.
334
335
3362) iASL Compiler/Disassembler and ACPICA tools:
337
338Reverted iASL: Additional forward reference detection. This change
339reverts forward reference detection for field declarations. The feature
340unintentionally emitted AML bytecode with incorrect package lengths for
341some ASL code related to Fields and OperationRegions. This malformed AML
342can cause systems to crash
343during boot. The malformed AML bytecode is emitted in iASL version
34420190329 and 20190405.
345
346iASL: improve forward reference detection. This change improves forward
347reference detection for named objects inside of scopes. If a parse object
348has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
349a named object that is declared later in the AML bytecode. This is
350allowed if the reference is inside of a method and the declaration is
351outside of a method like so:
352
353DefinitionBlock(...)
354{
355    Method (TEST)
356    {
357        Return (NUM0)
358    }
359    Name (NUM0,0)
360}
361
362However, if the declaration and reference are both in the same method or
363outside any methods, this is a forward reference and should be marked as
364an error because it would result in runtime errors.
365
366DefinitionBlock(...)
367{
368    Name (BUFF, Buffer (NUM0) {}) // Forward reference
369    Name (NUM0, 0x0)
370
371    Method (TEST)
372    {
373        Local0 = NUM1
374        Name (NUM1, 0x1) // Forward reference
375        return (Local0)
376    }
377}
378
379iASL: Implemented additional buffer overflow analysis for BufferField
380declarations. Check if a buffer index argument to a create buffer field
381operation is beyond the end of the target buffer.
382
383This affects these AML operators:
384
385   AML_CREATE_FIELD_OP
386   AML_CREATE_BIT_FIELD_OP
387   AML_CREATE_BYTE_FIELD_OP
388   AML_CREATE_WORD_FIELD_OP
389   AML_CREATE_DWORD_FIELD_OP
390   AML_CREATE_QWORD_FIELD_OP
391
392 There are three conditions that must be satisfied in order to allow this
393validation at compile time:
394
395   1) The length of the target buffer must be an integer constant
396   2) The index specified in the create* must be an integer constant
397   3) For CreateField, the bit length argument must be non-zero.
398
399Example:
400    Name (BUF1, Buffer() {1,2})
401    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
402
403dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
404Error    6165 -                           ^ Buffer index beyond end of
405target buffer
406
407
408----------------------------------------
40905 April 2019. Summary of changes for version 20190405:
410
411
4121) ACPICA kernel-resident subsystem:
413
414Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
415unconditionally clearing ACPI IRQs during suspend/resume") was added
416earlier to stop clearing of event status bits unconditionally on suspend
417and resume paths. Though this change fixed an issue on suspend path, it
418introduced regressions on several resume paths. In the case of S0ix,
419events are enabled as part of device suspend path. If status bits for the
420events are set when they are enabled, it could result in premature wake
421from S0ix. If status is cleared for any event that is being enabled so
422that any stale events are cleared out. In case of S0ix, events are
423enabled as part of device suspend path. If status bits for the events are
424set when they are enabled, it could result in premature wake from S0ix.
425
426This change ensures that status is cleared for any event that is being
427enabled so that any stale events are cleared out.
428
429
4302) iASL Compiler/Disassembler and ACPICA tools:
431
432iASL: Implemented an enhanced multiple file compilation that combines
433named objects from all input files to a single namespace. With this
434feature, any unresolved external declarations as well as duplicate named
435object declarations can be detected during compilation rather than
436generating errors much later at runtime. The following commands are
437examples that utilize this feature:
438    iasl dsdt.asl ssdt.asl
439    iasl dsdt.asl ssdt1.asl ssdt2.asl
440    iasl dsdt.asl ssdt*.asl
441
442----------------------------------------
44329 March 2019. Summary of changes for version 20190329:
444
445
4461) ACPICA kernel-resident subsystem:
447
448Namespace support: Remove the address nodes from global list after method
449termination. The global address list contains pointers to namespace nodes
450that represent Operation Regions. This change properly removes Operation
451Region namespace nodes that are declared dynamically during method
452execution.
453
454Linux: Use a different debug default than ACPICA. There was a divergence
455between Linux and the ACPICA codebases. In order to resolve this
456divergence, Linux now declares its own debug default in aclinux.h
457
458Renamed some internal macros to improve code understanding and
459maintenance. The macros below all operate on single 4-character ACPI
460NameSegs, not generic strings (old -> new):
461    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
462    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
463    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
464
465Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
466table.
467
468Test suite: Update makefiles, add PCC operation region support
469
470
4712) iASL Compiler/Disassembler and Tools:
472
473iASL: Implemented additional illegal forward reference detection. Now
474detect and emit an error upon detection of a forward reference from a
475Field to an Operation Region. This will fail at runtime if allowed to
476pass the compiler.
477
478AcpiExec: Add an address list check for dynamic Operation Regions. This
479feature performs a sanity test for each node the global address list.
480This is done in order to ensure that all dynamic operation regions are
481properly removed from the global address list and no dangling pointers
482are left behind.
483
484Disassembler: Improved generation of resource pathnames. This change
485improves the code that generates resource descriptor and resource tag
486pathnames. The original code used a bunch of str* C library functions
487that caused warnings on some compilers.
488
489iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
490function can overwrite buffers if the calling code is not very careful.
491In the case of generating a module/table header, use of memmove is a
492better implementation.
493
494
4953) Status of new features that have not been completed at this time:
496
497iASL: Implementing an enhanced multiple file compilation into a single
498namespace feature (Status): This feature will be released soon, and
499allows multiple ASL files to be compiled into the same single namespace.
500By doing so, any unresolved external declarations as well as duplicate
501named object declarations can be detected during compilation (rather than
502later during runtime). The following commands are examples that utilize
503this feature:
504    iasl dsdt.asl ssdt.asl
505    iasl dsdt.asl ssdt1.asl ssdt2.asl
506    iasl dsdt.asl ssdt*.asl
507
508ASL tutorial status: Feedback is being gathered internally and the
509current plan is to publish this tutorial on the ACPICA website after a
510final review by a tech writer.
511
512----------------------------------------
51315 February 2019. Summary of changes for version 20190215:
514
515
5160) Support for ACPI specification version 6.3:
517
518Add PCC operation region support for the AML interpreter. This adds PCC
519operation region support in the AML interpreter and a default handler for
520acpiexec. The change also renames the PCC region address space keyword to
521PlatformCommChannel.
522
523Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
524These methods provide OSPM with health information and device boot
525status.
526
527PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
528defines if the trigger needs to be invoked by OSPM before or at the end
529of kernel crash dump processing/handling operation.
530
531SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
532is used for describing devices such as heterogeneous processors,
533accelerators, GPUs, and IO devices with integrated compute or DMA
534engines.
535
536MADT: Add support for statistical profiling in GICC. Statistical
537profiling extension (SPE) is an architecture-specific feature for ARM.
538
539MADT: Add online capable flag. If this bit is set, system hardware
540supports enabling this processor during OS runtime.
541
542New Error Disconnect Recover Notification value. There are a number of
543scenarios where system Firmware in collaboration with hardware may
544disconnect one or more devices from the rest of the system for purposes
545of error containment. Firmware can use this new notification value to
546alert OSPM of such a removal.
547
548PPTT: New additional fields in Processor Structure Flags. These flags
549provide more information about processor topology.
550
551NFIT/Disassembler: Change a field name from "Address Range" to "Region
552Type".
553
554HMAT updates: make several existing fields to be reserved as well as
555rename subtable 0 to "memory proximity domain attributes".
556
557GTDT: Add support for new GTDT Revision 3. This revision adds information
558for the EL2 timer.
559
560iASL: Update the HMAT example template for new fields.
561
562iASL: Add support for the new revision of the GTDT (Rev 3).
563
564
5651) ACPICA kernel-resident subsystem:
566
567AML Parser: fix the main AML parse loop to correctly skip erroneous
568extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
569byte extended opcodes. If an error occurs during an AML table load, the
570AML parser will continue loading the table by skipping the offending
571opcode. This implements a "load table at any cost" philosophy.
572
573
5742) iASL Compiler/Disassembler and Tools:
575
576iASL: Add checks for illegal object references, such as a reference
577outside of method to an object within a method. Such an object is only
578temporary.
579
580iASL: Emit error for creation of a zero-length operation region. Such a
581region is rather pointless. If encountered, a runtime error is also
582implemented in the interpeter.
583
584Debugger: Fix a possible fault with the "test objects" command.
585
586iASL: Makefile: support parent directory filenames containing embedded
587spaces.
588
589iASL: Update the TPM2 template to revision 4.
590
591iASL: Add the ability to report specific warnings or remarks as errors.
592
593Disassembler: Disassemble OEMx tables as actual AML byte code.
594Previously, these tables were treated as "unknown table".
595
596iASL: Add definition and disassembly for TPM2 revision 3.
597
598iASL: Add support for TPM2 rev 3 compilation.
599
600
601----------------------------------------
60208 January 2019. Summary of changes for version 20190108:
603
604
6051) ACPICA kernel-resident subsystem:
606
607Updated all copyrights to 2019. This affects all source code modules.
608
609
6102) iASL Compiler/Disassembler and Tools:
611
612ASL test suite (ASLTS): Updated all copyrights to 2019.
613
614Tools: Updated all signon copyrights to 2019.
615
616AcpiExec: Added a new option to dump extra information concerning any
617memory leaks detected by the internal object/cache tracking mechanism. -
618va
619
620iASL: Updated the table template for the TPM2 table to the newest version
621of the table (Revision 4)
622
623
624----------------------------------------
62513 December 2018. Summary of changes for version 20181213:
626
627
6281) ACPICA Kernel-resident Subsystem:
629
630Fixed some buffer length issues with the GenericSerialBus, related to two
631of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
632which are rarely seen in the field. For these, the LEN field of the ASL
633buffer is now ignored. Hans de Goede
634
635Implemented a new object evaluation trace mechanism for control methods
636and data objects. This includes nested control methods. It is
637particularly useful for examining the ACPI execution during system
638initialization since the output is relatively terse. The flag below
639enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
640   #define ACPI_LV_EVALUATION          0x00080000
641
642Examples:
643   Enter evaluation       :  _SB.PCI0._INI (Method)
644   Exit evaluation        :  _SB.PCI0._INI
645   Enter evaluation       :  _OSI (Method)
646   Exit evaluation        :  _OSI
647   Enter evaluation       :  _SB.PCI0.TEST (Method)
648   Nested method call     :     _SB.PCI0.NST1
649   Exit nested method     :     _SB.PCI0.NST1
650   Exit evaluation        :  _SB.PCI0.TEST
651
652Added two recently-defined _OSI strings. See
653https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
654osi.
655   "Windows 2018"
656   "Windows 2018.2"
657
658Update for buffer-to-string conversions via the ToHexString ASL operator.
659A "0x" is now prepended to each of the hex values in the output string.
660This provides compatibility with other ACPI implementations. The ACPI
661specification is somewhat vague on this issue.
662   Example output string after conversion:
663"0x01,0x02,0x03,0x04,0x05,0x06"
664
665Return a run-time error for TermArg expressions within individual package
666elements. Although this is technically supported by the ASL grammar,
667other ACPI implementations do not support this either. Also, this fixes a
668fault if this type of construct is ever encountered (it never has been).
669
670
6712) iASL Compiler/Disassembler and Tools:
672
673iASL: Implemented a new compile option (-ww) that will promote individual
674warnings and remarks to errors. This is intended to enhance the firmware
675build process.
676
677AcpiExec: Implemented a new command-line option (-eo) to support the new
678object evaluation trace mechanism described above.
679
680Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
681instead of a "unknown table" message.
682
683AcpiHelp: Improved support for the "special" predefined names such as
684_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
685used for "xx" and "x".
686
687----------------------------------------
68831 October 2018. Summary of changes for version 20181031:
689
690
691An Operation Region regression was fixed by properly adding address
692ranges to a global list during initialization. This allows OS to
693accurately check for overlapping regions between native devices (such as
694PCI) and Operation regions as well as checking for region conflicts
695between two Operation Regions.
696
697Added support for the 2-byte extended opcodes in the code/feature that
698attempts to continue parsing during the table load phase. Skip parsing
699Device declarations (and other extended opcodes) when an error occurs
700during parsing. Previously, only single-byte opcodes were supported.
701
702Cleanup: Simplified the module-level code support by eliminating a
703useless global variable (AcpiGbl_GroupModuleLeveCode).
704
705
7062) iASL Compiler/Disassembler and Tools:
707
708iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
709could cause a fault in the preprocessor. This was an inadvertent side-
710effect from moving more allocations/frees to the local cache/memory
711mechanism.
712
713iASL: Enhanced error detection by validating that all NameSeg elements
714within a NamePatch actually exist. The previous behavior was spotty at
715best, and such errors could be improperly ignored at compiler time (never
716at runtime, however. There are two new error messages, as shown in the
717examples below:
718
719dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
720Error    6161 -                              ^ One or more objects within
721the Pathname do not exist (TTTT.BXXX)
722
723dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
724Error    6160 -        One or more prefix Scopes do not exist ^
725(BBBB.CBF1)
726
727iASL: Disassembler/table-compiler: Added support for the static data
728table TPM2 revision 3 (an older version of TPM2). The support has been
729added for the compiler and the disassembler.
730
731Fixed compilation of DOS format data table file on Unix/Linux systems.
732iASL now properly detects line continuations (\) for DOS format data
733table definition language files on when executing on Unix/Linux.
734
735----------------------------------------
73603 October 2018. Summary of changes for version 20181003:
737
738
7392) iASL Compiler/Disassembler and Tools:
740
741Fixed a regression introduced in version 20180927 that could cause the
742compiler to fault, especially with NamePaths containing one or more
743carats (^). Such as: ^^_SB_PCI0
744
745Added a new remark for the Sleep() operator when the sleep time operand
746is larger than one second. This is a very long time for the ASL/BIOS code
747and may not be what was intended by the ASL writer.
748
749----------------------------------------
75027 September 2018. Summary of changes for version 20180927:
751
752
7531) ACPICA kernel-resident subsystem:
754
755Updated the GPE support to clear the status of all ACPI events when
756entering any/all sleep states in order to avoid premature wakeups. In
757theory, this may cause some wakeup events to be missed, but the
758likelihood of this is small. This change restores the original behavior
759of the ACPICA code in order to fix a regression seen from the previous
760"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
761This regression could cause some systems to incorrectly wake immediately.
762
763Updated the execution of the _REG methods during initialization and
764namespace loading to bring the behavior into closer conformance to the
765ACPI specification and other ACPI implementations:
766
767From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
768    "Control methods must assume all operation regions are inaccessible
769until the _REG(RegionSpace, 1) method is executed"
770
771    "The exceptions to this rule are:
7721.  OSPM must guarantee that the following operation regions are always
773accessible:
774    SystemIO operation regions.
775    SystemMemory operation regions when accessing memory returned by the
776System Address Map reporting interfaces."
777
778Since the state of both the SystemIO and SystemMemory address spaces are
779defined by the specification to never change, this ACPICA change ensures
780that now _REG is never called on them. This solves some problems seen in
781the field and provides compatibility with other ACPI implementations. An
782update to the upcoming new version of the ACPI specification will help
783clarify this behavior.
784
785Updated the implementation of support for the Generic Serial Bus. For the
786"bidirectional" protocols, the internal implementation now automatically
787creates a return data buffer of the maximum size (255). This handles the
788worst-case for data that is returned from the serial bus handler, and
789fixes some problems seen in the field. This new buffer is directly
790returned to the ASL. As such, there is no true "bidirectional" buffer,
791which matches the ACPI specification. This is the reason for the "double
792store" seen in the example ASL code in the specification, shown below:
793
794Word Process Call (AttribProcessCall):
795    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
796    Field(TOP1, BufferAcc, NoLock, Preserve)
797    {
798        FLD1, 8, // Virtual register at command value 1.
799    }
800
801    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
802                             // as BUFF
803    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
804
805    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
806    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
807transaction
808                           // This is the "double store". The write to
809                           // FLD1 returns a new buffer, which is stored
810                           // back into BUFF with the second Store.
811
812
8132) iASL Compiler/Disassembler and Tools:
814
815iASL: Implemented detection of extraneous/redundant uses of the Offset()
816operator within a Field Unit list. A remark is now issued for these. For
817example, the first two of the Offset() operators below are extraneous.
818Because both the compiler and the interpreter track the offsets
819automatically, these Offsets simply refer to the current offset and are
820unnecessary. Note, when optimization is enabled, the iASL compiler will
821in fact remove the redundant Offset operators and will not emit any AML
822code for them.
823
824    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
825    Field (OPR1)
826    {
827        Offset (0),     // Never needed
828        FLD1, 32,
829        Offset (4),     // Redundant, offset is already 4 (bytes)
830        FLD2, 8,
831        Offset (64),    // OK use of Offset.
832        FLD3, 16,
833    }
834dsdt.asl     14:         Offset (0),
835Remark   2158 -                 ^ Unnecessary/redundant use of Offset
836operator
837
838dsdt.asl     16:         Offset (4),
839Remark   2158 -                 ^ Unnecessary/redundant use of Offset
840operator
841
842----------------------------------------
84310 August 2018. Summary of changes for version 20180810:
844
845
8461) ACPICA kernel-resident subsystem:
847
848Initial ACPI table loading: Attempt to continue loading ACPI tables
849regardless of malformed AML. Since migrating table initialization to the
850new module-level code support, the AML interpreter rejected tables upon
851any ACPI error encountered during table load. This is a problem because
852non-serious ACPI errors during table load do not necessarily mean that
853the entire definition block (DSDT or SSDT) is invalid. This change
854improves the table loading by ignoring some types of errors that can be
855generated by incorrect AML. This can range from object type errors, scope
856errors, and index errors.
857
858Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
859during suspend/resume. The status of ACPI events is no longer cleared
860when entering the ACPI S5 system state (power off) which caused some
861systems to power up immediately after turning off power in certain
862situations. This was a functional regression. It was fixed by clearing
863the status of all ACPI events again when entering S5 (for system-wide
864suspend or hibernation the clearing of the status of all events is not
865desirable, as it might cause the kernel to miss wakeup events sometimes).
866Rafael Wysocki.
867
868
8692) iASL Compiler/Disassembler and Tools:
870
871AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
872elements listed in the initialization file were previously initialized
873after the table load and before executing module-level code blocks.
874Recent changes in the module-level code support means that the table load
875becomes a large control method execution. If fields are used within
876module-level code and we are executing with the -fi option, the
877initialization values were used to initialize the namespace object(s)
878only after the table was finished loading. This change Provides an early
879initialization of objects specified in the initialization file so that
880field unit values are populated during the table load (not after the
881load).
882
883AcpiExec: Fixed a small memory leak regression that could result in
884warnings during exit of the utility. These warnings were similar to
885these:
886    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
887    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
888
889----------------------------------------
89029 June 2018. Summary of changes for version 20180629:
891
892
8931) iASL Compiler/Disassembler and Tools:
894
895iASL: Fixed a regression related to the use of the ASL External
896statement. Error checking for the use of the External() statement has
897been relaxed. Previously, a restriction on the use of External meant that
898the referenced named object was required to be defined in a different
899table (an SSDT). Thus it would be an error to declare an object as an
900external and then define the same named object in the same table. For
901example:
902    DefinitionBlock (...)
903    {
904        External (DEV1)
905        Device (DEV1){...} // This was an error
906    }
907However, this behavior has caused regressions in some existing ASL code,
908because there is code that depends on named objects and externals (with
909the same name) being declared in the same table. This change will allow
910the ASL code above to compile without errors or warnings.
911
912iASL: Implemented ASL language extensions for four operators to make some
913of their arguments optional instead of required:
914    1) Field (RegionName, AccessType, LockRule, UpdateRule)
915    2) BankField (RegionName, BankName, BankValue,
916                AccessType, LockRule, UpdateRule)
917    3) IndexField (IndexName, DataName,
918                AccessType, LockRule, UpdateRule)
919For the Field operators above, the AccessType, LockRule, and UpdateRule
920are now optional arguments. The default values are:
921        AccessType: AnyAcc
922        LockRule:   NoLock
923        UpdateRule: Preserve
924    4) Mutex (MutexName, SyncLevel)
925For this operator, the SyncLevel argument is now optional. This argument
926is rarely used in any meaningful way by ASL code, and thus it makes sense
927to make it optional. The default value is:
928        SyncLevel:  0
929
930iASL: Attempted use of the ASL Unload() operator now results in the
931following warning:
932    "Unload is not supported by all operating systems"
933This is in fact very true, and the Unload operator may be completely
934deprecated in the near future.
935
936AcpiExec: Fixed a regression for the -fi option (Namespace initialization
937file. Recent changes in the ACPICA module-level code support altered the
938table load/initialization sequence . This means that the table load has
939become a large method execution of the table itself. If Operation Region
940Fields are used within any module-level code and the -fi option was
941specified, the initialization values were populated only after the table
942had completely finished loading (and thus the module-level code had
943already been executed). This change moves the initialization of objects
944listed in the initialization file to before the table is executed as a
945method. Field unit values are now initialized before the table execution
946is performed.
947
948----------------------------------------
94931 May 2018. Summary of changes for version 20180531:
950
951
9521) ACPICA kernel-resident Subsystem:
953
954Implemented additional support to help ensure that a DSDT or SSDT is
955fully loaded even if errors are incurred during the load. The majority of
956the problems that are seen is the failure of individual AML operators
957that occur during execution of any module-level code (MLC) existing in
958the table. This support adds a mechanism to abort the current ASL
959statement (AML opcode), emit an error message, and to simply move on to
960the next opcode -- instead of aborting the entire table load. This is
961different than the execution of a control method where the entire method
962is aborted upon any error. The goal is to perform a very "best effort" to
963load the ACPI tables. The most common MLC errors that have been seen in
964the field are direct references to unresolved ASL/AML symbols (referenced
965directly without the use of the CondRefOf operator to validate the
966symbol). This new ACPICA behavior is now compatible with other ACPI
967implementations.
968
969Interpreter: The Unload AML operator is no longer supported for the
970reasons below. An AE_NOT_IMPLEMENTED exception is returned.
9711) A correct implementation on at least some hosts may not be possible.
9722) Other ACPI implementations do not correctly/fully support it.
9733) It requires host device driver support which is not known to exist.
974    (To properly support namespace unload out from underneath.)
9754) This AML operator has never been seen in the field.
976
977Parser: Added a debug option to dump AML parse sub-trees as they are
978being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
979ACPI_DB_PARSE_TREES.
980
981Debugger: Reduced the verbosity for errors incurred during table load and
982module-level code execution.
983
984Completed an investigation into adding a namespace node "owner list"
985instead of the current "owner ID" associated with namespace nodes. This
986list would link together all nodes that are owned by an individual
987control method. The purpose would be to enhance control method execution
988by speeding up cleanup during method exit (all namespace nodes created by
989a method are deleted upon method termination.) Currently, the entire
990namespace must be searched for matching owner IDs if (and only if) the
991method creates named objects outside of the local scope. However, by far
992the most common case is that methods create objects locally, not outside
993the method scope. There is already an ACPICA optimization in place that
994only searches the entire namespace in the rare case of a method creating
995objects elsewhere in the namespace. Therefore, it is felt that the
996overhead of adding an additional pointer to each namespace node to
997implement the owner list makes this feature unnecessary.
998
999
10002) iASL Compiler/Disassembler and Tools:
1001
1002iASL, Disassembler, and Template generator: Implemented support for
1003Revision D of the IORT table. Adds a new subtable that is used to specify
1004SMMUv3 PMCGs. rmurphy-arm.
1005
1006Disassembler: Restored correct table header validation for the "special"
1007ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1008table header and must be special-cased. This was a regression that has
1009been present for apparently a long time.
1010
1011AcpiExec: Reduced verbosity of the local exception handler implemented
1012within acpiexec. This handler is invoked by ACPICA upon any exceptions
1013generated during control method execution. A new option was added: -vh
1014restores the original verbosity level if desired.
1015
1016AcpiExec: Changed the default base from decimal to hex for the -x option
1017(set debug level). This simplifies the use of this option and matches the
1018behavior of the corresponding iASL -x option.
1019
1020AcpiExec: Restored a force-exit on multiple control-c (sigint)
1021interrupts. This allows program termination even if other issues cause
1022the control-c to fail.
1023
1024ASL test suite (ASLTS): Added tests for the recently implemented package
1025element resolution mechanism that allows forward references to named
1026objects from individual package elements (this mechanism provides
1027compatibility with other ACPI implementations.)
1028
1029
1030----------------------------------------
10318 May 2018. Summary of changes for version 20180508:
1032
1033
10341) ACPICA kernel-resident subsystem:
1035
1036Completed the new (recently deployed) package resolution mechanism for
1037the Load and LoadTable ASL/AML operators. This fixes a regression that
1038was introduced in version 20180209 that could result in an
1039AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1040(SSDT) that contains package objects.
1041
1042
10432) iASL Compiler/Disassembler and Tools:
1044
1045AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
10461 MB. This change allows for table offsets within the acpidump file to be
1047up to 8 characters. These changes are backwards compatible with existing
1048acpidump files.
1049
1050
1051----------------------------------------
105227 April 2018. Summary of changes for version 20180427:
1053
1054
10551) ACPICA kernel-resident subsystem:
1056
1057Debugger: Added support for Package objects in the "Test Objects"
1058command. This command walks the entire namespace and evaluates all named
1059data objects (Integers, Strings, Buffers, and now Packages).
1060
1061Improved error messages for the namespace root node. Originally, the root
1062was referred to by the confusing string "\___". This has been replaced by
1063"Namespace Root" for clarification.
1064
1065Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1066Ian King <colin.king@canonical.com>.
1067
1068
10692) iASL Compiler/Disassembler and Tools:
1070
1071iASL: Implemented support to detect and flag illegal forward references.
1072For compatibility with other ACPI implementations, these references are
1073now illegal at the root level of the DSDT or SSDTs. Forward references
1074have always been illegal within control methods. This change should not
1075affect existing ASL/AML code because of the fact that these references
1076have always been illegal in the other ACPI implementation.
1077
1078iASL: Added error messages for the case where a table OEM ID and OEM
1079TABLE ID strings are longer than the ACPI-defined length. Previously,
1080these strings were simply silently truncated.
1081
1082iASL: Enhanced the -tc option (which creates an AML hex file in C,
1083suitable for import into a firmware project):
1084  1) Create a unique name for the table, to simplify use of multiple
1085SSDTs.
1086  2) Add a protection #ifdef in the file, similar to a .h header file.
1087With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
1088evan.lloyd@arm.com
1089
1090AcpiExec: Added a new option, -df, to disable the local fault handler.
1091This is useful during debugging, where it may be desired to drop into a
1092debugger on a fault.
1093
1094----------------------------------------
109513 March 2018. Summary of changes for version 20180313:
1096
1097
10981) ACPICA kernel-resident subsystem:
1099
1100Implemented various improvements to the GPE support:
1101
11021) Dispatch all active GPEs at initialization time so that no GPEs are
1103lost.
11042) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
1105before devices are enumerated.
11063) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
1107IRQs are not lost.
11084) Add parallel GPE handling to eliminate the possibility of dispatching
1109the same GPE twice.
11105) Dispatch any pending GPEs after enabling for the first time.
1111
1112AcpiGetObjectInfo - removed support for the _STA method. This was causing
1113problems on some platforms.
1114
1115Added a new _OSI string, "Windows 2017.2".
1116
1117Cleaned up and simplified the module-level code support. These changes
1118are in preparation for the eventual removal of the legacy MLC support
1119(deferred execution), replaced by the new MLC architecture which executes
1120the MLC as a table is loaded (DSDT/SSDTs).
1121
1122Changed a compile-time option to a runtime option. Changes the option to
1123ignore ACPI table load-time package resolution errors into a runtime
1124option. Used only for platforms that generate many AE_NOT_FOUND errors
1125during boot. AcpiGbl_IgnorePackageResolutionErrors.
1126
1127Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
1128ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
1129compilation errors from unused variables (seen with some compilers).
1130
1131
11322) iASL Compiler/Disassembler and Tools:
1133
1134ASLTS: parallelized execution in order to achieve an (approximately) 2X
1135performance increase.
1136
1137ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1138error reporting.
1139
1140----------------------------------------
114109 February 2018. Summary of changes for version 20180209:
1142
1143
11441) ACPICA kernel-resident subsystem:
1145
1146Completed the final integration of the recent changes to Package Object
1147handling and the module-level AML code support. This allows forward
1148references from individual package elements when the package object is
1149declared from within module-level code blocks. Provides compatibility
1150with other ACPI implementations.
1151
1152The new architecture for the AML module-level code has been completed and
1153is now the default for the ACPICA code. This new architecture executes
1154the module-level code in-line as the ACPI table is loaded/parsed instead
1155of the previous architecture which deferred this code until after the
1156table was fully loaded. This solves some ASL code ordering issues and
1157provides compatibility with other ACPI implementations. At this time,
1158there is an option to fallback to the earlier architecture, but this
1159support is deprecated and is planned to be completely removed later this
1160year.
1161
1162Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1163resolution of named reference elements within Package objects. Although
1164this is potentially a serious problem, it can generate a lot of
1165noise/errors on platforms whose firmware carries around a bunch of unused
1166Package objects. To disable these errors, define
1167ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1168errors are always reported for ACPICA applications such as AcpiExec.
1169
1170Fixed a regression related to the explicit type-conversion AML operators
1171(ToXXXX). The regression was introduced early in 2017 but was not seen
1172until recently because these operators are not fully supported by other
1173ACPI implementations and are thus rarely used by firmware developers. The
1174operators are defined by the ACPI specification to not implement the
1175"implicit result object conversion". The regression incorrectly
1176introduced this object conversion for the following explicit conversion
1177operators:
1178    ToInteger
1179    ToString
1180    ToBuffer
1181    ToDecimalString
1182    ToHexString
1183    ToBCD
1184    FromBCD
1185
1186
11872) iASL Compiler/Disassembler and Tools:
1188
1189iASL: Fixed a problem with the compiler constant folding feature as
1190related to the ToXXXX explicit conversion operators. These operators do
1191not support the "implicit result object conversion" by definition. Thus,
1192ASL expressions that use these operators cannot be folded to a simple
1193Store operator because Store implements the implicit conversion. This
1194change uses the CopyObject operator for the ToXXXX operator folding
1195instead. CopyObject is defined to not implement implicit result
1196conversions and is thus appropriate for folding the ToXXXX operators.
1197
1198iASL: Changed the severity of an error condition to a simple warning for
1199the case where a symbol is declared both locally and as an external
1200symbol. This accommodates existing ASL code.
1201
1202AcpiExec: The -ep option to enable the new architecture for module-level
1203code has been removed. It is replaced by the -dp option which instead has
1204the opposite effect: it disables the new architecture (the default) and
1205enables the legacy architecture. When the legacy code is removed in the
1206future, the -dp option will be removed also.
1207
1208----------------------------------------
120905 January 2018. Summary of changes for version 20180105:
1210
1211
12121) ACPICA kernel-resident subsystem:
1213
1214Updated all copyrights to 2018. This affects all source code modules.
1215
1216Fixed a possible build error caused by an unresolved reference to the
1217AcpiUtSafeStrncpy function.
1218
1219Removed NULL pointer arithmetic in the various pointer manipulation
1220macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1221This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1222
1223Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1224Mittal.
1225
1226
12272) iASL Compiler/Disassembler and Tools:
1228
1229ASLTS: Updated all copyrights to 2018.
1230
1231Tools: Updated all signon copyrights to 2018.
1232
1233AcpiXtract: Fixed a regression related to ACPI table signatures where the
1234signature was truncated to 3 characters (instead of 4).
1235
1236AcpiExec: Restore the original terminal mode after the use of the -v and
1237-vd options.
1238
1239ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1240
1241----------------------------------------
124214 December 2017. Summary of changes for version 20171214:
1243
1244
12451) ACPICA kernel-resident subsystem:
1246
1247Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1248interface where the optional "pathname" argument had inadvertently become
1249a required argument returning an error if omitted (NULL pointer
1250argument).
1251
1252Fixed two possible memory leaks related to the recently developed "late
1253resolution" of reference objects within ASL Package Object definitions.
1254
1255Added two recently defined _OSI strings: "Windows 2016" and "Windows
12562017". Mario Limonciello.
1257
1258Implemented and deployed a safer version of the C library function
1259strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
1260creation of unterminated strings as a possible result of a standard
1261strncpy.
1262
1263Cleaned up and restructured the global variable file (acglobal.h). There
1264are many changes, but no functional changes.
1265
1266
12672) iASL Compiler/Disassembler and Tools:
1268
1269iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1270optional OemData field at the end of the table was incorrectly required
1271for proper compilation. It is now correctly an optional field.
1272
1273ASLTS: The entire suite was converted from standard ASL to the ASL+
1274language, using the ASL-to-ASL+ converter which is integrated into the
1275iASL compiler. A binary compare of all output files has verified the
1276correctness of the conversion.
1277
1278iASL: Fixed the source code build for platforms where "char" is unsigned.
1279This affected the iASL lexer only. Jung-uk Kim.
1280
1281----------------------------------------
128210 November 2017. Summary of changes for version 20171110:
1283
1284
12851) ACPICA kernel-resident subsystem:
1286
1287This release implements full support for ACPI 6.2A:
1288    NFIT - Added a new subtable, "Platform Capabilities Structure"
1289No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1290errata release of the specification.
1291
1292Other ACPI table changes:
1293    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1294    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1295Linton
1296
1297Utilities: Modified the string/integer conversion functions to use
1298internal 64-bit divide support instead of a native divide. On 32-bit
1299platforms, a 64-bit divide typically requires a library function which
1300may not be present in the build (kernel or otherwise).
1301
1302Implemented a targeted error message for timeouts returned from the
1303Embedded Controller device driver. This is seen frequently enough to
1304special-case an AE_TIME returned from an EC operation region access:
1305    "Timeout from EC hardware or EC device driver"
1306
1307Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1308runtime error messages have the identical prefix.
1309
1310
13112) iASL Compiler/Disassembler and Tools:
1312
1313AcpiXtract: Fixed a problem with table header detection within the
1314acpidump file. Processing a table could be ended early if a 0x40 (@)
1315appears in the original binary table, resulting in the @ symbol appearing
1316in the decoded ASCII field at the end of the acpidump text line. The
1317symbol caused acpixtract to incorrectly think it had reached the end of
1318the current table and the beginning of a new table.
1319
1320AcpiXtract: Added an option (-f) to ignore some errors during table
1321extraction. This initial implementation ignores non-ASCII and non-
1322printable characters found in the acpidump text file.
1323
1324TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1325for ASLTS. This feature is used to track memory allocations from
1326different memory caches within the ACPICA code. At the end of an ASLTS
1327run, these memory statistics are recorded and stored in a log file.
1328
1329Debugger (user-space version): Implemented a simple "Background" command.
1330Creates a new thread to execute a control method in the background, while
1331control returns to the debugger prompt to allow additional commands.
1332    Syntax: Background <Namepath> [Arguments]
1333
1334----------------------------------------
133529 September 2017. Summary of changes for version 20170929:
1336
1337
13381) ACPICA kernel-resident subsystem:
1339
1340Redesigned and implemented an improved ASL While() loop timeout
1341mechanism. This mechanism is used to prevent infinite loops in the kernel
1342AML interpreter caused by either non-responsive hardware or incorrect AML
1343code. The new implementation uses AcpiOsGetTimer instead of a simple
1344maximum loop count, and is thus more accurate and constant across
1345different machines. The default timeout is currently 30 seconds, but this
1346may be adjusted later.
1347
1348Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1349better reflect the new implementation of the loop timeout mechanism.
1350
1351Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1352and to fix an off-by-one error. Jung-uk Kim.
1353
1354Fixed an EFI build problem by updating the makefiles to for a new file
1355that was added, utstrsuppt.c
1356
1357
13582) iASL Compiler/Disassembler and Tools:
1359
1360Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1361includes support in the table disassembler, compiler, and template
1362generator.
1363
1364iASL: Added an exception for an illegal type of recursive method
1365invocation. If a method creates named objects, the first recursive call
1366will fail at runtime. This change adds an error detection at compile time
1367to catch the problem up front. Note: Marking such a method as
1368"serialized" will not help with this problem, because the same thread can
1369acquire the method mutex more than once. Example compiler and runtime
1370output:
1371
1372    Method (MTH1)
1373    {
1374        Name (INT1, 1)
1375        MTH1 ()
1376    }
1377
1378    dsdt.asl     22: MTH1 ()
1379    Error    6152 -  ^ Illegal recursive call to method
1380                       that creates named objects (MTH1)
1381
1382Previous runtime exception:
1383    ACPI Error: [INT1] Namespace lookup failure,
1384    AE_ALREADY_EXISTS (20170831/dswload2-465)
1385
1386iASL: Updated support for External() opcodes to improve namespace
1387management and error detection. These changes are related to issues seen
1388with multiple-segment namespace pathnames within External declarations,
1389such as below:
1390
1391    External(\_SB.PCI0.GFX0, DeviceObj)
1392    External(\_SB.PCI0.GFX0.ALSI)
1393
1394iASL: Implemented support for multi-line error/warning messages. This
1395enables more detailed and helpful error messages as below, from the
1396initial deployment for the duplicate names error:
1397
1398    DSDT.iiii   1692:       Device(PEG2) {
1399    Error    6074 -                  ^ Name already exists in scope
1400(PEG2)
1401
1402        Original name creation/declaration below:
1403        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
1404
1405AcpiXtract: Added additional flexibility to support differing input hex
1406dump formats. Specifically, hex dumps that contain partial disassembly
1407and/or comments within the ACPI table data definition. There exist some
1408dump utilities seen in the field that create this type of hex dump (such
1409as Simics). For example:
1410
1411    DSDT @ 0xdfffd0c0 (10999 bytes)
1412        Signature DSDT
1413        Length 10999
1414        Revision 1
1415        Checksum 0xf3 (Ok)
1416        OEM_ID BXPC
1417        OEM_table_id BXDSDT
1418        OEM_revision 1
1419        Creator_id 1280593481
1420        Creator_revision 537399345
1421      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1422      ...
1423      2af0: 5f 4c 30 46 00 a4 01
1424
1425Test suite: Miscellaneous changes/fixes:
1426    More cleanup and simplification of makefiles
1427    Continue compilation of test cases after a compile failure
1428    Do not perform binary compare unless both files actually exist
1429
1430iASL: Performed some code/module restructuring. Moved all memory
1431allocation functions to new modules. Two new files, aslallocate.c and
1432aslcache.c
1433
1434----------------------------------------
143531 August 2017. Summary of changes for version 20170831:
1436
1437
14381) ACPICA kernel-resident subsystem:
1439
1440Implemented internal support for full 64-bit addresses that appear in all
1441Generic Address Structure (GAS) structures. Previously, only the lower 32
1442bits were used. Affects the use of GAS structures in the FADT and other
1443tables, as well as the GAS structures passed to the AcpiRead and
1444AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1445
1446Added header support for the PDTT ACPI table (Processor Debug Trigger
1447Table). Full support in the iASL Data Table Compiler and disassembler is
1448forthcoming.
1449
1450
14512) iASL Compiler/Disassembler and Tools:
1452
1453iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1454Properties Topology Table) where a flag bit was specified in the wrong
1455bit position ("Line Size Valid", bit 6).
1456
1457iASL: Implemented support for Octal integer constants as defined by the
1458ASL language grammar, per the ACPI specification. Any integer constant
1459that starts with a zero is an octal constant. For example,
1460    Store (037777, Local0) /* Octal constant */
1461    Store (0x3FFF, Local0) /* Hex equivalent */
1462    Store (16383,  Local0) /* Decimal equivalent */
1463
1464iASL: Improved overflow detection for 64-bit string conversions during
1465compilation of integer constants. "Overflow" in this case means a string
1466that represents an integer that is too large to fit into a 64-bit value.
1467Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1468the low-order 32 bits with a warning, as previously implemented. Several
1469new exceptions are defined that indicate a 64-bit overflow, as well as
1470the base (radix) that was used during the attempted conversion. Examples:
1471    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
1472    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
1473    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
1474
1475iASL: Added a warning for the case where a ResourceTemplate is declared
1476with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1477this case, the resulting template is created with a single END_TAG
1478descriptor, which is essentially useless.
1479
1480iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1481include compilation error codes as well.
1482
1483----------------------------------------
148428 July 2017. Summary of changes for version 20170728:
1485
1486
14871) ACPICA kernel-resident subsystem:
1488
1489Fixed a regression seen with small resource descriptors that could cause
1490an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1491
1492AML interpreter: Implemented a new feature that allows forward references
1493from individual named references within package objects that are
1494contained within blocks of "module-level code". This provides
1495compatibility with other ACPI implementations and supports existing
1496firmware that depends on this feature. Example:
1497
1498    Name (ABCD, 1)
1499    If (ABCD)                       /* An If() at module-level */
1500    {
1501        Name (PKG1, Package()
1502        {
1503            INT1                    /* Forward reference to object INT1
1504*/
1505        })
1506        Name (INT1, 0x1234)
1507    }
1508
1509AML Interpreter: Fixed a problem with the Alias() operator where aliases
1510to some ASL objects were not handled properly. Objects affected are:
1511Mutex, Event, and OperationRegion.
1512
1513AML Debugger: Enhanced to properly handle AML Alias objects. These
1514objects have one level of indirection which was not fully supported by
1515the debugger.
1516
1517Table Manager: Added support to detect and ignore duplicate SSDTs within
1518the XSDT/RSDT. This error in the XSDT has been seen in the field.
1519
1520EFI and EDK2 support:
1521    Enabled /WX flag for MSVC builds
1522    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1523    Added local support for 64-bit multiply and shift operations
1524    Added support to compile acpidump.efi on Windows
1525    Added OSL function stubs for interfaces not used under EFI
1526
1527Added additional support for the _DMA predefined name. _DMA returns a
1528buffer containing a resource template. This change add support within the
1529resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1530resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
1531
1532
15332) iASL Compiler/Disassembler and Tools:
1534
1535iASL: Fixed a problem where the internal input line buffer(s) could
1536overflow if there are very long lines in the input ASL source code file.
1537Implemented buffer management that automatically increases the size of
1538the buffers as necessary.
1539
1540iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1541errors. If the specified exception is not raised during compilation, the
1542compiler emits an error. This is intended to support the ASL test suite,
1543but may be useful in other contexts.
1544
1545iASL: Implemented a new predefined macro, __METHOD__, which returns a
1546string containing the name of the current control method that is being
1547compiled.
1548
1549iASL: Implemented debugger and table compiler support for the SDEI ACPI
1550table (Software Delegated Exception Interface). James Morse
1551<james.morse@arm.com>
1552
1553Unix/Linux makefiles: Added an option to disable compile optimizations.
1554The disable occurs when the NOOPT flag is set to TRUE.
1555theracermaster@gmail.com
1556
1557Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1558when there are different tables for 32-bit versus 64-bit.
1559
1560Enhanced error reporting for the ASL test suite (ASLTS) by removing
1561unnecessary/verbose text, and emit the actual line number where an error
1562has occurred. These changes are intended to improve the usefulness of the
1563test suite.
1564
1565----------------------------------------
156629 June 2017. Summary of changes for version 20170629:
1567
1568
15691) ACPICA kernel-resident subsystem:
1570
1571Tables: Implemented a deferred ACPI table verification. This is useful
1572for operating systems where the tables cannot be verified in the early
1573initialization stage due to early memory mapping limitations on some
1574architectures. Lv Zheng.
1575
1576Tables: Removed the signature validation for dynamically loaded tables.
1577Provides compatibility with other ACPI implementations. Previously, only
1578SSDT tables were allowed, as per the ACPI specification. Now, any table
1579signature can be used via the Load() operator. Lv Zheng.
1580
1581Tables: Fixed several mutex issues that could cause errors during table
1582acquisition. Lv Zheng.
1583
1584Tables: Fixed a problem where an ACPI warning could be generated if a
1585null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1586
1587Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1588AcpiPutTable interfaces. This applies to the "late stage" table loading
1589when the use of AcpiPutTable is no longer required (since the system
1590memory manager is fully running and available). Lv Zheng.
1591
1592Fixed/Reverted a regression during processing of resource descriptors
1593that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1594exception in this case.
1595
1596Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1597I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
1598
1599Interpreter: Fixed a possible fault if an Alias operator with an invalid
1600or duplicate target is encountered during Alias creation in
1601AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
1602
1603Added an option to use designated initializers for function pointers.
1604Kees Cook <keescook@google.com>
1605
1606
16072) iASL Compiler/Disassembler and Tools:
1608
1609iASL: Allow compilation of External declarations with target pathnames
1610that refer to existing named objects within the table. Erik Schmauss.
1611
1612iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1613FieldUnit name also is declared via External in the same table. Erik
1614Schmauss.
1615
1616iASL: Allow existing scope names within pathnames used in External
1617statements. For example:
1618    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1619    Device (ABCD)
1620
1621iASL: IORT ACPI table: Implemented changes required to decode the new
1622Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1623compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
1624
1625Disassembler: Don't abort disassembly on errors from External()
1626statements. Erik Schmauss.
1627
1628Disassembler: fixed a possible fault when one of the Create*Field
1629operators references a Resource Template. ACPICA Bugzilla 1396.
1630
1631iASL: In the source code, resolved some naming inconsistences across the
1632parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1633Adds a new file, aslparseop.c
1634
1635----------------------------------------
163631 May 2017. Summary of changes for version 20170531:
1637
1638
16390) ACPI 6.2 support:
1640
1641The ACPI specification version 6.2 has been released and is available at
1642http://uefi.org/specifications
1643
1644This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1645are summarized below.
1646
1647New ACPI tables (Table Compiler/Disassembler/Templates):
1648    HMAT (Heterogeneous Memory Attributes Table)
1649    WSMT (Windows SMM Security Mitigation Table)
1650    PPTT (Processor Properties Topology Table)
1651
1652New subtables for existing ACPI tables:
1653    HEST (New subtable, Arch-deferred machine check)
1654    SRAT (New subtable, Arch-specific affinity structure)
1655    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1656
1657Simple updates for existing ACPI tables:
1658    BGRT (two new flag bits)
1659    HEST (New bit defined for several subtables, GHES_ASSIST)
1660
1661New Resource Descriptors and Resource macros (Compiler/Disassembler):
1662    PinConfig()
1663    PinFunction()
1664    PinGroup()
1665    PinGroupConfig()
1666    PinGroupFunction()
1667    New type for hardware error notification (section 18.3.2.9)
1668
1669New predefined names/methods (Compiler/Interpreter):
1670    _HMA (Heterogeneous Memory Attributes)
1671    _LSI (Label Storage Information)
1672    _LSR (Label Storage Read)
1673    _LSW (Label Storage Write)
1674
1675ASL grammar/macro changes (Compiler):
1676    For() ASL macro, implemented with the AML while operator
1677    Extensions to Concatenate operator
1678    Support for multiple definition blocks in same ASL file
1679    Clarification for Buffer operator
1680    Allow executable AML code underneath all scopes (Devices, etc.)
1681    Clarification/change for the _OSI return value
1682    ASL grammar update for reference operators
1683    Allow a zero-length string for AML filename in DefinitionBlock
1684
1685Miscellaneous:
1686    New device object notification value
1687    Remove a notify value (0x0C) for graceful shutdown
1688    New UUIDs for processor/cache properties and
1689        physical package property
1690    New _HID, ACPI0014 (Wireless Power Calibration Device)
1691
1692
16931) ACPICA kernel-resident subsystem:
1694
1695Added support to disable ACPI events on hardware-reduced platforms.
1696Eliminates error messages of the form "Could not enable fixed event". Lv
1697Zheng
1698
1699Fixed a problem using Device/Thermal objects with the ObjectType and
1700DerefOf ASL operators. This support had not been fully/properly
1701implemented.
1702
1703Fixed a problem where if a Buffer object containing a resource template
1704was longer than the actual resource template, an error was generated --
1705even though the AML is legal. This case has been seen in the field.
1706
1707Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1708The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1709
1710Added header file changes for the TPM2 ACPI table. Update to new version
1711of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1712
1713Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1714These interfaces are intended to be used only in conjunction with the
1715predefined _DLM method (Device Lock Method). "This object appears in a
1716device scope when AML access to the device must be synchronized with the
1717OS environment".
1718
1719Example Code and Data Size: These are the sizes for the OS-independent
1720acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1721debug version of the code includes the debug output trace mechanism and
1722has a much larger code and data size.
1723
1724  Current Release:
1725    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1726    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
1727  Previous Release:
1728    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1729    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1730
1731
17322) iASL Compiler/Disassembler and Tools:
1733
1734iASL: Fixed a problem where an External() declaration could not refer to
1735a Field Unit. Erik Schmauss.
1736
1737Disassembler: Improved support for the Switch/Case operators. This
1738feature will disassemble AML code back to the original Switch operators
1739when possible, instead of an If..Else sequence. David Box
1740
1741iASL and disassembler: Improved the handling of multiple extraneous
1742parentheses for both ASL input and disassembled ASL output.
1743
1744Improved the behavior of the iASL compiler and disassembler to detect
1745improper use of external declarations
1746
1747Disassembler: Now aborts immediately upon detection of an unknown AML
1748opcode. The AML parser has no real way to recover from this, and can
1749result in the creation of an ill-formed parse tree that causes errors
1750later during the disassembly.
1751
1752All tools: Fixed a problem where the Unix application OSL did not handle
1753control-c correctly. For example, a control-c could incorrectly wake the
1754debugger.
1755
1756AcpiExec: Improved the Control-C handling and added a handler for
1757segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1758environments.
1759
1760Reduced the verbosity of the generic unix makefiles. Previously, each
1761compilation displayed the full set of compiler options. This has been
1762eliminated as the options are easily inspected within the makefiles. Each
1763compilation now results in a single line of output.
1764
1765----------------------------------------
176603 March 2017. Summary of changes for version 20170303:
1767
1768
17690) ACPICA licensing:
1770
1771The licensing information at the start of each source code module has
1772been updated. In addition to the Intel license, the dual GPLv2/BSD
1773license has been added for completeness. Now, a single version of the
1774source code should be suitable for all ACPICA customers. This is the
1775major change for this release since it affects all source code modules.
1776
1777
17781) ACPICA kernel-resident subsystem:
1779
1780Fixed two issues with the common asltypes.h header that could cause
1781problems in some environments: (Kim Jung-uk)
1782    Removed typedef for YY_BUFFER_STATE ?
1783       Fixes an error with earlier versions of Flex.
1784    Removed use of FILE typedef (which is only defined in stdio.h)
1785
1786
17872) iASL Compiler/Disassembler and Tools:
1788
1789Disassembler: fixed a regression introduced in 20170224. A fix for a
1790memory leak related to resource descriptor tags (names) could fault when
1791the disassembler was generated with 64-bit compilers.
1792
1793The ASLTS test suite has been updated to implement a new testing
1794architecture. During generation of the suite from ASL source, both the
1795ASL and ASL+ compilers are now validated, as well as the disassembler
1796itself (Erik Schmauss). The architecture executes as follows:
1797
1798    For every ASL source module:
1799        Compile (legacy ASL compilation)
1800        Disassemble the resulting AML to ASL+ source code
1801        Compile the new ASL+ module
1802        Perform a binary compare on the legacy AML and the new ASL+ AML
1803    The ASLTS suite then executes normally using the AML binaries.
1804
1805----------------------------------------
180624 February 2017. Summary of changes for version 20170224:
1807
1808
18091) ACPICA kernel-resident subsystem:
1810
1811Interpreter: Fixed two issues with the control method return value auto-
1812repair feature, where an attempt to double-delete an internal object
1813could result in an ACPICA warning (for _CID repair and others). No fault
1814occurs, however, because the attempted deletion (actually a release to an
1815internal cache) is detected and ignored via object poisoning.
1816
1817Debugger: Fixed an AML interpreter mutex issue during the single stepping
1818of control methods. If certain debugger commands are executed during
1819stepping, a mutex acquire/release error could occur. Lv Zheng.
1820
1821Fixed some issues generating ACPICA with the Intel C compiler by
1822restoring the original behavior and compiler-specific include file in
1823acenv.h. Lv Zheng.
1824
1825Example Code and Data Size: These are the sizes for the OS-independent
1826acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1827debug version of the code includes the debug output trace mechanism and
1828has a much larger code and data size.
1829
1830  Current Release:
1831    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1832    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
1833  Previous Release:
1834    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1835    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
1836
1837
18382) iASL Compiler/Disassembler and Tools:
1839
1840iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1841tool has been designed, implemented, and included in this release. The
1842key feature of this utility is that the original comments within the
1843input ASL file are preserved during the conversion process, and included
1844within the converted ASL+ file -- thus creating a transparent conversion
1845of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1846
1847    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
1848converted code
1849
1850iASL/Disassembler: Improved the detection and correct disassembly of
1851Switch/Case operators. This feature detects sequences of if/elseif/else
1852operators that originated from ASL Switch/Case/Default operators and
1853emits the original operators. David Box.
1854
1855iASL: Improved the IORT ACPI table support in the following areas. Lv
1856Zheng:
1857    Clear MappingOffset if the MappingCount is zero.
1858    Fix the disassembly of the SMMU GSU interrupt offset.
1859    Update the template file for the IORT table.
1860
1861Disassembler: Enhanced the detection and disassembly of resource
1862template/descriptor within a Buffer object. An EndTag descriptor is now
1863required to have a zero second byte, since all known ASL compilers emit
1864this. This helps eliminate incorrect decisions when a buffer is
1865disassembled (false positives on resource templates).
1866
1867----------------------------------------
186819 January 2017. Summary of changes for version 20170119:
1869
1870
18711) General ACPICA software:
1872
1873Entire source code base: Added the 2017 copyright to all source code
1874legal/licensing module headers and utility/tool signons. This includes
1875the standard Linux dual-license header. This affects virtually every file
1876in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
1877the ACPICA test suite.
1878
1879
18802) iASL Compiler/Disassembler and Tools:
1881
1882iASL: Removed/fixed an inadvertent remark when a method argument
1883containing a reference is used as a target operand within the method (and
1884never used as a simple argument), as in the example below. Jeffrey Hugo.
1885
1886    dsdt.asl   1507:    Store(0x1, Arg0)
1887    Remark   2146 -                ^ Method Argument is never used (Arg0)
1888
1889All tools: Removed the bit width of the compiler that generated the tool
1890from the common signon for all user space tools. This proved to be
1891confusing and unnecessary. This includes similar removal of HARDWARE_NAME
1892from the generic makefiles (Thomas Petazzoni). Example below.
1893
1894    Old:
1895    ASL+ Optimizing Compiler version 20170119-32
1896    ASL+ Optimizing Compiler version 20170119-64
1897
1898    New:
1899    ASL+ Optimizing Compiler version 20170119
1900
1901----------------------------------------
190222 December 2016. Summary of changes for version 20161222:
1903
1904
19051) ACPICA kernel-resident subsystem:
1906
1907AML Debugger: Implemented a new mechanism to simplify and enhance
1908debugger integration into all environments, including kernel debuggers
1909and user-space utilities, as well as remote debug services. This
1910mechanism essentially consists of new OSL interfaces to support debugger
1911initialization/termination, as well as wait/notify interfaces to perform
1912the debugger handshake with the host. Lv Zheng.
1913
1914    New OSL interfaces:
1915        AcpiOsInitializeDebugger (void)
1916        AcpiOsTerminateDebugger (void)
1917        AcpiOsWaitCommandReady (void)
1918        AcpiOsNotifyCommandComplete (void)
1919
1920    New OS services layer:
1921        osgendbg.c -- Example implementation, and used for AcpiExec
1922
1923Update for Generic Address Space (GAS) support: Although the AccessWidth
1924and/or BitOffset fields of the GAS are not often used, this change now
1925fully supports these fields. This affects the internal support for FADT
1926registers, registers in other ACPI data tables, and the AcpiRead and
1927AcpiWrite public interfaces. Lv Zheng.
1928
1929Sleep support: In order to simplify integration of ACPI sleep for the
1930various host operating systems, a new OSL interface has been introduced.
1931AcpiOsEnterSleep allows the host to perform any required operations
1932before the final write to the sleep control register(s) is performed by
1933ACPICA. Lv Zheng.
1934
1935    New OSL interface:
1936        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
1937
1938    Called from these internal interfaces:
1939        AcpiHwLegacySleep
1940        AcpiHwExtendedSleep
1941
1942EFI support: Added a very small EFI/ACPICA example application. Provides
1943a simple demo for EFI integration, as well as assisting with resolution
1944of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
1945
1946    source/tools/efihello/efihello.c
1947
1948Local C library: Implemented several new functions to enhance ACPICA
1949portability, for environments where these clib functions are not
1950available (such as EFI). Lv Zheng:
1951    putchar
1952    getchar
1953    strpbrk
1954    strtok
1955    memmove
1956
1957Fixed a regression where occasionally a valid resource descriptor was
1958incorrectly detected as invalid at runtime, and a
1959AE_AML_NO_RESOURCE_END_TAG was returned.
1960
1961Fixed a problem with the recently implemented support that enables
1962control method invocations as Target operands to many ASL operators.
1963Warnings of this form: "Needed type [Reference], found [Processor]" were
1964seen at runtime for some method invocations.
1965
1966Example Code and Data Size: These are the sizes for the OS-independent
1967acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1968debug version of the code includes the debug output trace mechanism and
1969has a much larger code and data size.
1970
1971  Current Release:
1972    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
1973    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
1974  Previous Release:
1975    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1976    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
1977
1978
19792) iASL Compiler/Disassembler and Tools:
1980
1981Disassembler: Enhanced output by adding the capability to detect and
1982disassemble ASL Switch/Case statements back to the original ASL source
1983code instead of if/else blocks. David Box.
1984
1985AcpiHelp: Split a large file into separate files based upon
1986functionality/purpose. New files are:
1987    ahaml.c
1988    ahasl.c
1989
1990----------------------------------------
199117 November 2016. Summary of changes for version 20161117:
1992
1993
19941) ACPICA kernel-resident subsystem:
1995
1996Table Manager: Fixed a regression introduced in 20160729, "FADT support
1997cleanup". This was an attempt to remove all references in the source to
1998the FADT version 2, which never was a legal version number. It was
1999skipped because it was an early version of 64-bit support that was
2000eventually abandoned for the current 64-bit support.
2001
2002Interpreter: Fixed a problem where runtime implicit conversion was
2003incorrectly disabled for the ASL operators below. This brings the
2004behavior into compliance with the ACPI specification:
2005    FromBCD
2006    ToBCD
2007    ToDecimalString
2008    ToHexString
2009    ToInteger
2010    ToBuffer
2011
2012Table Manager: Added a new public interface, AcpiPutTable, used to
2013release and free an ACPI table returned by AcpiGetTable and related
2014interfaces. Lv Zheng.
2015
2016Example Code and Data Size: These are the sizes for the OS-independent
2017acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2018debug version of the code includes the debug output trace mechanism and
2019has a much larger code and data size.
2020
2021  Current Release:
2022    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2023    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2024  Previous Release:
2025    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2026    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2027
2028
20292) iASL Compiler/Disassembler and Tools:
2030
2031Disassembler: Fixed a regression for disassembly of Resource Template.
2032Detection of templates in the AML stream missed some types of templates.
2033
2034iASL: Fixed a problem where an Access Size error was returned for the PCC
2035address space when the AccessSize of the GAS register is greater than a
2036DWORD. Hoan Tran.
2037
2038iASL: Implemented several grammar changes for the operators below. These
2039changes are slated for the next version of the ACPI specification:
2040    RefOf        - Disallow method invocation as an operand
2041    CondRefOf    - Disallow method invocation as an operand
2042    DerefOf      - Disallow operands that use the result from operators
2043that
2044                   do not return a reference (Changed TermArg to
2045SuperName).
2046
2047iASL: Control method invocations are now allowed for Target operands, as
2048per the ACPI specification. Removed error for using a control method
2049invocation as a Target operand.
2050
2051Disassembler: Improved detection of Resource Templates, Unicode, and
2052Strings within Buffer objects. These subtypes do not contain a specific
2053opcode to indicate the originating ASL code, and they must be detected by
2054other means within the disassembler.
2055
2056iASL: Implemented an optimization improvement for 32-bit ACPI tables
2057(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2058only after 64-bit to 32-bit truncation. A truncation warning message is
2059still emitted, however.
2060
2061AcpiXtract: Implemented handling for both types of line terminators (LF
2062or CR/LF) so that it can accept AcpiDump output files from any system.
2063Peter Wu.
2064
2065AcpiBin: Added two new options for comparing AML files:
2066    -a: compare and display ALL mismatches
2067    -o: start compare at this offset into the second file
2068
2069----------------------------------------
207030 September 2016. Summary of changes for version 20160930:
2071
2072
20731) ACPICA kernel-resident subsystem:
2074
2075Fixed a regression in the internal AcpiTbFindTable function where a non
2076AE_OK exception could inadvertently be returned even if the function did
2077not fail. This problem affects the following operators:
2078    DataTableRegion
2079    LoadTable
2080
2081Fixed a regression in the LoadTable operator where a load to any
2082namespace location other than the root no longer worked properly.
2083
2084Increased the maximum loop count value that will result in the
2085AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2086prevent infinite loops within the AML interpreter and thus the host OS
2087kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
20881,048,575).
2089
2090Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
2091acpixf.h file. This allows hosts to easily configure the maximum loop
2092count at runtime.
2093
2094Removed an illegal character in the strtoul64.c file. This character
2095caused errors with some C compilers.
2096
2097Example Code and Data Size: These are the sizes for the OS-independent
2098acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2099debug version of the code includes the debug output trace mechanism and
2100has a much larger code and data size.
2101
2102  Current Release:
2103    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2104    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2105  Previous Release:
2106    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
2107    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2108
2109
21102) iASL Compiler/Disassembler and Tools:
2111
2112Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
2113the simpler ASL ElseIf keyword. During the conversion, a trailing If
2114block could be lost and missing from the disassembled output.
2115
2116iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
2117the missing rule caused a parse error when using the Index operator as an
2118operand to ObjectType. This construct now compiles properly. Example:
2119    ObjectType(PKG1[4]).
2120
2121iASL: Correctly handle unresolved symbols in the hardware map file (-lm
2122option). Previously, unresolved symbols could cause a protection fault.
2123Such symbols are now marked as unresolved in the map file.
2124
2125iASL: Implemented support to allow control method invocations as an
2126operand to the ASL DeRefOf operator. Example:
2127    DeRefOf(MTH1(Local0))
2128
2129Disassembler: Improved support for the ToPLD ASL macro. Detection of a
2130possible _PLD buffer now includes examination of both the normal buffer
2131length (16 or 20) as well as the surrounding AML package length.
2132
2133Disassembler: Fixed a problem with the decoding of complex expressions
2134within the Divide operator for ASL+. For the case where both the quotient
2135and remainder targets are specified, the entire statement cannot be
2136disassembled. Previously, the output incorrectly contained a mix of ASL-
2137and ASL+ operators. This mixed statement causes a syntax error when
2138compiled. Example:
2139    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
2140disassembled to:
2141    Divide (INT1 + 6, 128, RSLT, QUOT)
2142
2143iASL/Tools: Added support to process AML and non-AML ACPI tables
2144consistently. For the disassembler and AcpiExec, allow all types of ACPI
2145tables (AML and data tables). For the iASL -e option, allow only AML
2146tables (DSDT/SSDT).
2147
2148----------------------------------------
214931 August 2016. Summary of changes for version 20160831:
2150
2151
21521) ACPICA kernel-resident subsystem:
2153
2154Improve support for the so-called "module-level code", which is defined
2155to be math, logical and control AML opcodes that appear outside of any
2156control method. This change improves the support by adding more opcodes
2157that can be executed in the manner. Some other issues have been solved,
2158and the ASL grammar changes to support such code under all scope
2159operators (Device, etc.) are complete. Lv Zheng.
2160
2161UEFI support: these OSL functions have been implemented. This is an
2162additional step toward supporting the AcpiExec utility natively (with
2163full hardware access) under UEFI. Marcelo Ferreira.
2164    AcpiOsReadPciConfiguration
2165    AcpiOsWritePciConfiguration
2166
2167Fixed a possible mutex error during control method auto-serialization. Lv
2168Zheng.
2169
2170Updated support for the Generic Address Structure by fully implementing
2171all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2172Zheng.
2173
2174Updated the return value for the internal _OSI method. Instead of
21750xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2176for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2177implementations, and will be reflected and clarified in the next version
2178of the ACPI specification.
2179
2180Implemented two new table events that can be passed to an ACPICA table
2181handler. These events are used to indicate a table installation or
2182uninstallation. These events are used in addition to existed table load
2183and unload events. Lv Zheng.
2184
2185Implemented a cleanup for all internal string-to-integer conversions.
2186Consolidate multiple versions of this functionality and limit possible
2187bases to either 10 or 16 to simplify the code. Adds a new file,
2188utstrtoul64.
2189
2190Cleanup the inclusion order of the various compiler-specific headers.
2191This simplifies build configuration management. The compiler-specific
2192headers are now split out from the host-specific headers. Lv Zheng.
2193
2194Example Code and Data Size: These are the sizes for the OS-independent
2195acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2196debug version of the code includes the debug output trace mechanism and
2197has a much larger code and data size.
2198
2199  Current Release:
2200    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2201    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
2202
2203
22042) iASL Compiler/Disassembler and Tools:
2205
2206iASL/AcpiExec: Added a command line option to display the build date/time
2207of the tool (-vd). This can be useful to verify that the correct version
2208of the tools are being used.
2209
2210AML Debugger: Implemented a new subcommand ("execute predef") to execute
2211all predefined control methods and names within the current namespace.
2212This can be useful for debugging problems with ACPI tables and the ACPI
2213namespace.
2214
2215----------------------------------------
221629 July 2016. Summary of changes for version 20160729:
2217
2218
22191) ACPICA kernel-resident subsystem:
2220
2221Implemented basic UEFI support for the various ACPICA tools. This
2222includes:
22231) An OSL to implement the various AcpiOs* interfaces on UEFI.
22242) Support to obtain the ACPI tables on UEFI.
22253) Local implementation of required C library functions not available on
2226UEFI.
22274) A front-end (main) function for the tools for UEFI-related
2228initialization.
2229
2230The initial deployment of this support is the AcpiDump utility executing
2231as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2232Current environments supported are Linux/Unix. MSVC generation is not
2233supported at this time. See the generate/efi/README file for build
2234instructions. Lv Zheng.
2235
2236Future plans include porting the AcpiExec utility to execute natively on
2237the platform with I/O and memory access. This will allow viewing/dump of
2238the platform namespace and native execution of ACPI control methods that
2239access the actual hardware. To fully implement this support, the OSL
2240functions below must be implemented with UEFI interfaces. Any community
2241help in the implementation of these functions would be appreciated:
2242    AcpiOsReadPort
2243    AcpiOsWritePort
2244    AcpiOsReadMemory
2245    AcpiOsWriteMemory
2246    AcpiOsReadPciConfiguration
2247    AcpiOsWritePciConfiguration
2248
2249Restructured and standardized the C library configuration for ACPICA,
2250resulting in the various configuration options below. This includes a
2251global restructuring of the compiler-dependent and platform-dependent
2252include files. These changes may affect the existing platform-dependent
2253configuration files on some hosts. Lv Zheng.
2254
2255The current C library configuration options appear below. For any issues,
2256it may be helpful to examine the existing compiler-dependent and
2257platform-dependent files as examples. Lv Zheng.
2258
22591) Linux kernel:
2260    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2261library.
2262    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
22632) Unix/Windows/BSD applications:
2264    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2265library.
2266    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
22673) UEFI applications:
2268    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2269library.
2270    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
22714) UEFI applications (EDK2/StdLib):
2272    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2273    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2274
2275
2276AML interpreter: "module-level code" support. Allows for execution of so-
2277called "executable" AML code (math/logical operations, etc.) outside of
2278control methods not just at the module level (top level) but also within
2279any scope declared outside of a control method - Scope{}, Device{},
2280Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2281
2282Simplified the configuration of the "maximum AML loops" global option by
2283adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2284modified at runtime.
2285
2286
2287Example Code and Data Size: These are the sizes for the OS-independent
2288acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2289debug version of the code includes the debug output trace mechanism and
2290has a much larger code and data size.
2291
2292  Current Release:
2293    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2294    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
2295
2296
22972) iASL Compiler/Disassembler and Tools:
2298
2299iASL: Add full support for the RASF ACPI table (RAS Features Table).
2300Includes disassembler, data table compiler, and header support.
2301
2302iASL Expand "module-level code" support. Allows for
2303compilation/disassembly of so-called "executable" AML code (math/logical
2304operations, etc.) outside of control methods not just at the module level
2305(top level) but also within any scope declared outside of a control
2306method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2307ThermalZone{}.
2308
2309AcpiDump: Added support for dumping all SSDTs on newer versions of
2310Windows. These tables are now easily available -- SSDTs are not available
2311through the registry on older versions.
2312
2313----------------------------------------
231427 May 2016. Summary of changes for version 20160527:
2315
2316
23171) ACPICA kernel-resident subsystem:
2318
2319Temporarily reverted the new arbitrary bit length/alignment support in
2320AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2321a number of regressions with the new code that need to be fully resolved
2322and tested before this support can be finally integrated into ACPICA.
2323Apologies for any inconveniences these issues may have caused.
2324
2325The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2326ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2327and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2328
2329Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2330option. Adds a new return macro, return_STR. Junk-uk Kim.
2331
2332Example Code and Data Size: These are the sizes for the OS-independent
2333acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2334debug version of the code includes the debug output trace mechanism and
2335has a much larger code and data size.
2336
2337  Current Release:
2338    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2339    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2340  Previous Release:
2341    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2342    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
2343
2344----------------------------------------
234522 April 2016. Summary of changes for version 20160422:
2346
23471) ACPICA kernel-resident subsystem:
2348
2349Fixed a regression in the GAS (generic address structure) arbitrary bit
2350support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2351and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2352
2353ACPI 6.0: Added support for new/renamed resource macros. One new argument
2354was added to each of these macros, and the original name has been
2355deprecated. The AML disassembler will always disassemble to the new
2356names. Support for the new macros was added to iASL, disassembler,
2357resource manager, and the acpihelp utility. ACPICA BZ 1274.
2358
2359    I2cSerialBus  -> I2cSerialBusV2
2360    SpiSerialBus  -> SpiSerialBusV2
2361    UartSerialBus -> UartSerialBusV2
2362
2363ACPI 6.0: Added support for a new integer field that was appended to the
2364package object returned by the _BIX method. This adds iASL compile-time
2365and AML runtime error checking. ACPICA BZ 1273.
2366
2367ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2368Subspace Type2" (Headers, Disassembler, and data table compiler).
2369
2370Example Code and Data Size: These are the sizes for the OS-independent
2371acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2372debug version of the code includes the debug output trace mechanism and
2373has a much larger code and data size.
2374
2375  Current Release:
2376    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2377    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2378  Previous Release:
2379    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2380    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2381
2382
23832) iASL Compiler/Disassembler and Tools:
2384
2385iASL: Implemented an ASL grammar extension to allow/enable executable
2386"module-level code" to be created and executed under the various
2387operators that create new scopes. This type of AML code is already
2388supported in all known AML interpreters, and the grammar change will
2389appear in the next version of the ACPI specification. Simplifies the
2390conditional runtime creation of named objects under these object types:
2391
2392    Device
2393    PowerResource
2394    Processor
2395    Scope
2396    ThermalZone
2397
2398iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2399ease-of-use to the ASL language. The syntax is similar to the
2400corresponding C operator, and is implemented with the existing AML While
2401opcode -- thus requiring no changes to existing AML interpreters.
2402
2403    For (Initialize, Predicate, Update) {TermList}
2404
2405Grammar:
2406    ForTerm :=
2407        For (
2408            Initializer    // Nothing | TermArg => ComputationalData
2409            Predicate      // Nothing | TermArg => ComputationalData
2410            Update         // Nothing | TermArg => ComputationalData
2411        ) {TermList}
2412
2413
2414iASL: The _HID/_ADR detection and validation has been enhanced to search
2415under conditionals in order to allow these objects to be conditionally
2416created at runtime.
2417
2418iASL: Fixed several issues with the constant folding feature. The
2419improvement allows better detection and resolution of statements that can
2420be folded at compile time. ACPICA BZ 1266.
2421
2422iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2423conversion to the ASL ElseIf operator where incorrect ASL code could be
2424generated.
2425
2426iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2427sometimes an extra (and extraneous) set of parentheses were emitted for
2428some combinations of operators. Although this did not cause any problems
2429with recompilation of the disassembled code, it made the code more
2430difficult to read. David Box. ACPICA BZ 1231.
2431
2432iASL: Changed to ignore the unreferenced detection for predefined names
2433of resource descriptor elements, when the resource descriptor is
2434created/defined within a control method.
2435
2436iASL: Disassembler: Fix a possible fault with externally declared Buffer
2437objects.
2438
2439----------------------------------------
244018 March 2016. Summary of changes for version 20160318:
2441
24421) ACPICA kernel-resident subsystem:
2443
2444Added support for arbitrary bit lengths and bit offsets for registers
2445defined by the Generic Address Structure. Previously, only aligned bit
2446lengths of 8/16/32/64 were supported. This was sufficient for many years,
2447but recently some machines have been seen that require arbitrary bit-
2448level support. ACPICA BZ 1240. Lv Zheng.
2449
2450Fixed an issue where the \_SB._INI method sometimes must be evaluated
2451before any _REG methods are evaluated. Lv Zheng.
2452
2453Implemented several changes related to ACPI table support
2454(Headers/Disassembler/TableCompiler):
2455NFIT: For ACPI 6.1, updated to add some additional new fields and
2456constants.
2457FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
24586).
2459DMAR: Added new constants per the 10/2014 DMAR spec.
2460IORT: Added new subtable per the 10/2015 IORT spec.
2461HEST: For ACPI 6.1, added new constants and new subtable.
2462DBG2: Added new constants per the 12/2015 DBG2 spec.
2463FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2464ACPICA BZ 1249.
2465ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2466
2467Updated header support for the DMAR table to match the current version of
2468the related spec.
2469
2470Added extensions to the ASL Concatenate operator to allow any ACPI object
2471to be passed as an operand. Any object other than Integer/String/Buffer
2472simply returns a string containing the object type. This extends the
2473usefulness of the Printf macros. Previously, Concatenate would abort the
2474control method if a non-data object was encountered.
2475
2476ACPICA source code: Deployed the C "const" keyword across the source code
2477where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2478
2479Example Code and Data Size: These are the sizes for the OS-independent
2480acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2481debug version of the code includes the debug output trace mechanism and
2482has a much larger code and data size.
2483
2484  Current Release:
2485    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2486    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
2487  Previous Release:
2488    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2489    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2490
2491
24922) iASL Compiler/Disassembler and Tools:
2493
2494iASL/Disassembler: Improved the heuristic used to determine the number of
2495arguments for an externally defined control method (a method in another
2496table). Although this is an improvement, there is no deterministic way to
2497"guess" the number of method arguments. Only the ACPI 6.0 External opcode
2498will completely solve this problem as it is deployed (automatically) in
2499newer BIOS code.
2500
2501iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2502statements that could cause errors when the disassembled file is
2503compiled. ACPICA BZ 1243. David Box.
2504
2505iASL: Fixed a regression caused by the merger of the two versions of the
2506local strtoul64. Because of a dependency on a global variable, strtoul64
2507could return an error for integers greater than a 32-bit value. ACPICA BZ
25081260.
2509
2510iASL: Fixed a regression where a fault could occur for an ASL Return
2511statement if it invokes a control method that is not resolved. ACPICA BZ
25121264.
2513
2514AcpiXtract: Improved input file validation: detection of binary files and
2515non-acpidump text files.
2516
2517----------------------------------------
251812 February 2016. Summary of changes for version 20160212:
2519
25201) ACPICA kernel-resident subsystem:
2521
2522Implemented full support for the ACPI 6.1 specification (released in
2523January). This version of the specification is available at:
2524http://www.uefi.org/specifications
2525
2526Only a relatively small number of changes were required in ACPICA to
2527support ACPI 6.1, in these areas:
2528- New predefined names
2529- New _HID values
2530- A new subtable for HEST
2531- A few other header changes for new values
2532
2533Ensure \_SB_._INI is executed before any _REG methods are executed. There
2534appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2535
2536Reverted a change made in version 20151218 which enabled method
2537invocations to be targets of various ASL operators (SuperName and Target
2538grammar elements). While the new behavior is supported by the ACPI
2539specification, other AML interpreters do not support this behavior and
2540never will. The ACPI specification will be updated for ACPI 6.2 to remove
2541this support. Therefore, the change was reverted to the original ACPICA
2542behavior.
2543
2544ACPICA now supports the GCC 6 compiler.
2545
2546Current Release: (Note: build changes increased sizes)
2547    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2548    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
2549Previous Release:
2550    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2551    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
2552
2553
25542) iASL Compiler/Disassembler and Tools:
2555
2556Completed full support for the ACPI 6.0 External() AML opcode. The
2557compiler emits an external AML opcode for each ASL External statement.
2558This opcode is used by the disassembler to assist with the disassembly of
2559external control methods by specifying the required number of arguments
2560for the method. AML interpreters do not use this opcode. To ensure that
2561interpreters do not even see the opcode, a block of one or more external
2562opcodes is surrounded by an "If(0)" construct. As this feature becomes
2563commonly deployed in BIOS code, the ability of disassemblers to correctly
2564disassemble AML code will be greatly improved. David Box.
2565
2566iASL: Implemented support for an optional cross-reference output file.
2567The -lx option will create a the cross-reference file with the suffix
2568"xrf". Three different types of cross-reference are created in this file:
2569- List of object references made from within each control method
2570- Invocation (caller) list for each user-defined control method
2571- List of references to each non-method object in the namespace
2572
2573iASL: Method invocations as ASL Target operands are now disallowed and
2574flagged as errors in preparation for ACPI 6.2 (see the description of the
2575problem above).
2576
2577----------------------------------------
25788 January 2016. Summary of changes for version 20160108:
2579
25801) ACPICA kernel-resident subsystem:
2581
2582Updated all ACPICA copyrights and signons to 2016: Added the 2016
2583copyright to all source code module headers and utility/tool signons.
2584This includes the standard Linux dual-license header. This affects
2585virtually every file in the ACPICA core subsystem, iASL compiler, all
2586ACPICA utilities, and the ACPICA test suite.
2587
2588Fixed a regression introduced in version 20151218 concerning the
2589execution of so-called module-level ASL/AML code. Namespace objects
2590created under a module-level If() construct were not properly/fully
2591entered into the namespace and could cause an interpreter fault when
2592accessed.
2593
2594Example Code and Data Size: These are the sizes for the OS-independent
2595acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2596debug version of the code includes the debug output trace mechanism and
2597has a much larger code and data size.
2598
2599Current Release:
2600    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2601    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
2602  Previous Release:
2603    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2604    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2605
2606
26072) iASL Compiler/Disassembler and Tools:
2608
2609Fixed a problem with the compilation of the GpioIo and GpioInt resource
2610descriptors. The _PIN field name was incorrectly defined to be an array
2611of 32-bit values, but the _PIN values are in fact 16 bits each. This
2612would cause incorrect bit width warnings when using Word (16-bit) fields
2613to access the descriptors.
2614
2615
2616----------------------------------------
261718 December 2015. Summary of changes for version 20151218:
2618
26191) ACPICA kernel-resident subsystem:
2620
2621Implemented per-AML-table execution of "module-level code" as individual
2622ACPI tables are loaded into the namespace during ACPICA initialization.
2623In other words, any module-level code within an AML table is executed
2624immediately after the table is loaded, instead of batched and executed
2625after all of the tables have been loaded. This provides compatibility
2626with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2627David Box.
2628
2629To fully support the feature above, the default operation region handlers
2630for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2631installed before any ACPI tables are loaded. This enables module-level
2632code to access these address spaces during the table load and module-
2633level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2634Box.
2635
2636Implemented several changes to the internal _REG support in conjunction
2637with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2638utilities for the changes above. Although these tools were changed, host
2639operating systems that simply use the default handlers for SystemMemory,
2640SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2641
2642For example, in the code below, DEV1 is conditionally added to the
2643namespace by the DSDT via module-level code that accesses an operation
2644region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2645created immediately after the DSDT is loaded in order for the SSDT to
2646successfully reference DEV1. Previously, this code would cause an
2647AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2648fully supported by ACPICA.
2649
2650    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2651    {
2652        OperationRegion (OPR1, SystemMemory, 0x400, 32)
2653        Field (OPR1, AnyAcc, NoLock, Preserve)
2654        {
2655            FLD1, 1
2656        }
2657        If (FLD1)
2658        {
2659            Device (\DEV1)
2660            {
2661            }
2662        }
2663    }
2664    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2665    {
2666        External (\DEV1, DeviceObj)
2667        Scope (\DEV1)
2668        {
2669        }
2670    }
2671
2672Fixed an AML interpreter problem where control method invocations were
2673not handled correctly when the invocation was itself a SuperName argument
2674to another ASL operator. In these cases, the method was not invoked.
2675ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2676argument:
2677    Store
2678    Acquire, Wait
2679    CondRefOf, RefOf
2680    Decrement, Increment
2681    Load, Unload
2682    Notify
2683    Signal, Release, Reset
2684    SizeOf
2685
2686Implemented automatic String-to-ObjectReference conversion support for
2687packages returned by predefined names (such as _DEP). A common BIOS error
2688is to add double quotes around an ObjectReference namepath, which turns
2689the reference into an unexpected string object. This support detects the
2690problem and corrects it before the package is returned to the caller that
2691invoked the method. Lv Zheng.
2692
2693Implemented extensions to the Concatenate operator. Concatenate now
2694accepts any type of object, it is not restricted to simply
2695Integer/String/Buffer. For objects other than these 3 basic data types,
2696the argument is treated as a string containing the name of the object
2697type. This expands the utility of Concatenate and the Printf/Fprintf
2698macros. ACPICA BZ 1222.
2699
2700Cleaned up the output of the ASL Debug object. The timer() value is now
2701optional and no longer emitted by default. Also, the basic data types of
2702Integer/String/Buffer are simply emitted as their values, without a data
2703type string -- since the data type is obvious from the output. ACPICA BZ
27041221.
2705
2706Example Code and Data Size: These are the sizes for the OS-independent
2707acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2708debug version of the code includes the debug output trace mechanism and
2709has a much larger code and data size.
2710
2711  Current Release:
2712    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2713    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
2714  Previous Release:
2715    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2716    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2717
2718
27192) iASL Compiler/Disassembler and Tools:
2720
2721iASL: Fixed some issues with the ASL Include() operator. This operator
2722was incorrectly defined in the iASL parser rules, causing a new scope to
2723be opened for the code within the include file. This could lead to
2724several issues, including allowing ASL code that is technically illegal
2725and not supported by AML interpreters. Note, this does not affect the
2726related #include preprocessor operator. ACPICA BZ 1212.
2727
2728iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2729operator is essentially an ASL macro since there is no AML opcode
2730associated with it. The code emitted by the iASL compiler for ElseIf is
2731an Else opcode followed immediately by an If opcode. The disassembler
2732will now emit an ElseIf if it finds an Else immediately followed by an
2733If. This simplifies the decoded ASL, especially for deeply nested
2734If..Else and large Switch constructs. Thus, the disassembled code more
2735closely follows the original source ASL. ACPICA BZ 1211. Example:
2736
2737    Old disassembly:
2738        Else
2739        {
2740            If (Arg0 == 0x02)
2741            {
2742                Local0 = 0x05
2743            }
2744        }
2745
2746    New disassembly:
2747        ElseIf (Arg0 == 0x02)
2748        {
2749            Local0 = 0x05
2750        }
2751
2752AcpiExec: Added support for the new module level code behavior and the
2753early region installation. This required a small change to the
2754initialization, since AcpiExec must install its own operation region
2755handlers.
2756
2757AcpiExec: Added support to make the debug object timer optional. Default
2758is timer disabled. This cleans up the debug object output -- the timer
2759data is rarely used.
2760
2761AcpiExec: Multiple ACPI tables are now loaded in the order that they
2762appear on the command line. This can be important when there are
2763interdependencies/references between the tables.
2764
2765iASL/Templates. Add support to generate template files with multiple
2766SSDTs within a single output file. Also added ommand line support to
2767specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
27681223, 1225.
2769
2770
2771----------------------------------------
277224 November 2015. Summary of changes for version 20151124:
2773
27741) ACPICA kernel-resident subsystem:
2775
2776Fixed a possible regression for a previous update to FADT handling. The
2777FADT no longer has a fixed table ID, causing some issues with code that
2778was hardwired to a specific ID. Lv Zheng.
2779
2780Fixed a problem where the method auto-serialization could interfere with
2781the current SyncLevel. This change makes the auto-serialization support
2782transparent to the SyncLevel support and management.
2783
2784Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2785interface is intended for early access to the namespace during the
2786initial namespace device discovery walk. The _SUB method has been seen to
2787access operation regions in some cases, causing errors because the
2788operation regions are not fully initialized.
2789
2790AML Debugger: Fixed some issues with the terminate/quit/exit commands
2791that can cause faults. Lv Zheng.
2792
2793AML Debugger: Add thread ID support so that single-step mode only applies
2794to the AML Debugger thread. This prevents runtime errors within some
2795kernels. Lv Zheng.
2796
2797Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2798methods that are invoked by this interface are optional, removed warnings
2799emitted for the case where one or more of these methods do not exist.
2800ACPICA BZ 1208, original change by Prarit Bhargava.
2801
2802Made a major pass through the entire ACPICA source code base to
2803standardize formatting that has diverged a bit over time. There are no
2804functional changes, but this will of course cause quite a few code
2805differences from the previous ACPICA release.
2806
2807Example Code and Data Size: These are the sizes for the OS-independent
2808acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2809debug version of the code includes the debug output trace mechanism and
2810has a much larger code and data size.
2811
2812  Current Release:
2813    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2814    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
2815  Previous Release:
2816    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2817    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2818
2819
28202) iASL Compiler/Disassembler and Tools:
2821
2822iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2823definition blocks within a single ASL file and the resulting AML file.
2824Support for this type of file was also added to the various tools that
2825use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2826example code below shows two definition blocks within the same file:
2827
2828    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
28290x12345678)
2830    {
2831    }
2832    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2833    {
2834    }
2835
2836iASL: Enhanced typechecking for the Name() operator. All expressions for
2837the value of the named object must be reduced/folded to a single constant
2838at compile time, as per the ACPI specification (the AML definition of
2839Name()).
2840
2841iASL: Fixed some code indentation issues for the -ic and -ia options (C
2842and assembly headers). Now all emitted code correctly begins in column 1.
2843
2844iASL: Added an error message for an attempt to open a Scope() on an
2845object defined in an SSDT. The DSDT is always loaded into the namespace
2846first, so any attempt to open a Scope on an SSDT object will fail at
2847runtime.
2848
2849
2850----------------------------------------
285130 September 2015. Summary of changes for version 20150930:
2852
28531) ACPICA kernel-resident subsystem:
2854
2855Debugger: Implemented several changes and bug fixes to assist support for
2856the in-kernel version of the AML debugger. Lv Zheng.
2857- Fix the "predefined" command for in-kernel debugger.
2858- Do not enter debug command loop for the help and version commands.
2859- Disallow "execute" command during execution/single-step of a method.
2860
2861Interpreter: Updated runtime typechecking for all operators that have
2862target operands. The operand is resolved and validated that it is legal.
2863For example, the target cannot be a non-data object such as a Device,
2864Mutex, ThermalZone, etc., as per the ACPI specification.
2865
2866Debugger: Fixed the double-mutex user I/O handshake to work when local
2867deadlock detection is enabled.
2868
2869Debugger: limited display of method locals and arguments (LocalX and
2870ArgX) to only those that have actually been initialized. This prevents
2871lines of extraneous output.
2872
2873Updated the definition of the NFIT table to correct the bit polarity of
2874one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2875
2876Example Code and Data Size: These are the sizes for the OS-independent
2877acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2878debug version of the code includes the debug output trace mechanism and
2879has a much larger code and data size.
2880
2881  Current Release:
2882    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2883    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
2884  Previous Release:
2885    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2886    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2887
2888
28892) iASL Compiler/Disassembler and Tools:
2890
2891iASL: Improved the compile-time typechecking for operands of many of the
2892ASL operators:
2893
2894-- Added an option to disable compiler operand/operator typechecking (-
2895ot).
2896
2897-- For the following operators, the TermArg operands are now validated
2898when possible to be Integer data objects: BankField, OperationRegion,
2899DataTableRegion, Buffer, and Package.
2900
2901-- Store (Source, Target): Both the source and target operands are
2902resolved and checked that the operands are both legal. For example,
2903neither operand can be a non-data object such as a Device, Mutex,
2904ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
2905operator can be used to store an object to any type of target object.
2906
2907-- Store (Source, Target): If the source is a Package object, the target
2908must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
2909is a Package, the source must also be a Package.
2910
2911-- Store (Source, Target): A warning is issued if the source and target
2912resolve to the identical named object.
2913
2914-- Store (Source, <method invocation>): An error is generated for the
2915target method invocation, as this construct is not supported by the AML
2916interpreter.
2917
2918-- For all ASL math and logic operators, the target operand must be a
2919data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
2920includes the function return value also.
2921
2922-- External declarations are also included in the typechecking where
2923possible. External objects defined using the UnknownObj keyword cannot be
2924typechecked, however.
2925
2926iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
2927operator:
2928- Legacy code: Index(PKG1, 3)
2929- New ASL+ code: PKG1[3]
2930This completes the ACPI 6.0 ASL+ support as it was the only operator not
2931supported.
2932
2933iASL: Fixed the file suffix for the preprocessor output file (.i). Two
2934spaces were inadvertently appended to the filename, causing file access
2935and deletion problems on some systems.
2936
2937ASL Test Suite (ASLTS): Updated the master makefile to generate all
2938possible compiler output files when building the test suite -- thus
2939exercising these features of the compiler. These files are automatically
2940deleted when the test suite exits.
2941
2942
2943----------------------------------------
294418 August 2015. Summary of changes for version 20150818:
2945
29461) ACPICA kernel-resident subsystem:
2947
2948Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
2949Zheng. ACPICA BZ 1186.
2950
2951Completed development to ensure that the ACPICA Disassembler and Debugger
2952are fully standalone components of ACPICA. Removed cross-component
2953dependences. Lv Zheng.
2954
2955The max-number-of-AML-loops is now runtime configurable (previously was
2956compile-time only). This is essentially a loop timeout to force-abort
2957infinite AML loops. ACPCIA BZ 1192.
2958
2959Debugger: Cleanup output to dump ACPI names and namepaths without any
2960trailing underscores. Lv Zheng. ACPICA BZ 1135.
2961
2962Removed unnecessary conditional compilations across the Debugger and
2963Disassembler components where entire modules could be left uncompiled.
2964
2965The aapits test is deprecated and has been removed from the ACPICA git
2966tree. The test has never been completed and has not been maintained, thus
2967becoming rather useless. ACPICA BZ 1015, 794.
2968
2969A batch of small changes to close bugzilla and other reports:
2970- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
2971- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
2972- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
2973- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
2974Moore.
2975- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
2976ACPICA BZ 1184.
2977- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
2978operators.
2979- Debugger: Split debugger initialization/termination interfaces. Lv
2980Zheng.
2981- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
2982identification.
2983- AcpiExec: Add debug message during _REG method phase during table
2984load/init.
2985- AcpiNames: Fix a regression where some output was missing and no longer
2986emitted.
2987- Debugger: General cleanup and simplification. Lv Zheng.
2988- Disassembler: Cleanup use of several global option variables. Lv Zheng.
2989
2990Example Code and Data Size: These are the sizes for the OS-independent
2991acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2992debug version of the code includes the debug output trace mechanism and
2993has a much larger code and data size.
2994
2995  Current Release:
2996    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2997    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
2998  Previous Release:
2999    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3000    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3001
3002
30032) iASL Compiler/Disassembler and Tools:
3004
3005AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3006were not handled properly and caused load errors. Now, properly invoke
3007and use the ACPICA auto-reallocate mechanism for ACPI table data
3008structures. ACPICA BZ 1188
3009
3010AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3011BZ 1190.
3012
3013AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3014AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3015executed during initialization. ACPICA BZ 1187, 1189.
3016
3017iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3018that corresponds to each disassembled ASL statement, to simplify
3019debugging. ACPICA BZ 1191.
3020
3021Debugger: Add option to the "objects" command to display a summary of the
3022current namespace objects (Object type and count). This is displayed if
3023the command is entered with no arguments.
3024
3025AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3026
3027
3028----------------------------------------
302917 July 2015. Summary of changes for version 20150717:
3030
30311) ACPICA kernel-resident subsystem:
3032
3033Improved the partitioning between the Debugger and Disassembler
3034components. This allows the Debugger to be used standalone within kernel
3035code without the Disassembler (which is used for single stepping also).
3036This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3037
3038Debugger: Implemented a new command to trace the execution of control
3039methods (Trace). This is especially useful for the in-kernel version of
3040the debugger when file I/O may not be available for method trace output.
3041See the ACPICA reference for more information. Lv Zheng.
3042
3043Moved all C library prototypes (used for the local versions of these
3044functions when requested) to a new header, acclib.h
3045Cleaned up the use of non-ANSI C library functions. These functions are
3046implemented locally in ACPICA. Moved all such functions to a common
3047source file, utnonansi.c
3048
3049Debugger: Fixed a problem with the "!!" command (get last command
3050executed) where the debugger could enter an infinite loop and eventually
3051crash.
3052
3053Removed the use of local macros that were used for some of the standard C
3054library functions to automatically cast input parameters. This mostly
3055affected the is* functions where the input parameter is defined to be an
3056int. This required a few modifications to the main ACPICA source code to
3057provide casting for these functions and eliminate possible compiler
3058warnings for these parameters.
3059
3060Across the source code, added additional status/error checking to resolve
3061issues discovered by static source code analysis tools such as Coverity.
3062
3063Example Code and Data Size: These are the sizes for the OS-independent
3064acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3065debug version of the code includes the debug output trace mechanism and
3066has a much larger code and data size.
3067
3068  Current Release:
3069    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3070    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3071  Previous Release:
3072    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3073    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3074
3075
30762) iASL Compiler/Disassembler and Tools:
3077
3078iASL: Fixed a regression where the device map file feature no longer
3079worked properly when used in conjunction with the disassembler. It only
3080worked properly with the compiler itself.
3081
3082iASL: Implemented a new warning for method LocalX variables that are set
3083but never used (similar to a C compiler such as gcc). This also applies
3084to ArgX variables that are not defined by the parent method, and are
3085instead (legally) used as local variables.
3086
3087iASL/Preprocessor: Finished the pass-through of line numbers from the
3088preprocessor to the compiler. This ensures that compiler errors/warnings
3089have the correct original line numbers and filenames, regardless of any
3090#include files.
3091
3092iASL/Preprocessor: Fixed a couple of issues with comment handling and the
3093pass-through of comments to the preprocessor output file (which becomes
3094the compiler input file). Also fixed a problem with // comments that
3095appear after a math expression.
3096
3097iASL: Added support for the TCPA server table to the table compiler and
3098template generator. (The client table was already previously supported)
3099
3100iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
3101identify the iASL compiler.
3102
3103Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
3104multiple times. The new names are ACPI_SIGN_NEGATIVE and
3105ACPI_SIGN_POSITIVE.
3106
3107AcpiHelp: Update to expand help messages for the iASL preprocessor
3108directives.
3109
3110
3111----------------------------------------
311219 June 2015. Summary of changes for version 20150619:
3113
3114Two regressions in version 20150616 have been addressed:
3115
3116Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
3117etc.) This update changes ACPICA to only use the standard headers for
3118functions, or the prototypes for the local versions of the C library
3119functions. Across the source code, this required some additional casts
3120for some Clib invocations for portability. Moved all local prototypes to
3121a new file, acclib.h
3122
3123Fixes several problems with recent changes to the handling of the FACS
3124table that could cause some systems not to boot.
3125
3126
3127----------------------------------------
312816 June 2015. Summary of changes for version 20150616:
3129
3130
31311) ACPICA kernel-resident subsystem:
3132
3133Across the entire ACPICA source code base, the various macros for the C
3134library functions (such as ACPI_STRLEN, etc.) have been removed and
3135replaced by the standard C library names (strlen, etc.) The original
3136purpose for these macros is no longer applicable. This simplification
3137reduces the number of macros used in the ACPICA source code
3138significantly, improving readability and maintainability.
3139
3140Implemented support for a new ACPI table, the OSDT. This table, the
3141"override" SDT, can be loaded directly by the host OS at boot time. It
3142enables the replacement of existing namespace objects that were installed
3143via the DSDT and/or SSDTs. The primary purpose for this is to replace
3144buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3145for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3146Moore.
3147
3148Added support for systems with (improperly) two FACS tables -- a "32-bit"
3149table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3150X field). This change will support both automatically. There continues to
3151be systems found with this issue. This support requires a change to the
3152AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3153been added to allow the host to select which FACS is desired
3154(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3155details Lv Zheng.
3156
3157Added a new feature to allow for systems that do not contain an FACS.
3158Although this is already supported on hardware-reduced platforms, the
3159feature has been extended for all platforms. The reasoning is that we do
3160not want to abort the entire ACPICA initialization just because the
3161system is seriously buggy and has no FACS.
3162
3163Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3164not correctly transcribed from the ACPI specification in ACPICA version
316520150515.
3166
3167Implemented support for the _CLS object in the AcpiGetObjectInfo external
3168interface.
3169
3170Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3171recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3172compiler also updated. Note: The TCPA "server" table is not supported by
3173the disassembler/table-compiler at this time.
3174
3175ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3176
3177Example Code and Data Size: These are the sizes for the OS-independent
3178acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3179debug version of the code includes the debug output trace mechanism and
3180has a much larger code and data size.
3181
3182  Current Release:
3183    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3184    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3185  Previous Release:
3186    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3187    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3188
3189
31902) iASL Compiler/Disassembler and Tools:
3191
3192Disassembler: Fixed a problem with the new symbolic operator disassembler
3193where incorrect ASL code could be emitted in some cases for the "non-
3194commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3195ShiftRight. The actual problem cases seem to be rather unusual in common
3196ASL code, however. David Box.
3197
3198Modified the linux version of acpidump to obtain ACPI tables from not
3199just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3200Zheng.
3201
3202iASL: Fixed a problem where the user preprocessor output file (.i)
3203contained extra data that was not expected. The compiler was using this
3204file as a temporary file and passed through #line directives in order to
3205keep compiler error messages in sync with the input file and line number
3206across multiple include files. The (.i) is no longer a temporary file as
3207the compiler uses a new, different file for the original purpose.
3208
3209iASL: Fixed a problem where comments within the original ASL source code
3210file were not passed through to the preprocessor output file, nor any
3211listing files.
3212
3213iASL: Fixed some issues for the handling of the "#include" preprocessor
3214directive and the similar (but not the same) "Include" ASL operator.
3215
3216iASL: Add support for the new OSDT in both the disassembler and compiler.
3217
3218iASL: Fixed a problem with the constant folding support where a Buffer
3219object could be incorrectly generated (incorrectly formed) during a
3220conversion to a Store() operator.
3221
3222AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3223description text for the _REV predefined name. _REV now permanently
3224returns 2, as per the ACPI 6.0 specification.
3225
3226Debugger: Enhanced the output of the Debug ASL object for references
3227produced by the Index operator. For Buffers and strings, only output the
3228actual byte pointed to by the index. For packages, only print the single
3229package element decoded by the index. Previously, the entire
3230buffer/string/package was emitted.
3231
3232iASL/Table-compiler: Fixed a regression where the "generic" data types
3233were no longer recognized, causing errors.
3234
3235
3236----------------------------------------
323715 May 2015. Summary of changes for version 20150515:
3238
3239This release implements most of ACPI 6.0 as described below.
3240
32411) ACPICA kernel-resident subsystem:
3242
3243Implemented runtime argument checking and return value checking for all
3244new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3245_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3246
3247Example Code and Data Size: These are the sizes for the OS-independent
3248acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3249debug version of the code includes the debug output trace mechanism and
3250has a much larger code and data size.
3251
3252  Current Release:
3253    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
3254    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
3255  Previous Release:
3256    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3257    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3258
3259
32602) iASL Compiler/Disassembler and Tools:
3261
3262iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3263names (argument count validation and return value typechecking.)
3264
3265iASL disassembler and table compiler: implemented support for all new
3266ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3267
3268iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3269tables: FADT, MADT.
3270
3271iASL preprocessor: Added a new directive to enable inclusion of binary
3272blobs into ASL code. The new directive is #includebuffer. It takes a
3273binary file as input and emits a named ascii buffer object into the ASL
3274code.
3275
3276AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3277
3278AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3279directives.
3280
3281AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3282tables.
3283
3284
3285----------------------------------------
328610 April 2015. Summary of changes for version 20150410:
3287
3288Reverted a change introduced in version 20150408 that caused
3289a regression in the disassembler where incorrect operator
3290symbols could be emitted.
3291
3292
3293----------------------------------------
329408 April 2015. Summary of changes for version 20150408:
3295
3296
32971) ACPICA kernel-resident subsystem:
3298
3299Permanently set the return value for the _REV predefined name. It now
3300returns 2 (was 5). This matches other ACPI implementations. _REV will be
3301deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3302for ACPI 2.0 and later. It should never be used to differentiate or
3303identify operating systems.
3304
3305Added the "Windows 2015" string to the _OSI support. ACPICA will now
3306return TRUE to a query with this string.
3307
3308Fixed several issues with the local version of the printf function.
3309
3310Added the C99 compiler option (-std=c99) to the Unix makefiles.
3311
3312  Current Release:
3313    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
3314    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
3315  Previous Release:
3316    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3317    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3318
3319
33202) iASL Compiler/Disassembler and Tools:
3321
3322iASL: Implemented an enhancement to the constant folding feature to
3323transform the parse tree to a simple Store operation whenever possible:
3324    Add (2, 3, X) ==> is converted to: Store (5, X)
3325    X = 2 + 3     ==> is converted to: Store (5, X)
3326
3327Updated support for the SLIC table (Software Licensing Description Table)
3328in both the Data Table compiler and the disassembler. The SLIC table
3329support now conforms to "Microsoft Software Licensing Tables (SLIC and
3330MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3331following the ACPI header is now defined to be "Proprietary Data", and as
3332such, can only be entered or displayed as a hex data block.
3333
3334Implemented full support for the MSDM table as described in the document
3335above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3336following the ACPI header is defined to be "Proprietary Data", and can
3337only be entered or displayed as a hex data block.
3338
3339Implemented the -Pn option for the iASL Table Compiler (was only
3340implemented for the ASL compiler). This option disables the iASL
3341preprocessor.
3342
3343Disassembler: For disassembly of Data Tables, added a comment field
3344around the Ascii equivalent data that is emitted as part of the "Raw
3345Table Data" block. This prevents the iASL Preprocessor from possible
3346confusion if/when the table is compiled.
3347
3348Disassembler: Added an option (-df) to force the disassembler to assume
3349that the table being disassembled contains valid AML. This feature is
3350useful for disassembling AML files that contain ACPI signatures other
3351than DSDT or SSDT (such as OEMx or other signatures).
3352
3353Changes for the EFI version of the tools:
33541) Fixed a build error/issue
33552) Fixed a cast warning
3356
3357iASL: Fixed a path issue with the __FILE__ operator by making the
3358directory prefix optional within the internal SplitInputFilename
3359function.
3360
3361Debugger: Removed some unused global variables.
3362
3363Tests: Updated the makefile for proper generation of the AAPITS suite.
3364
3365
3366----------------------------------------
336704 February 2015. Summary of changes for version 20150204:
3368
3369ACPICA kernel-resident subsystem:
3370
3371Updated all ACPICA copyrights and signons to 2014. Added the 2014
3372copyright to all module headers and signons, including the standard Linux
3373header. This affects virtually every file in the ACPICA core subsystem,
3374iASL compiler, all ACPICA utilities, and the test suites.
3375
3376Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3377A raw gpe handling mechanism was created to allow better handling of GPE
3378storms that aren't easily managed by the normal handler. The raw handler
3379allows disabling/renabling of the the GPE so that interrupt storms can be
3380avoided in cases where events cannot be timely serviced. In this
3381scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3382GPE. This API will leave the reference counts undisturbed, thereby
3383preventing unintentional clearing of the GPE when the intent in only to
3384temporarily disable it. Raw handlers allow enabling and disabling of a
3385GPE by removing GPE register locking. As such, raw handlers much provide
3386their own locks while using GPE API's to protect access to GPE data
3387structures.
3388Lv Zheng
3389
3390Events: Always modify GPE registers under the GPE lock.
3391Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3392values. Reported as bug by joe.liu@apple.com.
3393
3394Unix makefiles: Separate option to disable optimizations and
3395_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3396NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3397purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3398errors when building ACPICA. This allows disabling the option without
3399also having to disable optimazations.
3400David Box
3401
3402  Current Release:
3403    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3404    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
3405
3406--
3407--------------------------------------
340807 November 2014. Summary of changes for version 20141107:
3409
3410This release is available at https://acpica.org/downloads
3411
3412This release introduces and implements language extensions to ASL that
3413provide support for symbolic ("C-style") operators and expressions. These
3414language extensions are known collectively as ASL+.
3415
3416
34171) iASL Compiler/Disassembler and Tools:
3418
3419Disassembler: Fixed a problem with disassembly of the UartSerialBus
3420macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3421Box.
3422
3423Disassembler: Fixed the Unicode macro support to add escape sequences.
3424All non-printable ASCII values are emitted as escape sequences, as well
3425as the standard escapes for quote and backslash. Ensures that the
3426disassembled macro can be correctly recompiled.
3427
3428iASL: Added Printf/Fprintf macros for formatted output. These macros are
3429translated to existing AML Concatenate and Store operations. Printf
3430writes to the ASL Debug object. Fprintf allows the specification of an
3431ASL name as the target. Only a single format specifier is required, %o,
3432since the AML interpreter dynamically converts objects to the required
3433type. David E. Box.
3434
3435    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3436                 (Concatenate (Concatenate (Concatenate ("", Arg0),
3437                 ": Unexpected value for "), Arg1), ", "), Arg2),
3438                 " at line "), Arg3), Debug)
3439
3440    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
3441                 Arg0, Arg1, Arg2, Arg3)
3442
3443    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
3444                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3445
3446    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3447
3448iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3449ASL parse tree before the AML code is generated. This allows blocks of
3450ASL code to be removed in order to help locate and identify problem
3451devices and/or code. David E. Box.
3452
3453AcpiExec: Added support (-fi) for an optional namespace object
3454initialization file. This file specifies initial values for namespace
3455objects as necessary for debugging and testing different ASL code paths
3456that may be taken as a result of BIOS options.
3457
3458
34592) Overview of symbolic operator support for ASL (ASL+)
3460-------------------------------------------------------
3461
3462As an extension to the ASL language, iASL implements support for symbolic
3463(C-style) operators for math and logical expressions. This can greatly
3464simplify ASL code as well as improve both readability and
3465maintainability. These language extensions can exist concurrently with
3466all legacy ASL code and expressions.
3467
3468The symbolic extensions are 100% compatible with existing AML
3469interpreters, since no new AML opcodes are created. To implement the
3470extensions, the iASL compiler transforms the symbolic expressions into
3471the legacy ASL/AML equivalents at compile time.
3472
3473Full symbolic expressions are supported, along with the standard C
3474precedence and associativity rules.
3475
3476Full disassembler support for the symbolic expressions is provided, and
3477creates an automatic migration path for existing ASL code to ASL+ code
3478via the disassembly process. By default, the disassembler now emits ASL+
3479code with symbolic expressions. An option (-dl) is provided to force the
3480disassembler to emit legacy ASL code if desired.
3481
3482Below is the complete list of the currently supported symbolic operators
3483with examples. See the iASL User Guide for additional information.
3484
3485
3486ASL+ Syntax      Legacy ASL Equivalent
3487-----------      ---------------------
3488
3489    // Math operators
3490
3491Z = X + Y        Add (X, Y, Z)
3492Z = X - Y        Subtract (X, Y, Z)
3493Z = X * Y        Multiply (X, Y, Z)
3494Z = X / Y        Divide (X, Y, , Z)
3495Z = X % Y        Mod (X, Y, Z)
3496Z = X << Y       ShiftLeft (X, Y, Z)
3497Z = X >> Y       ShiftRight (X, Y, Z)
3498Z = X & Y        And (X, Y, Z)
3499Z = X | Y        Or (X, Y, Z)
3500Z = X ^ Y        Xor (X, Y, Z)
3501Z = ~X           Not (X, Z)
3502X++              Increment (X)
3503X--              Decrement (X)
3504
3505    // Logical operators
3506
3507(X == Y)         LEqual (X, Y)
3508(X != Y)         LNotEqual (X, Y)
3509(X < Y)          LLess (X, Y)
3510(X > Y)          LGreater (X, Y)
3511(X <= Y)         LLessEqual (X, Y)
3512(X >= Y)         LGreaterEqual (X, Y)
3513(X && Y)         LAnd (X, Y)
3514(X || Y)         LOr (X, Y)
3515(!X)             LNot (X)
3516
3517    // Assignment and compound assignment operations
3518
3519X = Y           Store (Y, X)
3520X += Y          Add (X, Y, X)
3521X -= Y          Subtract (X, Y, X)
3522X *= Y          Multiply (X, Y, X)
3523X /= Y          Divide (X, Y, , X)
3524X %= Y          Mod (X, Y, X)
3525X <<= Y         ShiftLeft (X, Y, X)
3526X >>= Y         ShiftRight (X, Y, X)
3527X &= Y          And (X, Y, X)
3528X |= Y          Or (X, Y, X)
3529X ^= Y          Xor (X, Y, X)
3530
3531
35323) ASL+ Examples:
3533-----------------
3534
3535Legacy ASL:
3536        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3537            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
35380x03FB),
3539            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3540        {
3541            And (MEMB, 0xFFFFFFF0, SRMB)
3542            Store (MEMB, Local2)
3543            Store (PDBM, Local1)
3544            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3545            Store (SRMB, MEMB)
3546            Or (PDBM, 0x02, PDBM)
3547        }
3548
3549ASL+ version:
3550        If (((R510 & 0x03FB) == 0x02E0) ||
3551            ((R520 & 0x03FB) == 0x02E0) ||
3552            ((R530 & 0x03FB) == 0x02E0) ||
3553            ((R540 & 0x03FB) == 0x02E0))
3554        {
3555            SRMB = (MEMB & 0xFFFFFFF0)
3556            Local2 = MEMB
3557            Local1 = PDBM
3558            PDBM &= 0xFFFFFFFFFFFFFFF9
3559            MEMB = SRMB
3560            PDBM |= 0x02
3561        }
3562
3563Legacy ASL:
3564        Store (0x1234, Local1)
3565        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3566        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3567        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3568        Store (Index (PKG1, 0x03), Local6)
3569        Store (Add (Local3, Local2), Debug)
3570        Add (Local1, 0x0F, Local2)
3571        Add (Local1, Multiply (Local2, Local3), Local2)
3572        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3573
3574ASL+ version:
3575        Local1 = 0x1234
3576        Local3 = (((Local1 + TEST) + 0x20) * Local2)
3577        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3578        Local3 = (Local1 + (TEST + (0x20 * Local2)))
3579        Local6 = Index (PKG1, 0x03)
3580        Debug = (Local3 + Local2)
3581        Local2 = (Local1 + 0x0F)
3582        Local2 = (Local1 + (Local2 * Local3))
3583        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3584
3585
3586----------------------------------------
358726 September 2014. Summary of changes for version 20140926:
3588
35891) ACPICA kernel-resident subsystem:
3590
3591Updated the GPIO operation region handler interface (GeneralPurposeIo).
3592In order to support GPIO Connection objects with multiple pins, along
3593with the related Field objects, the following changes to the interface
3594have been made: The Address is now defined to be the offset in bits of
3595the field unit from the previous invocation of a Connection. It can be
3596viewed as a "Pin Number Index" into the connection resource descriptor.
3597The BitWidth is the exact bit width of the field. It is usually one bit,
3598but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3599additional information and examples.
3600
3601GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3602corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3603by the firmware), so that they cannot fire until they are enabled via
3604AcpiUpdateAllGpes. Rafael J. Wysocki.
3605
3606Added a new return flag for the Event/GPE status interfaces --
3607AcpiGetEventStatus and AcpiGetGpeStatus. The new
3608ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3609GPE currently has a handler associated with it, and can thus actually
3610affect the system. Lv Zheng.
3611
3612Example Code and Data Size: These are the sizes for the OS-independent
3613acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3614debug version of the code includes the debug output trace mechanism and
3615has a much larger code and data size.
3616
3617  Current Release:
3618    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
3619    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
3620  Previous Release:
3621    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3622    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3623
36242) iASL Compiler/Disassembler and Tools:
3625
3626iASL: Fixed a memory allocation/free regression introduced in 20140828
3627that could cause the compiler to crash. This was introduced inadvertently
3628during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
36291113.
3630
3631iASL: Removed two error messages that have been found to create false
3632positives, until they can be fixed and fully validated (ACPICA BZ 1112):
36331) Illegal forward reference within a method
36342) Illegal reference across two methods
3635
3636iASL: Implemented a new option (-lm) to create a hardware mapping file
3637that summarizes all GPIO, I2C, SPI, and UART connections. This option
3638works for both the compiler and disassembler. See the iASL compiler user
3639guide for additional information and examples (section 6.4.6).
3640
3641AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3642version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3643a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3644
3645AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3646unless STDIN is actually a terminal. Assists with batch-mode processing.
3647ACPICA BZ 1114.
3648
3649Disassembler/AcpiHelp: Added another large group of recognized _HID
3650values.
3651
3652
3653----------------------------------------
365428 August 2014. Summary of changes for version 20140828:
3655
36561) ACPICA kernel-resident subsystem:
3657
3658Fixed a problem related to the internal use of the Timer() operator where
3659a 64-bit divide could cause an attempted link to a double-precision math
3660library. This divide is not actually necessary, so the code was
3661restructured to eliminate it. Lv Zheng.
3662
3663ACPI 5.1: Added support for the runtime validation of the _DSD package
3664(similar to the iASL support).
3665
3666ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3667SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
3668
3669Example Code and Data Size: These are the sizes for the OS-independent
3670acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3671debug version of the code includes the debug output trace mechanism and
3672has a much larger code and data size.
3673
3674  Current Release:
3675    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
3676    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
3677  Previous Release:
3678    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
3679    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3680
36812) iASL Compiler/Disassembler and Tools:
3682
3683AcpiExec: Fixed a problem on unix systems where the original terminal
3684state was not always properly restored upon exit. Seen when using the -v
3685option. ACPICA BZ 1104.
3686
3687iASL: Fixed a problem with the validation of the ranges/length within the
3688Memory24 resource descriptor. There was a boundary condition when the
3689range was equal to the (length -1) caused by the fact that these values
3690are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3691
3692Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3693polarity
3694flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3695is
3696now supported properly.
3697
3698ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3699in the disassembler, data table compiler, and table template generator.
3700
3701iASL: Added a requirement for Device() objects that one of either a _HID
3702or _ADR must exist within the scope of a Device, as per the ACPI
3703specification. Remove a similar requirement that was incorrectly in place
3704for the _DSD object.
3705
3706iASL: Added error detection for illegal named references within control
3707methods that would cause runtime failures. Now trapped as errors are: 1)
3708References to objects within a non-parent control method. 2) Forward
3709references (within a method) -- for control methods, AML interpreters use
3710a one-pass parse of control methods. ACPICA BZ 1008.
3711
3712iASL: Added error checking for dependencies related to the _PSx power
3713methods. ACPICA BZ 1029.
37141) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3715_PS3.
37162) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3717scope.
3718
3719iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3720deploying the existing object and string caches and adding new caches for
3721the table compiler.
3722
3723iASL: Split the huge parser source file into multiple subfiles to improve
3724manageability. Generation now requires the M4 macro preprocessor, which
3725is part of the Bison distribution on both unix and windows platforms.
3726
3727AcpiSrc: Fixed and removed all extraneous warnings generated during
3728entire ACPICA source code scan and/or conversion.
3729
3730
3731----------------------------------------
3732
373324 July 2014. Summary of changes for version 20140724:
3734
3735The ACPI 5.1 specification has been released and is available at:
3736http://uefi.org/specs/access
3737
3738
37390) ACPI 5.1 support in ACPICA:
3740
3741ACPI 5.1 is fully supported in ACPICA as of this release.
3742
3743New predefined names. Support includes iASL and runtime ACPICA
3744validation.
3745    _CCA (Cache Coherency Attribute).
3746    _DSD (Device-Specific Data). David Box.
3747
3748Modifications to existing ACPI tables. Support includes headers, iASL
3749Data Table compiler, disassembler, and the template generator.
3750    FADT - New fields and flags. Graeme Gregory.
3751    GTDT - One new subtable and new fields. Tomasz Nowicki.
3752    MADT - Two new subtables. Tomasz Nowicki.
3753    PCCT - One new subtable.
3754
3755Miscellaneous.
3756    New notification type for System Resource Affinity change events.
3757
3758
37591) ACPICA kernel-resident subsystem:
3760
3761Fixed a regression introduced in 20140627 where a fault can happen during
3762the deletion of Alias AML namespace objects. The problem affected both
3763the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3764
3765Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3766simple mechanism to enable wake GPEs that have no associated handler or
3767control method. Rafael Wysocki.
3768
3769Updated the AcpiEnableGpe interface to disallow the enable if there is no
3770handler or control method associated with the particular GPE. This will
3771help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3772
3773Updated GPE handling and dispatch by disabling the GPE before clearing
3774the status bit for edge-triggered GPEs. Lv Zheng.
3775
3776Added Timer() support to the AML Debug object. The current timer value is
3777now displayed with each invocation of (Store to) the debug object to
3778enable simple generation of execution times for AML code (method
3779execution for example.) ACPICA BZ 1093.
3780
3781Example Code and Data Size: These are the sizes for the OS-independent
3782acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3783debug version of the code includes the debug output trace mechanism and
3784has a much larger code and data size.
3785
3786  Current Release:
3787    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
3788    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
3789  Previous Release:
3790    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3791    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3792
3793
37942) iASL Compiler/Disassembler and Tools:
3795
3796Fixed an issue with the recently added local printf implementation,
3797concerning width/precision specifiers that could cause incorrect output.
3798Lv Zheng. ACPICA BZ 1094.
3799
3800Disassembler: Added support to detect buffers that contain UUIDs and
3801disassemble them to an invocation of the ToUUID operator. Also emit
3802commented descriptions of known ACPI-related UUIDs.
3803
3804AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3805-u. Adds three new files.
3806
3807iASL: Update table compiler and disassembler for DMAR table changes that
3808were introduced in September 2013. With assistance by David Woodhouse.
3809
3810----------------------------------------
381127 June 2014. Summary of changes for version 20140627:
3812
38131) ACPICA kernel-resident subsystem:
3814
3815Formatted Output: Implemented local versions of standard formatted output
3816utilities such as printf, etc. Over time, it has been discovered that
3817there are in fact many portability issues with printf, and the addition
3818of this feature will fix/prevent these issues once and for all. Some
3819known issues are summarized below:
3820
38211) Output of 64-bit values is not portable. For example, UINT64 is %ull
3822for the Linux kernel and is %uI64 for some MSVC versions.
38232) Invoking printf consistently in a manner that is portable across both
382432-bit and 64-bit platforms is difficult at best in many situations.
38253) The output format for pointers varies from system to system (leading
3826zeros especially), and leads to inconsistent output from ACPICA across
3827platforms.
38284) Certain platform-specific printf formats may conflict with ACPICA use.
38295) If there is no local C library available, ACPICA now has local support
3830for printf.
3831
3832-- To address these printf issues in a complete manner, ACPICA now
3833directly implements a small subset of printf format specifiers, only
3834those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3835
3836Implemented support for ACPICA generation within the EFI environment.
3837Initially, the AcpiDump utility is supported in the UEFI shell
3838environment. Lv Zheng.
3839
3840Added a new external interface, AcpiLogError, to improve ACPICA
3841portability. This allows the host to redirect error messages from the
3842ACPICA utilities. Lv Zheng.
3843
3844Added and deployed new OSL file I/O interfaces to improve ACPICA
3845portability:
3846  AcpiOsOpenFile
3847  AcpiOsCloseFile
3848  AcpiOsReadFile
3849  AcpiOsWriteFile
3850  AcpiOsGetFileOffset
3851  AcpiOsSetFileOffset
3852There are C library implementations of these functions in the new file
3853service_layers/oslibcfs.c -- however, the functions can be implemented by
3854the local host in any way necessary. Lv Zheng.
3855
3856Implemented a mechanism to disable/enable ACPI table checksum validation
3857at runtime. This can be useful when loading tables very early during OS
3858initialization when it may not be possible to map the entire table in
3859order to compute the checksum. Lv Zheng.
3860
3861Fixed a buffer allocation issue for the Generic Serial Bus support.
3862Originally, a fixed buffer length was used. This change allows for
3863variable-length buffers based upon the protocol indicated by the field
3864access attributes. Reported by Lan Tianyu. Lv Zheng.
3865
3866Fixed a problem where an object detached from a namespace node was not
3867properly terminated/cleared and could cause a circular list problem if
3868reattached. ACPICA BZ 1063. David Box.
3869
3870Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3871
3872Fixed a possible memory leak in an error return path within the function
3873AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3874
3875Example Code and Data Size: These are the sizes for the OS-independent
3876acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3877debug version of the code includes the debug output trace mechanism and
3878has a much larger code and data size.
3879
3880  Current Release:
3881    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
3882    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
3883  Previous Release:
3884    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3885    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3886
3887
38882) iASL Compiler/Disassembler and Tools:
3889
3890Disassembler: Add dump of ASCII equivalent text within a comment at the
3891end of each line of the output for the Buffer() ASL operator.
3892
3893AcpiDump: Miscellaneous changes:
3894  Fixed repetitive table dump in -n mode.
3895  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
3896the ACPI 2.0 GUID fails.
3897
3898iASL: Fixed a problem where the compiler could fault if incorrectly given
3899an acpidump output file as input. ACPICA BZ 1088. David Box.
3900
3901AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
3902they are invoked without any arguments.
3903
3904Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
39051086. Colin Ian King.
3906
3907Disassembler: Cleaned up a block of code that extracts a parent Op
3908object. Added a comment that explains that the parent is guaranteed to be
3909valid in this case. ACPICA BZ 1069.
3910
3911
3912----------------------------------------
391324 April 2014. Summary of changes for version 20140424:
3914
39151) ACPICA kernel-resident subsystem:
3916
3917Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
3918Some of these tables are known to contain a trailing NULL entry. Lv
3919Zheng.
3920
3921Removed an extraneous error message for the case where there are a large
3922number of system GPEs (> 124). This was the "32-bit FADT register is too
3923long to convert to GAS struct" message, which is irrelevant for GPEs
3924since the GPEx_BLK_LEN fields of the FADT are always used instead of the
3925(limited capacity) GAS bit length. Also, several changes to ensure proper
3926support for GPE numbers > 255, where some "GPE number" fields were 8-bits
3927internally.
3928
3929Implemented and deployed additional configuration support for the public
3930ACPICA external interfaces. Entire classes of interfaces can now be
3931easily modified or configured out, replaced by stubbed inline functions
3932by default. Lv Zheng.
3933
3934Moved all public ACPICA runtime configuration globals to the public
3935ACPICA external interface file for convenience. Also, removed some
3936obsolete/unused globals. See the file acpixf.h. Lv Zheng.
3937
3938Documentation: Added a new section to the ACPICA reference describing the
3939maximum number of GPEs that can be supported by the FADT-defined GPEs in
3940block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
3941reference.
3942
3943Example Code and Data Size: These are the sizes for the OS-independent
3944acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3945debug version of the code includes the debug output trace mechanism and
3946has a much larger code and data size.
3947
3948  Current Release:
3949    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
3950    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
3951  Previous Release:
3952    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
3953    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
3954
3955
39562) iASL Compiler/Disassembler and Tools:
3957
3958iASL and disassembler: Add full support for the LPIT table (Low Power
3959Idle Table). Includes support in the disassembler, data table compiler,
3960and template generator.
3961
3962AcpiDump utility:
39631) Add option to force the use of the RSDT (over the XSDT).
39642) Improve validation of the RSDP signature (use 8 chars instead of 4).
3965
3966iASL: Add check for predefined packages that are too large.  For
3967predefined names that contain subpackages, check if each subpackage is
3968too large. (Check for too small already exists.)
3969
3970Debugger: Updated the GPE command (which simulates a GPE by executing the
3971GPE code paths in ACPICA). The GPE device is now optional, and defaults
3972to the GPE 0/1 FADT-defined blocks.
3973
3974Unix application OSL: Update line-editing support. Add additional error
3975checking and take care not to reset terminal attributes on exit if they
3976were never set. This should help guarantee that the terminal is always
3977left in the previous state on program exit.
3978
3979
3980----------------------------------------
398125 March 2014. Summary of changes for version 20140325:
3982
39831) ACPICA kernel-resident subsystem:
3984
3985Updated the auto-serialize feature for control methods. This feature
3986automatically serializes all methods that create named objects in order
3987to prevent runtime errors. The update adds support to ignore the
3988currently executing AML SyncLevel when invoking such a method, in order
3989to prevent disruption of any existing SyncLevel priorities that may exist
3990in the AML code. Although the use of SyncLevels is relatively rare, this
3991change fixes a regression where an AE_AML_MUTEX_ORDER exception can
3992appear on some machines starting with the 20140214 release.
3993
3994Added a new external interface to allow the host to install ACPI tables
3995very early, before the namespace is even created. AcpiInstallTable gives
3996the host additional flexibility for ACPI table management. Tables can be
3997installed directly by the host as if they had originally appeared in the
3998XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
3999(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4000with additional internal restructuring and cleanup. See the ACPICA
4001Reference for interface details. Lv Zheng.
4002
4003Added validation of the checksum for all incoming dynamically loaded
4004tables (via external interfaces or via AML Load/LoadTable operators). Lv
4005Zheng.
4006
4007Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4008and GPE handler removal. Restructured calls to eliminate possible race
4009conditions. Lv Zheng.
4010
4011Added a warning for the use/execution of the ASL/AML Unload (table)
4012operator. This will help detect and identify machines that use this
4013operator if and when it is ever used. This operator has never been seen
4014in the field and the usage model and possible side-effects of the drastic
4015runtime action of a full table removal are unknown.
4016
4017Reverted the use of #pragma push/pop which was introduced in the 20140214
4018release. It appears that push and pop are not implemented by enough
4019compilers to make the use of this feature feasible for ACPICA at this
4020time. However, these operators may be deployed in a future ACPICA
4021release.
4022
4023Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4024handler interfaces.
4025
4026Source code generation:
40271) Disabled the use of the "strchr" macro for the gcc-specific
4028generation. For some versions of gcc, this macro can periodically expose
4029a compiler bug which in turn causes compile-time error(s).
40302) Added support for PPC64 compilation. Colin Ian King.
4031
4032Example Code and Data Size: These are the sizes for the OS-independent
4033acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4034debug version of the code includes the debug output trace mechanism and
4035has a much larger code and data size.
4036
4037  Current Release:
4038    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4039    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4040  Previous Release:
4041    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4042    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4043
4044
40452) iASL Compiler/Disassembler and Tools:
4046
4047Disassembler: Added several new features to improve the readability of
4048the resulting ASL code. Extra information is emitted within comment
4049fields in the ASL code:
40501) Known _HID/_CID values are decoded to descriptive text.
40512) Standard values for the Notify() operator are decoded to descriptive
4052text.
40533) Target operands are expanded to full pathnames (in a comment) when
4054possible.
4055
4056Disassembler: Miscellaneous updates for extern() handling:
40571) Abort compiler if file specified by -fe option does not exist.
40582) Silence unnecessary warnings about argument count mismatches.
40593) Update warning messages concerning unresolved method externals.
40604) Emit "UnknownObj" keyword for externals whose type cannot be
4061determined.
4062
4063AcpiHelp utility:
40641) Added the -a option to display both the ASL syntax and the AML
4065encoding for an input ASL operator. This effectively displays all known
4066information about an ASL operator with one AcpiHelp invocation.
40672) Added substring match support (similar to a wildcard) for the -i
4068(_HID/PNP IDs) option.
4069
4070iASL/Disassembler: Since this tool does not yet support execution on big-
4071endian machines, added detection of endianness and an error message if
4072execution is attempted on big-endian. Support for big-endian within iASL
4073is a feature that is on the ACPICA to-be-done list.
4074
4075AcpiBin utility:
40761) Remove option to extract binary files from an acpidump; this function
4077is made obsolete by the AcpiXtract utility.
40782) General cleanup of open files and allocated buffers.
4079
4080
4081----------------------------------------
408214 February 2014. Summary of changes for version 20140214:
4083
40841) ACPICA kernel-resident subsystem:
4085
4086Implemented a new mechanism to proactively prevent problems with ill-
4087behaved reentrant control methods that create named ACPI objects. This
4088behavior is illegal as per the ACPI specification, but is nonetheless
4089frequently seen in the field. Previously, this could lead to an
4090AE_ALREADY_EXISTS exception if the method was actually entered by more
4091than one thread. This new mechanism detects such methods at table load
4092time and marks them "serialized" to prevent reentrancy. A new global
4093option, AcpiGbl_AutoSerializeMethods, has been added to disable this
4094feature if desired. This mechanism and global option obsoletes and
4095supersedes the previous AcpiGbl_SerializeAllMethods option.
4096
4097Added the "Windows 2013" string to the _OSI support. ACPICA will now
4098respond TRUE to _OSI queries with this string. It is the stated policy of
4099ACPICA to add new strings to the _OSI support as soon as possible after
4100they are defined. See the full ACPICA _OSI policy which has been added to
4101the utilities/utosi.c file.
4102
4103Hardened/updated the _PRT return value auto-repair code:
41041) Do not abort the repair on a single subpackage failure, continue to
4105check all subpackages.
41062) Add check for the minimum subpackage length (4).
41073) Properly handle extraneous NULL package elements.
4108
4109Added support to avoid the possibility of infinite loops when traversing
4110object linked lists. Never allow an infinite loop, even in the face of
4111corrupted object lists.
4112
4113ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
4114pack(pop) directives to ensure that the ACPICA headers are independent of
4115compiler settings or other host headers.
4116
4117Example Code and Data Size: These are the sizes for the OS-independent
4118acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4119debug version of the code includes the debug output trace mechanism and
4120has a much larger code and data size.
4121
4122  Current Release:
4123    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4124    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4125  Previous Release:
4126    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4127    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4128
4129
41302) iASL Compiler/Disassembler and Tools:
4131
4132iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
4133first reserved field was incorrectly forced to have a value of zero. This
4134change correctly forces the field to have a value of one. ACPICA BZ 1081.
4135
4136Debugger: Added missing support for the "Extra" and "Data" subobjects
4137when displaying object data.
4138
4139Debugger: Added support to display entire object linked lists when
4140displaying object data.
4141
4142iASL: Removed the obsolete -g option to obtain ACPI tables from the
4143Windows registry. This feature has been superseded by the acpidump
4144utility.
4145
4146
4147----------------------------------------
414814 January 2014. Summary of changes for version 20140114:
4149
41501) ACPICA kernel-resident subsystem:
4151
4152Updated all ACPICA copyrights and signons to 2014. Added the 2014
4153copyright to all module headers and signons, including the standard Linux
4154header. This affects virtually every file in the ACPICA core subsystem,
4155iASL compiler, all ACPICA utilities, and the test suites.
4156
4157Improved parameter validation for AcpiInstallGpeBlock. Added the
4158following checks:
41591) The incoming device handle refers to type ACPI_TYPE_DEVICE.
41602) There is not already a GPE block attached to the device.
4161Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4162device.
4163
4164Correctly support "references" in the ACPI_OBJECT. This change fixes the
4165support to allow references (namespace nodes) to be passed as arguments
4166to control methods via the evaluate object interface. This is probably
4167most useful for testing purposes, however.
4168
4169Improved support for 32/64 bit physical addresses in printf()-like
4170output. This change improves the support for physical addresses in printf
4171debug statements and other output on both 32-bit and 64-bit hosts. It
4172consistently outputs the appropriate number of bytes for each host. The
4173%p specifier is unsatisfactory since it does not emit uniform output on
4174all hosts/clib implementations (on some, leading zeros are not supported,
4175leading to difficult-to-read output).
4176
4177Example Code and Data Size: These are the sizes for the OS-independent
4178acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4179debug version of the code includes the debug output trace mechanism and
4180has a much larger code and data size.
4181
4182  Current Release:
4183    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
4184    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
4185  Previous Release:
4186    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4187    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4188
4189
41902) iASL Compiler/Disassembler and Tools:
4191
4192iASL: Fix a possible fault when using the Connection() operator. Fixes a
4193problem if the parent Field definition for the Connection operator refers
4194to an operation region that does not exist. ACPICA BZ 1064.
4195
4196AcpiExec: Load of local test tables is now optional. The utility has the
4197capability to load some various tables to test features of ACPICA.
4198However, there are enough of them that the output of the utility became
4199confusing. With this change, only the required local tables are displayed
4200(RSDP, XSDT, etc.) along with the actual tables loaded via the command
4201line specification. This makes the default output simler and easier to
4202understand. The -el command line option restores the original behavior
4203for testing purposes.
4204
4205AcpiExec: Added support for overlapping operation regions. This change
4206expands the simulation of operation regions by supporting regions that
4207overlap within the given address space. Supports SystemMemory and
4208SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4209
4210AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4211allows AcpiExec to simulate these address spaces, similar to the current
4212support for SystemMemory and SystemIO.
4213
4214Debugger: Added new command to read/write/compare all namespace objects.
4215The command "test objects" will exercise the entire namespace by writing
4216new values to each data object, and ensuring that the write was
4217successful. The original value is then restored and verified.
4218
4219Debugger: Added the "test predefined" command. This change makes this
4220test public and puts it under the new "test" command. The test executes
4221each and every predefined name within the current namespace.
4222
4223
4224----------------------------------------
422518 December 2013. Summary of changes for version 20131218:
4226
4227Global note: The ACPI 5.0A specification was released this month. There
4228are no changes needed for ACPICA since this release of ACPI is an
4229errata/clarification release. The specification is available at
4230acpi.info.
4231
4232
42331) ACPICA kernel-resident subsystem:
4234
4235Added validation of the XSDT root table if it is present. Some older
4236platforms contain an XSDT that is ill-formed or otherwise invalid (such
4237as containing some or all entries that are NULL pointers). This change
4238adds a new function to validate the XSDT before actually using it. If the
4239XSDT is found to be invalid, ACPICA will now automatically fall back to
4240using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4241ACPICA and enhanced by Lv Zheng and Bob Moore.
4242
4243Added a runtime option to ignore the XSDT and force the use of the RSDT.
4244This change adds a runtime option that will force ACPICA to use the RSDT
4245instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4246requires that an XSDT be used instead of the RSDT, the XSDT has been
4247found to be corrupt or ill-formed on some machines. Lv Zheng.
4248
4249Added a runtime option to favor 32-bit FADT register addresses over the
425064-bit addresses. This change adds an option to favor 32-bit FADT
4251addresses when there is a conflict between the 32-bit and 64-bit versions
4252of the same register. The default behavior is to use the 64-bit version
4253in accordance with the ACPI specification. This can now be overridden via
4254the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4255
4256During the change above, the internal "Convert FADT" and "Verify FADT"
4257functions have been merged to simplify the code, making it easier to
4258understand and maintain. ACPICA BZ 933.
4259
4260Improve exception reporting and handling for GPE block installation.
4261Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4262status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4263
4264Added helper macros to extract bus/segment numbers from the HEST table.
4265This change adds two macros to extract the encoded bus and segment
4266numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4267Betty Dall <betty.dall@hp.com>
4268
4269Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4270by ACPICA. It is not a public macro, so it should have no effect on
4271existing OSV code. Lv Zheng.
4272
4273Example Code and Data Size: These are the sizes for the OS-independent
4274acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4275debug version of the code includes the debug output trace mechanism and
4276has a much larger code and data size.
4277
4278  Current Release:
4279    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
4280    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
4281  Previous Release:
4282    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4283    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4284
4285
42862) iASL Compiler/Disassembler and Tools:
4287
4288Disassembler: Improved pathname support for emitted External()
4289statements. This change adds full pathname support for external names
4290that have been resolved internally by the inclusion of additional ACPI
4291tables (via the iASL -e option). Without this change, the disassembler
4292can emit multiple externals for the same object, or it become confused
4293when the Scope() operator is used on an external object. Overall, greatly
4294improves the ability to actually recompile the emitted ASL code when
4295objects a referenced across multiple ACPI tables. Reported by Michael
4296Tsirkin (mst@redhat.com).
4297
4298Tests/ASLTS: Updated functional control suite to execute with no errors.
4299David Box. Fixed several errors related to the testing of the interpreter
4300slack mode. Lv Zheng.
4301
4302iASL: Added support to detect names that are declared within a control
4303method, but are unused (these are temporary names that are only valid
4304during the time the method is executing). A remark is issued for these
4305cases. ACPICA BZ 1022.
4306
4307iASL: Added full support for the DBG2 table. Adds full disassembler,
4308table compiler, and template generator support for the DBG2 table (Debug
4309Port 2 table).
4310
4311iASL: Added full support for the PCCT table, update the table definition.
4312Updates the PCCT table definition in the actbl3.h header and adds table
4313compiler and template generator support.
4314
4315iASL: Added an option to emit only error messages (no warnings/remarks).
4316The -ve option will enable only error messages, warnings and remarks are
4317suppressed. This can simplify debugging when only the errors are
4318important, such as when an ACPI table is disassembled and there are many
4319warnings and remarks -- but only the actual errors are of real interest.
4320
4321Example ACPICA code (source/tools/examples): Updated the example code so
4322that it builds to an actual working program, not just example code. Added
4323ACPI tables and execution of an example control method in the DSDT. Added
4324makefile support for Unix generation.
4325
4326
4327----------------------------------------
432815 November 2013. Summary of changes for version 20131115:
4329
4330This release is available at https://acpica.org/downloads
4331
4332
43331) ACPICA kernel-resident subsystem:
4334
4335Resource Manager: Fixed loop termination for the "get AML length"
4336function. The loop previously had an error termination on a NULL resource
4337pointer, which can never happen since the loop simply increments a valid
4338resource pointer. This fix changes the loop to terminate with an error on
4339an invalid end-of-buffer condition. The problem can be seen as an
4340infinite loop by callers to AcpiSetCurrentResources with an invalid or
4341corrupted resource descriptor, or a resource descriptor that is missing
4342an END_TAG descriptor. Reported by Dan Carpenter
4343<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
4344
4345Table unload and ACPICA termination: Delete all attached data objects
4346during namespace node deletion. This fix updates namespace node deletion
4347to delete the entire list of attached objects (attached via
4348AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
43491024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
4350
4351ACPICA termination: Added support to delete all objects attached to the
4352root namespace node. This fix deletes any and all objects that have been
4353attached to the root node via AcpiAttachData. Previously, none of these
4354objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4355
4356Debug output: Do not emit the function nesting level for the in-kernel
4357build. The nesting level is really only useful during a single-thread
4358execution. Therefore, only enable this output for the AcpiExec utility.
4359Also, only emit the thread ID when executing under AcpiExec (Context
4360switches are still always detected and a message is emitted). ACPICA BZ
4361972.
4362
4363Example Code and Data Size: These are the sizes for the OS-independent
4364acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4365debug version of the code includes the debug output trace mechanism and
4366has a much larger code and data size.
4367
4368  Current Release:
4369    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
4370    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
4371  Previous Release:
4372    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4373    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4374
4375
43762) iASL Compiler/Disassembler and Tools:
4377
4378AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4379correct portable POSIX header for terminal control functions.
4380
4381Disassembler: Fixed control method invocation issues related to the use
4382of the CondRefOf() operator. The problem is seen in the disassembly where
4383control method invocations may not be disassembled properly if the
4384control method name has been used previously as an argument to CondRefOf.
4385The solution is to not attempt to emit an external declaration for the
4386CondRefOf target (it is not necessary in the first place). This prevents
4387disassembler object type confusion. ACPICA BZ 988.
4388
4389Unix Makefiles: Added an option to disable compiler optimizations and the
4390_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4391with optimizations (reportedly, gcc 4.4 for example). This change adds a
4392command line option for make (NOOPT) that disables all compiler
4393optimizations and the _FORTIFY_SOURCE compiler flag. The default
4394optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
43951034. Lv Zheng, Bob Moore.
4396
4397Tests/ASLTS: Added options to specify individual test cases and modes.
4398This allows testers running aslts.sh to optionally specify individual
4399test modes and test cases. Also added an option to disable the forced
4400generation of the ACPICA tools from source if desired. Lv Zheng.
4401
4402----------------------------------------
440327 September 2013. Summary of changes for version 20130927:
4404
4405This release is available at https://acpica.org/downloads
4406
4407
44081) ACPICA kernel-resident subsystem:
4409
4410Fixed a problem with store operations to reference objects. This change
4411fixes a problem where a Store operation to an ArgX object that contained
4412a
4413reference to a field object did not complete the automatic dereference
4414and
4415then write to the actual field object. Instead, the object type of the
4416field object was inadvertently changed to match the type of the source
4417operand. The new behavior will actually write to the field object (buffer
4418field or field unit), thus matching the correct ACPI-defined behavior.
4419
4420Implemented support to allow the host to redefine individual OSL
4421prototypes. This change enables the host to redefine OSL prototypes found
4422in the acpiosxf.h file. This allows the host to implement OSL interfaces
4423with a macro or inlined function. Further, it allows the host to add any
4424additional required modifiers such as __iomem, __init, __exit, etc., as
4425necessary on a per-interface basis. Enables maximum flexibility for the
4426OSL interfaces. Lv Zheng.
4427
4428Hardcoded the access width for the FADT-defined reset register. The ACPI
4429specification requires the reset register width to be 8 bits. ACPICA now
4430hardcodes the width to 8 and ignores the FADT width value. This provides
4431compatibility with other ACPI implementations that have allowed BIOS code
4432with bad register width values to go unnoticed. Matthew Garett, Bob
4433Moore,
4434Lv Zheng.
4435
4436Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4437used
4438in the OSL header (acpiosxf). The change modifies the position of this
4439macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4440build issues if the OSL defines the implementation of the interface to be
4441an inline stub function. Lv Zheng.
4442
4443Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4444initialization interfaces. This change adds a new macro for the main init
4445and terminate external interfaces in order to support hosts that require
4446additional or different processing for these functions. Changed from
4447ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4448Zheng, Bob Moore.
4449
4450Cleaned up the memory allocation macros for configurability. In the
4451common
4452case, the ACPI_ALLOCATE and related macros now resolve directly to their
4453respective AcpiOs* OSL interfaces. Two options:
44541) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4455default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
44562) For AcpiExec (and for debugging), the macros can optionally be
4457resolved
4458to the local ACPICA interfaces that track each allocation (local tracking
4459is used to immediately detect memory leaks).
4460Lv Zheng.
4461
4462Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4463to predefine this macro to either TRUE or FALSE during the system build.
4464
4465Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4466
4467Example Code and Data Size: These are the sizes for the OS-independent
4468acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4469debug version of the code includes the debug output trace mechanism and
4470has a much larger code and data size.
4471
4472  Current Release:
4473    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
4474    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
4475  Previous Release:
4476    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4477    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4478
4479
44802) iASL Compiler/Disassembler and Tools:
4481
4482iASL: Implemented wildcard support for the -e option. This simplifies use
4483when there are many SSDTs that must be included to resolve external
4484method
4485declarations. ACPICA BZ 1041. Example:
4486    iasl -e ssdt*.dat -d dsdt.dat
4487
4488AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4489adds a portable module that implements full history and limited line
4490editing for Unix and Linux systems. It does not use readline() due to
4491portability issues. Instead it uses the POSIX termio interface to put the
4492terminal in raw input mode so that the various special keys can be
4493trapped
4494(such as up/down-arrow for history support and left/right-arrow for line
4495editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4496
4497AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4498one or more spaces. This provides compatible with early or different
4499versions of the AcpiDump utility. ACPICA BZ 1044.
4500
4501AcpiDump: Do not ignore tables that contain only an ACPI table header.
4502Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4503no other data. This change adds support to dump these tables. Any tables
4504shorter than the length of an ACPI table header remain in error (an error
4505message is emitted). Reported by Yi Li.
4506
4507Debugger: Echo actual command along with the "unknown command" message.
4508
4509----------------------------------------
451023 August 2013. Summary of changes for version 20130823:
4511
45121) ACPICA kernel-resident subsystem:
4513
4514Implemented support for host-installed System Control Interrupt (SCI)
4515handlers. Certain ACPI functionality requires the host to handle raw
4516SCIs. For example, the "SCI Doorbell" that is defined for memory power
4517state support requires the host device driver to handle SCIs to examine
4518if the doorbell has been activated. Multiple SCI handlers can be
4519installed to allow for future expansion. New external interfaces are
4520AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4521details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4522
4523Operation region support: Never locally free the handler "context"
4524pointer. This change removes some dangerous code that attempts to free
4525the handler context pointer in some (rare) circumstances. The owner of
4526the handler owns this pointer and the ACPICA code should never touch it.
4527Although not seen to be an issue in any kernel, it did show up as a
4528problem (fault) under AcpiExec. Also, set the internal storage field for
4529the context pointer to zero when the region is deactivated, simply for
4530sanity. David Box. ACPICA BZ 1039.
4531
4532AcpiRead: On error, do not modify the return value target location. If an
4533error happens in the middle of a split 32/32 64-bit I/O operation, do not
4534modify the target of the return value pointer. Makes the code consistent
4535with the rest of ACPICA. Bjorn Helgaas.
4536
4537Example Code and Data Size: These are the sizes for the OS-independent
4538acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4539debug version of the code includes the debug output trace mechanism and
4540has a much larger code and data size.
4541
4542  Current Release:
4543    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
4544    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4545  Previous Release:
4546    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
4547    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
4548
4549
45502) iASL Compiler/Disassembler and Tools:
4551
4552AcpiDump: Implemented several new features and fixed some problems:
45531) Added support to dump the RSDP, RSDT, and XSDT tables.
45542) Added support for multiple table instances (SSDT, UEFI).
45553) Added option to dump "customized" (overridden) tables (-c).
45564) Fixed a problem where some table filenames were improperly
4557constructed.
45585) Improved some error messages, removed some unnecessary messages.
4559
4560iASL: Implemented additional support for disassembly of ACPI tables that
4561contain invocations of external control methods. The -fe<file> option
4562allows the import of a file that specifies the external methods along
4563with the required number of arguments for each -- allowing for the
4564correct disassembly of the table. This is a workaround for a limitation
4565of AML code where the disassembler often cannot determine the number of
4566arguments required for an external control method and generates incorrect
4567ASL code. See the iASL reference for details. ACPICA BZ 1030.
4568
4569Debugger: Implemented a new command (paths) that displays the full
4570pathnames (namepaths) and object types of all objects in the namespace.
4571This is an alternative to the namespace command.
4572
4573Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4574mechanism and any installed handlers.
4575
4576iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4577This can occur if there are too many parent prefixes in a namepath (for
4578example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4579
4580Application OSLs: Set the return value for the PCI read functions. These
4581functions simply return AE_OK, but should set the return value to zero
4582also. This change implements this. ACPICA BZ 1038.
4583
4584Debugger: Prevent possible command line buffer overflow. Increase the
4585size of a couple of the debugger line buffers, and ensure that overflow
4586cannot happen. ACPICA BZ 1037.
4587
4588iASL: Changed to abort immediately on serious errors during the parsing
4589phase. Due to the nature of ASL, there is no point in attempting to
4590compile these types of errors, and they typically end up causing a
4591cascade of hundreds of errors which obscure the original problem.
4592
4593----------------------------------------
459425 July 2013. Summary of changes for version 20130725:
4595
45961) ACPICA kernel-resident subsystem:
4597
4598Fixed a problem with the DerefOf operator where references to FieldUnits
4599and BufferFields incorrectly returned the parent object, not the actual
4600value of the object. After this change, a dereference of a FieldUnit
4601reference results in a read operation on the field to get the value, and
4602likewise, the appropriate BufferField value is extracted from the target
4603buffer.
4604
4605Fixed a problem where the _WAK method could cause a fault under these
4606circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4607method returned no value. The problem is rarely seen because most kernels
4608run ACPICA in slack mode.
4609
4610For the DerefOf operator, a fatal error now results if an attempt is made
4611to dereference a reference (created by the Index operator) to a NULL
4612package element. Provides compatibility with other ACPI implementations,
4613and this behavior will be added to a future version of the ACPI
4614specification.
4615
4616The ACPI Power Management Timer (defined in the FADT) is now optional.
4617This provides compatibility with other ACPI implementations and will
4618appear in the next version of the ACPI specification. If there is no PM
4619Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4620zero in the FADT indicates no PM timer.
4621
4622Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4623allows the host to globally enable/disable all vendor strings, all
4624feature strings, or both. Intended to be primarily used for debugging
4625purposes only. Lv Zheng.
4626
4627Expose the collected _OSI data to the host via a global variable. This
4628data tracks the highest level vendor ID that has been invoked by the BIOS
4629so that the host (and potentially ACPICA itself) can change behaviors
4630based upon the age of the BIOS.
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.2K Code, 27.1K Data, 123.3K Total
4639    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
4640  Previous Release:
4641    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4642    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4643
4644
46452) iASL Compiler/Disassembler and Tools:
4646
4647iASL: Created the following enhancements for the -so option (create
4648offset table):
46491)Add offsets for the last nameseg in each namepath for every supported
4650object type
46512)Add support for Processor, Device, Thermal Zone, and Scope objects
46523)Add the actual AML opcode for the parent object of every supported
4653object type
46544)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4655
4656Disassembler: Emit all unresolved external symbols in a single block.
4657These are external references to control methods that could not be
4658resolved, and thus, the disassembler had to make a guess at the number of
4659arguments to parse.
4660
4661iASL: The argument to the -T option (create table template) is now
4662optional. If not specified, the default table is a DSDT, typically the
4663most common case.
4664
4665----------------------------------------
466626 June 2013. Summary of changes for version 20130626:
4667
46681) ACPICA kernel-resident subsystem:
4669
4670Fixed an issue with runtime repair of the _CST object. Null or invalid
4671elements were not always removed properly. Lv Zheng.
4672
4673Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4674FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4675the maximum number of GPEs is 1016. Use of multiple GPE block devices
4676makes the system-wide number of GPEs essentially unlimited.
4677
4678Example Code and Data Size: These are the sizes for the OS-independent
4679acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4680debug version of the code includes the debug output trace mechanism and
4681has a much larger code and data size.
4682
4683  Current Release:
4684    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
4685    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
4686  Previous Release:
4687    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4688    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4689
4690
46912) iASL Compiler/Disassembler and Tools:
4692
4693Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4694hosts. Now supports Linux, FreeBSD, and Windows.
4695
4696Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4697Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4698
4699iASL/Preprocessor: Implemented full support for nested
4700#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4701
4702Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4703max. The original purpose of this constraint was to limit the amount of
4704debug output. However, the string function in question (UtPrintString) is
4705now used for the disassembler also, where 256 bytes is insufficient.
4706Reported by RehabMan@GitHub.
4707
4708iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4709tables. ACPICA BZ 999. Lv Zheng.
4710
4711iASL: Fixed a couple of error exit issues that could result in a "Could
4712not delete <file>" message during ASL compilation.
4713
4714AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4715the actual signatures for these tables are "FACP" and "APIC",
4716respectively.
4717
4718AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4719tables are allowed to have multiple instances.
4720
4721----------------------------------------
472217 May 2013. Summary of changes for version 20130517:
4723
47241) ACPICA kernel-resident subsystem:
4725
4726Fixed a regression introduced in version 20130328 for _INI methods. This
4727change fixes a problem introduced in 20130328 where _INI methods are no
4728longer executed properly because of a memory block that was not
4729initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4730<tomasz.nowicki@linaro.org>.
4731
4732Fixed a possible problem with the new extended sleep registers in the
4733ACPI
47345.0 FADT. Do not use these registers (even if populated) unless the HW-
4735reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
47361020. Lv Zheng.
4737
4738Implemented return value repair code for _CST predefined objects: Sort
4739the
4740list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4741
4742Implemented a debug-only option to disable loading of SSDTs from the
4743RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4744ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4745acglobal.h - ACPICA BZ 1005. Lv Zheng.
4746
4747Fixed some issues in the ACPICA initialization and termination code:
4748Tomasz Nowicki <tomasz.nowicki@linaro.org>
47491) Clear events initialized flag upon event component termination. ACPICA
4750BZ 1013.
47512) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
47523) Delete global lock pending lock during termination. ACPICA BZ 1012.
47534) Clear debug buffer global on termination to prevent possible multiple
4754delete. ACPICA BZ 1010.
4755
4756Standardized all switch() blocks across the entire source base. After
4757many
4758years, different formatting for switch() had crept in. This change makes
4759the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4760
4761Split some files to enhance ACPICA modularity and configurability:
47621) Split buffer dump routines into utilities/utbuffer.c
47632) Split internal error message routines into utilities/uterror.c
47643) Split table print utilities into tables/tbprint.c
47654) Split iASL command-line option processing into asloptions.c
4766
4767Makefile enhancements:
47681) Support for all new files above.
47692) Abort make on errors from any subcomponent. Chao Guan.
47703) Add build support for Apple Mac OS X. Liang Qi.
4771
4772Example Code and Data Size: These are the sizes for the OS-independent
4773acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4774debug version of the code includes the debug output trace mechanism and
4775has a much larger code and data size.
4776
4777  Current Release:
4778    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
4779    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
4780  Previous Release:
4781    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4782    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4783
4784
47852) iASL Compiler/Disassembler and Tools:
4786
4787New utility: Implemented an easily portable version of the acpidump
4788utility to extract ACPI tables from the system (or a file) in an ASCII
4789hex
4790dump format. The top-level code implements the various command line
4791options, file I/O, and table dump routines. To port to a new host, only
4792three functions need to be implemented to get tables -- since this
4793functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4794the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
47951) The Windows version obtains the ACPI tables from the Registry.
47962) The Linux version is under development.
47973) Other hosts - If an OS-dependent module is submitted, it will be
4798distributed with ACPICA.
4799
4800iASL: Fixed a regression for -D preprocessor option (define symbol). A
4801restructuring/change to the initialization sequence caused this option to
4802no longer work properly.
4803
4804iASL: Implemented a mechanism to disable specific warnings and remarks.
4805Adds a new command line option, "-vw <messageid> as well as "#pragma
4806disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4807
4808iASL: Fix for too-strict package object validation. The package object
4809validation for return values from the predefined names is a bit too
4810strict, it does not allow names references within the package (which will
4811be resolved at runtime.) These types of references cannot be validated at
4812compile time. This change ignores named references within package objects
4813for names that return or define static packages.
4814
4815Debugger: Fixed the 80-character command line limitation for the History
4816command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4817
4818iASL: Added control method and package support for the -so option
4819(generates AML offset table for BIOS support.)
4820
4821iASL: issue a remark if a non-serialized method creates named objects. If
4822a thread blocks within the method for any reason, and another thread
4823enters the method, the method will fail because an attempt will be made
4824to
4825create the same (named) object twice. In this case, issue a remark that
4826the method should be marked serialized. NOTE: may become a warning later.
4827ACPICA BZ 909.
4828
4829----------------------------------------
483018 April 2013. Summary of changes for version 20130418:
4831
48321) ACPICA kernel-resident subsystem:
4833
4834Fixed a possible buffer overrun during some rare but specific field unit
4835read operations. This overrun can only happen if the DSDT version is 1 --
4836meaning that all AML integers are 32 bits -- and the field length is
4837between 33 and 55 bits long. During the read, an internal buffer object
4838is
4839created for the field unit because the field is larger than an integer
4840(32
4841bits). However, in this case, the buffer will be incorrectly written
4842beyond the end because the buffer length is less than the internal
4843minimum
4844of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4845long, but a full 8 bytes will be written.
4846
4847Updated the Embedded Controller "orphan" _REG method support. This refers
4848to _REG methods under the EC device that have no corresponding operation
4849region. This is allowed by the ACPI specification. This update removes a
4850dependency on the existence an ECDT table. It will execute an orphan _REG
4851method as long as the operation region handler for the EC is installed at
4852the EC device node and not the namespace root. Rui Zhang (original
4853update), Bob Moore (update/integrate).
4854
4855Implemented run-time argument typechecking for all predefined ACPI names
4856(_STA, _BIF, etc.) This change performs object typechecking on all
4857incoming arguments for all predefined names executed via
4858AcpiEvaluateObject. This ensures that ACPI-related device drivers are
4859passing correct object types as well as the correct number of arguments
4860(therefore identifying any issues immediately). Also, the ASL/namespace
4861definition of the predefined name is checked against the ACPI
4862specification for the proper argument count. Adds one new file,
4863nsarguments.c
4864
4865Changed an exception code for the ASL UnLoad() operator. Changed the
4866exception code for the case where the input DdbHandle is invalid, from
4867AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4868
4869Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
4870global makefile. The use of this flag causes compiler errors on earlier
4871versions of GCC, so it has been removed for compatibility.
4872
4873Miscellaneous cleanup:
48741) Removed some unused/obsolete macros
48752) Fixed a possible memory leak in the _OSI support
48763) Removed an unused variable in the predefined name support
48774) Windows OSL: remove obsolete reference to a memory list field
4878
4879Example Code and Data Size: These are the sizes for the OS-independent
4880acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4881debug version of the code includes the debug output trace mechanism and
4882has a much larger code and data size.
4883
4884  Current Release:
4885    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4886    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4887  Previous Release:
4888    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
4889    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
4890
4891
48922) iASL Compiler/Disassembler and Tools:
4893
4894AcpiExec: Added installation of a handler for the SystemCMOS address
4895space. This prevents control method abort if a method accesses this
4896space.
4897
4898AcpiExec: Added support for multiple EC devices, and now install EC
4899operation region handler(s) at the actual EC device instead of the
4900namespace root. This reflects the typical behavior of host operating
4901systems.
4902
4903AcpiExec: Updated to ensure that all operation region handlers are
4904installed before the _REG methods are executed. This prevents a _REG
4905method from aborting if it accesses an address space has no handler.
4906AcpiExec installs a handler for every possible address space.
4907
4908Debugger: Enhanced the "handlers" command to display non-root handlers.
4909This change enhances the handlers command to display handlers associated
4910with individual devices throughout the namespace, in addition to the
4911currently supported display of handlers associated with the root
4912namespace
4913node.
4914
4915ASL Test Suite: Several test suite errors have been identified and
4916resolved, reducing the total error count during execution. Chao Guan.
4917
4918----------------------------------------
491928 March 2013. Summary of changes for version 20130328:
4920
49211) ACPICA kernel-resident subsystem:
4922
4923Fixed several possible race conditions with the internal object reference
4924counting mechanism. Some of the external ACPICA interfaces update object
4925reference counts without holding the interpreter or namespace lock. This
4926change adds a spinlock to protect reference count updates on the internal
4927ACPICA objects. Reported by and with assistance from Andriy Gapon
4928(avg@FreeBSD.org).
4929
4930FADT support: Removed an extraneous warning for very large GPE register
4931sets. This change removes a size mismatch warning if the legacy length
4932field for a GPE register set is larger than the 64-bit GAS structure can
4933accommodate. GPE register sets can be larger than the 255-bit width
4934limitation of the GAS structure. Linn Crosetto (linn@hp.com).
4935
4936_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
4937return from this interface. Handles a possible timeout case if
4938ACPI_WAIT_FOREVER is modified by the host to be a value less than
4939"forever". Jung-uk Kim.
4940
4941Predefined name support: Add allowed/required argument type information
4942to
4943the master predefined info table. This change adds the infrastructure to
4944enable typechecking on incoming arguments for all predefined
4945methods/objects. It does not actually contain the code that will fully
4946utilize this information, this is still under development. Also condenses
4947some duplicate code for the predefined names into a new module,
4948utilities/utpredef.c
4949
4950Example Code and Data Size: These are the sizes for the OS-independent
4951acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4952debug version of the code includes the debug output trace mechanism and
4953has a much larger code and data size.
4954
4955  Previous Release:
4956    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
4957    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
4958  Current Release:
4959    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
4960    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
4961
4962
49632) iASL Compiler/Disassembler and Tools:
4964
4965iASL: Implemented a new option to simplify the development of ACPI-
4966related
4967BIOS code. Adds support for a new "offset table" output file. The -so
4968option will create a C table containing the AML table offsets of various
4969named objects in the namespace so that BIOS code can modify them easily
4970at
4971boot time. This can simplify BIOS runtime code by eliminating expensive
4972searches for "magic values", enhancing boot times and adding greater
4973reliability. With assistance from Lee Hamel.
4974
4975iASL: Allow additional predefined names to return zero-length packages.
4976Now, all predefined names that are defined by the ACPI specification to
4977return a "variable-length package of packages" are allowed to return a
4978zero length top-level package. This allows the BIOS to tell the host that
4979the requested feature is not supported, and supports existing BIOS/ASL
4980code and practices.
4981
4982iASL: Changed the "result not used" warning to an error. This is the case
4983where an ASL operator is effectively a NOOP because the result of the
4984operation is not stored anywhere. For example:
4985    Add (4, Local0)
4986There is no target (missing 3rd argument), nor is the function return
4987value used. This is potentially a very serious problem -- since the code
4988was probably intended to do something, but for whatever reason, the value
4989was not stored. Therefore, this issue has been upgraded from a warning to
4990an error.
4991
4992AcpiHelp: Added allowable/required argument types to the predefined names
4993info display. This feature utilizes the recent update to the predefined
4994names table (above).
4995
4996----------------------------------------
499714 February 2013. Summary of changes for version 20130214:
4998
49991) ACPICA Kernel-resident Subsystem:
5000
5001Fixed a possible regression on some hosts: Reinstated the safe return
5002macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5003evaluated only once. Although these macros are not needed for the ACPICA
5004code itself, they are often used by ACPI-related host device drivers
5005where
5006the safe feature may be necessary.
5007
5008Fixed several issues related to the ACPI 5.0 reduced hardware support
5009(SOC): Now ensure that if the platform declares itself as hardware-
5010reduced
5011via the FADT, the following functions become NOOPs (and always return
5012AE_OK) because ACPI is always enabled by definition on these machines:
5013  AcpiEnable
5014  AcpiDisable
5015  AcpiHwGetMode
5016  AcpiHwSetMode
5017
5018Dynamic Object Repair: Implemented additional runtime repairs for
5019predefined name return values. Both of these repairs can simplify code in
5020the related device drivers that invoke these methods:
50211) For the _STR and _MLS names, automatically repair/convert an ASCII
5022string to a Unicode buffer.
50232) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5024a
5025lone end tag descriptor in the following cases: A Return(0) was executed,
5026a null buffer was returned, or no object at all was returned (non-slack
5027mode only). Adds a new file, nsconvert.c
5028ACPICA BZ 998. Bob Moore, Lv Zheng.
5029
5030Resource Manager: Added additional code to prevent possible infinite
5031loops
5032while traversing corrupted or ill-formed resource template buffers. Check
5033for zero-length resource descriptors in all code that loops through
5034resource templates (the length field is used to index through the
5035template). This change also hardens the external AcpiWalkResources and
5036AcpiWalkResourceBuffer interfaces.
5037
5038Local Cache Manager: Enhanced the main data structure to eliminate an
5039unnecessary mechanism to access the next object in the list. Actually
5040provides a small performance enhancement for hosts that use the local
5041ACPICA cache manager. Jung-uk Kim.
5042
5043Example Code and Data Size: These are the sizes for the OS-independent
5044acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5045debug version of the code includes the debug output trace mechanism and
5046has a much larger code and data size.
5047
5048  Previous Release:
5049    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5050    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5051  Current Release:
5052    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5053    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5054
5055
50562) iASL Compiler/Disassembler and Tools:
5057
5058iASL/Disassembler: Fixed several issues with the definition of the ACPI
50595.0 RASF table (RAS Feature Table). This change incorporates late changes
5060that were made to the ACPI 5.0 specification.
5061
5062iASL/Disassembler: Added full support for the following new ACPI tables:
5063  1) The MTMR table (MID Timer Table)
5064  2) The VRTC table (Virtual Real Time Clock Table).
5065Includes header file, disassembler, table compiler, and template support
5066for both tables.
5067
5068iASL: Implemented compile-time validation of package objects returned by
5069predefined names. This new feature validates static package objects
5070returned by the various predefined names defined to return packages. Both
5071object types and package lengths are validated, for both parent packages
5072and sub-packages, if any. The code is similar in structure and behavior
5073to
5074the runtime repair mechanism within the AML interpreter and uses the
5075existing predefined name information table. Adds a new file, aslprepkg.c.
5076ACPICA BZ 938.
5077
5078iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5079This feature detects a binary file with a valid ACPI table header and
5080invokes the disassembler automatically. Eliminates the need to
5081specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5082
5083iASL/Disassembler: Added several warnings for the case where there are
5084unresolved control methods during the disassembly. This can potentially
5085cause errors when the output file is compiled, because the disassembler
5086assumes zero method arguments in these cases (it cannot determine the
5087actual number of arguments without resolution/definition of the method).
5088
5089Debugger: Added support to display all resources with a single command.
5090Invocation of the resources command with no arguments will now display
5091all
5092resources within the current namespace.
5093
5094AcpiHelp: Added descriptive text for each ACPICA exception code displayed
5095via the -e option.
5096
5097----------------------------------------
509817 January 2013. Summary of changes for version 20130117:
5099
51001) ACPICA Kernel-resident Subsystem:
5101
5102Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
5103return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
5104objects to return a package containing one integer, most BIOS code
5105returns
5106two integers and the previous code reflects that. However, we also need
5107to
5108support BIOS code that actually implements to the ACPI spec, and this
5109change reflects this.
5110
5111Fixed two issues with the ACPI_DEBUG_PRINT macros:
51121) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
5113C compilers that require this support.
51142) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
5115ACPI_DEBUG is already used by many of the various hosts.
5116
5117Updated all ACPICA copyrights and signons to 2013. Added the 2013
5118copyright to all module headers and signons, including the standard Linux
5119header. This affects virtually every file in the ACPICA core subsystem,
5120iASL compiler, all ACPICA utilities, and the test suites.
5121
5122Example Code and Data Size: These are the sizes for the OS-independent
5123acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5124debug version of the code includes the debug output trace mechanism and
5125has a much larger code and data size.
5126
5127  Previous Release:
5128    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5129    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5130  Current Release:
5131    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5132    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5133
5134
51352) iASL Compiler/Disassembler and Tools:
5136
5137Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5138prevent a possible fault on some hosts. Some C libraries modify the arg
5139pointer parameter to vfprintf making it difficult to call it twice in the
5140AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5141does not affect the Windows OSL since the Win C library does not modify
5142the arg pointer. Chao Guan, Bob Moore.
5143
5144iASL: Fixed a possible infinite loop when the maximum error count is
5145reached. If an output file other than the .AML file is specified (such as
5146a listing file), and the maximum number of errors is reached, do not
5147attempt to flush data to the output file(s) as the compiler is aborting.
5148This can cause an infinite loop as the max error count code essentially
5149keeps calling itself.
5150
5151iASL/Disassembler: Added an option (-in) to ignore NOOP
5152opcodes/operators.
5153Implemented for both the compiler and the disassembler. Often, the NOOP
5154opcode is used as padding for packages that are changed dynamically by
5155the
5156BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5157errors. This option causes the disassembler to ignore all NOOP opcodes
5158(0xA3), and it also causes the compiler to ignore all ASL source code
5159NOOP
5160statements as well.
5161
5162Debugger: Enhanced the Sleep command to execute all sleep states. This
5163change allows Sleep to be invoked with no arguments and causes the
5164debugger to execute all of the sleep states, 0-5, automatically.
5165
5166----------------------------------------
516720 December 2012. Summary of changes for version 20121220:
5168
51691) ACPICA Kernel-resident Subsystem:
5170
5171Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5172alternate entry point for AcpiWalkResources and improves the usability of
5173the resource manager by accepting as input a buffer containing the output
5174of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5175input buffer is not deleted by this interface so that it can be used by
5176the host later. See the ACPICA reference for details.
5177
5178Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5179(DSDT version < 2). The constant will be truncated and this warning
5180reflects that behavior.
5181
5182Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5183ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5184both get and set the new wake bit in these descriptors, separately from
5185the existing share bit. Reported by Aaron Lu.
5186
5187Interpreter: Fix Store() when an implicit conversion is not possible. For
5188example, in the cases such as a store of a string to an existing package
5189object, implement the store as a CopyObject(). This is a small departure
5190from the ACPI specification which states that the control method should
5191be
5192aborted in this case. However, the ASLTS suite depends on this behavior.
5193
5194Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5195macros: check if debug output is currently enabled as soon as possible to
5196minimize performance impact if debug is in fact not enabled.
5197
5198Source code restructuring: Cleanup to improve modularity. The following
5199new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5200psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5201Associated makefiles and project files have been updated.
5202
5203Changed an exception code for LoadTable operator. For the case where one
5204of the input strings is too long, change the returned exception code from
5205AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5206
5207Fixed a possible memory leak in dispatcher error path. On error, delete
5208the mutex object created during method mutex creation. Reported by
5209tim.gardner@canonical.com.
5210
5211Example Code and Data Size: These are the sizes for the OS-independent
5212acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5213debug version of the code includes the debug output trace mechanism and
5214has a much larger code and data size.
5215
5216  Previous Release:
5217    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5218    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5219  Current Release:
5220    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
5221    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
5222
5223
52242) iASL Compiler/Disassembler and Tools:
5225
5226iASL: Disallow a method call as argument to the ObjectType ASL operator.
5227This change tracks an errata to the ACPI 5.0 document. The AML grammar
5228will not allow the interpreter to differentiate between a method and a
5229method invocation when these are used as an argument to the ObjectType
5230operator. The ACPI specification change is to disallow a method
5231invocation
5232(UserTerm) for the ObjectType operator.
5233
5234Finish support for the TPM2 and CSRT tables in the headers, table
5235compiler, and disassembler.
5236
5237Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5238always expires immediately if the semaphore is not available. The
5239original
5240code was using a relative-time timeout, but sem_timedwait requires the
5241use
5242of an absolute time.
5243
5244iASL: Added a remark if the Timer() operator is used within a 32-bit
5245table. This operator returns a 64-bit time value that will be truncated
5246within a 32-bit table.
5247
5248iASL Source code restructuring: Cleanup to improve modularity. The
5249following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5250aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5251been updated.
5252
5253
5254----------------------------------------
525514 November 2012. Summary of changes for version 20121114:
5256
52571) ACPICA Kernel-resident Subsystem:
5258
5259Implemented a performance enhancement for ACPI/AML Package objects. This
5260change greatly increases the performance of Package objects within the
5261interpreter. It changes the processing of reference counts for packages
5262by
5263optimizing for the most common case where the package sub-objects are
5264either Integers, Strings, or Buffers. Increases the overall performance
5265of
5266the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
52672X.)
5268Chao Guan. ACPICA BZ 943.
5269
5270Implemented and deployed common macros to extract flag bits from resource
5271descriptors. Improves readability and maintainability of the code. Fixes
5272a
5273problem with the UART serial bus descriptor for the number of data bits
5274flags (was incorrectly 2 bits, should be 3).
5275
5276Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5277of the macros and changed the SETx macros to the style of (destination,
5278source). Also added ACPI_CASTx companion macros. Lv Zheng.
5279
5280Example Code and Data Size: These are the sizes for the OS-independent
5281acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5282debug version of the code includes the debug output trace mechanism and
5283has a much larger code and data size.
5284
5285  Previous Release:
5286    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5287    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5288  Current Release:
5289    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
5290    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5291
5292
52932) iASL Compiler/Disassembler and Tools:
5294
5295Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5296adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5297Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5298
5299Disassembler: Fixed a problem with external declaration generation. Fixes
5300a problem where an incorrect pathname could be generated for an external
5301declaration if the original reference to the object includes leading
5302carats (^). ACPICA BZ 984.
5303
5304Debugger: Completed a major update for the Disassemble<method> command.
5305This command was out-of-date and did not properly disassemble control
5306methods that had any reasonable complexity. This fix brings the command
5307up
5308to the same level as the rest of the disassembler. Adds one new file,
5309dmdeferred.c, which is existing code that is now common with the main
5310disassembler and the debugger disassemble command. ACPICA MZ 978.
5311
5312iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5313Newer versions of Bison emit this prototype, so moved the prototype out
5314of
5315the iASL header to where it is actually used in order to avoid a
5316duplicate
5317declaration.
5318
5319iASL/Tools: Standardized use of the stream I/O functions:
5320  1) Ensure check for I/O error after every fopen/fread/fwrite
5321  2) Ensure proper order of size/count arguments for fread/fwrite
5322  3) Use test of (Actual != Requested) after all fwrite, and most fread
5323  4) Standardize I/O error messages
5324Improves reliability and maintainability of the code. Bob Moore, Lv
5325Zheng.
5326ACPICA BZ 981.
5327
5328Disassembler: Prevent duplicate External() statements. During generation
5329of external statements, detect similar pathnames that are actually
5330duplicates such as these:
5331  External (\ABCD)
5332  External (ABCD)
5333Remove all leading '\' characters from pathnames during the external
5334statement generation so that duplicates will be detected and tossed.
5335ACPICA BZ 985.
5336
5337Tools: Replace low-level I/O with stream I/O functions. Replace
5338open/read/write/close with the stream I/O equivalents
5339fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5340Moore.
5341
5342AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5343name header so that AcpiXtract recognizes the output file/table.
5344
5345iASL: Remove obsolete -2 option flag. Originally intended to force the
5346compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5347and the entire concept is now obsolete.
5348
5349----------------------------------------
535018 October 2012. Summary of changes for version 20121018:
5351
5352
53531) ACPICA Kernel-resident Subsystem:
5354
5355Updated support for the ACPI 5.0 MPST table. Fixes some problems
5356introduced by late changes to the table as it was added to the ACPI 5.0
5357specification. Includes header, disassembler, and data table compiler
5358support as well as a new version of the MPST template.
5359
5360AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
53615.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5362methods: _HID, _CID, and _UID.
5363
5364Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5365ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5366name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5367names for their various drivers. Affects the AcpiGetObjectInfo external
5368interface, and other internal interfaces as well.
5369
5370Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5371This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5372on machines that support non-aligned transfers. Optimizes for this case
5373rather than using a strncpy. With assistance from Zheng Lv.
5374
5375Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5376error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5377
5378Added a new debug print message for AML mutex objects that are force-
5379released. At control method termination, any currently acquired mutex
5380objects are force-released. Adds a new debug-only message for each one
5381that is released.
5382
5383Audited/updated all ACPICA return macros and the function debug depth
5384counter: 1) Ensure that all functions that use the various TRACE macros
5385also use the appropriate ACPICA return macros. 2) Ensure that all normal
5386return statements surround the return expression (value) with parens to
5387ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5388Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5389
5390Global source code changes/maintenance: All extra lines at the start and
5391end of each source file have been removed for consistency. Also, within
5392comments, all new sentences start with a single space instead of a double
5393space, again for consistency across the code base.
5394
5395Example Code and Data Size: These are the sizes for the OS-independent
5396acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5397debug version of the code includes the debug output trace mechanism and
5398has a much larger code and data size.
5399
5400  Previous Release:
5401    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5402    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5403  Current Release:
5404    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
5405    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
5406
5407
54082) iASL Compiler/Disassembler and Tools:
5409
5410AcpiExec: Improved the algorithm used for memory leak/corruption
5411detection. Added some intelligence to the code that maintains the global
5412list of allocated memory. The list is now ordered by allocated memory
5413address, significantly improving performance. When running AcpiExec on
5414the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5415on the platform and/or the environment. Note, this performance
5416enhancement affects the AcpiExec utility only, not the kernel-resident
5417ACPICA code.
5418
5419Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5420the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5421incorrect table offset reported for invalid opcodes. Report the original
542232-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5423
5424Disassembler: Enhanced the -vt option to emit the binary table data in
5425hex format to assist with debugging.
5426
5427Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5428size of file structure. Colin Ian King.
5429
5430----------------------------------------
543113 September 2012. Summary of changes for version 20120913:
5432
5433
54341) ACPICA Kernel-resident Subsystem:
5435
5436ACPI 5.0: Added two new notify types for the Hardware Error Notification
5437Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5438and
5439MCE(6).
5440
5441Table Manager: Merged/removed duplicate code in the root table resize
5442functions. One function is external, the other is internal. Lv Zheng,
5443ACPICA
5444BZ 846.
5445
5446Makefiles: Completely removed the obsolete "Linux" makefiles under
5447acpica/generate/linux. These makefiles are obsolete and have been
5448replaced
5449by
5450the generic unix makefiles under acpica/generate/unix.
5451
5452Makefiles: Ensure that binary files always copied properly. Minor rule
5453change
5454to ensure that the final binary output files are always copied up to the
5455appropriate binary directory (bin32 or bin64.)
5456
5457Example Code and Data Size: These are the sizes for the OS-independent
5458acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5459debug
5460version of the code includes the debug output trace mechanism and has a
5461much
5462larger code and data size.
5463
5464  Previous Release:
5465    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5466    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5467  Current Release:
5468    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
5469    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
5470
5471
54722) iASL Compiler/Disassembler and Tools:
5473
5474Disassembler: Fixed a possible fault during the disassembly of resource
5475descriptors when a second parse is required because of the invocation of
5476external control methods within the table. With assistance from
5477adq@lidskialf.net. ACPICA BZ 976.
5478
5479iASL: Fixed a namepath optimization problem. An error can occur if the
5480parse
5481node that contains the namepath to be optimized does not have a parent
5482node
5483that is a named object. This change fixes the problem.
5484
5485iASL: Fixed a regression where the AML file is not deleted on errors. The
5486AML
5487output file should be deleted if there are any errors during the
5488compiler.
5489The
5490only exception is if the -f (force output) option is used. ACPICA BZ 974.
5491
5492iASL: Added a feature to automatically increase internal line buffer
5493sizes.
5494Via realloc(), automatically increase the internal line buffer sizes as
5495necessary to support very long source code lines. The current version of
5496the
5497preprocessor requires a buffer long enough to contain full source code
5498lines.
5499This change increases the line buffer(s) if the input lines go beyond the
5500current buffer size. This eliminates errors that occurred when a source
5501code
5502line was longer than the buffer.
5503
5504iASL: Fixed a problem with constant folding in method declarations. The
5505SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5506if a
5507Type3 opcode was used.
5508
5509Debugger: Improved command help support. For incorrect argument count,
5510display
5511full help for the command. For help command itself, allow an argument to
5512specify a command.
5513
5514Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5515errors during execution of the suite. Guan Chao.
5516
5517----------------------------------------
551816 August 2012. Summary of changes for version 20120816:
5519
5520
55211) ACPICA Kernel-resident Subsystem:
5522
5523Removed all use of the deprecated _GTS and _BFS predefined methods. The
5524_GTS
5525(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5526deprecated and will probably be removed from the ACPI specification.
5527Windows
5528does not invoke them, and reportedly never will. The final nail in the
5529coffin
5530is that the ACPI specification states that these methods must be run with
5531interrupts off, which is not going to happen in a kernel interpreter.
5532Note:
5533Linux has removed all use of the methods also. It was discovered that
5534invoking these functions caused failures on some machines, probably
5535because
5536they were never tested since Windows does not call them. Affects two
5537external
5538interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5539ACPICA BZ 969.
5540
5541Implemented support for complex bit-packed buffers returned from the _PLD
5542(Physical Location of Device) predefined method. Adds a new external
5543interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5544C
5545structure. Note: C Bitfields cannot be used for this type of predefined
5546structure since the memory layout of individual bitfields is not defined
5547by
5548the C language. In addition, there are endian concerns where a compiler
5549will
5550change the bitfield ordering based on the machine type. The new ACPICA
5551interface eliminates these issues, and should be called after _PLD is
5552executed. ACPICA BZ 954.
5553
5554Implemented a change to allow a scope change to root (via "Scope (\)")
5555during
5556execution of module-level ASL code (code that is executed at table load
5557time.) Lin Ming.
5558
5559Added the Windows8/Server2012 string for the _OSI method. This change
5560adds
5561a
5562new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
55632012.
5564
5565Added header support for the new ACPI tables DBG2 (Debug Port Table Type
55662)
5567and CSRT (Core System Resource Table).
5568
5569Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5570names. This simplifies access to the buffers returned by these predefined
5571names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5572
5573GPE support: Removed an extraneous parameter from the various low-level
5574internal GPE functions. Tang Feng.
5575
5576Removed the linux makefiles from the unix packages. The generate/linux
5577makefiles are obsolete and have been removed from the unix tarball
5578release
5579packages. The replacement makefiles are under generate/unix, and there is
5580a
5581top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5582
5583Updates for Unix makefiles:
55841) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
55852) Update linker flags (move to end of command line) for AcpiExec
5586utility.
5587Guan Chao.
5588
5589Split ACPICA initialization functions to new file, utxfinit.c. Split from
5590utxface.c to improve modularity and reduce file size.
5591
5592Example Code and Data Size: These are the sizes for the OS-independent
5593acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5594debug version of the code includes the debug output trace mechanism and
5595has a
5596much larger code and data size.
5597
5598  Previous Release:
5599    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5600    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5601  Current Release:
5602    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
5603    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
5604
5605
56062) iASL Compiler/Disassembler and Tools:
5607
5608iASL: Fixed a problem with constant folding for fixed-length constant
5609expressions. The constant-folding code was not being invoked for constant
5610expressions that allow the use of type 3/4/5 opcodes to generate
5611constants
5612for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5613result
5614in the generation of invalid AML bytecode. ACPICA BZ 970.
5615
5616iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5617apparently automatically emit some of the necessary externals. This
5618change
5619handles these versions in order to eliminate generation warnings.
5620
5621Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5622
5623Disassembler: Add support to decode _PLD buffers. The decoded buffer
5624appears
5625within comments in the output file.
5626
5627Debugger: Fixed a regression with the "Threads" command where
5628AE_BAD_PARAMETER was always returned.
5629
5630----------------------------------------
563111 July 2012. Summary of changes for version 20120711:
5632
56331) ACPICA Kernel-resident Subsystem:
5634
5635Fixed a possible fault in the return package object repair code. Fixes a
5636problem that can occur when a lone package object is wrapped with an
5637outer
5638package object in order to force conformance to the ACPI specification.
5639Can
5640affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5641_DLM,
5642_CSD, _PSD, _TSD.
5643
5644Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5645PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5646ARB_DIS bit must be implemented in the host-dependent C3 processor power
5647state
5648support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5649both
5650Intel and other vendors. (for Intel: ICH4-M and earlier)
5651
5652This change removes the code to disable/enable bus master arbitration
5653during
5654suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5655causes
5656resume problems on some machines. The change has been in use for over
5657seven
5658years within Linux.
5659
5660Implemented two new external interfaces to support host-directed dynamic
5661ACPI
5662table load and unload. They are intended to simplify the host
5663implementation
5664of hot-plug support:
5665  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5666  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5667table.
5668See the ACPICA reference for additional details. Adds one new file,
5669components/tables/tbxfload.c
5670
5671Implemented and deployed two new interfaces for errors and warnings that
5672are
5673known to be caused by BIOS/firmware issues:
5674  AcpiBiosError: Prints "ACPI Firmware Error" message.
5675  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5676Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5677table
5678and FADT errors. Additional deployment to be completed as appropriate in
5679the
5680future. The associated conditional macros are ACPI_BIOS_ERROR and
5681ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5682ACPICA
5683BZ
5684843.
5685
5686Implicit notify support: ensure that no memory allocation occurs within a
5687critical region. This fix moves a memory allocation outside of the time
5688that a
5689spinlock is held. Fixes issues on systems that do not allow this
5690behavior.
5691Jung-uk Kim.
5692
5693Split exception code utilities and tables into a new file,
5694utilities/utexcep.c
5695
5696Example Code and Data Size: These are the sizes for the OS-independent
5697acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5698debug
5699version of the code includes the debug output trace mechanism and has a
5700much
5701larger code and data size.
5702
5703  Previous Release:
5704    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5705    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5706  Current Release:
5707    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
5708    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
5709
5710
57112) iASL Compiler/Disassembler and Tools:
5712
5713iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5714of
57150. Jung-uk Kim.
5716
5717Debugger: Enhanced the "tables" command to emit additional information
5718about
5719the current set of ACPI tables, including the owner ID and flags decode.
5720
5721Debugger: Reimplemented the "unload" command to use the new
5722AcpiUnloadParentTable external interface. This command was disable
5723previously
5724due to need for an unload interface.
5725
5726AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5727option
5728will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5729
5730----------------------------------------
573120 June 2012. Summary of changes for version 20120620:
5732
5733
57341) ACPICA Kernel-resident Subsystem:
5735
5736Implemented support to expand the "implicit notify" feature to allow
5737multiple
5738devices to be notified by a single GPE. This feature automatically
5739generates a
5740runtime device notification in the absence of a BIOS-provided GPE control
5741method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5742notify is
5743provided by ACPICA for Windows compatibility, and is a workaround for
5744BIOS
5745AML
5746code errors. See the description of the AcpiSetupGpeForWake interface in
5747the
5748APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5749
5750Changed some comments and internal function names to simplify and ensure
5751correctness of the Linux code translation. No functional changes.
5752
5753Example Code and Data Size: These are the sizes for the OS-independent
5754acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5755debug
5756version of the code includes the debug output trace mechanism and has a
5757much
5758larger code and data size.
5759
5760  Previous Release:
5761    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5762    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5763  Current Release:
5764    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
5765    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
5766
5767
57682) iASL Compiler/Disassembler and Tools:
5769
5770Disassembler: Added support to emit short, commented descriptions for the
5771ACPI
5772predefined names in order to improve the readability of the disassembled
5773output. ACPICA BZ 959. Changes include:
5774  1) Emit descriptions for all standard predefined names (_INI, _STA,
5775_PRW,
5776etc.)
5777  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5778  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5779etc.)
5780
5781AcpiSrc: Fixed several long-standing Linux code translation issues.
5782Argument
5783descriptions in function headers are now translated properly to lower
5784case
5785and
5786underscores. ACPICA BZ 961. Also fixes translation problems such as
5787these:
5788(old -> new)
5789  i_aSL -> iASL
5790  00-7_f -> 00-7F
5791  16_k -> 16K
5792  local_fADT -> local_FADT
5793  execute_oSI -> execute_OSI
5794
5795iASL: Fixed a problem where null bytes were inadvertently emitted into
5796some
5797listing files.
5798
5799iASL: Added the existing debug options to the standard help screen. There
5800are
5801no longer two different help screens. ACPICA BZ 957.
5802
5803AcpiHelp: Fixed some typos in the various predefined name descriptions.
5804Also
5805expand some of the descriptions where appropriate.
5806
5807iASL: Fixed the -ot option (display compile times/statistics). Was not
5808working
5809properly for standard output; only worked for the debug file case.
5810
5811----------------------------------------
581218 May 2012. Summary of changes for version 20120518:
5813
5814
58151) ACPICA Core Subsystem:
5816
5817Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5818defined
5819to block until asynchronous events such as notifies and GPEs have
5820completed.
5821Within ACPICA, it is only called before a notify or GPE handler is
5822removed/uninstalled. It also may be useful for the host OS within related
5823drivers such as the Embedded Controller driver. See the ACPICA reference
5824for
5825additional information. ACPICA BZ 868.
5826
5827ACPI Tables: Added a new error message for a possible overflow failure
5828during
5829the conversion of FADT 32-bit legacy register addresses to internal
5830common
583164-
5832bit GAS structure representation. The GAS has a one-byte "bit length"
5833field,
5834thus limiting the register length to 255 bits. ACPICA BZ 953.
5835
5836Example Code and Data Size: These are the sizes for the OS-independent
5837acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5838debug
5839version of the code includes the debug output trace mechanism and has a
5840much
5841larger code and data size.
5842
5843  Previous Release:
5844    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5845    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5846  Current Release:
5847    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
5848    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
5849
5850
58512) iASL Compiler/Disassembler and Tools:
5852
5853iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
5854macro.
5855This keyword was added late in the ACPI 5.0 release cycle and was not
5856implemented until now.
5857
5858Disassembler: Added support for Operation Region externals. Adds missing
5859support for operation regions that are defined in another table, and
5860referenced locally via a Field or BankField ASL operator. Now generates
5861the
5862correct External statement.
5863
5864Disassembler: Several additional fixes for the External() statement
5865generation
5866related to some ASL operators. Also, order the External() statements
5867alphabetically in the disassembler output. Fixes the External()
5868generation
5869for
5870the Create* field, Alias, and Scope operators:
5871 1) Create* buffer field operators - fix type mismatch warning on
5872disassembly
5873 2) Alias - implement missing External support
5874 3) Scope - fix to make sure all necessary externals are emitted.
5875
5876iASL: Improved pathname support. For include files, merge the prefix
5877pathname
5878with the file pathname and eliminate unnecessary components. Convert
5879backslashes in all pathnames to forward slashes, for readability. Include
5880file
5881pathname changes affect both #include and Include() type operators.
5882
5883iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
5884end
5885of a valid line by inserting a newline and then returning the EOF during
5886the
5887next call to GetNextLine. Prevents the line from being ignored due to EOF
5888condition.
5889
5890iASL: Implemented some changes to enhance the IDE support (-vi option.)
5891Error
5892and Warning messages are now correctly recognized for both the source
5893code
5894browser and the global error and warning counts.
5895
5896----------------------------------------
589720 April 2012. Summary of changes for version 20120420:
5898
5899
59001) ACPICA Core Subsystem:
5901
5902Implemented support for multiple notify handlers. This change adds
5903support
5904to
5905allow multiple system and device notify handlers on Device, Thermal Zone,
5906and
5907Processor objects. This can simplify the host OS notification
5908implementation.
5909Also re-worked and restructured the entire notify support code to
5910simplify
5911handler installation, handler removal, notify event queuing, and notify
5912dispatch to handler(s). Note: there can still only be two global notify
5913handlers - one for system notifies and one for device notifies. There are
5914no
5915changes to the existing handler install/remove interfaces. Lin Ming, Bob
5916Moore, Rafael Wysocki.
5917
5918Fixed a regression in the package repair code where the object reference
5919count was calculated incorrectly. Regression was introduced in the commit
5920"Support to add Package wrappers".
5921
5922Fixed a couple possible memory leaks in the AML parser, in the error
5923recovery
5924path. Jesper Juhl, Lin Ming.
5925
5926Example Code and Data Size: These are the sizes for the OS-independent
5927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5928debug version of the code includes the debug output trace mechanism and
5929has a
5930much larger code and data size.
5931
5932  Previous Release:
5933    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5934    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
5935  Current Release:
5936    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
5937    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
5938
5939
59402) iASL Compiler/Disassembler and Tools:
5941
5942iASL: Fixed a problem with the resource descriptor support where the
5943length
5944of the StartDependentFn and StartDependentFnNoPrio descriptors were not
5945included in cumulative descriptor offset, resulting in incorrect values
5946for
5947resource tags within resource descriptors appearing after a
5948StartDependent*
5949descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
5950
5951iASL and Preprocessor: Implemented full support for the #line directive
5952to
5953correctly track original source file line numbers through the .i
5954preprocessor
5955output file - for error and warning messages.
5956
5957iASL: Expand the allowable byte constants for address space IDs.
5958Previously,
5959the allowable range was 0x80-0xFF (user-defined spaces), now the range is
59600x0A-0xFF to allow for custom and new IDs without changing the compiler.
5961
5962iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
5963
5964iASL: Add option to completely disable the preprocessor (-Pn).
5965
5966iASL: Now emit all error/warning messages to standard error (stderr) by
5967default (instead of the previous stdout).
5968
5969ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
5970Update
5971for resource descriptor offset fix above. Update/cleanup error output
5972routines. Enable and send iASL errors/warnings to an error logfile
5973(error.txt). Send all other iASL output to a logfile (compiler.txt).
5974Fixed
5975several extraneous "unrecognized operator" messages.
5976
5977----------------------------------------
597820 March 2012. Summary of changes for version 20120320:
5979
5980
59811) ACPICA Core Subsystem:
5982
5983Enhanced the sleep/wake interfaces to optionally execute the _GTS method
5984(Going To Sleep) and the _BFS method (Back From Sleep). Windows
5985apparently
5986does not execute these methods, and therefore these methods are often
5987untested. It has been seen on some systems where the execution of these
5988methods causes errors and also prevents the machine from entering S5. It
5989is
5990therefore suggested that host operating systems do not execute these
5991methods
5992by default. In the future, perhaps these methods can be optionally
5993executed
5994based on the age of the system and/or what is the newest version of
5995Windows
5996that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
5997and
5998AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
5999Ming.
6000
6001Fixed a problem where the length of the local/common FADT was set too
6002early.
6003The local FADT table length cannot be set to the common length until the
6004original length has been examined. There is code that checks the table
6005length
6006and sets various fields appropriately. This can affect older machines
6007with
6008early FADT versions. For example, this can cause inadvertent writes to
6009the
6010CST_CNT register. Julian Anastasov.
6011
6012Fixed a mapping issue related to a physical table override. Use the
6013deferred
6014mapping mechanism for tables loaded via the physical override OSL
6015interface.
6016This allows for early mapping before the virtual memory manager is
6017available.
6018Thomas Renninger, Bob Moore.
6019
6020Enhanced the automatic return-object repair code: Repair a common problem
6021with
6022predefined methods that are defined to return a variable-length Package
6023of
6024sub-objects. If there is only one sub-object, some BIOS ASL code
6025mistakenly
6026simply returns the single object instead of a Package with one sub-
6027object.
6028This new support will repair this error by wrapping a Package object
6029around
6030the original object, creating the correct and expected Package with one
6031sub-
6032object. Names that can be repaired in this manner include: _ALR, _CSD,
6033_HPX,
6034_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6035939.
6036
6037Changed the exception code returned for invalid ACPI paths passed as
6038parameters to external interfaces such as AcpiEvaluateObject. Was
6039AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6040
6041Example Code and Data Size: These are the sizes for the OS-independent
6042acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6043debug
6044version of the code includes the debug output trace mechanism and has a
6045much
6046larger code and data size.
6047
6048  Previous Release:
6049    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6050    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6051  Current Release:
6052    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6053    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6054
6055
60562) iASL Compiler/Disassembler and Tools:
6057
6058iASL: Added the infrastructure and initial implementation of a integrated
6059C-
6060like preprocessor. This will simplify BIOS development process by
6061eliminating
6062the need for a separate preprocessing step during builds. On Windows, it
6063also
6064eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6065features including full #define() macro support are still under
6066development.
6067These preprocessor directives are supported:
6068    #define
6069    #elif
6070    #else
6071    #endif
6072    #error
6073    #if
6074    #ifdef
6075    #ifndef
6076    #include
6077    #pragma message
6078    #undef
6079    #warning
6080In addition, these new command line options are supported:
6081    -D <symbol> Define symbol for preprocessor use
6082    -li         Create preprocessed output file (*.i)
6083    -P          Preprocess only and create preprocessor output file (*.i)
6084
6085Table Compiler: Fixed a problem where the equals operator within an
6086expression
6087did not work properly.
6088
6089Updated iASL to use the current versions of Bison/Flex. Updated the
6090Windows
6091project file to invoke these tools from the standard location. ACPICA BZ
6092904.
6093Versions supported:
6094    Flex for Windows:  V2.5.4
6095    Bison for Windows: V2.4.1
6096
6097----------------------------------------
609815 February 2012. Summary of changes for version 20120215:
6099
6100
61011) ACPICA Core Subsystem:
6102
6103There have been some major changes to the sleep/wake support code, as
6104described below (a - e).
6105
6106a) The AcpiLeaveSleepState has been split into two interfaces, similar to
6107AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
6108AcpiLeaveSleepStatePrep. This allows the host to perform actions between
6109the
6110time the _BFS method is called and the _WAK method is called. NOTE: all
6111hosts
6112must update their wake/resume code or else sleep/wake will not work
6113properly.
6114Rafael Wysocki.
6115
6116b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
6117_WAK
6118method. Some machines require that the GPEs are enabled before the _WAK
6119method
6120is executed. Thomas Renninger.
6121
6122c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
6123bit.
6124Some BIOS code assumes that WAK_STS will be cleared on resume and use it
6125to
6126determine whether the system is rebooting or resuming. Matthew Garrett.
6127
6128d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
6129Sleep) to
6130match the ACPI specification requirement. Rafael Wysocki.
6131
6132e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
6133registers within the V5 FADT. This support adds two new files:
6134hardware/hwesleep.c implements the support for the new registers. Moved
6135all
6136sleep/wake external interfaces to hardware/hwxfsleep.c.
6137
6138
6139Added a new OSL interface for ACPI table overrides,
6140AcpiOsPhysicalTableOverride. This interface allows the host to override a
6141table via a physical address, instead of the logical address required by
6142AcpiOsTableOverride. This simplifies the host implementation. Initial
6143implementation by Thomas Renninger. The ACPICA implementation creates a
6144single
6145shared function for table overrides that attempts both a logical and a
6146physical override.
6147
6148Expanded the OSL memory read/write interfaces to 64-bit data
6149(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6150transfer support for GAS register structures passed to AcpiRead and
6151AcpiWrite.
6152
6153Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6154custom
6155build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6156model.
6157See the ACPICA reference for details. ACPICA BZ 942. This option removes
6158about
615910% of the code and 5% of the static data, and the following hardware
6160ACPI
6161features become unavailable:
6162    PM Event and Control registers
6163    SCI interrupt (and handler)
6164    Fixed Events
6165    General Purpose Events (GPEs)
6166    Global Lock
6167    ACPI PM timer
6168    FACS table (Waking vectors and Global Lock)
6169
6170Updated the unix tarball directory structure to match the ACPICA git
6171source
6172tree. This ensures that the generic unix makefiles work properly (in
6173generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
6174867.
6175
6176Updated the return value of the _REV predefined method to integer value 5
6177to
6178reflect ACPI 5.0 support.
6179
6180Moved the external ACPI PM timer interface prototypes to the public
6181acpixf.h
6182file where they belong.
6183
6184Example Code and Data Size: These are the sizes for the OS-independent
6185acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6186debug
6187version of the code includes the debug output trace mechanism and has a
6188much
6189larger code and data size.
6190
6191  Previous Release:
6192    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6193    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6194  Current Release:
6195    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6196    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6197
6198
61992) iASL Compiler/Disassembler and Tools:
6200
6201Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6202descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6203incorrectly displayed.
6204
6205AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6206specification.
6207
6208----------------------------------------
620911 January 2012. Summary of changes for version 20120111:
6210
6211
62121) ACPICA Core Subsystem:
6213
6214Implemented a new mechanism to allow host device drivers to check for
6215address
6216range conflicts with ACPI Operation Regions. Both SystemMemory and
6217SystemIO
6218address spaces are supported. A new external interface,
6219AcpiCheckAddressRange,
6220allows drivers to check an address range against the ACPI namespace. See
6221the
6222ACPICA reference for additional details. Adds one new file,
6223utilities/utaddress.c. Lin Ming, Bob Moore.
6224
6225Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6226Control
6227and
6228Status registers, update the ACPI 5.0 flags, and update internal data
6229structures to handle an FADT larger than 256 bytes. The size of the ACPI
62305.0
6231FADT is 268 bytes.
6232
6233Updated all ACPICA copyrights and signons to 2012. Added the 2012
6234copyright to
6235all module headers and signons, including the standard Linux header. This
6236affects virtually every file in the ACPICA core subsystem, iASL compiler,
6237and
6238all ACPICA utilities.
6239
6240Example Code and Data Size: These are the sizes for the OS-independent
6241acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6242debug
6243version of the code includes the debug output trace mechanism and has a
6244much
6245larger code and data size.
6246
6247  Previous Release:
6248    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6249    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6250  Current Release:
6251    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
6252    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
6253
6254
62552) iASL Compiler/Disassembler and Tools:
6256
6257Disassembler: fixed a problem with the automatic resource tag generation
6258support. Fixes a problem where the resource tags are inadvertently not
6259constructed if the table being disassembled contains external references
6260to
6261control methods. Moved the actual construction of the tags to after the
6262final
6263namespace is constructed (after 2nd parse is invoked due to external
6264control
6265method references.) ACPICA BZ 941.
6266
6267Table Compiler: Make all "generic" operators caseless. These are the
6268operators
6269like UINT8, String, etc. Making these caseless improves ease-of-use.
6270ACPICA BZ
6271934.
6272
6273----------------------------------------
627423 November 2011. Summary of changes for version 20111123:
6275
62760) ACPI 5.0 Support:
6277
6278This release contains full support for the ACPI 5.0 specification, as
6279summarized below.
6280
6281Reduced Hardware Support:
6282-------------------------
6283
6284This support allows for ACPI systems without the usual ACPI hardware.
6285This
6286support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6287will
6288not attempt to initialize or use any of the usual ACPI hardware. Note,
6289when
6290this flag is set, all of the following ACPI hardware is assumed to be not
6291present and is not initialized or accessed:
6292
6293    General Purpose Events (GPEs)
6294    Fixed Events (PM1a/PM1b and PM Control)
6295    Power Management Timer and Console Buttons (power/sleep)
6296    Real-time Clock Alarm
6297    Global Lock
6298    System Control Interrupt (SCI)
6299    The FACS is assumed to be non-existent
6300
6301ACPI Tables:
6302------------
6303
6304All new tables and updates to existing tables are fully supported in the
6305ACPICA headers (for use by device drivers), the disassembler, and the
6306iASL
6307Data Table Compiler. ACPI 5.0 defines these new tables:
6308
6309    BGRT        /* Boot Graphics Resource Table */
6310    DRTM        /* Dynamic Root of Trust for Measurement table */
6311    FPDT        /* Firmware Performance Data Table */
6312    GTDT        /* Generic Timer Description Table */
6313    MPST        /* Memory Power State Table */
6314    PCCT        /* Platform Communications Channel Table */
6315    PMTT        /* Platform Memory Topology Table */
6316    RASF        /* RAS Feature table */
6317
6318Operation Regions/SpaceIDs:
6319---------------------------
6320
6321All new operation regions are fully supported by the iASL compiler, the
6322disassembler, and the ACPICA runtime code (for dispatch to region
6323handlers.)
6324The new operation region Space IDs are:
6325
6326    GeneralPurposeIo
6327    GenericSerialBus
6328
6329Resource Descriptors:
6330---------------------
6331
6332All new ASL resource descriptors are fully supported by the iASL
6333compiler,
6334the
6335ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6336(including
6337all new predefined resource tags). New descriptors are:
6338
6339    FixedDma
6340    GpioIo
6341    GpioInt
6342    I2cSerialBus
6343    SpiSerialBus
6344    UartSerialBus
6345
6346ASL/AML Operators, New and Modified:
6347------------------------------------
6348
6349One new operator is added, the Connection operator, which is used to
6350associate
6351a GeneralPurposeIo or GenericSerialBus resource descriptor with
6352individual
6353field objects within an operation region. Several new protocols are
6354associated
6355with the AccessAs operator. All are fully supported by the iASL compiler,
6356disassembler, and runtime ACPICA AML interpreter:
6357
6358    Connection                      // Declare Field Connection
6359attributes
6360    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
6361    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
6362Protocol
6363    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6364    RawDataBuffer                       // Data type for Vendor Data
6365fields
6366
6367Predefined ASL/AML Objects:
6368---------------------------
6369
6370All new predefined objects/control-methods are supported by the iASL
6371compiler
6372and the ACPICA runtime validation/repair (arguments and return values.)
6373New
6374predefined names include the following:
6375
6376Standard Predefined Names (Objects or Control Methods):
6377    _AEI, _CLS, _CPC, _CWS, _DEP,
6378    _DLM, _EVT, _GCP, _CRT, _GWS,
6379    _HRV, _PRE, _PSE, _SRT, _SUB.
6380
6381Resource Tags (Names used to access individual fields within resource
6382descriptors):
6383    _DBT, _DPL, _DRS, _END, _FLC,
6384    _IOR, _LIN, _MOD, _PAR, _PHA,
6385    _PIN, _PPI, _POL, _RXL, _SLV,
6386    _SPE, _STB, _TXL, _VEN.
6387
6388ACPICA External Interfaces:
6389---------------------------
6390
6391Several new interfaces have been defined for use by ACPI-related device
6392drivers and other host OS services:
6393
6394AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6395to
6396acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6397provided by the BIOS. They are intended to be used in conjunction with
6398the
6399ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6400mutual exclusion with the AML code/interpreter.
6401
6402AcpiGetEventResources: Returns the (formatted) resource descriptors as
6403defined
6404by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
6405provides
6406resource descriptors associated with hardware-reduced platform events,
6407similar
6408to the AcpiGetCurrentResources interface.
6409
6410Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6411operation regions, information about the Connection() object and any
6412optional
6413length information is passed to the region handler within the Context
6414parameter.
6415
6416AcpiBufferToResource: This interface converts a raw AML buffer containing
6417a
6418resource template or resource descriptor to the ACPI_RESOURCE internal
6419format
6420suitable for use by device drivers. Can be used by an operation region
6421handler
6422to convert the Connection() buffer object into a ACPI_RESOURCE.
6423
6424Miscellaneous/Tools/TestSuites:
6425-------------------------------
6426
6427Support for extended _HID names (Four alpha characters instead of three).
6428Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6429Support for ACPI 5.0 features in the ASLTS test suite.
6430Fully updated documentation (ACPICA and iASL reference documents.)
6431
6432ACPI Table Definition Language:
6433-------------------------------
6434
6435Support for this language was implemented and released as a subsystem of
6436the
6437iASL compiler in 2010. (See the iASL compiler User Guide.)
6438
6439
6440Non-ACPI 5.0 changes for this release:
6441--------------------------------------
6442
64431) ACPICA Core Subsystem:
6444
6445Fix a problem with operation region declarations where a failure can
6446occur
6447if
6448the region name and an argument that evaluates to an object (such as the
6449region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6450937.
6451
6452Do not abort an ACPI table load if an invalid space ID is found within.
6453This
6454will be caught later if the offending method is executed. ACPICA BZ 925.
6455
6456Fixed an issue with the FFixedHW space ID where the ID was not always
6457recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6458
6459Fixed a problem with the 32-bit generation of the unix-specific OSL
6460(osunixxf.c). Lin Ming, ACPICA BZ 936.
6461
6462Several changes made to enable generation with the GCC 4.6 compiler.
6463ACPICA BZ
6464935.
6465
6466New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6467Index/Bank
6468field registers out-of-range.
6469
64702) iASL Compiler/Disassembler and Tools:
6471
6472iASL: Implemented the __PATH__ operator, which returns the full pathname
6473of
6474the current source file.
6475
6476AcpiHelp: Automatically display expanded keyword information for all ASL
6477operators.
6478
6479Debugger: Add "Template" command to disassemble/dump resource template
6480buffers.
6481
6482Added a new master script to generate and execute the ASLTS test suite.
6483Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6484
6485iASL: Fix problem with listing generation during processing of the
6486Switch()
6487operator where AML listing was disabled until the entire Switch block was
6488completed.
6489
6490iASL: Improve support for semicolon statement terminators. Fix "invalid
6491character" message for some cases when the semicolon is used. Semicolons
6492are
6493now allowed after every <Term> grammar element. ACPICA BZ 927.
6494
6495iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6496923.
6497
6498Disassembler: Fix problem with disassembly of the DataTableRegion
6499operator
6500where an inadvertent "Unhandled deferred opcode" message could be
6501generated.
6502
65033) Example Code and Data Size
6504
6505These are the sizes for the OS-independent acpica.lib produced by the
6506Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6507includes the debug output trace mechanism and has a much larger code and
6508data
6509size.
6510
6511  Previous Release:
6512    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6513    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6514  Current Release:
6515    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
6516    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
6517
6518----------------------------------------
651922 September 2011. Summary of changes for version 20110922:
6520
65210) ACPI 5.0 News:
6522
6523Support for ACPI 5.0 in ACPICA has been underway for several months and
6524will
6525be released at the same time that ACPI 5.0 is officially released.
6526
6527The ACPI 5.0 specification is on track for release in the next few
6528months.
6529
65301) ACPICA Core Subsystem:
6531
6532Fixed a problem where the maximum sleep time for the Sleep() operator was
6533intended to be limited to two seconds, but was inadvertently limited to
653420
6535seconds instead.
6536
6537Linux and Unix makefiles: Added header file dependencies to ensure
6538correct
6539generation of ACPICA core code and utilities. Also simplified the
6540makefiles
6541considerably through the use of the vpath variable to specify search
6542paths.
6543ACPICA BZ 924.
6544
65452) iASL Compiler/Disassembler and Tools:
6546
6547iASL: Implemented support to check the access length for all fields
6548created to
6549access named Resource Descriptor fields. For example, if a resource field
6550is
6551defined to be two bits, a warning is issued if a CreateXxxxField() is
6552used
6553with an incorrect bit length. This is implemented for all current
6554resource
6555descriptor names. ACPICA BZ 930.
6556
6557Disassembler: Fixed a byte ordering problem with the output of 24-bit and
655856-
6559bit integers.
6560
6561iASL: Fixed a couple of issues associated with variable-length package
6562objects. 1) properly handle constants like One, Ones, Zero -- do not make
6563a
6564VAR_PACKAGE when these are used as a package length. 2) Allow the
6565VAR_PACKAGE
6566opcode (in addition to PACKAGE) when validating object types for
6567predefined
6568names.
6569
6570iASL: Emit statistics for all output files (instead of just the ASL input
6571and
6572AML output). Includes listings, hex files, etc.
6573
6574iASL: Added -G option to the table compiler to allow the compilation of
6575custom
6576ACPI tables. The only part of a table that is required is the standard
657736-
6578byte
6579ACPI header.
6580
6581AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6582headers),
6583which also adds correct 64-bit support. Also, now all output filenames
6584are
6585completely lower case.
6586
6587AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6588loading table files. A warning is issued for any such tables. The only
6589exception is an FADT. This also fixes a possible fault when attempting to
6590load
6591non-AML tables. ACPICA BZ 932.
6592
6593AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6594a
6595missing table terminator could cause a fault when using the -p option.
6596
6597AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6598statistics.
6599
66003) Example Code and Data Size
6601
6602These are the sizes for the OS-independent acpica.lib produced by the
6603Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6604includes the debug output trace mechanism and has a much larger code and
6605data
6606size.
6607
6608  Previous Release (VC 9.0):
6609    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6610    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6611  Current Release (VC 9.0):
6612    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6613    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6614
6615
6616----------------------------------------
661723 June 2011. Summary of changes for version 20110623:
6618
66191) ACPI CA Core Subsystem:
6620
6621Updated the predefined name repair mechanism to not attempt repair of a
6622_TSS
6623return object if a _PSS object is present. We can only sort the _TSS
6624return
6625package if there is no _PSS within the same scope. This is because if
6626_PSS
6627is
6628present, the ACPI specification dictates that the _TSS Power Dissipation
6629field
6630is to be ignored, and therefore some BIOSs leave garbage values in the
6631_TSS
6632Power field(s). In this case, it is best to just return the _TSS package
6633as-
6634is. Reported by, and fixed with assistance from Fenghua Yu.
6635
6636Added an option to globally disable the control method return value
6637validation
6638and repair. This runtime option can be used to disable return value
6639repair
6640if
6641this is causing a problem on a particular machine. Also added an option
6642to
6643AcpiExec (-dr) to set this disable flag.
6644
6645All makefiles and project files: Major changes to improve generation of
6646ACPICA
6647tools. ACPICA BZ 912:
6648    Reduce default optimization levels to improve compatibility
6649    For Linux, add strict-aliasing=0 for gcc 4
6650    Cleanup and simplify use of command line defines
6651    Cleanup multithread library support
6652    Improve usage messages
6653
6654Linux-specific header: update handling of THREAD_ID and pthread. For the
665532-
6656bit case, improve casting to eliminate possible warnings, especially with
6657the
6658acpica tools.
6659
6660Example Code and Data Size: These are the sizes for the OS-independent
6661acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6662debug
6663version of the code includes the debug output trace mechanism and has a
6664much
6665larger code and data size.
6666
6667  Previous Release (VC 9.0):
6668    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6669    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6670  Current Release (VC 9.0):
6671    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
6672    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6673
66742) iASL Compiler/Disassembler and Tools:
6675
6676With this release, a new utility named "acpihelp" has been added to the
6677ACPICA
6678package. This utility summarizes the ACPI specification chapters for the
6679ASL
6680and AML languages. It generates under Linux/Unix as well as Windows, and
6681provides the following functionality:
6682    Find/display ASL operator(s) -- with description and syntax.
6683    Find/display ASL keyword(s) -- with exact spelling and descriptions.
6684    Find/display ACPI predefined name(s) -- with description, number
6685        of arguments, and the return value data type.
6686    Find/display AML opcode name(s) -- with opcode, arguments, and
6687grammar.
6688    Decode/display AML opcode -- with opcode name, arguments, and
6689grammar.
6690
6691Service Layers: Make multi-thread support configurable. Conditionally
6692compile
6693the multi-thread support so that threading libraries will not be linked
6694if
6695not
6696necessary. The only tool that requires multi-thread support is AcpiExec.
6697
6698iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6699of
6700Bison appear to want the interface to yyerror to be a const char * (or at
6701least this is a problem when generating iASL on some systems.) ACPICA BZ
6702923
6703Pierre Lejeune.
6704
6705Tools: Fix for systems where O_BINARY is not defined. Only used for
6706Windows
6707versions of the tools.
6708
6709----------------------------------------
671027 May 2011. Summary of changes for version 20110527:
6711
67121) ACPI CA Core Subsystem:
6713
6714ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6715table
6716signature. Now, only allow SSDT, OEMx, and a null signature. History:
6717    1) Originally, we checked the table signature for "SSDT" or "PSDT".
6718       (PSDT is now obsolete.)
6719    2) We added support for OEMx tables, signature "OEM" plus a fourth
6720       "don't care" character.
6721    3) Valid tables were encountered with a null signature, so we just
6722       gave up on validating the signature, (05/2008).
6723    4) We encountered non-AML tables such as the MADT, which caused
6724       interpreter errors and kernel faults. So now, we once again allow
6725       only SSDT, OEMx, and now, also a null signature. (05/2011).
6726
6727Added the missing _TDL predefined name to the global name list in order
6728to
6729enable validation. Affects both the core ACPICA code and the iASL
6730compiler.
6731
6732Example Code and Data Size: These are the sizes for the OS-independent
6733acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6734debug
6735version of the code includes the debug output trace mechanism and has a
6736much
6737larger code and data size.
6738
6739  Previous Release (VC 9.0):
6740    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6741    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6742  Current Release (VC 9.0):
6743    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
6744    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
6745
67462) iASL Compiler/Disassembler and Tools:
6747
6748Debugger/AcpiExec: Implemented support for "complex" method arguments on
6749the
6750debugger command line. This adds support beyond simple integers --
6751including
6752Strings, Buffers, and Packages. Includes support for nested packages.
6753Increased the default command line buffer size to accommodate these
6754arguments.
6755See the ACPICA reference for details and syntax. ACPICA BZ 917.
6756
6757Debugger/AcpiExec: Implemented support for "default" method arguments for
6758the
6759Execute/Debug command. Now, the debugger will always invoke a control
6760method
6761with the required number of arguments -- even if the command line
6762specifies
6763none or insufficient arguments. It uses default integer values for any
6764missing
6765arguments. Also fixes a bug where only six method arguments maximum were
6766supported instead of the required seven.
6767
6768Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6769and
6770also return status in order to prevent buffer overruns. See the ACPICA
6771reference for details and syntax. ACPICA BZ 921
6772
6773iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6774makefiles to simplify support for the two different but similar parser
6775generators, bison and yacc.
6776
6777Updated the generic unix makefile for gcc 4. The default gcc version is
6778now
6779expected to be 4 or greater, since options specific to gcc 4 are used.
6780
6781----------------------------------------
678213 April 2011. Summary of changes for version 20110413:
6783
67841) ACPI CA Core Subsystem:
6785
6786Implemented support to execute a so-called "orphan" _REG method under the
6787EC
6788device. This change will force the execution of a _REG method underneath
6789the
6790EC
6791device even if there is no corresponding operation region of type
6792EmbeddedControl. Fixes a problem seen on some machines and apparently is
6793compatible with Windows behavior. ACPICA BZ 875.
6794
6795Added more predefined methods that are eligible for automatic NULL
6796package
6797element removal. This change adds another group of predefined names to
6798the
6799list
6800of names that can be repaired by having NULL package elements dynamically
6801removed. This group are those methods that return a single variable-
6802length
6803package containing simple data types such as integers, buffers, strings.
6804This
6805includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6806_PSL,
6807_Sx,
6808and _TZD. ACPICA BZ 914.
6809
6810Split and segregated all internal global lock functions to a new file,
6811evglock.c.
6812
6813Updated internal address SpaceID for DataTable regions. Moved this
6814internal
6815space
6816id in preparation for ACPI 5.0 changes that will include some new space
6817IDs.
6818This
6819change should not affect user/host code.
6820
6821Example Code and Data Size: These are the sizes for the OS-independent
6822acpica.lib
6823produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6824version of
6825the code includes the debug output trace mechanism and has a much larger
6826code
6827and
6828data size.
6829
6830  Previous Release (VC 9.0):
6831    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6832    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6833  Current Release (VC 9.0):
6834    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
6835    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
6836
68372) iASL Compiler/Disassembler and Tools:
6838
6839iASL/DTC: Major update for new grammar features. Allow generic data types
6840in
6841custom ACPI tables. Field names are now optional. Any line can be split
6842to
6843multiple lines using the continuation char (\). Large buffers now use
6844line-
6845continuation character(s) and no colon on the continuation lines. See the
6846grammar
6847update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
6848Moore.
6849
6850iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
6851statements.
6852Since the parser stuffs a "zero" as the return value for these statements
6853(due
6854to
6855the underlying AML grammar), they were seen as "return with value" by the
6856iASL
6857semantic checking. They are now seen correctly as "null" return
6858statements.
6859
6860iASL: Check if a_REG declaration has a corresponding Operation Region.
6861Adds a
6862check for each _REG to ensure that there is in fact a corresponding
6863operation
6864region declaration in the same scope. If not, the _REG method is not very
6865useful
6866since it probably won't be executed. ACPICA BZ 915.
6867
6868iASL/DTC: Finish support for expression evaluation. Added a new
6869expression
6870parser
6871that implements c-style operator precedence and parenthesization. ACPICA
6872bugzilla
6873908.
6874
6875Disassembler/DTC: Remove support for () and <> style comments in data
6876tables.
6877Now
6878that DTC has full expression support, we don't want to have comment
6879strings
6880that
6881start with a parentheses or a less-than symbol. Now, only the standard /*
6882and
6883//
6884comments are supported, as well as the bracket [] comments.
6885
6886AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
6887"unusual"
6888headers in the acpidump file. Update the header validation to support
6889these
6890tables. Problem introduced in previous AcpiXtract version in the change
6891to
6892support "wrong checksum" error messages emitted by acpidump utility.
6893
6894iASL: Add a * option to generate all template files (as a synonym for
6895ALL)
6896as
6897in
6898"iasl -T *" or "iasl -T ALL".
6899
6900iASL/DTC: Do not abort compiler on fatal errors. We do not want to
6901completely
6902abort the compiler on "fatal" errors, simply should abort the current
6903compile.
6904This allows multiple compiles with a single (possibly wildcard) compiler
6905invocation.
6906
6907----------------------------------------
690816 March 2011. Summary of changes for version 20110316:
6909
69101) ACPI CA Core Subsystem:
6911
6912Fixed a problem caused by a _PRW method appearing at the namespace root
6913scope
6914during the setup of wake GPEs. A fault could occur if a _PRW directly
6915under
6916the
6917root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
6918
6919Implemented support for "spurious" Global Lock interrupts. On some
6920systems, a
6921global lock interrupt can occur without the pending flag being set. Upon
6922a
6923GL
6924interrupt, we now ensure that a thread is actually waiting for the lock
6925before
6926signaling GL availability. Rafael Wysocki, Bob Moore.
6927
6928Example Code and Data Size: These are the sizes for the OS-independent
6929acpica.lib
6930produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6931version of
6932the code includes the debug output trace mechanism and has a much larger
6933code
6934and
6935data size.
6936
6937  Previous Release (VC 9.0):
6938    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
6939    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
6940  Current Release (VC 9.0):
6941    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
6942    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
6943
69442) iASL Compiler/Disassembler and Tools:
6945
6946Implemented full support for the "SLIC" ACPI table. Includes support in
6947the
6948header files, disassembler, table compiler, and template generator. Bob
6949Moore,
6950Lin Ming.
6951
6952AcpiXtract: Correctly handle embedded comments and messages from
6953AcpiDump.
6954Apparently some or all versions of acpidump will occasionally emit a
6955comment
6956like
6957"Wrong checksum", etc., into the dump file. This was causing problems for
6958AcpiXtract. ACPICA BZ 905.
6959
6960iASL: Fix the Linux makefile by removing an inadvertent double file
6961inclusion.
6962ACPICA BZ 913.
6963
6964AcpiExec: Update installation of operation region handlers. Install one
6965handler
6966for a user-defined address space. This is used by the ASL test suite
6967(ASLTS).
6968
6969----------------------------------------
697011 February 2011. Summary of changes for version 20110211:
6971
69721) ACPI CA Core Subsystem:
6973
6974Added a mechanism to defer _REG methods for some early-installed
6975handlers.
6976Most user handlers should be installed before call to
6977AcpiEnableSubsystem.
6978However, Event handlers and region handlers should be installed after
6979AcpiInitializeObjects. Override handlers for the "default" regions should
6980be
6981installed early, however. This change executes all _REG methods for the
6982default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
6983chicken/egg issues between them. ACPICA BZ 848.
6984
6985Implemented an optimization for GPE detection. This optimization will
6986simply
6987ignore GPE registers that contain no enabled GPEs -- there is no need to
6988read the register since this information is available internally. This
6989becomes more important on machines with a large GPE space. ACPICA
6990bugzilla
6991884. Lin Ming. Suggestion from Joe Liu.
6992
6993Removed all use of the highly unreliable FADT revision field. The
6994revision
6995number in the FADT has been found to be completely unreliable and cannot
6996be
6997trusted. Only the actual table length can be used to infer the version.
6998This
6999change updates the ACPICA core and the disassembler so that both no
7000longer
7001even look at the FADT version and instead depend solely upon the FADT
7002length.
7003
7004Fix an unresolved name issue for the no-debug and no-error-message source
7005generation cases. The _AcpiModuleName was left undefined in these cases,
7006but
7007it is actually needed as a parameter to some interfaces. Define
7008_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7009
7010Split several large files (makefiles and project files updated)
7011  utglobal.c   -> utdecode.c
7012  dbcomds.c    -> dbmethod.c dbnames.c
7013  dsopcode.c   -> dsargs.c dscontrol.c
7014  dsload.c     -> dsload2.c
7015  aslanalyze.c -> aslbtypes.c aslwalks.c
7016
7017Example Code and Data Size: These are the sizes for the OS-independent
7018acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7019debug version of the code includes the debug output trace mechanism and
7020has
7021a much larger code and data size.
7022
7023  Previous Release (VC 9.0):
7024    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7025    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7026  Current Release (VC 9.0):
7027    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7028    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7029
70302) iASL Compiler/Disassembler and Tools:
7031
7032iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7033These are useful C-style macros with the standard definitions. ACPICA
7034bugzilla 898.
7035
7036iASL/DTC: Added support for integer expressions and labels. Support for
7037full
7038expressions for all integer fields in all ACPI tables. Support for labels
7039in
7040"generic" portions of tables such as UEFI. See the iASL reference manual.
7041
7042Debugger: Added a command to display the status of global handlers. The
7043"handlers" command will display op region, fixed event, and miscellaneous
7044global handlers. installation status -- and for op regions, whether
7045default
7046or user-installed handler will be used.
7047
7048iASL: Warn if reserved method incorrectly returns a value. Many
7049predefined
7050names are defined such that they do not return a value. If implemented as
7051a
7052method, issue a warning if such a name explicitly returns a value. ACPICA
7053Bugzilla 855.
7054
7055iASL: Added detection of GPE method name conflicts. Detects a conflict
7056where
7057there are two GPE methods of the form _Lxy and _Exy in the same scope.
7058(For
7059example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7060
7061iASL/DTC: Fixed a couple input scanner issues with comments and line
7062numbers. Comment remover could get confused and miss a comment ending.
7063Fixed
7064a problem with line counter maintenance.
7065
7066iASL/DTC: Reduced the severity of some errors from fatal to error. There
7067is
7068no need to abort on simple errors within a field definition.
7069
7070Debugger: Simplified the output of the help command. All help output now
7071in
7072a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7073
7074----------------------------------------
707512 January 2011. Summary of changes for version 20110112:
7076
70771) ACPI CA Core Subsystem:
7078
7079Fixed a race condition between method execution and namespace walks that
7080can
7081possibly cause a fault. The problem was apparently introduced in version
708220100528 as a result of a performance optimization that reduces the
7083number
7084of
7085namespace walks upon method exit by using the delete_namespace_subtree
7086function instead of the delete_namespace_by_owner function used
7087previously.
7088Bug is a missing namespace lock in the delete_namespace_subtree function.
7089dana.myers@oracle.com
7090
7091Fixed several issues and a possible fault with the automatic "serialized"
7092method support. History: This support changes a method to "serialized" on
7093the
7094fly if the method generates an AE_ALREADY_EXISTS error, indicating the
7095possibility that it cannot handle reentrancy. This fix repairs a couple
7096of
7097issues seen in the field, especially on machines with many cores:
7098
7099    1) Delete method children only upon the exit of the last thread,
7100       so as to not delete objects out from under other running threads
7101      (and possibly causing a fault.)
7102    2) Set the "serialized" bit for the method only upon the exit of the
7103       Last thread, so as to not cause deadlock when running threads
7104       attempt to exit.
7105    3) Cleanup the use of the AML "MethodFlags" and internal method flags
7106       so that there is no longer any confusion between the two.
7107
7108    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
7109
7110Debugger: Now lock the namespace for duration of a namespace dump.
7111Prevents
7112issues if the namespace is changing dynamically underneath the debugger.
7113Especially affects temporary namespace nodes, since the debugger displays
7114these also.
7115
7116Updated the ordering of include files. The ACPICA headers should appear
7117before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
7118set
7119any necessary compiler-specific defines, etc. Affects the ACPI-related
7120tools
7121and utilities.
7122
7123Updated all ACPICA copyrights and signons to 2011. Added the 2011
7124copyright
7125to all module headers and signons, including the Linux header. This
7126affects
7127virtually every file in the ACPICA core subsystem, iASL compiler, and all
7128utilities.
7129
7130Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
7131project files for VC++ 6.0 are now obsolete. New project files can be
7132found
7133under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
7134details.
7135
7136Example Code and Data Size: These are the sizes for the OS-independent
7137acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7138debug version of the code includes the debug output trace mechanism and
7139has a
7140much larger code and data size.
7141
7142  Previous Release (VC 6.0):
7143    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7144    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7145  Current Release (VC 9.0):
7146    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7147    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7148
71492) iASL Compiler/Disassembler and Tools:
7150
7151iASL: Added generic data types to the Data Table compiler. Add "generic"
7152data
7153types such as UINT32, String, Unicode, etc., to simplify the generation
7154of
7155platform-defined tables such as UEFI. Lin Ming.
7156
7157iASL: Added listing support for the Data Table Compiler. Adds listing
7158support
7159(-l) to display actual binary output for each line of input code.
7160
7161----------------------------------------
716209 December 2010. Summary of changes for version 20101209:
7163
71641) ACPI CA Core Subsystem:
7165
7166Completed the major overhaul of the GPE support code that was begun in
7167July
71682010. Major features include: removal of _PRW execution in ACPICA (host
7169executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7170changes to existing interfaces, simplification of GPE handler operation,
7171and
7172a handful of new interfaces:
7173
7174    AcpiUpdateAllGpes
7175    AcpiFinishGpe
7176    AcpiSetupGpeForWake
7177    AcpiSetGpeWakeMask
7178    One new file, evxfgpe.c to consolidate all external GPE interfaces.
7179
7180See the ACPICA Programmer Reference for full details and programming
7181information. See the new section 4.4 "General Purpose Event (GPE)
7182Support"
7183for a full overview, and section 8.7 "ACPI General Purpose Event
7184Management"
7185for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7186Ming,
7187Bob Moore, Rafael Wysocki.
7188
7189Implemented a new GPE feature for Windows compatibility, the "Implicit
7190Wake
7191GPE Notify". This feature will automatically issue a Notify(2) on a
7192device
7193when a Wake GPE is received if there is no corresponding GPE method or
7194handler. ACPICA BZ 870.
7195
7196Fixed a problem with the Scope() operator during table parse and load
7197phase.
7198During load phase (table load or method execution), the scope operator
7199should
7200not enter the target into the namespace. Instead, it should open a new
7201scope
7202at the target location. Linux BZ 19462, ACPICA BZ 882.
7203
7204Example Code and Data Size: These are the sizes for the OS-independent
7205acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7206debug version of the code includes the debug output trace mechanism and
7207has a
7208much larger code and data size.
7209
7210  Previous Release:
7211    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
7212    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
7213  Current Release:
7214    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7215    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7216
72172) iASL Compiler/Disassembler and Tools:
7218
7219iASL: Relax the alphanumeric restriction on _CID strings. These strings
7220are
7221"bus-specific" per the ACPI specification, and therefore any characters
7222are
7223acceptable. The only checks that can be performed are for a null string
7224and
7225perhaps for a leading asterisk. ACPICA BZ 886.
7226
7227iASL: Fixed a problem where a syntax error that caused a premature EOF
7228condition on the source file emitted a very confusing error message. The
7229premature EOF is now detected correctly. ACPICA BZ 891.
7230
7231Disassembler: Decode the AccessSize within a Generic Address Structure
7232(byte
7233access, word access, etc.) Note, this field does not allow arbitrary bit
7234access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7235
7236New: AcpiNames utility - Example namespace dump utility. Shows an example
7237of
7238ACPICA configuration for a minimal namespace dump utility. Uses table and
7239namespace managers, but no AML interpreter. Does not add any
7240functionality
7241over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7242partition and configure ACPICA. ACPICA BZ 883.
7243
7244AML Debugger: Increased the debugger buffer size for method return
7245objects.
7246Was 4K, increased to 16K. Also enhanced error messages for debugger
7247method
7248execution, including the buffer overflow case.
7249
7250----------------------------------------
725113 October 2010. Summary of changes for version 20101013:
7252
72531) ACPI CA Core Subsystem:
7254
7255Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7256now
7257clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7258HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7259
7260Changed the type of the predefined namespace object _TZ from ThermalZone
7261to
7262Device. This was found to be confusing to the host software that
7263processes
7264the various thermal zones, since _TZ is not really a ThermalZone.
7265However,
7266a
7267Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7268Zhang.
7269
7270Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7271string is "Windows 2006 SP2".
7272
7273Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7274nsrepair
7275code automatically repairs _HID-related strings, this type of code is no
7276longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7277878.
7278
7279Example Code and Data Size: These are the sizes for the OS-independent
7280acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7281debug version of the code includes the debug output trace mechanism and
7282has a
7283much larger code and data size.
7284
7285  Previous Release:
7286    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7287    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7288  Current Release:
7289    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7290    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7291
72922) iASL Compiler/Disassembler and Tools:
7293
7294iASL: Implemented additional compile-time validation for _HID strings.
7295The
7296non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7297length
7298of
7299the string must be exactly seven or eight characters. For both _HID and
7300_CID
7301strings, all characters must be alphanumeric. ACPICA BZ 874.
7302
7303iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7304descriptors that are mostly or all zeros, with the expectation that they
7305will
7306be filled in at runtime. iASL now allows this as long as there is a
7307"resource
7308tag" (name) associated with the descriptor, which gives the ASL a handle
7309needed to modify the descriptor. ACPICA BZ 873.
7310
7311Added single-thread support to the generic Unix application OSL.
7312Primarily
7313for iASL support, this change removes the use of semaphores in the
7314single-
7315threaded ACPICA tools/applications - increasing performance. The
7316_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7317option. ACPICA BZ 879.
7318
7319AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7320support
7321for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7322
7323iASL: Moved all compiler messages to a new file, aslmessages.h.
7324
7325----------------------------------------
732615 September 2010. Summary of changes for version 20100915:
7327
73281) ACPI CA Core Subsystem:
7329
7330Removed the AcpiOsDerivePciId OSL interface. The various host
7331implementations
7332of this function were not OS-dependent and are now obsolete and can be
7333removed from all host OSLs. This function has been replaced by
7334AcpiHwDerivePciId, which is now part of the ACPICA core code.
7335AcpiHwDerivePciId has been implemented without recursion. Adds one new
7336module, hwpci.c. ACPICA BZ 857.
7337
7338Implemented a dynamic repair for _HID and _CID strings. The following
7339problems are now repaired at runtime: 1) Remove a leading asterisk in the
7340string, and 2) the entire string is uppercased. Both repairs are in
7341accordance with the ACPI specification and will simplify host driver
7342code.
7343ACPICA BZ 871.
7344
7345The ACPI_THREAD_ID type is no longer configurable, internally it is now
7346always UINT64. This simplifies the ACPICA code, especially any printf
7347output.
7348UINT64 is the only common data type for all thread_id types across all
7349operating systems. It is now up to the host OSL to cast the native
7350thread_id
7351type to UINT64 before returning the value to ACPICA (via
7352AcpiOsGetThreadId).
7353Lin Ming, Bob Moore.
7354
7355Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7356"inline"
7357keyword is not standard across compilers, and this type allows inline to
7358be
7359configured on a per-compiler basis. Lin Ming.
7360
7361Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7362available.
7363Added an extern for this boolean in acpixf.h. Some hosts utilize this
7364value
7365during suspend/restore operations. ACPICA BZ 869.
7366
7367All code that implements error/warning messages with the "ACPI:" prefix
7368has
7369been moved to a new module, utxferror.c.
7370
7371The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7372it
7373is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7374
7375Example Code and Data Size: These are the sizes for the OS-independent
7376acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7377debug version of the code includes the debug output trace mechanism and
7378has a
7379much larger code and data size.
7380
7381  Previous Release:
7382    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7383    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7384  Current Release:
7385    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
7386    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
7387
73882) iASL Compiler/Disassembler and Tools:
7389
7390iASL/Disassembler: Write ACPI errors to stderr instead of the output
7391file.
7392This keeps the output files free of random error messages that may
7393originate
7394from within the namespace/interpreter code. Used this opportunity to
7395merge
7396all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7397866. Lin Ming, Bob Moore.
7398
7399Tools: update some printfs for ansi warnings on size_t. Handle width
7400change
7401of size_t on 32-bit versus 64-bit generations. Lin Ming.
7402
7403----------------------------------------
740406 August 2010. Summary of changes for version 20100806:
7405
74061) ACPI CA Core Subsystem:
7407
7408Designed and implemented a new host interface to the _OSI support code.
7409This
7410will allow the host to dynamically add or remove multiple _OSI strings,
7411as
7412well as install an optional handler that is called for each _OSI
7413invocation.
7414Also added a new AML debugger command, 'osi' to display and modify the
7415global
7416_OSI string table, and test support in the AcpiExec utility. See the
7417ACPICA
7418reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7419New Functions:
7420    AcpiInstallInterface - Add an _OSI string.
7421    AcpiRemoveInterface - Delete an _OSI string.
7422    AcpiInstallInterfaceHandler - Install optional _OSI handler.
7423Obsolete Functions:
7424    AcpiOsValidateInterface - no longer used.
7425New Files:
7426    source/components/utilities/utosi.c
7427
7428Re-introduced the support to enable multi-byte transfers for Embedded
7429Controller (EC) operation regions. A reported problem was found to be a
7430bug
7431in the host OS, not in the multi-byte support. Previously, the maximum
7432data
7433size passed to the EC operation region handler was a single byte. There
7434are
7435often EC Fields larger than one byte that need to be transferred, and it
7436is
7437useful for the EC driver to lock these as a single transaction. This
7438change
7439enables single transfers larger than 8 bits. This effectively changes the
7440access to the EC space from ByteAcc to AnyAcc, and will probably require
7441changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7442bit
7443transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7444
7445Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7446prototype in acpiosxf.h had the output value pointer as a (void *).
7447It should be a (UINT64 *). This may affect some host OSL code.
7448
7449Fixed a couple problems with the recently modified Linux makefiles for
7450iASL
7451and AcpiExec. These new makefiles place the generated object files in the
7452local directory so that there can be no collisions between the files that
7453are
7454shared between them that are compiled with different options.
7455
7456Example Code and Data Size: These are the sizes for the OS-independent
7457acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7458debug version of the code includes the debug output trace mechanism and
7459has a
7460much larger code and data size.
7461
7462  Previous Release:
7463    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7464    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7465  Current Release:
7466    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
7467    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
7468
74692) iASL Compiler/Disassembler and Tools:
7470
7471iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7472the
7473namespace from and disassemble an entire group of AML files. Useful for
7474loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7475and
7476disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7477
7478iASL: Allow multiple invocations of -e option. This change allows
7479multiple
7480uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7481834.
7482Lin Ming.
7483
7484----------------------------------------
748502 July 2010. Summary of changes for version 20100702:
7486
74871) ACPI CA Core Subsystem:
7488
7489Implemented several updates to the recently added GPE reference count
7490support. The model for "wake" GPEs is changing to give the host OS
7491complete
7492control of these GPEs. Eventually, the ACPICA core will not execute any
7493_PRW
7494methods, since the host already must execute them. Also, additional
7495changes
7496were made to help ensure that the reference counts are kept in proper
7497synchronization with reality. Rafael J. Wysocki.
7498
74991) Ensure that GPEs are not enabled twice during initialization.
75002) Ensure that GPE enable masks stay in sync with the reference count.
75013) Do not inadvertently enable GPEs when writing GPE registers.
75024) Remove the internal wake reference counter and add new AcpiGpeWakeup
7503interface. This interface will set or clear individual GPEs for wakeup.
75045) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7505interfaces
7506are now used for "runtime" GPEs only.
7507
7508Changed the behavior of the GPE install/remove handler interfaces. The
7509GPE
7510is
7511no longer disabled during this process, as it was found to cause problems
7512on
7513some machines. Rafael J. Wysocki.
7514
7515Reverted a change introduced in version 20100528 to enable Embedded
7516Controller multi-byte transfers. This change was found to cause problems
7517with
7518Index Fields and possibly Bank Fields. It will be reintroduced when these
7519problems have been resolved.
7520
7521Fixed a problem with references to Alias objects within Package Objects.
7522A
7523reference to an Alias within the definition of a Package was not always
7524resolved properly. Aliases to objects like Processors, Thermal zones,
7525etc.
7526were resolved to the actual object instead of a reference to the object
7527as
7528it
7529should be. Package objects are only allowed to contain integer, string,
7530buffer, package, and reference objects. Redhat bugzilla 608648.
7531
7532Example Code and Data Size: These are the sizes for the OS-independent
7533acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7534debug version of the code includes the debug output trace mechanism and
7535has a
7536much larger code and data size.
7537
7538  Previous Release:
7539    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7540    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7541  Current Release:
7542    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7543    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
7544
75452) iASL Compiler/Disassembler and Tools:
7546
7547iASL: Implemented a new compiler subsystem to allow definition and
7548compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7549These
7550are called "ACPI Data Tables", and the new compiler is the "Data Table
7551Compiler". This compiler is intended to simplify the existing error-prone
7552process of creating these tables for the BIOS, as well as allowing the
7553disassembly, modification, recompilation, and override of existing ACPI
7554data
7555tables. See the iASL User Guide for detailed information.
7556
7557iASL: Implemented a new Template Generator option in support of the new
7558Data
7559Table Compiler. This option will create examples of all known ACPI tables
7560that can be used as the basis for table development. See the iASL
7561documentation and the -T option.
7562
7563Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7564Descriptor Table).
7565
7566Updated the Linux makefiles for iASL and AcpiExec to place the generated
7567object files in the local directory so that there can be no collisions
7568between the shared files between them that are generated with different
7569options.
7570
7571Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7572Use
7573the #define __APPLE__ to enable this support.
7574
7575----------------------------------------
757628 May 2010. Summary of changes for version 20100528:
7577
7578Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7579available at www.acpi.info. This is primarily an errata release.
7580
75811) ACPI CA Core Subsystem:
7582
7583Undefined ACPI tables: We are looking for the definitions for the
7584following
7585ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7586
7587Implemented support to enable multi-byte transfers for Embedded
7588Controller
7589(EC) operation regions. Previously, the maximum data size passed to the
7590EC
7591operation region handler was a single byte. There are often EC Fields
7592larger
7593than one byte that need to be transferred, and it is useful for the EC
7594driver
7595to lock these as a single transaction. This change enables single
7596transfers
7597larger than 8 bits. This effectively changes the access to the EC space
7598from
7599ByteAcc to AnyAcc, and will probably require changes to the host OS
7600Embedded
7601Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7602bit
7603transfers. Alexey Starikovskiy, Lin Ming
7604
7605Implemented a performance enhancement for namespace search and access.
7606This
7607change enhances the performance of namespace searches and walks by adding
7608a
7609backpointer to the parent in each namespace node. On large namespaces,
7610this
7611change can improve overall ACPI performance by up to 9X. Adding a pointer
7612to
7613each namespace node increases the overall size of the internal namespace
7614by
7615about 5%, since each namespace entry usually consists of both a namespace
7616node and an ACPI operand object. However, this is the first growth of the
7617namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7618
7619Implemented a performance optimization that reduces the number of
7620namespace
7621walks. On control method exit, only walk the namespace if the method is
7622known
7623to have created namespace objects outside of its local scope. Previously,
7624the
7625entire namespace was traversed on each control method exit. This change
7626can
7627improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7628Moore.
7629
7630Added support to truncate I/O addresses to 16 bits for Windows
7631compatibility.
7632Some ASL code has been seen in the field that inadvertently has bits set
7633above bit 15. This feature is optional and is enabled if the BIOS
7634requests
7635any Windows OSI strings. It can also be enabled by the host OS. Matthew
7636Garrett, Bob Moore.
7637
7638Added support to limit the maximum time for the ASL Sleep() operator. To
7639prevent accidental deep sleeps, limit the maximum time that Sleep() will
7640actually sleep. Configurable, the default maximum is two seconds. ACPICA
7641bugzilla 854.
7642
7643Added run-time validation support for the _WDG and_WED Microsoft
7644predefined
7645methods. These objects are defined by "Windows Instrumentation", and are
7646not
7647part of the ACPI spec. ACPICA BZ 860.
7648
7649Expanded all statistic counters used during namespace and device
7650initialization from 16 to 32 bits in order to support very large
7651namespaces.
7652
7653Replaced all instances of %d in printf format specifiers with %u since
7654nearly
7655all integers in ACPICA are unsigned.
7656
7657Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7658returned
7659as AE_NO_HANDLER.
7660
7661Example Code and Data Size: These are the sizes for the OS-independent
7662acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7663debug version of the code includes the debug output trace mechanism and
7664has a
7665much larger code and data size.
7666
7667  Previous Release:
7668    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7669    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7670  Current Release:
7671    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
7672    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
7673
76742) iASL Compiler/Disassembler and Tools:
7675
7676iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7677methods. These objects are defined by "Windows Instrumentation", and are
7678not
7679part of the ACPI spec. ACPICA BZ 860.
7680
7681AcpiExec: added option to disable the memory tracking mechanism. The -dt
7682option will disable the tracking mechanism, which improves performance
7683considerably.
7684
7685AcpiExec: Restructured the command line options into -d (disable) and -e
7686(enable) options.
7687
7688----------------------------------------
768928 April 2010. Summary of changes for version 20100428:
7690
76911) ACPI CA Core Subsystem:
7692
7693Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7694including FADT-based and GPE Block Devices, execute any _PRW methods in
7695the
7696new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7697runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7698immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7699Devices. Provides compatibility with other ACPI implementations. Two new
7700files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7701Moore.
7702
7703Fixed a regression introduced in version 20100331 within the table
7704manager
7705where initial table loading could fail. This was introduced in the fix
7706for
7707AcpiReallocateRootTable. Also, renamed some of fields in the table
7708manager
7709data structures to clarify their meaning and use.
7710
7711Fixed a possible allocation overrun during internal object copy in
7712AcpiUtCopySimpleObject. The original code did not correctly handle the
7713case
7714where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7715847.
7716
7717Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7718possible access beyond end-of-allocation. Also, now fully validate
7719descriptor
7720(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7721
7722Example Code and Data Size: These are the sizes for the OS-independent
7723acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7724debug version of the code includes the debug output trace mechanism and
7725has a
7726much larger code and data size.
7727
7728  Previous Release:
7729    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7730    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7731  Current Release:
7732    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
7733    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
7734
77352) iASL Compiler/Disassembler and Tools:
7736
7737iASL: Implemented Min/Max/Len/Gran validation for address resource
7738descriptors. This change implements validation for the address fields
7739that
7740are common to all address-type resource descriptors. These checks are
7741implemented: Checks for valid Min/Max, length within the Min/Max window,
7742valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7743per
7744table 6-40 in the ACPI 4.0a specification. Also split the large
7745aslrestype1.c
7746and aslrestype2.c files into five new files. ACPICA BZ 840.
7747
7748iASL: Added support for the _Wxx predefined names. This support was
7749missing
7750and these names were not recognized by the compiler as valid predefined
7751names. ACPICA BZ 851.
7752
7753iASL: Added an error for all predefined names that are defined to return
7754no
7755value and thus must be implemented as Control Methods. These include all
7756of
7757the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7758names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7759
7760iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7761an
7762ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7763be
7764dynamically loaded via the Load() operator. Also cleaned up output for
7765the
7766-
7767ta and -tc options. ACPICA BZ 853.
7768
7769Tests: Added a new file with examples of extended iASL error checking.
7770Demonstrates the advanced error checking ability of the iASL compiler.
7771Available at tests/misc/badcode.asl.
7772
7773----------------------------------------
777431 March 2010. Summary of changes for version 20100331:
7775
77761) ACPI CA Core Subsystem:
7777
7778Completed a major update for the GPE support in order to improve support
7779for
7780shared GPEs and to simplify both host OS and ACPICA code. Added a
7781reference
7782count mechanism to support shared GPEs that require multiple device
7783drivers.
7784Several external interfaces have changed. One external interface has been
7785removed. One new external interface was added. Most of the GPE external
7786interfaces now use the GPE spinlock instead of the events mutex (and the
7787Flags parameter for many GPE interfaces has been removed.) See the
7788updated
7789ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7790Rafael
7791Wysocki. ACPICA BZ 831.
7792
7793Changed:
7794    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7795Removed:
7796    AcpiSetGpeType
7797New:
7798    AcpiSetGpe
7799
7800Implemented write support for DataTable operation regions. These regions
7801are
7802defined via the DataTableRegion() operator. Previously, only read support
7803was
7804implemented. The ACPI specification allows DataTableRegions to be
7805read/write,
7806however.
7807
7808Implemented a new subsystem option to force a copy of the DSDT to local
7809memory. Optionally copy the entire DSDT to local memory (instead of
7810simply
7811mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7812replace
7813the original DSDT, creating the need for this option. Default is FALSE,
7814do
7815not copy the DSDT.
7816
7817Implemented detection of a corrupted or replaced DSDT. This change adds
7818support to detect a DSDT that has been corrupted and/or replaced from
7819outside
7820the OS (by firmware). This is typically catastrophic for the system, but
7821has
7822been seen on some machines. Once this problem has been detected, the DSDT
7823copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7824
7825Fixed two problems with AcpiReallocateRootTable during the root table
7826copy.
7827When copying the root table to the new allocation, the length used was
7828incorrect. The new size was used instead of the current table size,
7829meaning
7830too much data was copied. Also, the count of available slots for ACPI
7831tables
7832was not set correctly. Alexey Starikovskiy, Bob Moore.
7833
7834Example Code and Data Size: These are the sizes for the OS-independent
7835acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7836debug version of the code includes the debug output trace mechanism and
7837has a
7838much larger code and data size.
7839
7840  Previous Release:
7841    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7842    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7843  Current Release:
7844    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
7845    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
7846
78472) iASL Compiler/Disassembler and Tools:
7848
7849iASL: Implement limited typechecking for values returned from predefined
7850control methods. The type of any returned static (unnamed) object is now
7851validated. For example, Return(1). ACPICA BZ 786.
7852
7853iASL: Fixed a predefined name object verification regression. Fixes a
7854problem
7855introduced in version 20100304. An error is incorrectly generated if a
7856predefined name is declared as a static named object with a value defined
7857using the keywords "Zero", "One", or "Ones". Lin Ming.
7858
7859iASL: Added Windows 7 support for the -g option (get local ACPI tables)
7860by
7861reducing the requested registry access rights. ACPICA BZ 842.
7862
7863Disassembler: fixed a possible fault when generating External()
7864statements.
7865Introduced in commit ae7d6fd: Properly handle externals with parent-
7866prefix
7867(carat). Fixes a string length allocation calculation. Lin Ming.
7868
7869----------------------------------------
787004 March 2010. Summary of changes for version 20100304:
7871
78721) ACPI CA Core Subsystem:
7873
7874Fixed a possible problem with the AML Mutex handling function
7875AcpiExReleaseMutex where the function could fault under the very rare
7876condition when the interpreter has blocked, the interpreter lock is
7877released,
7878the interpreter is then reentered via the same thread, and attempts to
7879acquire an AML mutex that was previously acquired. FreeBSD report 140979.
7880Lin
7881Ming.
7882
7883Implemented additional configuration support for the AML "Debug Object".
7884Output from the debug object can now be enabled via a global variable,
7885AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
7886debugging.
7887This debug output is now available in the release version of ACPICA
7888instead
7889of just the debug version. Also, the entire debug output module can now
7890be
7891configured out of the ACPICA build if desired. One new file added,
7892executer/exdebug.c. Lin Ming, Bob Moore.
7893
7894Added header support for the ACPI MCHI table (Management Controller Host
7895Interface Table). This table was added in ACPI 4.0, but the defining
7896document
7897has only recently become available.
7898
7899Standardized output of integer values for ACPICA warnings/errors. Always
7900use
79010x prefix for hex output, always use %u for unsigned integer decimal
7902output.
7903Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
7904400
7905invocations.) These invocations were converted from the original
7906ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
7907
7908Example Code and Data Size: These are the sizes for the OS-independent
7909acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7910debug version of the code includes the debug output trace mechanism and
7911has a
7912much larger code and data size.
7913
7914  Previous Release:
7915    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7916    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7917  Current Release:
7918    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
7919    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
7920
79212) iASL Compiler/Disassembler and Tools:
7922
7923iASL: Implemented typechecking support for static (non-control method)
7924predefined named objects that are declared with the Name() operator. For
7925example, the type of this object is now validated to be of type Integer:
7926Name(_BBN, 1). This change migrates the compiler to using the core
7927predefined
7928name table instead of maintaining a local version. Added a new file,
7929aslpredef.c. ACPICA BZ 832.
7930
7931Disassembler: Added support for the ACPI 4.0 MCHI table.
7932
7933----------------------------------------
793421 January 2010. Summary of changes for version 20100121:
7935
79361) ACPI CA Core Subsystem:
7937
7938Added the 2010 copyright to all module headers and signons. This affects
7939virtually every file in the ACPICA core subsystem, the iASL compiler, the
7940tools/utilities, and the test suites.
7941
7942Implemented a change to the AcpiGetDevices interface to eliminate
7943unnecessary
7944invocations of the _STA method. In the case where a specific _HID is
7945requested, do not run _STA until a _HID match is found. This eliminates
7946potentially dozens of _STA calls during a search for a particular
7947device/HID,
7948which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
7949
7950Implemented an additional repair for predefined method return values.
7951Attempt
7952to repair unexpected NULL elements within returned Package objects.
7953Create
7954an
7955Integer of value zero, a NULL String, or a zero-length Buffer as
7956appropriate.
7957ACPICA BZ 818. Lin Ming, Bob Moore.
7958
7959Removed the obsolete ACPI_INTEGER data type. This type was introduced as
7960the
7961code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
7962(with
796364-bit AML integers). It is now obsolete and this change removes it from
7964the
7965ACPICA code base, replaced by UINT64. The original typedef has been
7966retained
7967for now for compatibility with existing device driver code. ACPICA BZ
7968824.
7969
7970Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
7971in
7972the parse tree object.
7973
7974Added additional warning options for the gcc-4 generation. Updated the
7975source
7976accordingly. This includes some code restructuring to eliminate
7977unreachable
7978code, elimination of some gotos, elimination of unused return values,
7979some
7980additional casting, and removal of redundant declarations.
7981
7982Example Code and Data Size: These are the sizes for the OS-independent
7983acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7984debug version of the code includes the debug output trace mechanism and
7985has a
7986much larger code and data size.
7987
7988  Previous Release:
7989    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
7990    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
7991  Current Release:
7992    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
7993    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
7994
79952) iASL Compiler/Disassembler and Tools:
7996
7997No functional changes for this release.
7998
7999----------------------------------------
800014 December 2009. Summary of changes for version 20091214:
8001
80021) ACPI CA Core Subsystem:
8003
8004Enhanced automatic data type conversions for predefined name repairs.
8005This
8006change expands the automatic repairs/conversions for predefined name
8007return
8008values to make Integers, Strings, and Buffers fully interchangeable.
8009Also,
8010a
8011Buffer can be converted to a Package of Integers if necessary. The
8012nsrepair.c
8013module was completely restructured. Lin Ming, Bob Moore.
8014
8015Implemented automatic removal of null package elements during predefined
8016name
8017repairs. This change will automatically remove embedded and trailing NULL
8018package elements from returned package objects that are defined to
8019contain
8020a
8021variable number of sub-packages. The driver is then presented with a
8022package
8023with no null elements to deal with. ACPICA BZ 819.
8024
8025Implemented a repair for the predefined _FDE and _GTM names. The expected
8026return value for both names is a Buffer of 5 DWORDs. This repair fixes
8027two
8028possible problems (both seen in the field), where a package of integers
8029is
8030returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8031Kim.
8032
8033Implemented additional module-level code support. This change will
8034properly
8035execute module-level code that is not at the root of the namespace (under
8036a
8037Device object, etc.). Now executes the code within the current scope
8038instead
8039of the root. ACPICA BZ 762. Lin Ming.
8040
8041Fixed possible mutex acquisition errors when running _REG methods. Fixes
8042a
8043problem where mutex errors can occur when running a _REG method that is
8044in
8045the same scope as a method-defined operation region or an operation
8046region
8047under a module-level IF block. This type of code is rare, so the problem
8048has
8049not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8050
8051Fixed a possible memory leak during module-level code execution. An
8052object
8053could be leaked for each block of executed module-level code if the
8054interpreter slack mode is enabled This change deletes any implicitly
8055returned
8056object from the module-level code block. Lin Ming.
8057
8058Removed messages for successful predefined repair(s). The repair
8059mechanism
8060was considered too wordy. Now, messages are only unconditionally emitted
8061if
8062the return object cannot be repaired. Existing messages for successful
8063repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8064827.
8065
8066Example Code and Data Size: These are the sizes for the OS-independent
8067acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8068debug version of the code includes the debug output trace mechanism and
8069has a
8070much larger code and data size.
8071
8072  Previous Release:
8073    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8074    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8075  Current Release:
8076    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8077    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8078
80792) iASL Compiler/Disassembler and Tools:
8080
8081iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8082files
8083were no longer automatically removed at the termination of the compile.
8084
8085acpiexec: Implemented the -f option to specify default region fill value.
8086This option specifies the value used to initialize buffers that simulate
8087operation regions. Default value is zero. Useful for debugging problems
8088that
8089depend on a specific initial value for a region or field.
8090
8091----------------------------------------
809212 November 2009. Summary of changes for version 20091112:
8093
80941) ACPI CA Core Subsystem:
8095
8096Implemented a post-order callback to AcpiWalkNamespace. The existing
8097interface only has a pre-order callback. This change adds an additional
8098parameter for a post-order callback which will be more useful for bus
8099scans.
8100ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
8101
8102Modified the behavior of the operation region memory mapping cache for
8103SystemMemory. Ensure that the memory mappings created for operation
8104regions
8105do not cross 4K page boundaries. Crossing a page boundary while mapping
8106regions can cause kernel warnings on some hosts if the pages have
8107different
8108attributes. Such regions are probably BIOS bugs, and this is the
8109workaround.
8110Linux BZ 14445. Lin Ming.
8111
8112Implemented an automatic repair for predefined methods that must return
8113sorted lists. This change will repair (by sorting) packages returned by
8114_ALR,
8115_PSS, and _TSS. Drivers can now assume that the packages are correctly
8116sorted
8117and do not contain NULL package elements. Adds one new file,
8118namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
8119
8120Fixed a possible fault during predefined name validation if a return
8121Package
8122object contains NULL elements. Also adds a warning if a NULL element is
8123followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
8124may
8125include repair or removal of all such NULL elements where possible.
8126
8127Implemented additional module-level executable AML code support. This
8128change
8129will execute module-level code that is not at the root of the namespace
8130(under a Device object, etc.) at table load time. Module-level executable
8131AML
8132code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
8133
8134Implemented a new internal function to create Integer objects. This
8135function
8136simplifies miscellaneous object creation code. ACPICA BZ 823.
8137
8138Reduced the severity of predefined repair messages, Warning to Info.
8139Since
8140the object was successfully repaired, a warning is too severe. Reduced to
8141an
8142info message for now. These messages may eventually be changed to debug-
8143only.
8144ACPICA BZ 812.
8145
8146Example Code and Data Size: These are the sizes for the OS-independent
8147acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8148debug version of the code includes the debug output trace mechanism and
8149has a
8150much larger code and data size.
8151
8152  Previous Release:
8153    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8154    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8155  Current Release:
8156    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8157    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8158
81592) iASL Compiler/Disassembler and Tools:
8160
8161iASL: Implemented Switch() with While(1) so that Break works correctly.
8162This
8163change correctly implements the Switch operator with a surrounding
8164While(1)
8165so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8166
8167iASL: Added a message if a package initializer list is shorter than
8168package
8169length. Adds a new remark for a Package() declaration if an initializer
8170list
8171exists, but is shorter than the declared length of the package. Although
8172technically legal, this is probably a coding error and it is seen in the
8173field. ACPICA BZ 815. Lin Ming, Bob Moore.
8174
8175iASL: Fixed a problem where the compiler could fault after the maximum
8176number
8177of errors was reached (200).
8178
8179acpixtract: Fixed a possible warning for pointer cast if the compiler
8180warning
8181level set very high.
8182
8183----------------------------------------
818413 October 2009. Summary of changes for version 20091013:
8185
81861) ACPI CA Core Subsystem:
8187
8188Fixed a problem where an Operation Region _REG method could be executed
8189more
8190than once. If a custom address space handler is installed by the host
8191before
8192the "initialize operation regions" phase of the ACPICA initialization,
8193any
8194_REG methods for that address space could be executed twice. This change
8195fixes the problem. ACPICA BZ 427. Lin Ming.
8196
8197Fixed a possible memory leak for the Scope() ASL operator. When the exact
8198invocation of "Scope(\)" is executed (change scope to root), one internal
8199operand object was leaked. Lin Ming.
8200
8201Implemented a run-time repair for the _MAT predefined method. If the _MAT
8202return value is defined as a Field object in the AML, and the field
8203size is less than or equal to the default width of an integer (32 or
820464),_MAT
8205can incorrectly return an Integer instead of a Buffer. ACPICA now
8206automatically repairs this problem. ACPICA BZ 810.
8207
8208Implemented a run-time repair for the _BIF and _BIX predefined methods.
8209The
8210"OEM Information" field is often incorrectly returned as an Integer with
8211value zero if the field is not supported by the platform. This is due to
8212an
8213ambiguity in the ACPI specification. The field should always be a string.
8214ACPICA now automatically repairs this problem by returning a NULL string
8215within the returned Package. ACPICA BZ 807.
8216
8217Example Code and Data Size: These are the sizes for the OS-independent
8218acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8219debug version of the code includes the debug output trace mechanism and
8220has a
8221much larger code and data size.
8222
8223  Previous Release:
8224    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8225    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8226  Current Release:
8227    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
8228    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
8229
82302) iASL Compiler/Disassembler and Tools:
8231
8232Disassembler: Fixed a problem where references to external symbols that
8233contained one or more parent-prefixes (carats) were not handled
8234correctly,
8235possibly causing a fault. ACPICA BZ 806. Lin Ming.
8236
8237Disassembler: Restructured the code so that all functions that handle
8238external symbols are in a single module. One new file is added,
8239common/dmextern.c.
8240
8241AML Debugger: Added a max count argument for the Batch command (which
8242executes multiple predefined methods within the namespace.)
8243
8244iASL: Updated the compiler documentation (User Reference.) Available at
8245http://www.acpica.org/documentation/. ACPICA BZ 750.
8246
8247AcpiXtract: Updated for Lint and other formatting changes. Close all open
8248files.
8249
8250----------------------------------------
825103 September 2009. Summary of changes for version 20090903:
8252
82531) ACPI CA Core Subsystem:
8254
8255For Windows Vista compatibility, added the automatic execution of an _INI
8256method located at the namespace root (\_INI). This method is executed at
8257table load time. This support is in addition to the automatic execution
8258of
8259\_SB._INI. Lin Ming.
8260
8261Fixed a possible memory leak in the interpreter for AML package objects
8262if
8263the package initializer list is longer than the defined size of the
8264package.
8265This apparently can only happen if the BIOS changes the package size on
8266the
8267fly (seen in a _PSS object), as ASL compilers do not allow this. The
8268interpreter will truncate the package to the defined size (and issue an
8269error
8270message), but previously could leave the extra objects undeleted if they
8271were
8272pre-created during the argument processing (such is the case if the
8273package
8274consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8275
8276Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8277This has been reported in the field. Previously, ACPICA would zero out
8278the
8279buffer/string. Now, the operation is treated as a noop. Provides Windows
8280compatibility. ACPICA BZ 803. Lin Ming.
8281
8282Removed an extraneous error message for ASL constructs of the form
8283Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8284statements
8285are seen in many BIOSs and are once again treated as NOOPs and no error
8286is
8287emitted when they are encountered. ACPICA BZ 785.
8288
8289Fixed an extraneous warning message if a _DSM reserved method returns a
8290Package object. _DSM can return any type of object, so validation on the
8291return type cannot be performed. ACPICA BZ 802.
8292
8293Example Code and Data Size: These are the sizes for the OS-independent
8294acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8295debug version of the code includes the debug output trace mechanism and
8296has a
8297much larger code and data size.
8298
8299  Previous Release:
8300    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8301    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8302  Current Release:
8303    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
8304    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
8305
83062) iASL Compiler/Disassembler and Tools:
8307
8308iASL: Fixed a problem with the use of the Alias operator and Resource
8309Templates. The correct alias is now constructed and no error is emitted.
8310ACPICA BZ 738.
8311
8312iASL: Implemented the -I option to specify additional search directories
8313for
8314include files. Allows multiple additional search paths for include files.
8315Directories are searched in the order specified on the command line
8316(after
8317the local directory is searched.) ACPICA BZ 800.
8318
8319iASL: Fixed a problem where the full pathname for include files was not
8320emitted for warnings/errors. This caused the IDE support to not work
8321properly. ACPICA BZ 765.
8322
8323iASL: Implemented the -@ option to specify a Windows-style response file
8324containing additional command line options. ACPICA BZ 801.
8325
8326AcpiExec: Added support to load multiple AML files simultaneously (such
8327as
8328a
8329DSDT and multiple SSDTs). Also added support for wildcards within the AML
8330pathname. These features allow all machine tables to be easily loaded and
8331debugged together. ACPICA BZ 804.
8332
8333Disassembler: Added missing support for disassembly of HEST table Error
8334Bank
8335subtables.
8336
8337----------------------------------------
833830 July 2009. Summary of changes for version 20090730:
8339
8340The ACPI 4.0 implementation for ACPICA is complete with this release.
8341
83421) ACPI CA Core Subsystem:
8343
8344ACPI 4.0: Added header file support for all new and changed ACPI tables.
8345Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8346new
8347for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8348BERT,
8349EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8350There
8351have been some ACPI 4.0 changes to other existing tables. Split the large
8352actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8353
8354ACPI 4.0: Implemented predefined name validation for all new names. There
8355are
835631 new names in ACPI 4.0. The predefined validation module was split into
8357two
8358files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8359
8360Implemented support for so-called "module-level executable code". This is
8361executable AML code that exists outside of any control method and is
8362intended
8363to be executed at table load time. Although illegal since ACPI 2.0, this
8364type
8365of code still exists and is apparently still being created. Blocks of
8366this
8367code are now detected and executed as intended. Currently, the code
8368blocks
8369must exist under either an If, Else, or While construct; these are the
8370typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8371
8372Implemented an automatic dynamic repair for predefined names that return
8373nested Package objects. This applies to predefined names that are defined
8374to
8375return a variable-length Package of sub-packages. If the number of sub-
8376packages is one, BIOS code is occasionally seen that creates a simple
8377single
8378package with no sub-packages. This code attempts to fix the problem by
8379wrapping a new package object around the existing package. These methods
8380can
8381be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8382BZ
8383790.
8384
8385Fixed a regression introduced in 20090625 for the AcpiGetDevices
8386interface.
8387The _HID/_CID matching was broken and no longer matched IDs correctly.
8388ACPICA
8389BZ 793.
8390
8391Fixed a problem with AcpiReset where the reset would silently fail if the
8392register was one of the protected I/O ports. AcpiReset now bypasses the
8393port
8394validation mechanism. This may eventually be driven into the
8395AcpiRead/Write
8396interfaces.
8397
8398Fixed a regression related to the recent update of the AcpiRead/Write
8399interfaces. A sleep/suspend could fail if the optional PM2 Control
8400register
8401does not exist during an attempt to write the Bus Master Arbitration bit.
8402(However, some hosts already delete the code that writes this bit, and
8403the
8404code may in fact be obsolete at this date.) ACPICA BZ 799.
8405
8406Fixed a problem where AcpiTerminate could fault if inadvertently called
8407twice
8408in succession. ACPICA BZ 795.
8409
8410Example Code and Data Size: These are the sizes for the OS-independent
8411acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8412debug version of the code includes the debug output trace mechanism and
8413has a
8414much larger code and data size.
8415
8416  Previous Release:
8417    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
8418    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
8419  Current Release:
8420    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
8421    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
8422
84232) iASL Compiler/Disassembler and Tools:
8424
8425ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8426changes to existing tables. ACPICA BZ 775.
8427
8428----------------------------------------
842925 June 2009. Summary of changes for version 20090625:
8430
8431The ACPI 4.0 Specification was released on June 16 and is available at
8432www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8433continue for the next few releases.
8434
84351) ACPI CA Core Subsystem:
8436
8437ACPI 4.0: Implemented interpreter support for the IPMI operation region
8438address space. Includes support for bi-directional data buffers and an
8439IPMI
8440address space handler (to be installed by an IPMI device driver.) ACPICA
8441BZ
8442773. Lin Ming.
8443
8444ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8445Includes
8446support in both the header files and the disassembler.
8447
8448Completed a major update for the AcpiGetObjectInfo external interface.
8449Changes include:
8450 - Support for variable, unlimited length HID, UID, and CID strings.
8451 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8452etc.)
8453 - Call the _SxW power methods on behalf of a device object.
8454 - Determine if a device is a PCI root bridge.
8455 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8456These changes will require an update to all callers of this interface.
8457See
8458the updated ACPICA Programmer Reference for details. One new source file
8459has
8460been added - utilities/utids.c. ACPICA BZ 368, 780.
8461
8462Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8463transfers. The Value parameter has been extended from 32 bits to 64 bits
8464in
8465order to support new ACPI 4.0 tables. These changes will require an
8466update
8467to
8468all callers of these interfaces. See the ACPICA Programmer Reference for
8469details. ACPICA BZ 768.
8470
8471Fixed several problems with AcpiAttachData. The handler was not invoked
8472when
8473the host node was deleted. The data sub-object was not automatically
8474deleted
8475when the host node was deleted. The interface to the handler had an
8476unused
8477parameter, this was removed. ACPICA BZ 778.
8478
8479Enhanced the function that dumps ACPI table headers. All non-printable
8480characters in the string fields are now replaced with '?' (Signature,
8481OemId,
8482OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8483these fields are occasionally seen in the field. ACPICA BZ 788.
8484
8485Fixed a problem with predefined method repair code where the code that
8486attempts to repair/convert an object of incorrect type is only executed
8487on
8488the first time the predefined method is called. The mechanism that
8489disables
8490warnings on subsequent calls was interfering with the repair mechanism.
8491ACPICA BZ 781.
8492
8493Fixed a possible memory leak in the predefined validation/repair code
8494when
8495a
8496buffer is automatically converted to an expected string object.
8497
8498Removed obsolete 16-bit files from the distribution and from the current
8499git
8500tree head. ACPICA BZ 776.
8501
8502Example Code and Data Size: These are the sizes for the OS-independent
8503acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8504debug version of the code includes the debug output trace mechanism and
8505has a
8506much larger code and data size.
8507
8508  Previous Release:
8509    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
8510    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
8511  Current 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
85152) iASL Compiler/Disassembler and Tools:
8516
8517ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8518operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8519
8520ACPI 4.0: iASL - implemented compile-time validation support for all new
8521predefined names and control methods (31 total). ACPICA BZ 769.
8522
8523----------------------------------------
852421 May 2009. Summary of changes for version 20090521:
8525
85261) ACPI CA Core Subsystem:
8527
8528Disabled the preservation of the SCI enable bit in the PM1 control
8529register.
8530The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8531to
8532be
8533a "preserved" bit - "OSPM always preserves this bit position", section
85344.7.3.2.1. However, some machines fail if this bit is in fact preserved
8535because the bit needs to be explicitly set by the OS as a workaround. No
8536machines fail if the bit is not preserved. Therefore, ACPICA no longer
8537attempts to preserve this bit.
8538
8539Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8540incorrectly formed _PRT package could cause a fault. Added validation to
8541ensure that each package element is actually a sub-package.
8542
8543Implemented a new interface to install or override a single control
8544method,
8545AcpiInstallMethod. This interface is useful when debugging in order to
8546repair
8547an existing method or to install a missing method without having to
8548override
8549the entire ACPI table. See the ACPICA Programmer Reference for use and
8550examples. Lin Ming, Bob Moore.
8551
8552Fixed several reference count issues with the DdbHandle object that is
8553created from a Load or LoadTable operator. Prevent premature deletion of
8554the
8555object. Also, mark the object as invalid once the table has been
8556unloaded.
8557This is needed because the handle itself may not be deleted after the
8558table
8559unload, depending on whether it has been stored in a named object by the
8560caller. Lin Ming.
8561
8562Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8563mutexes of the same sync level are acquired but then not released in
8564strict
8565opposite order, the internally maintained Current Sync Level becomes
8566confused
8567and can cause subsequent execution errors. ACPICA BZ 471.
8568
8569Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8570specification has been changed to make the SyncLevel for mutex objects
8571more
8572useful. When releasing a mutex, the SyncLevel of the mutex must now be
8573the
8574same as the current sync level. This makes more sense than the previous
8575rule
8576(SyncLevel less than or equal). This change updates the code to match the
8577specification.
8578
8579Fixed a problem with the local version of the AcpiOsPurgeCache function.
8580The
8581(local) cache must be locked during all cache object deletions. Andrew
8582Baumann.
8583
8584Updated the Load operator to use operation region interfaces. This
8585replaces
8586direct memory mapping with region access calls. Now, all region accesses
8587go
8588through the installed region handler as they should.
8589
8590Simplified and optimized the NsGetNextNode function. Reduced parameter
8591count
8592and reduced code for this frequently used function.
8593
8594Example Code and Data Size: These are the sizes for the OS-independent
8595acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8596debug version of the code includes the debug output trace mechanism and
8597has a
8598much larger code and data size.
8599
8600  Previous Release:
8601    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8602    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8603  Current 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
86072) iASL Compiler/Disassembler and Tools:
8608
8609Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8610problems
8611with sub-table disassembly and handling invalid sub-tables. Attempt
8612recovery
8613after an invalid sub-table ID.
8614
8615----------------------------------------
861622 April 2009. Summary of changes for version 20090422:
8617
86181) ACPI CA Core Subsystem:
8619
8620Fixed a compatibility issue with the recently released I/O port
8621protection
8622mechanism. For windows compatibility, 1) On a port protection violation,
8623simply ignore the request and do not return an exception (allow the
8624control
8625method to continue execution.) 2) If only part of the request overlaps a
8626protected port, read/write the individual ports that are not protected.
8627Linux
8628BZ 13036. Lin Ming
8629
8630Enhanced the execution of the ASL/AML BreakPoint operator so that it
8631actually
8632breaks into the AML debugger if the debugger is present. This matches the
8633ACPI-defined behavior.
8634
8635Fixed several possible warnings related to the use of the configurable
8636ACPI_THREAD_ID. This type can now be configured as either an integer or a
8637pointer with no warnings. Also fixes several warnings in printf-like
8638statements for the 64-bit build when the type is configured as a pointer.
8639ACPICA BZ 766, 767.
8640
8641Fixed a number of possible warnings when compiling with gcc 4+ (depending
8642on
8643warning options.) Examples include printf formats, aliasing, unused
8644globals,
8645missing prototypes, missing switch default statements, use of non-ANSI
8646library functions, use of non-ANSI constructs. See generate/unix/Makefile
8647for
8648a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8649
8650Example Code and Data Size: These are the sizes for the OS-independent
8651acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8652debug version of the code includes the debug output trace mechanism and
8653has a
8654much larger code and data size.
8655
8656  Previous Release:
8657    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8658    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8659  Current Release:
8660    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
8661    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
8662
86632) iASL Compiler/Disassembler and Tools:
8664
8665iASL: Fixed a generation warning from Bison 2.3 and fixed several
8666warnings
8667on
8668the 64-bit build.
8669
8670iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8671not
8672correctly digest Windows/DOS formatted files (with CR/LF).
8673
8674iASL: Added a new option for "quiet mode" (-va) that produces only the
8675compilation summary, not individual errors and warnings. Useful for large
8676batch compilations.
8677
8678AcpiExec: Implemented a new option (-z) to enable a forced
8679semaphore/mutex
8680timeout that can be used to detect hang conditions during execution of
8681AML
8682code (includes both internal semaphores and AML-defined mutexes and
8683events.)
8684
8685Added new makefiles for the generation of acpica in a generic unix-like
8686environment. These makefiles are intended to generate the acpica tools
8687and
8688utilities from the original acpica git source tree structure.
8689
8690Test Suites: Updated and cleaned up the documentation files. Updated the
8691copyrights to 2009, affecting all source files. Use the new version of
8692iASL
8693with quiet mode. Increased the number of available semaphores in the
8694Windows
8695OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8696added
8697an alternate implementation of the semaphore timeout to allow aslts to
8698execute fully on Cygwin.
8699
8700----------------------------------------
870120 March 2009. Summary of changes for version 20090320:
8702
87031) ACPI CA Core Subsystem:
8704
8705Fixed a possible race condition between AcpiWalkNamespace and dynamic
8706table
8707unloads. Added a reader/writer locking mechanism to allow multiple
8708concurrent
8709namespace walks (readers), but block a dynamic table unload until it can
8710gain
8711exclusive write access to the namespace. This fixes a problem where a
8712table
8713unload could (possibly catastrophically) delete the portion of the
8714namespace
8715that is currently being examined by a walk. Adds a new file, utlock.c,
8716that
8717implements the reader/writer lock mechanism. ACPICA BZ 749.
8718
8719Fixed a regression introduced in version 20090220 where a change to the
8720FADT
8721handling could cause the ACPICA subsystem to access non-existent I/O
8722ports.
8723
8724Modified the handling of FADT register and table (FACS/DSDT) addresses.
8725The
8726FADT can contain both 32-bit and 64-bit versions of these addresses.
8727Previously, the 64-bit versions were favored, meaning that if both 32 and
872864
8729versions were valid, but not equal, the 64-bit version was used. This was
8730found to cause some machines to fail. Now, in this case, the 32-bit
8731version
8732is used instead. This now matches the Windows behavior.
8733
8734Implemented a new mechanism to protect certain I/O ports. Provides
8735Microsoft
8736compatibility and protects the standard PC I/O ports from access via AML
8737code. Adds a new file, hwvalid.c
8738
8739Fixed a possible extraneous warning message from the FADT support. The
8740message warns of a 32/64 length mismatch between the legacy and GAS
8741definitions for a register.
8742
8743Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8744is
8745made obsolete by the port protection mechanism above. It was previously
8746used
8747to validate the entire address range of an operation region, which could
8748be
8749incorrect if the range included illegal ports, but fields within the
8750operation region did not actually access those ports. Validation is now
8751performed on a per-field basis instead of the entire region.
8752
8753Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8754Ignored bits must be "preserved" according to the ACPI spec. Usually,
8755this
8756means a read/modify/write when writing to the register. However, for
8757status
8758registers, writing a one means clear the event. Writing a zero means
8759preserve
8760the event (do not clear.) This behavior is clarified in the ACPI 4.0
8761spec,
8762and the ACPICA code now simply always writes a zero to the ignored bit.
8763
8764Modified the handling of ignored bits for the PM1 A/B Control Registers.
8765As
8766per the ACPI specification, for the control registers, preserve
8767(read/modify/write) all bits that are defined as either reserved or
8768ignored.
8769
8770Updated the handling of write-only bits in the PM1 A/B Control Registers.
8771When reading the register, zero the write-only bits as per the ACPI spec.
8772ACPICA BZ 443. Lin Ming.
8773
8774Removed "Linux" from the list of supported _OSI strings. Linux no longer
8775wants to reply true to this request. The Windows strings are the only
8776paths
8777through the AML that are tested and known to work properly.
8778
8779  Previous Release:
8780    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8781    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8782  Current Release:
8783    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
8784    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
8785
87862) iASL Compiler/Disassembler and Tools:
8787
8788Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8789and
8790aetables.c
8791
8792----------------------------------------
879320 February 2009. Summary of changes for version 20090220:
8794
87951) ACPI CA Core Subsystem:
8796
8797Optimized the ACPI register locking. Removed locking for reads from the
8798ACPI
8799bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8800is
8801not required when reading the single-bit registers. The
8802AcpiGetRegisterUnlocked function is no longer needed and has been
8803removed.
8804This will improve performance for reads on these registers. ACPICA BZ
8805760.
8806
8807Fixed the parameter validation for AcpiRead/Write. Now return
8808AE_BAD_PARAMETER if the input register pointer is null, and
8809AE_BAD_ADDRESS
8810if
8811the register has an address of zero. Previously, these cases simply
8812returned
8813AE_OK. For optional registers such as PM1B status/enable/control, the
8814caller
8815should check for a valid register address before calling. ACPICA BZ 748.
8816
8817Renamed the external ACPI bit register access functions. Renamed
8818AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8819functions. The new names are AcpiReadBitRegister and
8820AcpiWriteBitRegister.
8821Also, restructured the code for these functions by simplifying the code
8822path
8823and condensing duplicate code to reduce code size.
8824
8825Added new functions to transparently handle the possibly split PM1 A/B
8826registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8827functions
8828now handle the split registers for PM1 Status, Enable, and Control.
8829ACPICA
8830BZ
8831746.
8832
8833Added a function to handle the PM1 control registers,
8834AcpiHwWritePm1Control.
8835This function writes both of the PM1 control registers (A/B). These
8836registers
8837are different than the PM1 A/B status and enable registers in that
8838different
8839values can be written to the A/B registers. Most notably, the SLP_TYP
8840bits
8841can be different, as per the values returned from the _Sx predefined
8842methods.
8843
8844Removed an extra register write within AcpiHwClearAcpiStatus. This
8845function
8846was writing an optional PM1B status register twice. The existing call to
8847the
8848low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
8849A/B
8850register. ACPICA BZ 751.
8851
8852Split out the PM1 Status registers from the FADT. Added new globals for
8853these
8854registers (A/B), similar to the way the PM1 Enable registers are handled.
8855Instead of overloading the FADT Event Register blocks. This makes the
8856code
8857clearer and less prone to error.
8858
8859Fixed the warning message for when the platform contains too many ACPI
8860tables
8861for the default size of the global root table data structure. The
8862calculation
8863for the truncation value was incorrect.
8864
8865Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
8866obsolete macro, since it is now a simple reference to ->common.type.
8867There
8868were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
8869
8870Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
8871TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
8872simply SLEEP_TYPE. ACPICA BZ 754.
8873
8874Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
8875function is only needed on 64-bit host operating systems and is thus not
8876included for 32-bit hosts.
8877
8878Debug output: print the input and result for invocations of the _OSI
8879reserved
8880control method via the ACPI_LV_INFO debug level. Also, reduced some of
8881the
8882verbosity of this debug level. Len Brown.
8883
8884Example Code and Data Size: These are the sizes for the OS-independent
8885acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8886debug version of the code includes the debug output trace mechanism and
8887has a
8888much larger code and data size.
8889
8890  Previous Release:
8891    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8892    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8893  Current Release:
8894    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
8895    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
8896
88972) iASL Compiler/Disassembler and Tools:
8898
8899Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
8900various legal performance profiles.
8901
8902----------------------------------------
890323 January 2009. Summary of changes for version 20090123:
8904
89051) ACPI CA Core Subsystem:
8906
8907Added the 2009 copyright to all module headers and signons. This affects
8908virtually every file in the ACPICA core subsystem, the iASL compiler, and
8909the tools/utilities.
8910
8911Implemented a change to allow the host to override any ACPI table,
8912including
8913dynamically loaded tables. Previously, only the DSDT could be replaced by
8914the
8915host. With this change, the AcpiOsTableOverride interface is called for
8916each
8917table found in the RSDT/XSDT during ACPICA initialization, and also
8918whenever
8919a table is dynamically loaded via the AML Load operator.
8920
8921Updated FADT flag definitions, especially the Boot Architecture flags.
8922
8923Debugger: For the Find command, automatically pad the input ACPI name
8924with
8925underscores if the name is shorter than 4 characters. This enables a
8926match
8927with the actual namespace entry which is itself padded with underscores.
8928
8929Example Code and Data Size: These are the sizes for the OS-independent
8930acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8931debug version of the code includes the debug output trace mechanism and
8932has a
8933much larger code and data size.
8934
8935  Previous Release:
8936    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
8937    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
8938  Current Release:
8939    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
8940    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
8941
89422) iASL Compiler/Disassembler and Tools:
8943
8944Fix build error under Bison-2.4.
8945
8946Disassembler: Enhanced FADT support. Added decoding of the Boot
8947Architecture
8948flags. Now decode all flags, regardless of the FADT version. Flag output
8949includes the FADT version which first defined each flag.
8950
8951The iASL -g option now dumps the RSDT to a file (in addition to the FADT
8952and
8953DSDT). Windows only.
8954
8955----------------------------------------
895604 December 2008. Summary of changes for version 20081204:
8957
89581) ACPI CA Core Subsystem:
8959
8960The ACPICA Programmer Reference has been completely updated and revamped
8961for
8962this release. This includes updates to the external interfaces, OSL
8963interfaces, the overview sections, and the debugger reference.
8964
8965Several new ACPICA interfaces have been implemented and documented in the
8966programmer reference:
8967AcpiReset - Writes the reset value to the FADT-defined reset register.
8968AcpiDisableAllGpes - Disable all available GPEs.
8969AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
8970AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
8971AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
8972AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
8973AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
8974
8975Most of the public ACPI hardware-related interfaces have been moved to a
8976new
8977file, components/hardware/hwxface.c
8978
8979Enhanced the FADT parsing and low-level ACPI register access: The ACPI
8980register lengths within the FADT are now used, and the low level ACPI
8981register access no longer hardcodes the ACPI register lengths. Given that
8982there may be some risk in actually trusting the FADT register lengths, a
8983run-
8984time option was added to fall back to the default hardcoded lengths if
8985the
8986FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
8987option is set to true for now, and a warning is issued if a suspicious
8988FADT
8989register length is overridden with the default value.
8990
8991Fixed a reference count issue in NsRepairObject. This problem was
8992introduced
8993in version 20081031 as part of a fix to repair Buffer objects within
8994Packages. Lin Ming.
8995
8996Added semaphore support to the Linux/Unix application OS-services layer
8997(OSL). ACPICA BZ 448. Lin Ming.
8998
8999Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9000will
9001be implemented in the OSL, or will binary semaphores be used instead.
9002
9003Example Code and Data Size: These are the sizes for the OS-independent
9004acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9005debug version of the code includes the debug output trace mechanism and
9006has a
9007much larger code and data size.
9008
9009  Previous Release:
9010    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9011    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9012  Current Release:
9013    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9014    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9015
90162) iASL Compiler/Disassembler and Tools:
9017
9018iASL: Completed the '-e' option to include additional ACPI tables in
9019order
9020to
9021aid with disassembly and External statement generation. ACPICA BZ 742.
9022Lin
9023Ming.
9024
9025iASL: Removed the "named object in while loop" error. The compiler cannot
9026determine how many times a loop will execute. ACPICA BZ 730.
9027
9028Disassembler: Implemented support for FADT revision 2 (MS extension).
9029ACPICA
9030BZ 743.
9031
9032Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9033MCFG).
9034
9035----------------------------------------
903631 October 2008. Summary of changes for version 20081031:
9037
90381) ACPI CA Core Subsystem:
9039
9040Restructured the ACPICA header files into public/private. acpi.h now
9041includes
9042only the "public" acpica headers. All other acpica headers are "private"
9043and
9044should not be included by acpica users. One new file, accommon.h is used
9045to
9046include the commonly used private headers for acpica code generation.
9047Future
9048plans include moving all private headers to a new subdirectory.
9049
9050Implemented an automatic Buffer->String return value conversion for
9051predefined ACPI methods. For these methods (such as _BIF), added
9052automatic
9053conversion for return objects that are required to be a String, but a
9054Buffer
9055was found instead. This can happen when reading string battery data from
9056an
9057operation region, because it used to be difficult to convert the data
9058from
9059buffer to string from within the ASL. Ensures that the host OS is
9060provided
9061with a valid null-terminated string. Linux BZ 11822.
9062
9063Updated the FACS waking vector interfaces. Split
9064AcpiSetFirmwareWakingVector
9065into two: one for the 32-bit vector, another for the 64-bit vector. This
9066is
9067required because the host OS must setup the wake much differently for
9068each
9069vector (real vs. protected mode, etc.) and the interface itself should
9070not
9071be
9072deciding which vector to use. Also, eliminated the
9073GetFirmwareWakingVector
9074interface, as it served no purpose (only the firmware reads the vector,
9075OS
9076only writes the vector.) ACPICA BZ 731.
9077
9078Implemented a mechanism to escape infinite AML While() loops. Added a
9079loop
9080counter to force exit from AML While loops if the count becomes too
9081large.
9082This can occur in poorly written AML when the hardware does not respond
9083within a while loop and the loop does not implement a timeout. The
9084maximum
9085loop count is configurable. A new exception code is returned when a loop
9086is
9087broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9088
9089Optimized the execution of AML While loops. Previously, a control state
9090object was allocated and freed for each execution of the loop. The
9091optimization is to simply reuse the control state for each iteration.
9092This
9093speeds up the raw loop execution time by about 5%.
9094
9095Enhanced the implicit return mechanism. For Windows compatibility, return
9096an
9097implicit integer of value zero for methods that contain no executable
9098code.
9099Such methods are seen in the field as stubs (presumably), and can cause
9100drivers to fail if they expect a return value. Lin Ming.
9101
9102Allow multiple backslashes as root prefixes in namepaths. In a fully
9103qualified namepath, allow multiple backslash prefixes. This can happen
9104(and
9105is seen in the field) because of the use of a double-backslash in strings
9106(since backslash is the escape character) causing confusion. ACPICA BZ
9107739
9108Lin Ming.
9109
9110Emit a warning if two different FACS or DSDT tables are discovered in the
9111FADT. Checks if there are two valid but different addresses for the FACS
9112and
9113DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
9114
9115Consolidated the method argument count validation code. Merged the code
9116that
9117validates control method argument counts into the predefined validation
9118module. Eliminates possible multiple warnings for incorrect argument
9119counts.
9120
9121Implemented ACPICA example code. Includes code for ACPICA initialization,
9122handler installation, and calling a control method. Available at
9123source/tools/examples.
9124
9125Added a global pointer for FACS table to simplify internal FACS access.
9126Use
9127the global pointer instead of using AcpiGetTableByIndex for each FACS
9128access.
9129This simplifies the code for the Global Lock and the Firmware Waking
9130Vector(s).
9131
9132Example Code and Data Size: These are the sizes for the OS-independent
9133acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9134debug version of the code includes the debug output trace mechanism and
9135has a
9136much larger code and data size.
9137
9138  Previous Release:
9139    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
9140    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
9141  Current Release:
9142    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9143    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9144
91452) iASL Compiler/Disassembler and Tools:
9146
9147iASL: Improved disassembly of external method calls. Added the -e option
9148to
9149allow the inclusion of additional ACPI tables to help with the
9150disassembly
9151of
9152method invocations and the generation of external declarations during the
9153disassembly. Certain external method invocations cannot be disassembled
9154properly without the actual declaration of the method. Use the -e option
9155to
9156include the table where the external method(s) are actually declared.
9157Most
9158useful for disassembling SSDTs that make method calls back to the master
9159DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
9160-d
9161-e dsdt.aml ssdt1.aml
9162
9163iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9164problem where the use of an alias within a namepath would result in a not
9165found error or cause the compiler to fault. Also now allows forward
9166references from the Alias operator itself. ACPICA BZ 738.
9167
9168----------------------------------------
916926 September 2008. Summary of changes for version 20080926:
9170
91711) ACPI CA Core Subsystem:
9172
9173Designed and implemented a mechanism to validate predefined ACPI methods
9174and
9175objects. This code validates the predefined ACPI objects (objects whose
9176names
9177start with underscore) that appear in the namespace, at the time they are
9178evaluated. The argument count and the type of the returned object are
9179validated against the ACPI specification. The purpose of this validation
9180is
9181to detect problems with the BIOS-implemented predefined ACPI objects
9182before
9183the results are returned to the ACPI-related drivers. Future enhancements
9184may
9185include actual repair of incorrect return objects where possible. Two new
9186files are nspredef.c and acpredef.h.
9187
9188Fixed a fault in the AML parser if a memory allocation fails during the
9189Op
9190completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9191
9192Fixed an issue with implicit return compatibility. This change improves
9193the
9194implicit return mechanism to be more compatible with the MS interpreter.
9195Lin
9196Ming, ACPICA BZ 349.
9197
9198Implemented support for zero-length buffer-to-string conversions. Allow
9199zero
9200length strings during interpreter buffer-to-string conversions. For
9201example,
9202during the ToDecimalString and ToHexString operators, as well as implicit
9203conversions. Fiodor Suietov, ACPICA BZ 585.
9204
9205Fixed two possible memory leaks in the error exit paths of
9206AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9207are
9208similar in that they use a stack of state objects in order to eliminate
9209recursion. The stack must be fully unwound and deallocated if an error
9210occurs. Lin Ming. ACPICA BZ 383.
9211
9212Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9213global
9214ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9215Moore ACPICA BZ 442.
9216
9217Removed the obsolete version number in module headers. Removed the
9218"$Revision" number that appeared in each module header. This version
9219number
9220was useful under SourceSafe and CVS, but has no meaning under git. It is
9221not
9222only incorrect, it could also be misleading.
9223
9224Example Code and Data Size: These are the sizes for the OS-independent
9225acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9226debug version of the code includes the debug output trace mechanism and
9227has a
9228much larger code and data size.
9229
9230  Previous Release:
9231    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9232    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9233  Current 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
9237----------------------------------------
923829 August 2008. Summary of changes for version 20080829:
9239
92401) ACPI CA Core Subsystem:
9241
9242Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9243Reference. Changes include the elimination of cheating on the Object
9244field
9245for the DdbHandle subtype, addition of a reference class field to
9246differentiate the various reference types (instead of an AML opcode), and
9247the
9248cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9249
9250Reduce an error to a warning for an incorrect method argument count.
9251Previously aborted with an error if too few arguments were passed to a
9252control method via the external ACPICA interface. Now issue a warning
9253instead
9254and continue. Handles the case where the method inadvertently declares
9255too
9256many arguments, but does not actually use the extra ones. Applies mainly
9257to
9258the predefined methods. Lin Ming. Linux BZ 11032.
9259
9260Disallow the evaluation of named object types with no intrinsic value.
9261Return
9262AE_TYPE for objects that have no value and therefore evaluation is
9263undefined:
9264Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9265of
9266these types were allowed, but an exception would be generated at some
9267point
9268during the evaluation. Now, the error is generated up front.
9269
9270Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9271(nsnames.c). Fixes a leak in the error exit path.
9272
9273Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9274debug
9275levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9276ACPI_EXCEPTION
9277interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9278ACPI_LV_EVENTS.
9279
9280Removed obsolete and/or unused exception codes from the acexcep.h header.
9281There is the possibility that certain device drivers may be affected if
9282they
9283use any of these exceptions.
9284
9285The ACPICA documentation has been added to the public git source tree,
9286under
9287acpica/documents. Included are the ACPICA programmer reference, the iASL
9288compiler reference, and the changes.txt release logfile.
9289
9290Example Code and Data Size: These are the sizes for the OS-independent
9291acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9292debug version of the code includes the debug output trace mechanism and
9293has a
9294much larger code and data size.
9295
9296  Previous Release:
9297    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9298    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9299  Current Release:
9300    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9301    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
9302
93032) iASL Compiler/Disassembler and Tools:
9304
9305Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9306defines _SCP with 3 arguments. Previous versions defined it with only 1
9307argument. iASL now allows both definitions.
9308
9309iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9310zero-
9311length subtables when disassembling ACPI tables. Also fixed a couple of
9312errors where a full 16-bit table type field was not extracted from the
9313input
9314properly.
9315
9316acpisrc: Improve comment counting mechanism for generating source code
9317statistics. Count first and last lines of multi-line comments as
9318whitespace,
9319not comment lines. Handle Linux legal header in addition to standard
9320acpica
9321header.
9322
9323----------------------------------------
9324
932529 July 2008. Summary of changes for version 20080729:
9326
93271) ACPI CA Core Subsystem:
9328
9329Fix a possible deadlock in the GPE dispatch. Remove call to
9330AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9331attempt
9332to acquire the GPE lock but can deadlock since the GPE lock is already
9333held
9334at dispatch time. This code was introduced in version 20060831 as a
9335response
9336to Linux BZ 6881 and has since been removed from Linux.
9337
9338Add a function to dereference returned reference objects. Examines the
9339return
9340object from a call to AcpiEvaluateObject. Any Index or RefOf references
9341are
9342automatically dereferenced in an attempt to return something useful
9343(these
9344reference types cannot be converted into an external ACPI_OBJECT.)
9345Provides
9346MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9347
9348x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9349subtables for the MADT and one new subtable for the SRAT. Includes
9350disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9351x2APIC
9352Specification, June 2008.
9353
9354Additional error checking for pathname utilities. Add error check after
9355all
9356calls to AcpiNsGetPathnameLength. Add status return from
9357AcpiNsBuildExternalPath and check after all calls. Add parameter
9358validation
9359to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9360
9361Return status from the global init function AcpiUtGlobalInitialize. This
9362is
9363used by both the kernel subsystem and the utilities such as iASL
9364compiler.
9365The function could possibly fail when the caches are initialized. Yang
9366Yi.
9367
9368Add a function to decode reference object types to strings. Created for
9369improved error messages.
9370
9371Improve object conversion error messages. Better error messages during
9372object
9373conversion from internal to the external ACPI_OBJECT. Used for external
9374calls
9375to AcpiEvaluateObject.
9376
9377Example Code and Data Size: These are the sizes for the OS-independent
9378acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9379debug version of the code includes the debug output trace mechanism and
9380has a
9381much larger code and data size.
9382
9383  Previous Release:
9384    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9385    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9386  Current Release:
9387    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
9388    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
9389
93902) iASL Compiler/Disassembler and Tools:
9391
9392Debugger: fix a possible hang when evaluating non-methods. Fixes a
9393problem
9394introduced in version 20080701. If the object being evaluated (via
9395execute
9396command) is not a method, the debugger can hang while trying to obtain
9397non-
9398existent parameters.
9399
9400iASL: relax error for using reserved "_T_x" identifiers. These names can
9401appear in a disassembled ASL file if they were emitted by the original
9402compiler. Instead of issuing an error or warning and forcing the user to
9403manually change these names, issue a remark instead.
9404
9405iASL: error if named object created in while loop. Emit an error if any
9406named
9407object is created within a While loop. If allowed, this code will
9408generate
9409a
9410run-time error on the second iteration of the loop when an attempt is
9411made
9412to
9413create the same named object twice. ACPICA bugzilla 730.
9414
9415iASL: Support absolute pathnames for include files. Add support for
9416absolute
9417pathnames within the Include operator. previously, only relative
9418pathnames
9419were supported.
9420
9421iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9422Descriptor.
9423The ACPI spec requires one interrupt minimum. BZ 423
9424
9425iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9426Handles the case for the Interrupt Resource Descriptor where
9427the ResourceSource argument is omitted but ResourceSourceIndex
9428is present. Now leave room for the Index. BZ 426
9429
9430iASL: Prevent error message if CondRefOf target does not exist. Fixes
9431cases
9432where an error message is emitted if the target does not exist. BZ 516
9433
9434iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9435(get ACPI tables on Windows). This was apparently broken in version
943620070919.
9437
9438AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9439where
9440the EOF happens immediately after the last table in the input file. Print
9441completion message. Previously, no message was displayed in this case.
9442
9443----------------------------------------
944401 July 2008. Summary of changes for version 20080701:
9445
94460) Git source tree / acpica.org
9447
9448Fixed a problem where a git-clone from http would not transfer the entire
9449source tree.
9450
94511) ACPI CA Core Subsystem:
9452
9453Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9454enable bit. Now performs a read-change-write of the enable register
9455instead
9456of simply writing out the cached enable mask. This will prevent
9457inadvertent
9458enabling of GPEs if a rogue GPE is received during initialization (before
9459GPE
9460handlers are installed.)
9461
9462Implemented a copy for dynamically loaded tables. Previously, dynamically
9463loaded tables were simply mapped - but on some machines this memory is
9464corrupted after suspend. Now copy the table to a local buffer. For the
9465OpRegion case, added checksum verify. Use the table length from the table
9466header, not the region length. For the Buffer case, use the table length
9467also. Dennis Noordsij, Bob Moore. BZ 10734
9468
9469Fixed a problem where the same ACPI table could not be dynamically loaded
9470and
9471unloaded more than once. Without this change, a table cannot be loaded
9472again
9473once it has been loaded/unloaded one time. The current mechanism does not
9474unregister a table upon an unload. During a load, if the same table is
9475found,
9476this no longer returns an exception. BZ 722
9477
9478Fixed a problem where the wrong descriptor length was calculated for the
9479EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9480EndTag
9481are calculated as 12 bytes long, but the actual length in the internal
9482descriptor is 16 because of the round-up to 8 on the 64-bit build.
9483Reported
9484by Linn Crosetto. BZ 728
9485
9486Fixed a possible memory leak in the Unload operator. The DdbHandle
9487returned
9488by Load() did not have its reference count decremented during unload,
9489leading
9490to a memory leak. Lin Ming. BZ 727
9491
9492Fixed a possible memory leak when deleting thermal/processor objects. Any
9493associated notify handlers (and objects) were not being deleted. Fiodor
9494Suietov. BZ 506
9495
9496Fixed the ordering of the ASCII names in the global mutex table to match
9497the
9498actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9499only.
9500Vegard Nossum. BZ 726
9501
9502Enhanced the AcpiGetObjectInfo interface to return the number of required
9503arguments if the object is a control method. Added this call to the
9504debugger
9505so the proper number of default arguments are passed to a method. This
9506prevents a warning when executing methods from AcpiExec.
9507
9508Added a check for an invalid handle in AcpiGetObjectInfo. Return
9509AE_BAD_PARAMETER if input handle is invalid. BZ 474
9510
9511Fixed an extraneous warning from exconfig.c on the 64-bit build.
9512
9513Example Code and Data Size: These are the sizes for the OS-independent
9514acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9515debug version of the code includes the debug output trace mechanism and
9516has a
9517much larger code and data size.
9518
9519  Previous Release:
9520    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9521    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9522  Current Release:
9523    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
9524    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
9525
95262) iASL Compiler/Disassembler and Tools:
9527
9528iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9529resource descriptor names.
9530
9531iASL: Detect invalid ASCII characters in input (windows version). Removed
9532the
9533"-CF" flag from the flex compile, enables correct detection of non-ASCII
9534characters in the input. BZ 441
9535
9536iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9537the
9538"result of operation not used" warning when the DDB handle returned from
9539LoadTable is not used. The warning is not needed. BZ 590
9540
9541AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9542method
9543to
9544pass address of table to the AML. Added option to disable OpRegion
9545simulation
9546to allow creation of an OpRegion with a real address that was passed to
9547_CFG.
9548All of this allows testing of the Load and Unload operators from
9549AcpiExec.
9550
9551Debugger: update tables command for unloaded tables. Handle unloaded
9552tables
9553and use the standard table header output routine.
9554
9555----------------------------------------
955609 June 2008. Summary of changes for version 20080609:
9557
95581) ACPI CA Core Subsystem:
9559
9560Implemented a workaround for reversed _PRT entries. A significant number
9561of
9562BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9563change dynamically detects and repairs this problem. Provides
9564compatibility
9565with MS ACPI. BZ 6859
9566
9567Simplified the internal ACPI hardware interfaces to eliminate the locking
9568flag parameter from Register Read/Write. Added a new external interface,
9569AcpiGetRegisterUnlocked.
9570
9571Fixed a problem where the invocation of a GPE control method could hang.
9572This
9573was a regression introduced in 20080514. The new method argument count
9574validation mechanism can enter an infinite loop when a GPE method is
9575dispatched. Problem fixed by removing the obsolete code that passed GPE
9576block
9577information to the notify handler via the control method parameter
9578pointer.
9579
9580Fixed a problem where the _SST execution status was incorrectly returned
9581to
9582the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9583in
958420080514. _SST is optional and a NOT_FOUND exception should never be
9585returned. BZ 716
9586
9587Fixed a problem where a deleted object could be accessed from within the
9588AML
9589parser. This was a regression introduced in version 20080123 as a fix for
9590the
9591Unload operator. Lin Ming. BZ 10669
9592
9593Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9594operands
9595and eliminated the use of a negative index in a loop. Operands are now
9596displayed in the correct order, not backwards. This also fixes a
9597regression
9598introduced in 20080514 on 64-bit systems where the elimination of
9599ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9600715
9601
9602Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9603exit
9604path did not delete a locally allocated structure.
9605
9606Updated definitions for the DMAR and SRAT tables to synchronize with the
9607current specifications. Includes disassembler support.
9608
9609Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9610loop termination value was used. Loop terminated on iteration early,
9611missing
9612one mutex. Linn Crosetto
9613
9614Example Code and Data Size: These are the sizes for the OS-independent
9615acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9616debug version of the code includes the debug output trace mechanism and
9617has a
9618much larger code and data size.
9619
9620  Previous Release:
9621    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9622    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9623  Current Release:
9624    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
9625    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
9626
96272) iASL Compiler/Disassembler and Tools:
9628
9629Disassembler: Implemented support for EisaId() within _CID objects. Now
9630disassemble integer _CID objects back to EisaId invocations, including
9631multiple integers within _CID packages. Includes single-step support for
9632debugger also.
9633
9634Disassembler: Added support for DMAR and SRAT table definition changes.
9635
9636----------------------------------------
963714 May 2008. Summary of changes for version 20080514:
9638
96391) ACPI CA Core Subsystem:
9640
9641Fixed a problem where GPEs were enabled too early during the ACPICA
9642initialization. This could lead to "handler not installed" errors on some
9643machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9644This
9645ensures that all operation regions and devices throughout the namespace
9646have
9647been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9648
9649Implemented a change to the enter sleep code. Moved execution of the _GTS
9650method to just before setting sleep enable bit. The execution was moved
9651from
9652AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9653immediately before the SLP_EN bit is set, as per the ACPI specification.
9654Luming Yu, BZ 1653.
9655
9656Implemented a fix to disable unknown GPEs (2nd version). Now always
9657disable
9658the GPE, even if ACPICA thinks that that it is already disabled. It is
9659possible that the AML or some other code has enabled the GPE unbeknownst
9660to
9661the ACPICA code.
9662
9663Fixed a problem with the Field operator where zero-length fields would
9664return
9665an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9666ASL
9667field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9668
9669Implemented a fix for the Load operator, now load the table at the
9670namespace
9671root. This reverts a change introduced in version 20071019. The table is
9672now
9673loaded at the namespace root even though this goes against the ACPI
9674specification. This provides compatibility with other ACPI
9675implementations.
9676The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9677Ming.
9678
9679Fixed a problem where ACPICA would not Load() tables with unusual
9680signatures.
9681Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9682acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9683Therefore, signature validation is worthless. Apparently MS ACPI accepts
9684such
9685signatures, ACPICA must be compatible. BZ 10454.
9686
9687Fixed a possible negative array index in AcpiUtValidateException. Added
9688NULL
9689fields to the exception string arrays to eliminate a -1 subtraction on
9690the
9691SubStatus field.
9692
9693Updated the debug tracking macros to reduce overall code and data size.
9694Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9695instead of pointers to static strings. Jan Beulich and Bob Moore.
9696
9697Implemented argument count checking in control method invocation via
9698AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9699too
9700many. This applies only to extern programmatic control method execution,
9701not
9702method-to-method calls within the AML. Lin Ming.
9703
9704Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9705no
9706longer needed, especially with the removal of 16-bit support. It was
9707replaced
9708mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9709bit
9710on
971132/64-bit platforms is required.
9712
9713Added the C const qualifier for appropriate string constants -- mostly
9714MODULE_NAME and printf format strings. Jan Beulich.
9715
9716Example Code and Data Size: These are the sizes for the OS-independent
9717acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9718debug version of the code includes the debug output trace mechanism and
9719has a
9720much larger code and data size.
9721
9722  Previous Release:
9723    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
9724    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
9725  Current Release:
9726    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
9727    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
9728
97292) iASL Compiler/Disassembler and Tools:
9730
9731Implemented ACPI table revision ID validation in the disassembler. Zero
9732is
9733always invalid. For DSDTs, the ID controls the interpreter integer width.
97341
9735means 32-bit and this is unusual. 2 or greater is 64-bit.
9736
9737----------------------------------------
973821 March 2008. Summary of changes for version 20080321:
9739
97401) ACPI CA Core Subsystem:
9741
9742Implemented an additional change to the GPE support in order to suppress
9743spurious or stray GPEs. The AcpiEvDisableGpe function will now
9744permanently
9745disable incoming GPEs that are neither enabled nor disabled -- meaning
9746that
9747the GPE is unknown to the system. This should prevent future interrupt
9748floods
9749from that GPE. BZ 6217 (Zhang Rui)
9750
9751Fixed a problem where NULL package elements were not returned to the
9752AcpiEvaluateObject interface correctly. The element was simply ignored
9753instead of returning a NULL ACPI_OBJECT package element, potentially
9754causing
9755a buffer overflow and/or confusing the caller who expected a fixed number
9756of
9757elements. BZ 10132 (Lin Ming, Bob Moore)
9758
9759Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9760Dword,
9761Qword), Field, BankField, and IndexField operators when invoked from
9762inside
9763an executing control method. In this case, these operators created
9764namespace
9765nodes that were incorrectly left marked as permanent nodes instead of
9766temporary nodes. This could cause a problem if there is race condition
9767between an exiting control method and a running namespace walk. (Reported
9768by
9769Linn Crosetto)
9770
9771Fixed a problem where the CreateField and CreateXXXField operators would
9772incorrectly allow duplicate names (the name of the field) with no
9773exception
9774generated.
9775
9776Implemented several changes for Notify handling. Added support for new
9777Notify
9778values (ACPI 2.0+) and improved the Notify debug output. Notify on
9779PowerResource objects is no longer allowed, as per the ACPI
9780specification.
9781(Bob Moore, Zhang Rui)
9782
9783All Reference Objects returned via the AcpiEvaluateObject interface are
9784now
9785marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9786for
9787NULL objects - either NULL package elements or unresolved named
9788references.
9789
9790Fixed a problem where an extraneous debug message was produced for
9791package
9792objects (when debugging enabled). The message "Package List length larger
9793than NumElements count" is now produced in the correct case, and is now
9794an
9795error message rather than a debug message. Added a debug message for the
9796opposite case, where NumElements is larger than the Package List (the
9797package
9798will be padded out with NULL elements as per the ACPI spec.)
9799
9800Implemented several improvements for the output of the ASL "Debug" object
9801to
9802clarify and keep all data for a given object on one output line.
9803
9804Fixed two size calculation issues with the variable-length Start
9805Dependent
9806resource descriptor.
9807
9808Example Code and Data Size: These are the sizes for the OS-independent
9809acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9810debug version of the code includes the debug output trace mechanism and
9811has
9812a much larger code and data size.
9813
9814  Previous Release:
9815    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9816    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9817  Current 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
98212) iASL Compiler/Disassembler and Tools:
9822
9823Fixed a problem with the use of the Switch operator where execution of
9824the
9825containing method by multiple concurrent threads could cause an
9826AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9827actual Switch opcode, it must be simulated with local named temporary
9828variables and if/else pairs. The solution chosen was to mark any method
9829that
9830uses Switch as Serialized, thus preventing multiple thread entries. BZ
9831469.
9832
9833----------------------------------------
983413 February 2008. Summary of changes for version 20080213:
9835
98361) ACPI CA Core Subsystem:
9837
9838Implemented another MS compatibility design change for GPE/Notify
9839handling.
9840GPEs are now cleared/enabled asynchronously to allow all pending notifies
9841to
9842complete first. It is expected that the OSL will queue the enable request
9843behind all pending notify requests (may require changes to the local host
9844OSL
9845in AcpiOsExecute). Alexey Starikovskiy.
9846
9847Fixed a problem where buffer and package objects passed as arguments to a
9848control method via the external AcpiEvaluateObject interface could cause
9849an
9850AE_AML_INTERNAL exception depending on the order and type of operators
9851executed by the target control method.
9852
9853Fixed a problem where resource descriptor size optimization could cause a
9854problem when a _CRS resource template is passed to a _SRS method. The
9855_SRS
9856resource template must use the same descriptors (with the same size) as
9857returned from _CRS. This change affects the following resource
9858descriptors:
9859IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
98609487)
9861
9862Fixed a problem where a CopyObject to RegionField, BankField, and
9863IndexField
9864objects did not perform an implicit conversion as it should. These types
9865must
9866retain their initial type permanently as per the ACPI specification.
9867However,
9868a CopyObject to all other object types should not perform an implicit
9869conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
9870
9871Fixed a problem with the AcpiGetDevices interface where the mechanism to
9872match device CIDs did not examine the entire list of available CIDs, but
9873instead aborted on the first non-matching CID. Andrew Patterson.
9874
9875Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
9876was
9877inadvertently changed to return a 16-bit value instead of a 32-bit value,
9878truncating the upper dword of a 64-bit value. This macro is only used to
9879display debug output, so no incorrect calculations were made. Also,
9880reimplemented the macro so that a 64-bit shift is not performed by
9881inefficient compilers.
9882
9883Added missing va_end statements that should correspond with each va_start
9884statement.
9885
9886Example Code and Data Size: These are the sizes for the OS-independent
9887acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9888debug version of the code includes the debug output trace mechanism and
9889has
9890a much larger code and data size.
9891
9892  Previous Release:
9893    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9894    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9895  Current Release:
9896    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
9897    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
9898
98992) iASL Compiler/Disassembler and Tools:
9900
9901Implemented full disassembler support for the following new ACPI tables:
9902BERT, EINJ, and ERST. Implemented partial disassembler support for the
9903complicated HEST table. These tables support the Windows Hardware Error
9904Architecture (WHEA).
9905
9906----------------------------------------
990723 January 2008. Summary of changes for version 20080123:
9908
99091) ACPI CA Core Subsystem:
9910
9911Added the 2008 copyright to all module headers and signons. This affects
9912virtually every file in the ACPICA core subsystem, the iASL compiler, and
9913the tools/utilities.
9914
9915Fixed a problem with the SizeOf operator when used with Package and
9916Buffer
9917objects. These objects have deferred execution for some arguments, and
9918the
9919execution is now completed before the SizeOf is executed. This problem
9920caused
9921unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
9922BZ
99239558
9924
9925Implemented an enhancement to the interpreter "slack mode". In the
9926absence
9927of
9928an explicit return or an implicitly returned object from the last
9929executed
9930opcode, a control method will now implicitly return an integer of value 0
9931for
9932Microsoft compatibility. (Lin Ming) BZ 392
9933
9934Fixed a problem with the Load operator where an exception was not
9935returned
9936in
9937the case where the table is already loaded. (Lin Ming) BZ 463
9938
9939Implemented support for the use of DDBHandles as an Indexed Reference, as
9940per
9941the ACPI spec. (Lin Ming) BZ 486
9942
9943Implemented support for UserTerm (Method invocation) for the Unload
9944operator
9945as per the ACPI spec. (Lin Ming) BZ 580
9946
9947Fixed a problem with the LoadTable operator where the OemId and
9948OemTableId
9949input strings could cause unexpected failures if they were shorter than
9950the
9951maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
9952
9953Implemented support for UserTerm (Method invocation) for the Unload
9954operator
9955as per the ACPI spec. (Lin Ming) BZ 580
9956
9957Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
9958HEST,
9959IBFT, UEFI, WDAT. Disassembler support is forthcoming.
9960
9961Example Code and Data Size: These are the sizes for the OS-independent
9962acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9963debug version of the code includes the debug output trace mechanism and
9964has
9965a much larger code and data size.
9966
9967  Previous Release:
9968    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
9969    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
9970  Current Release:
9971    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
9972    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
9973
99742) iASL Compiler/Disassembler and Tools:
9975
9976Implemented support in the disassembler for checksum validation on
9977incoming
9978binary DSDTs and SSDTs. If incorrect, a message is displayed within the
9979table
9980header dump at the start of the disassembly.
9981
9982Implemented additional debugging information in the namespace listing
9983file
9984created during compilation. In addition to the namespace hierarchy, the
9985full
9986pathname to each namespace object is displayed.
9987
9988Fixed a problem with the disassembler where invalid ACPI tables could
9989cause
9990faults or infinite loops.
9991
9992Fixed an unexpected parse error when using the optional "parameter types"
9993list in a control method declaration. (Lin Ming) BZ 397
9994
9995Fixed a problem where two External declarations with the same name did
9996not
9997cause an error (Lin Ming) BZ 509
9998
9999Implemented support for full TermArgs (adding Argx, Localx and method
10000invocation) for the ParameterData parameter to the LoadTable operator.
10001(Lin
10002Ming) BZ 583,587
10003
10004----------------------------------------
1000519 December 2007. Summary of changes for version 20071219:
10006
100071) ACPI CA Core Subsystem:
10008
10009Implemented full support for deferred execution for the TermArg string
10010arguments for DataTableRegion. This enables forward references and full
10011operand resolution for the three string arguments. Similar to
10012OperationRegion
10013deferred argument execution.) Lin Ming. BZ 430
10014
10015Implemented full argument resolution support for the BankValue argument
10016to
10017BankField. Previously, only constants were supported, now any TermArg may
10018be
10019used. Lin Ming BZ 387, 393
10020
10021Fixed a problem with AcpiGetDevices where the search of a branch of the
10022device tree could be terminated prematurely. In accordance with the ACPI
10023specification, the search down the current branch is terminated if a
10024device
10025is both not present and not functional (instead of just not present.)
10026Yakui
10027Zhao.
10028
10029Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10030if
10031the underlying AML code changed the GPE enable registers. Now, any
10032unknown
10033incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10034disabled
10035instead of simply ignored. Rui Zhang.
10036
10037Fixed a problem with Index Fields where the Index register was
10038incorrectly
10039limited to a maximum of 32 bits. Now any size may be used.
10040
10041Fixed a couple memory leaks associated with "implicit return" objects
10042when
10043the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10044
10045Example Code and Data Size: These are the sizes for the OS-independent
10046acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10047debug version of the code includes the debug output trace mechanism and
10048has
10049a much larger code and data size.
10050
10051  Previous Release:
10052    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10053    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10054  Current Release:
10055    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10056    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10057
10058----------------------------------------
1005914 November 2007. Summary of changes for version 20071114:
10060
100611) ACPI CA Core Subsystem:
10062
10063Implemented event counters for each of the Fixed Events, the ACPI SCI
10064(interrupt) itself, and control methods executed. Named
10065AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10066These
10067should be useful for debugging and statistics.
10068
10069Implemented a new external interface, AcpiGetStatistics, to retrieve the
10070contents of the various event counters. Returns the current values for
10071AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10072AcpiMethodCount. The interface can be expanded in the future if new
10073counters
10074are added. Device drivers should use this interface rather than access
10075the
10076counters directly.
10077
10078Fixed a problem with the FromBCD and ToBCD operators. With some
10079compilers,
10080the ShortDivide function worked incorrectly, causing problems with the
10081BCD
10082functions with large input values. A truncation from 64-bit to 32-bit
10083inadvertently occurred. Internal BZ 435. Lin Ming
10084
10085Fixed a problem with Index references passed as method arguments.
10086References
10087passed as arguments to control methods were dereferenced immediately
10088(before
10089control was passed to the called method). The references are now
10090correctly
10091passed directly to the called method. BZ 5389. Lin Ming
10092
10093Fixed a problem with CopyObject used in conjunction with the Index
10094operator.
10095The reference was incorrectly dereferenced before the copy. The reference
10096is
10097now correctly copied. BZ 5391. Lin Ming
10098
10099Fixed a problem with Control Method references within Package objects.
10100These
10101references are now correctly generated. This completes the package
10102construction overhaul that began in version 20071019.
10103
10104Example Code and Data Size: These are the sizes for the OS-independent
10105acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10106debug version of the code includes the debug output trace mechanism and
10107has
10108a much larger code and data size.
10109
10110  Previous Release:
10111    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10112    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10113  Current Release:
10114    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10115    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10116
10117
101182) iASL Compiler/Disassembler and Tools:
10119
10120The AcpiExec utility now installs handlers for all of the predefined
10121Operation Region types. New types supported are: PCI_Config, CMOS, and
10122PCIBARTarget.
10123
10124Fixed a problem with the 64-bit version of AcpiExec where the extended
10125(64-
10126bit) address fields for the DSDT and FACS within the FADT were not being
10127used, causing truncation of the upper 32-bits of these addresses. Lin
10128Ming
10129and Bob Moore
10130
10131----------------------------------------
1013219 October 2007. Summary of changes for version 20071019:
10133
101341) ACPI CA Core Subsystem:
10135
10136Fixed a problem with the Alias operator when the target of the alias is a
10137named ASL operator that opens a new scope -- Scope, Device,
10138PowerResource,
10139Processor, and ThermalZone. In these cases, any children of the original
10140operator could not be accessed via the alias, potentially causing
10141unexpected
10142AE_NOT_FOUND exceptions. (BZ 9067)
10143
10144Fixed a problem with the Package operator where all named references were
10145created as object references and left otherwise unresolved. According to
10146the
10147ACPI specification, a Package can only contain Data Objects or references
10148to
10149control methods. The implication is that named references to Data Objects
10150(Integer, Buffer, String, Package, BufferField, Field) should be resolved
10151immediately upon package creation. This is the approach taken with this
10152change. References to all other named objects (Methods, Devices, Scopes,
10153etc.) are all now properly created as reference objects. (BZ 5328)
10154
10155Reverted a change to Notify handling that was introduced in version
1015620070508. This version changed the Notify handling from asynchronous to
10157fully synchronous (Device driver Notify handling with respect to the
10158Notify
10159ASL operator). It was found that this change caused more problems than it
10160solved and was removed by most users.
10161
10162Fixed a problem with the Increment and Decrement operators where the type
10163of
10164the target object could be unexpectedly and incorrectly changed. (BZ 353)
10165Lin Ming.
10166
10167Fixed a problem with the Load and LoadTable operators where the table
10168location within the namespace was ignored. Instead, the table was always
10169loaded into the root or current scope. Lin Ming.
10170
10171Fixed a problem with the Load operator when loading a table from a buffer
10172object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10173
10174Fixed a problem with the Debug object where a store of a DdbHandle
10175reference
10176object to the Debug object could cause a fault.
10177
10178Added a table checksum verification for the Load operator, in the case
10179where
10180the load is from a buffer. (BZ 578).
10181
10182Implemented additional parameter validation for the LoadTable operator.
10183The
10184length of the input strings SignatureString, OemIdString, and OemTableId
10185are
10186now checked for maximum lengths. (BZ 582) Lin Ming.
10187
10188Example Code and Data Size: These are the sizes for the OS-independent
10189acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10190debug version of the code includes the debug output trace mechanism and
10191has
10192a much larger code and data size.
10193
10194  Previous Release:
10195    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10196    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10197  Current Release:
10198    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
10199    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
10200
10201
102022) iASL Compiler/Disassembler:
10203
10204Fixed a problem where if a single file was specified and the file did not
10205exist, no error message was emitted. (Introduced with wildcard support in
10206version 20070917.)
10207
10208----------------------------------------
1020919 September 2007. Summary of changes for version 20070919:
10210
102111) ACPI CA Core Subsystem:
10212
10213Designed and implemented new external interfaces to install and remove
10214handlers for ACPI table-related events. Current events that are defined
10215are
10216LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10217they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10218AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10219
10220Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10221(acpi_serialized option on Linux) could cause some systems to hang during
10222initialization. (Bob Moore) BZ 8171
10223
10224Fixed a problem where objects of certain types (Device, ThermalZone,
10225Processor, PowerResource) can be not found if they are declared and
10226referenced from within the same control method (Lin Ming) BZ 341
10227
10228Example Code and Data Size: These are the sizes for the OS-independent
10229acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10230debug version of the code includes the debug output trace mechanism and
10231has
10232a much larger code and data size.
10233
10234  Previous Release:
10235    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10236    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10237  Current Release:
10238    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
10239    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
10240
10241
102422) iASL Compiler/Disassembler:
10243
10244Implemented support to allow multiple files to be compiled/disassembled
10245in
10246a
10247single invocation. This includes command line wildcard support for both
10248the
10249Windows and Unix versions of the compiler. This feature simplifies the
10250disassembly and compilation of multiple ACPI tables in a single
10251directory.
10252
10253----------------------------------------
1025408 May 2007. Summary of changes for version 20070508:
10255
102561) ACPI CA Core Subsystem:
10257
10258Implemented a Microsoft compatibility design change for the handling of
10259the
10260Notify AML operator. Previously, notify handlers were dispatched and
10261executed completely asynchronously in a deferred thread. The new design
10262still executes the notify handlers in a different thread, but the
10263original
10264thread that executed the Notify() now waits at a synchronization point
10265for
10266the notify handler to complete. Some machines depend on a synchronous
10267Notify
10268operator in order to operate correctly.
10269
10270Implemented support to allow Package objects to be passed as method
10271arguments to the external AcpiEvaluateObject interface. Previously, this
10272would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10273implemented since there were no reserved control methods that required it
10274until recently.
10275
10276Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10277that
10278contained invalid non-zero values in reserved fields could cause later
10279failures because these fields have meaning in later revisions of the
10280FADT.
10281For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10282fields
10283are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10284
10285Fixed a problem where the Global Lock handle was not properly updated if
10286a
10287thread that acquired the Global Lock via executing AML code then
10288attempted
10289to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10290Joe
10291Liu.
10292
10293Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10294could be corrupted if the interrupt being removed was at the head of the
10295list. Reported by Linn Crosetto.
10296
10297Example Code and Data Size: These are the sizes for the OS-independent
10298acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10299debug version of the code includes the debug output trace mechanism and
10300has
10301a much larger code and data size.
10302
10303  Previous Release:
10304    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10305    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10306  Current Release:
10307    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
10308    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
10309
10310----------------------------------------
1031120 March 2007. Summary of changes for version 20070320:
10312
103131) ACPI CA Core Subsystem:
10314
10315Implemented a change to the order of interpretation and evaluation of AML
10316operand objects within the AML interpreter. The interpreter now evaluates
10317operands in the order that they appear in the AML stream (and the
10318corresponding ASL code), instead of in the reverse order (after the
10319entire
10320operand list has been parsed). The previous behavior caused several
10321subtle
10322incompatibilities with the Microsoft AML interpreter as well as being
10323somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10324
10325Implemented a change to the ACPI Global Lock support. All interfaces to
10326the
10327global lock now allow the same thread to acquire the lock multiple times.
10328This affects the AcpiAcquireGlobalLock external interface to the global
10329lock
10330as well as the internal use of the global lock to support AML fields -- a
10331control method that is holding the global lock can now simultaneously
10332access
10333AML fields that require global lock protection. Previously, in both
10334cases,
10335this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10336to
10337AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10338Controller. There is no change to the behavior of the AML Acquire
10339operator,
10340as this can already be used to acquire a mutex multiple times by the same
10341thread. BZ 8066. With assistance from Alexey Starikovskiy.
10342
10343Fixed a problem where invalid objects could be referenced in the AML
10344Interpreter after error conditions. During operand evaluation, ensure
10345that
10346the internal "Return Object" field is cleared on error and only valid
10347pointers are stored there. Caused occasional access to deleted objects
10348that
10349resulted in "large reference count" warning messages. Valery Podrezov.
10350
10351Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10352on
10353deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10354Podrezov.
10355
10356Fixed an internal problem with the handling of result objects on the
10357interpreter result stack. BZ 7872. Valery Podrezov.
10358
10359Removed obsolete code that handled the case where AML_NAME_OP is the
10360target
10361of a reference (Reference.Opcode). This code was no longer necessary. BZ
103627874. Valery Podrezov.
10363
10364Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10365was
10366a
10367remnant from the previously discontinued 16-bit support.
10368
10369Example Code and Data Size: These are the sizes for the OS-independent
10370acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10371debug version of the code includes the debug output trace mechanism and
10372has
10373a much larger code and data size.
10374
10375  Previous Release:
10376    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10377    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10378  Current Release:
10379    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10380    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
10381
10382----------------------------------------
1038326 January 2007. Summary of changes for version 20070126:
10384
103851) ACPI CA Core Subsystem:
10386
10387Added the 2007 copyright to all module headers and signons. This affects
10388virtually every file in the ACPICA core subsystem, the iASL compiler, and
10389the utilities.
10390
10391Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10392during a table load. A bad pointer was passed in the case where the DSDT
10393is
10394overridden, causing a fault in this case.
10395
10396Example Code and Data Size: These are the sizes for the OS-independent
10397acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10398debug version of the code includes the debug output trace mechanism and
10399has
10400a much larger code and data size.
10401
10402  Previous Release:
10403    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10404    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10405  Current Release:
10406    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10407    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10408
10409----------------------------------------
1041015 December 2006. Summary of changes for version 20061215:
10411
104121) ACPI CA Core Subsystem:
10413
10414Support for 16-bit ACPICA has been completely removed since it is no
10415longer
10416necessary and it clutters the code. All 16-bit macros, types, and
10417conditional compiles have been removed, cleaning up and simplifying the
10418code
10419across the entire subsystem. DOS support is no longer needed since the
10420bootable Linux firmware kit is now available.
10421
10422The handler for the Global Lock is now removed during AcpiTerminate to
10423enable a clean subsystem restart, via the implementation of the
10424AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10425HP)
10426
10427Implemented enhancements to the multithreading support within the
10428debugger
10429to enable improved multithreading debugging and evaluation of the
10430subsystem.
10431(Valery Podrezov)
10432
10433Debugger: Enhanced the Statistics/Memory command to emit the total
10434(maximum)
10435memory used during the execution, as well as the maximum memory consumed
10436by
10437each of the various object types. (Valery Podrezov)
10438
10439Example Code and Data Size: These are the sizes for the OS-independent
10440acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10441debug version of the code includes the debug output trace mechanism and
10442has
10443a much larger code and data size.
10444
10445  Previous Release:
10446    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10447    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10448  Current Release:
10449    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
10450    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
10451
10452
104532) iASL Compiler/Disassembler and Tools:
10454
10455AcpiExec: Implemented a new option (-m) to display full memory use
10456statistics upon subsystem/program termination. (Valery Podrezov)
10457
10458----------------------------------------
1045909 November 2006. Summary of changes for version 20061109:
10460
104611) ACPI CA Core Subsystem:
10462
10463Optimized the Load ASL operator in the case where the source operand is
10464an
10465operation region. Simply map the operation region memory, instead of
10466performing a bytewise read. (Region must be of type SystemMemory, see
10467below.)
10468
10469Fixed the Load ASL operator for the case where the source operand is a
10470region field. A buffer object is also allowed as the source operand. BZ
10471480
10472
10473Fixed a problem where the Load ASL operator allowed the source operand to
10474be
10475an operation region of any type. It is now restricted to regions of type
10476SystemMemory, as per the ACPI specification. BZ 481
10477
10478Additional cleanup and optimizations for the new Table Manager code.
10479
10480AcpiEnable will now fail if all of the required ACPI tables are not
10481loaded
10482(FADT, FACS, DSDT). BZ 477
10483
10484Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10485this
10486header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10487manually optimized to be aligned and will not work if it is byte-packed.
10488
10489Example Code and Data Size: These are the sizes for the OS-independent
10490acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10491debug version of the code includes the debug output trace mechanism and
10492has
10493a much larger code and data size.
10494
10495  Previous Release:
10496    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10497    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10498  Current Release:
10499    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
10500    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
10501
10502
105032) iASL Compiler/Disassembler and Tools:
10504
10505Fixed a problem where the presence of the _OSI predefined control method
10506within complex expressions could cause an internal compiler error.
10507
10508AcpiExec: Implemented full region support for multiple address spaces.
10509SpaceId is now part of the REGION object. BZ 429
10510
10511----------------------------------------
1051211 October 2006. Summary of changes for version 20061011:
10513
105141) ACPI CA Core Subsystem:
10515
10516Completed an AML interpreter performance enhancement for control method
10517execution. Previously a 2-pass parse/execution, control methods are now
10518completely parsed and executed in a single pass. This improves overall
10519interpreter performance by ~25%, reduces code size, and reduces CPU stack
10520use. (Valery Podrezov + interpreter changes in version 20051202 that
10521eliminated namespace loading during the pass one parse.)
10522
10523Implemented _CID support for PCI Root Bridge detection. If the _HID does
10524not
10525match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10526now
10527obtained and also checked for an ID match.
10528
10529Implemented additional support for the PCI _ADR execution: upsearch until
10530a
10531device scope is found before executing _ADR. This allows PCI_Config
10532operation regions to be declared locally within control methods
10533underneath
10534PCI device objects.
10535
10536Fixed a problem with a possible race condition between threads executing
10537AcpiWalkNamespace and the AML interpreter. This condition was removed by
10538modifying AcpiWalkNamespace to (by default) ignore all temporary
10539namespace
10540entries created during any concurrent control method execution. An
10541additional namespace race condition is known to exist between
10542AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10543investigation.
10544
10545Restructured the AML ParseLoop function, breaking it into several
10546subfunctions in order to reduce CPU stack use and improve
10547maintainability.
10548(Mikhail Kouzmich)
10549
10550AcpiGetHandle: Fix for parameter validation to detect invalid
10551combinations
10552of prefix handle and pathname. BZ 478
10553
10554Example Code and Data Size: These are the sizes for the OS-independent
10555acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10556debug version of the code includes the debug output trace mechanism and
10557has
10558a much larger code and data size.
10559
10560  Previous Release:
10561    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10562    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10563  Current Release:
10564    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
10565    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
10566
105672) iASL Compiler/Disassembler and Tools:
10568
10569Ported the -g option (get local ACPI tables) to the new ACPICA Table
10570Manager
10571to restore original behavior.
10572
10573----------------------------------------
1057427 September 2006. Summary of changes for version 20060927:
10575
105761) ACPI CA Core Subsystem:
10577
10578Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10579These functions now use a spinlock for mutual exclusion and the interrupt
10580level indication flag is not needed.
10581
10582Fixed a problem with the Global Lock where the lock could appear to be
10583obtained before it is actually obtained. The global lock semaphore was
10584inadvertently created with one unit instead of zero units. (BZ 464)
10585Fiodor
10586Suietov.
10587
10588Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10589during
10590a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10591
10592Example Code and Data Size: These are the sizes for the OS-independent
10593acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10594debug version of the code includes the debug output trace mechanism and
10595has
10596a much larger code and data size.
10597
10598  Previous Release:
10599    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10600    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10601  Current Release:
10602    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10603    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
10604
10605
106062) iASL Compiler/Disassembler and Tools:
10607
10608Fixed a compilation problem with the pre-defined Resource Descriptor
10609field
10610names where an "object does not exist" error could be incorrectly
10611generated
10612if the parent ResourceTemplate pathname places the template within a
10613different namespace scope than the current scope. (BZ 7212)
10614
10615Fixed a problem where the compiler could hang after syntax errors
10616detected
10617in an ElseIf construct. (BZ 453)
10618
10619Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10620operator. An incorrect output filename was produced when this parameter
10621was
10622a null string (""). Now, the original input filename is used as the AML
10623output filename, with an ".aml" extension.
10624
10625Implemented a generic batch command mode for the AcpiExec utility
10626(execute
10627any AML debugger command) (Valery Podrezov).
10628
10629----------------------------------------
1063012 September 2006. Summary of changes for version 20060912:
10631
106321) ACPI CA Core Subsystem:
10633
10634Enhanced the implementation of the "serialized mode" of the interpreter
10635(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10636specified, instead of creating a serialization semaphore per control
10637method,
10638the interpreter lock is simply no longer released before a blocking
10639operation during control method execution. This effectively makes the AML
10640Interpreter single-threaded. The overhead of a semaphore per-method is
10641eliminated.
10642
10643Fixed a regression where an error was no longer emitted if a control
10644method
10645attempts to create 2 objects of the same name. This once again returns
10646AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10647that
10648will dynamically serialize the control method to possible prevent future
10649errors. (BZ 440)
10650
10651Integrated a fix for a problem with PCI Express HID detection in the PCI
10652Config Space setup procedure. (BZ 7145)
10653
10654Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10655AcpiHwInitialize function - the FADT registers are now validated when the
10656table is loaded.
10657
10658Added two new warnings during FADT verification - 1) if the FADT is
10659larger
10660than the largest known FADT version, and 2) if there is a mismatch
10661between
10662a
1066332-bit block address and the 64-bit X counterpart (when both are non-
10664zero.)
10665
10666Example Code and Data Size: These are the sizes for the OS-independent
10667acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10668debug version of the code includes the debug output trace mechanism and
10669has
10670a much larger code and data size.
10671
10672  Previous Release:
10673    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10674    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10675  Current Release:
10676    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
10677    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
10678
10679
106802) iASL Compiler/Disassembler and Tools:
10681
10682Fixed a problem with the implementation of the Switch() operator where
10683the
10684temporary variable was declared too close to the actual Switch, instead
10685of
10686at method level. This could cause a problem if the Switch() operator is
10687within a while loop, causing an error on the second iteration. (BZ 460)
10688
10689Disassembler - fix for error emitted for unknown type for target of scope
10690operator. Now, ignore it and continue.
10691
10692Disassembly of an FADT now verifies the input FADT and reports any errors
10693found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10694
10695Disassembly of raw data buffers with byte initialization data now
10696prefixes
10697each output line with the current buffer offset.
10698
10699Disassembly of ASF! table now includes all variable-length data fields at
10700the end of some of the subtables.
10701
10702The disassembler now emits a comment if a buffer appears to be a
10703ResourceTemplate, but cannot be disassembled as such because the EndTag
10704does
10705not appear at the very end of the buffer.
10706
10707AcpiExec - Added the "-t" command line option to enable the serialized
10708mode
10709of the AML interpreter.
10710
10711----------------------------------------
1071231 August 2006. Summary of changes for version 20060831:
10713
107141) ACPI CA Core Subsystem:
10715
10716Miscellaneous fixes for the Table Manager:
10717- Correctly initialize internal common FADT for all 64-bit "X" fields
10718- Fixed a couple table mapping issues during table load
10719- Fixed a couple alignment issues for IA64
10720- Initialize input array to zero in AcpiInitializeTables
10721- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
10722AcpiGetTableByIndex
10723
10724Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10725now
10726immediately disabled to prevent the waking GPE from firing again and to
10727prevent other wake GPEs from interrupting the wake process.
10728
10729Added the AcpiGpeCount global that tracks the number of processed GPEs,
10730to
10731be used for debugging systems with a large number of ACPI interrupts.
10732
10733Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10734both the ACPICA headers and the disassembler.
10735
10736Example Code and Data Size: These are the sizes for the OS-independent
10737acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10738debug version of the code includes the debug output trace mechanism and
10739has
10740a much larger code and data size.
10741
10742  Previous Release:
10743    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10744    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10745  Current Release:
10746    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
10747    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
10748
10749
107502) iASL Compiler/Disassembler and Tools:
10751
10752Disassembler support for the DMAR ACPI table.
10753
10754----------------------------------------
1075523 August 2006. Summary of changes for version 20060823:
10756
107571) ACPI CA Core Subsystem:
10758
10759The Table Manager component has been completely redesigned and
10760reimplemented. The new design is much simpler, and reduces the overall
10761code
10762and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10763is
10764now possible to obtain the ACPI tables very early during kernel
10765initialization, even before dynamic memory management is initialized.
10766(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10767
10768Obsolete ACPICA interfaces:
10769
10770- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10771init
10772time).
10773- AcpiLoadTable: Not needed.
10774- AcpiUnloadTable: Not needed.
10775
10776New ACPICA interfaces:
10777
10778- AcpiInitializeTables: Must be called before the table manager can be
10779used.
10780- AcpiReallocateRootTable: Used to transfer the root table to dynamically
10781allocated memory after it becomes available.
10782- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10783tables
10784in the RSDT/XSDT.
10785
10786Other ACPICA changes:
10787
10788- AcpiGetTableHeader returns the actual mapped table header, not a copy.
10789Use
10790AcpiOsUnmapMemory to free this mapping.
10791- AcpiGetTable returns the actual mapped table. The mapping is managed
10792internally and must not be deleted by the caller. Use of this interface
10793causes no additional dynamic memory allocation.
10794- AcpiFindRootPointer: Support for physical addressing has been
10795eliminated,
10796it appeared to be unused.
10797- The interface to AcpiOsMapMemory has changed to be consistent with the
10798other allocation interfaces.
10799- The interface to AcpiOsGetRootPointer has changed to eliminate
10800unnecessary
10801parameters.
10802- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1080364-
10804bit platforms. Was previously 64 bits on all platforms.
10805- The interface to the ACPI Global Lock acquire/release macros have
10806changed
10807slightly since ACPICA no longer keeps a local copy of the FACS with a
10808constructed pointer to the actual global lock.
10809
10810Porting to the new table manager:
10811
10812- AcpiInitializeTables: Must be called once, and can be called anytime
10813during the OS initialization process. It allows the host to specify an
10814area
10815of memory to be used to store the internal version of the RSDT/XSDT (root
10816table). This allows the host to access ACPI tables before memory
10817management
10818is initialized and running.
10819- AcpiReallocateRootTable: Can be called after memory management is
10820running
10821to copy the root table to a dynamically allocated array, freeing up the
10822scratch memory specified in the call to AcpiInitializeTables.
10823- AcpiSubsystemInitialize: This existing interface is independent of the
10824Table Manager, and does not have to be called before the Table Manager
10825can
10826be used, it only must be called before the rest of ACPICA can be used.
10827- ACPI Tables: Some changes have been made to the names and structure of
10828the
10829actbl.h and actbl1.h header files and may require changes to existing
10830code.
10831For example, bitfields have been completely removed because of their lack
10832of
10833portability across C compilers.
10834- Update interfaces to the Global Lock acquire/release macros if local
10835versions are used. (see acwin.h)
10836
10837Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10838
10839New files: tbfind.c
10840
10841Example Code and Data Size: These are the sizes for the OS-independent
10842acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10843debug version of the code includes the debug output trace mechanism and
10844has
10845a much larger code and data size.
10846
10847  Previous Release:
10848    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10849    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10850  Current Release:
10851    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
10852    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
10853
10854
108552) iASL Compiler/Disassembler and Tools:
10856
10857No changes for this release.
10858
10859----------------------------------------
1086021 July 2006. Summary of changes for version 20060721:
10861
108621) ACPI CA Core Subsystem:
10863
10864The full source code for the ASL test suite used to validate the iASL
10865compiler and the ACPICA core subsystem is being released with the ACPICA
10866source for the first time. The source is contained in a separate package
10867and
10868consists of over 1100 files that exercise all ASL/AML operators. The
10869package
10870should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
10871Fiodor
10872Suietov)
10873
10874Completed a new design and implementation for support of the ACPI Global
10875Lock. On the OS side, the global lock is now treated as a standard AML
10876mutex. Previously, multiple OS threads could "acquire" the global lock
10877simultaneously. However, this could cause the BIOS to be starved out of
10878the
10879lock - especially in cases such as the Embedded Controller driver where
10880there is a tight coupling between the OS and the BIOS.
10881
10882Implemented an optimization for the ACPI Global Lock interrupt mechanism.
10883The Global Lock interrupt handler no longer queues the execution of a
10884separate thread to signal the global lock semaphore. Instead, the
10885semaphore
10886is signaled directly from the interrupt handler.
10887
10888Implemented support within the AML interpreter for package objects that
10889contain a larger AML length (package list length) than the package
10890element
10891count. In this case, the length of the package is truncated to match the
10892package element count. Some BIOS code apparently modifies the package
10893length
10894on the fly, and this change supports this behavior. Provides
10895compatibility
10896with the MS AML interpreter. (With assistance from Fiodor Suietov)
10897
10898Implemented a temporary fix for the BankValue parameter of a Bank Field
10899to
10900support all constant values, now including the Zero and One opcodes.
10901Evaluation of this parameter must eventually be converted to a full
10902TermArg
10903evaluation. A not-implemented error is now returned (temporarily) for
10904non-
10905constant values for this parameter.
10906
10907Fixed problem reports (Fiodor Suietov) integrated:
10908- Fix for premature object deletion after CopyObject on Operation Region
10909(BZ
10910350)
10911
10912Example Code and Data Size: These are the sizes for the OS-independent
10913acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10914debug version of the code includes the debug output trace mechanism and
10915has
10916a much larger code and data size.
10917
10918  Previous Release:
10919    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
10920    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
10921  Current Release:
10922    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
10923    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
10924
10925
109262) iASL Compiler/Disassembler and Tools:
10927
10928No changes for this release.
10929
10930----------------------------------------
1093107 July 2006. Summary of changes for version 20060707:
10932
109331) ACPI CA Core Subsystem:
10934
10935Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
10936that do not allow the initialization of address pointers within packed
10937structures - even though the hardware itself may support misaligned
10938transfers. Some of the debug data structures are packed by default to
10939minimize size.
10940
10941Added an error message for the case where AcpiOsGetThreadId() returns
10942zero.
10943A non-zero value is required by the core ACPICA code to ensure the proper
10944operation of AML mutexes and recursive control methods.
10945
10946The DSDT is now the only ACPI table that determines whether the AML
10947interpreter is in 32-bit or 64-bit mode. Not really a functional change,
10948but
10949the hooks for per-table 32/64 switching have been removed from the code.
10950A
10951clarification to the ACPI specification is forthcoming in ACPI 3.0B.
10952
10953Fixed a possible leak of an OwnerID in the error path of
10954AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
10955deletion to a single place in AcpiTbUninstallTable to correct possible
10956leaks
10957when using the AcpiTbDeleteTablesByType interface (with assistance from
10958Lance Ortiz.)
10959
10960Fixed a problem with Serialized control methods where the semaphore
10961associated with the method could be over-signaled after multiple method
10962invocations.
10963
10964Fixed two issues with the locking of the internal namespace data
10965structure.
10966Both the Unload() operator and AcpiUnloadTable interface now lock the
10967namespace during the namespace deletion associated with the table unload
10968(with assistance from Linn Crosetto.)
10969
10970Fixed problem reports (Valery Podrezov) integrated:
10971- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
10972
10973Fixed problem reports (Fiodor Suietov) integrated:
10974- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
10975- On Address Space handler deletion, needless deactivation call (BZ 374)
10976- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
10977375)
10978- Possible memory leak, Notify sub-objects of Processor, Power,
10979ThermalZone
10980(BZ 376)
10981- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
10982- Minimum Length of RSDT should be validated (BZ 379)
10983- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
10984Handler (BZ (380)
10985- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
10986loaded
10987(BZ 381)
10988
10989Example Code and Data Size: These are the sizes for the OS-independent
10990acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10991debug version of the code includes the debug output trace mechanism and
10992has
10993a much larger code and data size.
10994
10995  Previous Release:
10996    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
10997    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
10998  Current Release:
10999    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11000    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11001
11002
110032) iASL Compiler/Disassembler and Tools:
11004
11005Fixed problem reports:
11006Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11007436)
11008
11009----------------------------------------
1101023 June 2006. Summary of changes for version 20060623:
11011
110121) ACPI CA Core Subsystem:
11013
11014Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11015allows the type to be customized to the host OS for improved efficiency
11016(since a spinlock is usually a very small object.)
11017
11018Implemented support for "ignored" bits in the ACPI registers. According
11019to
11020the ACPI specification, these bits should be preserved when writing the
11021registers via a read/modify/write cycle. There are 3 bits preserved in
11022this
11023manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11024
11025Implemented the initial deployment of new OSL mutex interfaces. Since
11026some
11027host operating systems have separate mutex and semaphore objects, this
11028feature was requested. The base code now uses mutexes (and the new mutex
11029interfaces) wherever a binary semaphore was used previously. However, for
11030the current release, the mutex interfaces are defined as macros to map
11031them
11032to the existing semaphore interfaces. Therefore, no OSL changes are
11033required
11034at this time. (See acpiosxf.h)
11035
11036Fixed several problems with the support for the control method SyncLevel
11037parameter. The SyncLevel now works according to the ACPI specification
11038and
11039in concert with the Mutex SyncLevel parameter, since the current
11040SyncLevel
11041is a property of the executing thread. Mutual exclusion for control
11042methods
11043is now implemented with a mutex instead of a semaphore.
11044
11045Fixed three instances of the use of the C shift operator in the bitfield
11046support code (exfldio.c) to avoid the use of a shift value larger than
11047the
11048target data width. The behavior of C compilers is undefined in this case
11049and
11050can cause unpredictable results, and therefore the case must be detected
11051and
11052avoided. (Fiodor Suietov)
11053
11054Added an info message whenever an SSDT or OEM table is loaded dynamically
11055via the Load() or LoadTable() ASL operators. This should improve
11056debugging
11057capability since it will show exactly what tables have been loaded
11058(beyond
11059the tables present in the RSDT/XSDT.)
11060
11061Example Code and Data Size: These are the sizes for the OS-independent
11062acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11063debug version of the code includes the debug output trace mechanism and
11064has
11065a much larger code and data size.
11066
11067  Previous Release:
11068    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11069    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11070  Current Release:
11071    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11072    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11073
11074
110752) iASL Compiler/Disassembler and Tools:
11076
11077No changes for this release.
11078
11079----------------------------------------
1108008 June 2006. Summary of changes for version 20060608:
11081
110821) ACPI CA Core Subsystem:
11083
11084Converted the locking mutex used for the ACPI hardware to a spinlock.
11085This
11086change should eliminate all problems caused by attempting to acquire a
11087semaphore at interrupt level, and it means that all ACPICA external
11088interfaces that directly access the ACPI hardware can be safely called
11089from
11090interrupt level. OSL code that implements the semaphore interfaces should
11091be
11092able to eliminate any workarounds for being called at interrupt level.
11093
11094Fixed a regression introduced in 20060526 where the ACPI device
11095initialization could be prematurely aborted with an AE_NOT_FOUND if a
11096device
11097did not have an optional _INI method.
11098
11099Fixed an IndexField issue where a write to the Data Register should be
11100limited in size to the AccessSize (width) of the IndexField itself. (BZ
11101433,
11102Fiodor Suietov)
11103
11104Fixed problem reports (Valery Podrezov) integrated:
11105- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
11106
11107Fixed problem reports (Fiodor Suietov) integrated:
11108- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
11109
11110Removed four global mutexes that were obsolete and were no longer being
11111used.
11112
11113Example Code and Data Size: These are the sizes for the OS-independent
11114acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11115debug version of the code includes the debug output trace mechanism and
11116has
11117a much larger code and data size.
11118
11119  Previous Release:
11120    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11121    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11122  Current Release:
11123    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11124    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11125
11126
111272) iASL Compiler/Disassembler and Tools:
11128
11129Fixed a fault when using -g option (get tables from registry) on Windows
11130machines.
11131
11132Fixed problem reports integrated:
11133- Generate error if CreateField NumBits parameter is zero. (BZ 405)
11134- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
11135Suietov)
11136- Global table revision override (-r) is ignored (BZ 413)
11137
11138----------------------------------------
1113926 May 2006. Summary of changes for version 20060526:
11140
111411) ACPI CA Core Subsystem:
11142
11143Restructured, flattened, and simplified the internal interfaces for
11144namespace object evaluation - resulting in smaller code, less CPU stack
11145use,
11146and fewer interfaces. (With assistance from Mikhail Kouzmich)
11147
11148Fixed a problem with the CopyObject operator where the first parameter
11149was
11150not typed correctly for the parser, interpreter, compiler, and
11151disassembler.
11152Caused various errors and unexpected behavior.
11153
11154Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11155produced incorrect results with some C compilers. Since the behavior of C
11156compilers when the shift value is larger than the datatype width is
11157apparently not well defined, the interpreter now detects this condition
11158and
11159simply returns zero as expected in all such cases. (BZ 395)
11160
11161Fixed problem reports (Valery Podrezov) integrated:
11162- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11163- Allow interpreter to handle nested method declarations (BZ 5361)
11164
11165Fixed problem reports (Fiodor Suietov) integrated:
11166- AcpiTerminate doesn't free debug memory allocation list objects (BZ
11167355)
11168- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11169356)
11170- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11171- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11172- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11173- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11174- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11175- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11176- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11177365)
11178- Status of the Global Initialization Handler call not used (BZ 366)
11179- Incorrect object parameter to Global Initialization Handler (BZ 367)
11180
11181Example Code and Data Size: These are the sizes for the OS-independent
11182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11183debug version of the code includes the debug output trace mechanism and
11184has
11185a much larger code and data size.
11186
11187  Previous Release:
11188    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11189    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11190  Current Release:
11191    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
11192    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
11193
11194
111952) iASL Compiler/Disassembler and Tools:
11196
11197Modified the parser to allow the names IO, DMA, and IRQ to be used as
11198namespace identifiers with no collision with existing resource descriptor
11199macro names. This provides compatibility with other ASL compilers and is
11200most useful for disassembly/recompilation of existing tables without
11201parse
11202errors. (With assistance from Thomas Renninger)
11203
11204Disassembler: fixed an incorrect disassembly problem with the
11205DataTableRegion and CopyObject operators. Fixed a possible fault during
11206disassembly of some Alias operators.
11207
11208----------------------------------------
1120912 May 2006. Summary of changes for version 20060512:
11210
112111) ACPI CA Core Subsystem:
11212
11213Replaced the AcpiOsQueueForExecution interface with a new interface named
11214AcpiOsExecute. The major difference is that the new interface does not
11215have
11216a Priority parameter, this appeared to be useless and has been replaced
11217by
11218a
11219Type parameter. The Type tells the host what type of execution is being
11220requested, such as global lock handler, notify handler, GPE handler, etc.
11221This allows the host to queue and execute the request as appropriate for
11222the
11223request type, possibly using different work queues and different
11224priorities
11225for the various request types. This enables fixes for multithreading
11226deadlock problems such as BZ #5534, and will require changes to all
11227existing
11228OS interface layers. (Alexey Starikovskiy and Bob Moore)
11229
11230Fixed a possible memory leak associated with the support for the so-
11231called
11232"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11233Suietov)
11234
11235Fixed a problem with the Load() operator where a table load from an
11236operation region could overwrite an internal table buffer by up to 7
11237bytes
11238and cause alignment faults on IPF systems. (With assistance from Luming
11239Yu)
11240
11241Example Code and Data Size: These are the sizes for the OS-independent
11242acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11243debug version of the code includes the debug output trace mechanism and
11244has
11245a much larger code and data size.
11246
11247  Previous Release:
11248    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11249    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11250  Current Release:
11251    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
11252    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
11253
11254
11255
112562) iASL Compiler/Disassembler and Tools:
11257
11258Disassembler: Implemented support to cross reference the internal
11259namespace
11260and automatically generate ASL External() statements for symbols not
11261defined
11262within the current table being disassembled. This will simplify the
11263disassembly and recompilation of interdependent tables such as SSDTs
11264since
11265these statements will no longer have to be added manually.
11266
11267Disassembler: Implemented experimental support to automatically detect
11268invocations of external control methods and generate appropriate
11269External()
11270statements. This is problematic because the AML cannot be correctly
11271parsed
11272until the number of arguments for each control method is known.
11273Currently,
11274standalone method invocations and invocations as the source operand of a
11275Store() statement are supported.
11276
11277Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11278LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11279LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11280more readable and likely closer to the original ASL source.
11281
11282----------------------------------------
1128321 April 2006. Summary of changes for version 20060421:
11284
112851) ACPI CA Core Subsystem:
11286
11287Removed a device initialization optimization introduced in 20051216 where
11288the _STA method was not run unless an _INI was also present for the same
11289device. This optimization could cause problems because it could allow
11290_INI
11291methods to be run within a not-present device subtree. (If a not-present
11292device had no _INI, _STA would not be run, the not-present status would
11293not
11294be discovered, and the children of the device would be incorrectly
11295traversed.)
11296
11297Implemented a new _STA optimization where namespace subtrees that do not
11298contain _INI are identified and ignored during device initialization.
11299Selectively running _STA can significantly improve boot time on large
11300machines (with assistance from Len Brown.)
11301
11302Implemented support for the device initialization case where the returned
11303_STA flags indicate a device not-present but functioning. In this case,
11304_INI
11305is not run, but the device children are examined for presence, as per the
11306ACPI specification.
11307
11308Implemented an additional change to the IndexField support in order to
11309conform to MS behavior. The value written to the Index Register is not
11310simply a byte offset, it is a byte offset in units of the access width of
11311the parent Index Field. (Fiodor Suietov)
11312
11313Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11314interface is called during the creation of all AML operation regions, and
11315allows the host OS to exert control over what addresses it will allow the
11316AML code to access. Operation Regions whose addresses are disallowed will
11317cause a runtime exception when they are actually accessed (will not
11318affect
11319or abort table loading.) See oswinxf or osunixxf for an example
11320implementation.
11321
11322Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11323interface allows the host OS to match the various "optional"
11324interface/behavior strings for the _OSI predefined control method as
11325appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11326for an example implementation.
11327
11328Restructured and corrected various problems in the exception handling
11329code
11330paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11331(with assistance from Takayoshi Kochi.)
11332
11333Modified the Linux source converter to ignore quoted string literals
11334while
11335converting identifiers from mixed to lower case. This will correct
11336problems
11337with the disassembler and other areas where such strings must not be
11338modified.
11339
11340The ACPI_FUNCTION_* macros no longer require quotes around the function
11341name. This allows the Linux source converter to convert the names, now
11342that
11343the converter ignores quoted strings.
11344
11345Example Code and Data Size: These are the sizes for the OS-independent
11346acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11347debug version of the code includes the debug output trace mechanism and
11348has
11349a much larger code and data size.
11350
11351  Previous Release:
11352
11353    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11354    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11355  Current Release:
11356    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
11357    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
11358
11359
113602) iASL Compiler/Disassembler and Tools:
11361
11362Implemented 3 new warnings for iASL, and implemented multiple warning
11363levels
11364(w2 flag).
11365
113661) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11367not
11368WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11369check for the possible timeout, a warning is issued.
11370
113712) Useless operators: If an ASL operator does not specify an optional
11372target
11373operand and it also does not use the function return value from the
11374operator, a warning is issued since the operator effectively does
11375nothing.
11376
113773) Unreferenced objects: If a namespace object is created, but never
11378referenced, a warning is issued. This is a warning level 2 since there
11379are
11380cases where this is ok, such as when a secondary table is loaded that
11381uses
11382the unreferenced objects. Even so, care is taken to only flag objects
11383that
11384don't look like they will ever be used. For example, the reserved methods
11385(starting with an underscore) are usually not referenced because it is
11386expected that the OS will invoke them.
11387
11388----------------------------------------
1138931 March 2006. Summary of changes for version 20060331:
11390
113911) ACPI CA Core Subsystem:
11392
11393Implemented header file support for the following additional ACPI tables:
11394ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11395support,
11396all current and known ACPI tables are now defined in the ACPICA headers
11397and
11398are available for use by device drivers and other software.
11399
11400Implemented support to allow tables that contain ACPI names with invalid
11401characters to be loaded. Previously, this would cause the table load to
11402fail, but since there are several known cases of such tables on existing
11403machines, this change was made to enable ACPI support for them. Also,
11404this
11405matches the behavior of the Microsoft ACPI implementation.
11406
11407Fixed a couple regressions introduced during the memory optimization in
11408the
1140920060317 release. The namespace node definition required additional
11410reorganization and an internal datatype that had been changed to 8-bit
11411was
11412restored to 32-bit. (Valery Podrezov)
11413
11414Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11415could be passed through to AcpiOsReleaseObject which is unexpected. Such
11416null pointers are now trapped and ignored, matching the behavior of the
11417previous implementation before the deployment of AcpiOsReleaseObject.
11418(Valery Podrezov, Fiodor Suietov)
11419
11420Fixed a memory mapping leak during the deletion of a SystemMemory
11421operation
11422region where a cached memory mapping was not deleted. This became a
11423noticeable problem for operation regions that are defined within
11424frequently
11425used control methods. (Dana Meyers)
11426
11427Reorganized the ACPI table header files into two main files: one for the
11428ACPI tables consumed by the ACPICA core, and another for the
11429miscellaneous
11430ACPI tables that are consumed by the drivers and other software. The
11431various
11432FADT definitions were merged into one common section and three different
11433tables (ACPI 1.0, 1.0+, and 2.0)
11434
11435Example Code and Data Size: These are the sizes for the OS-independent
11436acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11437debug version of the code includes the debug output trace mechanism and
11438has
11439a much larger code and data size.
11440
11441  Previous Release:
11442    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11443    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11444  Current Release:
11445    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
11446    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
11447
11448
114492) iASL Compiler/Disassembler and Tools:
11450
11451Disassembler: Implemented support to decode and format all non-AML ACPI
11452tables (tables other than DSDTs and SSDTs.) This includes the new tables
11453added to the ACPICA headers, therefore all current and known ACPI tables
11454are
11455supported.
11456
11457Disassembler: The change to allow ACPI names with invalid characters also
11458enables the disassembly of such tables. Invalid characters within names
11459are
11460changed to '*' to make the name printable; the iASL compiler will still
11461generate an error for such names, however, since this is an invalid ACPI
11462character.
11463
11464Implemented an option for AcpiXtract (-a) to extract all tables found in
11465the
11466input file. The default invocation extracts only the DSDTs and SSDTs.
11467
11468Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11469makefile for the AcpiXtract utility.
11470
11471----------------------------------------
1147217 March 2006. Summary of changes for version 20060317:
11473
114741) ACPI CA Core Subsystem:
11475
11476Implemented the use of a cache object for all internal namespace nodes.
11477Since there are about 1000 static nodes in a typical system, this will
11478decrease memory use for cache implementations that minimize per-
11479allocation
11480overhead (such as a slab allocator.)
11481
11482Removed the reference count mechanism for internal namespace nodes, since
11483it
11484was deemed unnecessary. This reduces the size of each namespace node by
11485about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11486case,
11487and 32 bytes for the 64-bit case.
11488
11489Optimized several internal data structures to reduce object size on 64-
11490bit
11491platforms by packing data within the 64-bit alignment. This includes the
11492frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11493instances corresponding to the namespace objects.
11494
11495Added two new strings for the predefined _OSI method: "Windows 2001.1
11496SP1"
11497and "Windows 2006".
11498
11499Split the allocation tracking mechanism out to a separate file, from
11500utalloc.c to uttrack.c. This mechanism appears to be only useful for
11501application-level code. Kernels may wish to not include uttrack.c in
11502distributions.
11503
11504Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11505associated
11506code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11507macros.)
11508
11509Code and Data Size: These are the sizes for the acpica.lib produced by
11510the
11511Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11512ACPI
11513driver or OSPM code. The debug version of the code includes the debug
11514output
11515trace mechanism and has a much larger code and data size. Note that these
11516values will vary depending on the efficiency of the compiler and the
11517compiler options used during generation.
11518
11519  Previous Release:
11520    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11521    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11522  Current Release:
11523    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
11524    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
11525
11526
115272) iASL Compiler/Disassembler and Tools:
11528
11529Implemented an ANSI C version of the acpixtract utility. This version
11530will
11531automatically extract the DSDT and all SSDTs from the input acpidump text
11532file and dump the binary output to separate files. It can also display a
11533summary of the input file including the headers for each table found and
11534will extract any single ACPI table, with any signature. (See
11535source/tools/acpixtract)
11536
11537----------------------------------------
1153810 March 2006. Summary of changes for version 20060310:
11539
115401) ACPI CA Core Subsystem:
11541
11542Tagged all external interfaces to the subsystem with the new
11543ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11544assist
11545kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11546macro. The default definition is NULL.
11547
11548Added the ACPI_THREAD_ID type for the return value from
11549AcpiOsGetThreadId.
11550This allows the host to define this as necessary to simplify kernel
11551integration. The default definition is ACPI_NATIVE_UINT.
11552
11553Fixed two interpreter problems related to error processing, the deletion
11554of
11555objects, and placing invalid pointers onto the internal operator result
11556stack. BZ 6028, 6151 (Valery Podrezov)
11557
11558Increased the reference count threshold where a warning is emitted for
11559large
11560reference counts in order to eliminate unnecessary warnings on systems
11561with
11562large namespaces (especially 64-bit.) Increased the value from 0x400 to
115630x800.
11564
11565Due to universal disagreement as to the meaning of the 'c' in the
11566calloc()
11567function, the ACPI_MEM_CALLOCATE macro has been renamed to
11568ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11569ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11570ACPI_FREE.
11571
11572Code and Data Size: These are the sizes for the acpica.lib produced by
11573the
11574Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11575ACPI
11576driver or OSPM code. The debug version of the code includes the debug
11577output
11578trace mechanism and has a much larger code and data size. Note that these
11579values will vary depending on the efficiency of the compiler and the
11580compiler options used during generation.
11581
11582  Previous Release:
11583    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11584    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11585  Current Release:
11586    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11587    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
11588
11589
115902) iASL Compiler/Disassembler:
11591
11592Disassembler: implemented support for symbolic resource descriptor
11593references. If a CreateXxxxField operator references a fixed offset
11594within
11595a
11596resource descriptor, a name is assigned to the descriptor and the offset
11597is
11598translated to the appropriate resource tag and pathname. The addition of
11599this support brings the disassembled code very close to the original ASL
11600source code and helps eliminate run-time errors when the disassembled
11601code
11602is modified (and recompiled) in such a way as to invalidate the original
11603fixed offsets.
11604
11605Implemented support for a Descriptor Name as the last parameter to the
11606ASL
11607Register() macro. This parameter was inadvertently left out of the ACPI
11608specification, and will be added for ACPI 3.0b.
11609
11610Fixed a problem where the use of the "_OSI" string (versus the full path
11611"\_OSI") caused an internal compiler error. ("No back ptr to op")
11612
11613Fixed a problem with the error message that occurs when an invalid string
11614is
11615used for a _HID object (such as one with an embedded asterisk:
11616"*PNP010A".)
11617The correct message is now displayed.
11618
11619----------------------------------------
1162017 February 2006. Summary of changes for version 20060217:
11621
116221) ACPI CA Core Subsystem:
11623
11624Implemented a change to the IndexField support to match the behavior of
11625the
11626Microsoft AML interpreter. The value written to the Index register is now
11627a
11628byte offset, no longer an index based upon the width of the Data
11629register.
11630This should fix IndexField problems seen on some machines where the Data
11631register is not exactly one byte wide. The ACPI specification will be
11632clarified on this point.
11633
11634Fixed a problem where several resource descriptor types could overrun the
11635internal descriptor buffer due to size miscalculation: VendorShort,
11636VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11637affect all platforms.
11638
11639Fixed a problem where individual resource descriptors were misaligned
11640within
11641the internal buffer, causing alignment faults on IA64 platforms.
11642
11643Code and Data Size: These are the sizes for the acpica.lib produced by
11644the
11645Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11646ACPI
11647driver or OSPM code. The debug version of the code includes the debug
11648output
11649trace mechanism and has a much larger code and data size. Note that these
11650values will vary depending on the efficiency of the compiler and the
11651compiler options used during generation.
11652
11653  Previous Release:
11654    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11655    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11656  Current Release:
11657    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
11658    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
11659
11660
116612) iASL Compiler/Disassembler:
11662
11663Implemented support for new reserved names: _WDG and _WED are Microsoft
11664extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11665defined method (Throttling Depth Limit.)
11666
11667Fixed a problem where a zero-length VendorShort or VendorLong resource
11668descriptor was incorrectly emitted as a descriptor of length one.
11669
11670----------------------------------------
1167110 February 2006. Summary of changes for version 20060210:
11672
116731) ACPI CA Core Subsystem:
11674
11675Removed a couple of extraneous ACPI_ERROR messages that appeared during
11676normal execution. These became apparent after the conversion from
11677ACPI_DEBUG_PRINT.
11678
11679Fixed a problem where the CreateField operator could hang if the BitIndex
11680or
11681NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11682
11683Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11684failed with an exception. This also fixes a couple of related RefOf and
11685DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11686
11687Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11688of
11689AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11690BZ
116915480)
11692
11693Implemented a memory cleanup at the end of the execution of each
11694iteration
11695of an AML While() loop, preventing the accumulation of outstanding
11696objects.
11697(Valery Podrezov, BZ 5427)
11698
11699Eliminated a chunk of duplicate code in the object resolution code.
11700(Valery
11701Podrezov, BZ 5336)
11702
11703Fixed several warnings during the 64-bit code generation.
11704
11705The AcpiSrc source code conversion tool now inserts one line of
11706whitespace
11707after an if() statement that is followed immediately by a comment,
11708improving
11709readability of the Linux code.
11710
11711Code and Data Size: The current and previous library sizes for the core
11712subsystem are shown below. These are the code and data sizes for the
11713acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11714These
11715values do not include any ACPI driver or OSPM code. The debug version of
11716the
11717code includes the debug output trace mechanism and has a much larger code
11718and data size. Note that these values will vary depending on the
11719efficiency
11720of the compiler and the compiler options used during generation.
11721
11722  Previous Release:
11723    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11724    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11725  Current Release:
11726    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
11727    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
11728
11729
117302) iASL Compiler/Disassembler:
11731
11732Fixed a problem with the disassembly of a BankField operator with a
11733complex
11734expression for the BankValue parameter.
11735
11736----------------------------------------
1173727 January 2006. Summary of changes for version 20060127:
11738
117391) ACPI CA Core Subsystem:
11740
11741Implemented support in the Resource Manager to allow unresolved
11742namestring
11743references within resource package objects for the _PRT method. This
11744support
11745is in addition to the previously implemented unresolved reference support
11746within the AML parser. If the interpreter slack mode is enabled, these
11747unresolved references will be passed through to the caller as a NULL
11748package
11749entry.
11750
11751Implemented and deployed new macros and functions for error and warning
11752messages across the subsystem. These macros are simpler and generate less
11753code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11754ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11755macros remain defined to allow ACPI drivers time to migrate to the new
11756macros.
11757
11758Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11759the
11760Acquire/Release Lock OSL interfaces.
11761
11762Fixed a problem where Alias ASL operators are sometimes not correctly
11763resolved, in both the interpreter and the iASL compiler.
11764
11765Fixed several problems with the implementation of the
11766ConcatenateResTemplate
11767ASL operator. As per the ACPI specification, zero length buffers are now
11768treated as a single EndTag. One-length buffers always cause a fatal
11769exception. Non-zero length buffers that do not end with a full 2-byte
11770EndTag
11771cause a fatal exception.
11772
11773Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11774interface. (With assistance from Thomas Renninger)
11775
11776Code and Data Size: The current and previous library sizes for the core
11777subsystem are shown below. These are the code and data sizes for the
11778acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11779These
11780values do not include any ACPI driver or OSPM code. The debug version of
11781the
11782code includes the debug output trace mechanism and has a much larger code
11783and data size. Note that these values will vary depending on the
11784efficiency
11785of the compiler and the compiler options used during generation.
11786
11787  Previous Release:
11788    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11789    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11790  Current Release:
11791    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
11792    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
11793
11794
117952) iASL Compiler/Disassembler:
11796
11797Fixed an internal error that was generated for any forward references to
11798ASL
11799Alias objects.
11800
11801----------------------------------------
1180213 January 2006. Summary of changes for version 20060113:
11803
118041) ACPI CA Core Subsystem:
11805
11806Added 2006 copyright to all module headers and signons. This affects
11807virtually every file in the ACPICA core subsystem, iASL compiler, and the
11808utilities.
11809
11810Enhanced the ACPICA error reporting in order to simplify user migration
11811to
11812the non-debug version of ACPICA. Replaced all instances of the
11813ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11814debug
11815levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11816respectively. This preserves all error and warning messages in the non-
11817debug
11818version of the ACPICA code (this has been referred to as the "debug lite"
11819option.) Over 200 cases were converted to create a total of over 380
11820error/warning messages across the ACPICA code. This increases the code
11821and
11822data size of the default non-debug version of the code somewhat (about
1182313K),
11824but all error/warning reporting may be disabled if desired (and code
11825eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11826configuration option. The size of the debug version of ACPICA remains
11827about
11828the same.
11829
11830Fixed a memory leak within the AML Debugger "Set" command. One object was
11831not properly deleted for every successful invocation of the command.
11832
11833Code and Data Size: The current and previous library sizes for the core
11834subsystem are shown below. These are the code and data sizes for the
11835acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11836These
11837values do not include any ACPI driver or OSPM code. The debug version of
11838the
11839code includes the debug output trace mechanism and has a much larger code
11840and data size. Note that these values will vary depending on the
11841efficiency
11842of the compiler and the compiler options used during generation.
11843
11844  Previous Release:
11845    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11846    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11847  Current Release:
11848    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
11849    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
11850
11851
118522) iASL Compiler/Disassembler:
11853
11854The compiler now officially supports the ACPI 3.0a specification that was
11855released on December 30, 2005. (Specification is available at
11856www.acpi.info)
11857
11858----------------------------------------
1185916 December 2005. Summary of changes for version 20051216:
11860
118611) ACPI CA Core Subsystem:
11862
11863Implemented optional support to allow unresolved names within ASL Package
11864objects. A null object is inserted in the package when a named reference
11865cannot be located in the current namespace. Enabled via the interpreter
11866slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
11867machines
11868that contain such code.
11869
11870Implemented an optimization to the initialization sequence that can
11871improve
11872boot time. During ACPI device initialization, the _STA method is now run
11873if
11874and only if the _INI method exists. The _STA method is used to determine
11875if
11876the device is present; An _INI can only be run if _STA returns present,
11877but
11878it is a waste of time to run the _STA method if the _INI does not exist.
11879(Prototype and assistance from Dong Wei)
11880
11881Implemented use of the C99 uintptr_t for the pointer casting macros if it
11882is
11883available in the current compiler. Otherwise, the default (void *) cast
11884is
11885used as before.
11886
11887Fixed some possible memory leaks found within the execution path of the
11888Break, Continue, If, and CreateField operators. (Valery Podrezov)
11889
11890Fixed a problem introduced in the 20051202 release where an exception is
11891generated during method execution if a control method attempts to declare
11892another method.
11893
11894Moved resource descriptor string constants that are used by both the AML
11895disassembler and AML debugger to the common utilities directory so that
11896these components are independent.
11897
11898Implemented support in the AcpiExec utility (-e switch) to globally
11899ignore
11900exceptions during control method execution (method is not aborted.)
11901
11902Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
11903generation.
11904
11905Code and Data Size: The current and previous library sizes for the core
11906subsystem are shown below. These are the code and data sizes for the
11907acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11908These
11909values do not include any ACPI driver or OSPM code. The debug version of
11910the
11911code includes the debug output trace mechanism and has a much larger code
11912and data size. Note that these values will vary depending on the
11913efficiency
11914of the compiler and the compiler options used during generation.
11915
11916  Previous Release:
11917    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11918    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11919  Current Release:
11920    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
11921    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
11922
11923
119242) iASL Compiler/Disassembler:
11925
11926Fixed a problem where a CPU stack overflow fault could occur if a
11927recursive
11928method call was made from within a Return statement.
11929
11930----------------------------------------
1193102 December 2005. Summary of changes for version 20051202:
11932
119331) ACPI CA Core Subsystem:
11934
11935Modified the parsing of control methods to no longer create namespace
11936objects during the first pass of the parse. Objects are now created only
11937during the execute phase, at the moment the namespace creation operator
11938is
11939encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
11940This
11941should eliminate ALREADY_EXISTS exceptions seen on some machines where
11942reentrant control methods are protected by an AML mutex. The mutex will
11943now
11944correctly block multiple threads from attempting to create the same
11945object
11946more than once.
11947
11948Increased the number of available Owner Ids for namespace object tracking
11949from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
11950on
11951some machines with a large number of ACPI tables (either static or
11952dynamic).
11953
11954Fixed a problem with the AcpiExec utility where a fault could occur when
11955the
11956-b switch (batch mode) is used.
11957
11958Enhanced the namespace dump routine to output the owner ID for each
11959namespace object.
11960
11961Code and Data Size: The current and previous library sizes for the core
11962subsystem are shown below. These are the code and data sizes for the
11963acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11964These
11965values do not include any ACPI driver or OSPM code. The debug version of
11966the
11967code includes the debug output trace mechanism and has a much larger code
11968and data size. Note that these values will vary depending on the
11969efficiency
11970of the compiler and the compiler options used during generation.
11971
11972  Previous Release:
11973    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11974    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
11975  Current Release:
11976    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
11977    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
11978
11979
119802) iASL Compiler/Disassembler:
11981
11982Fixed a parse error during compilation of certain Switch/Case constructs.
11983To
11984simplify the parse, the grammar now allows for multiple Default
11985statements
11986and this error is now detected and flagged during the analysis phase.
11987
11988Disassembler: The disassembly now includes the contents of the original
11989table header within a comment at the start of the file. This includes the
11990name and version of the original ASL compiler.
11991
11992----------------------------------------
1199317 November 2005. Summary of changes for version 20051117:
11994
119951) ACPI CA Core Subsystem:
11996
11997Fixed a problem in the AML parser where the method thread count could be
11998decremented below zero if any errors occurred during the method parse
11999phase.
12000This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12001machines.
12002This also fixed a related regression with the mechanism that detects and
12003corrects methods that cannot properly handle reentrancy (related to the
12004deployment of the new OwnerId mechanism.)
12005
12006Eliminated the pre-parsing of control methods (to detect errors) during
12007table load. Related to the problem above, this was causing unwind issues
12008if
12009any errors occurred during the parse, and it seemed to be overkill. A
12010table
12011load should not be aborted if there are problems with any single control
12012method, thus rendering this feature rather pointless.
12013
12014Fixed a problem with the new table-driven resource manager where an
12015internal
12016buffer overflow could occur for small resource templates.
12017
12018Implemented a new external interface, AcpiGetVendorResource. This
12019interface
12020will find and return a vendor-defined resource descriptor within a _CRS
12021or
12022_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12023Helgaas.
12024
12025Removed the length limit (200) on string objects as per the upcoming ACPI
120263.0A specification. This affects the following areas of the interpreter:
120271)
12028any implicit conversion of a Buffer to a String, 2) a String object
12029result
12030of the ASL Concatenate operator, 3) the String object result of the ASL
12031ToString operator.
12032
12033Fixed a problem in the Windows OS interface layer (OSL) where a
12034WAIT_FOREVER
12035on a semaphore object would incorrectly timeout. This allows the
12036multithreading features of the AcpiExec utility to work properly under
12037Windows.
12038
12039Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12040the recently added file named "utresrc.c".
12041
12042Code and Data Size: The current and previous library sizes for the core
12043subsystem are shown below. These are the code and data sizes for the
12044acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12045These
12046values do not include any ACPI driver or OSPM code. The debug version of
12047the
12048code includes the debug output trace mechanism and has a much larger code
12049and data size. Note that these values will vary depending on the
12050efficiency
12051of the compiler and the compiler options used during generation.
12052
12053  Previous Release:
12054    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12055    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12056  Current Release:
12057    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12058    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12059
12060
120612) iASL Compiler/Disassembler:
12062
12063Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12064specification. For the iASL compiler, this means that string literals
12065within
12066the source ASL can be of any length.
12067
12068Enhanced the listing output to dump the AML code for resource descriptors
12069immediately after the ASL code for each descriptor, instead of in a block
12070at
12071the end of the entire resource template.
12072
12073Enhanced the compiler debug output to dump the entire original parse tree
12074constructed during the parse phase, before any transforms are applied to
12075the
12076tree. The transformed tree is dumped also.
12077
12078----------------------------------------
1207902 November 2005. Summary of changes for version 20051102:
12080
120811) ACPI CA Core Subsystem:
12082
12083Modified the subsystem initialization sequence to improve GPE support.
12084The
12085GPE initialization has been split into two parts in order to defer
12086execution
12087of the _PRW methods (Power Resources for Wake) until after the hardware
12088is
12089fully initialized and the SCI handler is installed. This allows the _PRW
12090methods to access fields protected by the Global Lock. This will fix
12091systems
12092where a NO_GLOBAL_LOCK exception has been seen during initialization.
12093
12094Converted the ACPI internal object disassemble and display code within
12095the
12096AML debugger to fully table-driven operation, reducing code size and
12097increasing maintainability.
12098
12099Fixed a regression with the ConcatenateResTemplate() ASL operator
12100introduced
12101in the 20051021 release.
12102
12103Implemented support for "local" internal ACPI object types within the
12104debugger "Object" command and the AcpiWalkNamespace external interfaces.
12105These local types include RegionFields, BankFields, IndexFields, Alias,
12106and
12107reference objects.
12108
12109Moved common AML resource handling code into a new file, "utresrc.c".
12110This
12111code is shared by both the Resource Manager and the AML Debugger.
12112
12113Code and Data Size: The current and previous library sizes for the core
12114subsystem are shown below. These are the code and data sizes for the
12115acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12116These
12117values do not include any ACPI driver or OSPM code. The debug version of
12118the
12119code includes the debug output trace mechanism and has a much larger code
12120and data size. Note that these values will vary depending on the
12121efficiency
12122of the compiler and the compiler options used during generation.
12123
12124  Previous Release:
12125    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12126    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12127  Current Release:
12128    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12129    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12130
12131
121322) iASL Compiler/Disassembler:
12133
12134Fixed a problem with very large initializer lists (more than 4000
12135elements)
12136for both Buffer and Package objects where the parse stack could overflow.
12137
12138Enhanced the pre-compile source code scan for non-ASCII characters to
12139ignore
12140characters within comment fields. The scan is now always performed and is
12141no
12142longer optional, detecting invalid characters within a source file
12143immediately rather than during the parse phase or later.
12144
12145Enhanced the ASL grammar definition to force early reductions on all
12146list-
12147style grammar elements so that the overall parse stack usage is greatly
12148reduced. This should improve performance and reduce the possibility of
12149parse
12150stack overflow.
12151
12152Eliminated all reduce/reduce conflicts in the iASL parser generation.
12153Also,
12154with the addition of a %expected statement, the compiler generates from
12155source with no warnings.
12156
12157Fixed a possible segment fault in the disassembler if the input filename
12158does not contain a "dot" extension (Thomas Renninger).
12159
12160----------------------------------------
1216121 October 2005. Summary of changes for version 20051021:
12162
121631) ACPI CA Core Subsystem:
12164
12165Implemented support for the EM64T and other x86-64 processors. This
12166essentially entails recognizing that these processors support non-aligned
12167memory transfers. Previously, all 64-bit processors were assumed to lack
12168hardware support for non-aligned transfers.
12169
12170Completed conversion of the Resource Manager to nearly full table-driven
12171operation. Specifically, the resource conversion code (convert AML to
12172internal format and the reverse) and the debug code to dump internal
12173resource descriptors are fully table-driven, reducing code and data size
12174and
12175improving maintainability.
12176
12177The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12178word
12179on 64-bit processors instead of a fixed 32-bit word. (With assistance
12180from
12181Alexey Starikovskiy)
12182
12183Implemented support within the resource conversion code for the Type-
12184Specific byte within the various ACPI 3.0 *WordSpace macros.
12185
12186Fixed some issues within the resource conversion code for the type-
12187specific
12188flags for both Memory and I/O address resource descriptors. For Memory,
12189implemented support for the MTP and TTP flags. For I/O, split the TRS and
12190TTP flags into two separate fields.
12191
12192Code and Data Size: The current and previous library sizes for the core
12193subsystem are shown below. These are the code and data sizes for the
12194acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12195These
12196values do not include any ACPI driver or OSPM code. The debug version of
12197the
12198code includes the debug output trace mechanism and has a much larger code
12199and data size. Note that these values will vary depending on the
12200efficiency
12201of the compiler and the compiler options used during generation.
12202
12203  Previous Release:
12204    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12205    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12206  Current Release:
12207    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
12208    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
12209
12210
12211
122122) iASL Compiler/Disassembler:
12213
12214Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12215the
12216corresponding ResourceSource string was not also present in a resource
12217descriptor declaration. This restriction caused problems with existing
12218AML/ASL code that includes the Index byte without the string. When such
12219AML
12220was disassembled, it could not be compiled without modification. Further,
12221the modified code created a resource template with a different size than
12222the
12223original, breaking code that used fixed offsets into the resource
12224template
12225buffer.
12226
12227Removed a recent feature of the disassembler to ignore a lone
12228ResourceIndex
12229byte. This byte is now emitted if present so that the exact AML can be
12230reproduced when the disassembled code is recompiled.
12231
12232Improved comments and text alignment for the resource descriptor code
12233emitted by the disassembler.
12234
12235Implemented disassembler support for the ACPI 3.0 AccessSize field within
12236a
12237Register() resource descriptor.
12238
12239----------------------------------------
1224030 September 2005. Summary of changes for version 20050930:
12241
122421) ACPI CA Core Subsystem:
12243
12244Completed a major overhaul of the Resource Manager code - specifically,
12245optimizations in the area of the AML/internal resource conversion code.
12246The
12247code has been optimized to simplify and eliminate duplicated code, CPU
12248stack
12249use has been decreased by optimizing function parameters and local
12250variables, and naming conventions across the manager have been
12251standardized
12252for clarity and ease of maintenance (this includes function, parameter,
12253variable, and struct/typedef names.) The update may force changes in some
12254driver code, depending on how resources are handled by the host OS.
12255
12256All Resource Manager dispatch and information tables have been moved to a
12257single location for clarity and ease of maintenance. One new file was
12258created, named "rsinfo.c".
12259
12260The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12261guarantee that the argument is not evaluated twice, making them less
12262prone
12263to macro side-effects. However, since there exists the possibility of
12264additional stack use if a particular compiler cannot optimize them (such
12265as
12266in the debug generation case), the original macros are optionally
12267available.
12268Note that some invocations of the return_VALUE macro may now cause size
12269mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12270to
12271eliminate these. (From Randy Dunlap)
12272
12273Implemented a new mechanism to enable debug tracing for individual
12274control
12275methods. A new external interface, AcpiDebugTrace, is provided to enable
12276this mechanism. The intent is to allow the host OS to easily enable and
12277disable tracing for problematic control methods. This interface can be
12278easily exposed to a user or debugger interface if desired. See the file
12279psxface.c for details.
12280
12281AcpiUtCallocate will now return a valid pointer if a length of zero is
12282specified - a length of one is used and a warning is issued. This matches
12283the behavior of AcpiUtAllocate.
12284
12285Code and Data Size: The current and previous library sizes for the core
12286subsystem are shown below. These are the code and data sizes for the
12287acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12288These
12289values do not include any ACPI driver or OSPM code. The debug version of
12290the
12291code includes the debug output trace mechanism and has a much larger code
12292and data size. Note that these values will vary depending on the
12293efficiency
12294of the compiler and the compiler options used during generation.
12295
12296  Previous Release:
12297    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12298    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12299  Current Release:
12300    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
12301    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
12302
12303
123042) iASL Compiler/Disassembler:
12305
12306A remark is issued if the effective compile-time length of a package or
12307buffer is zero. Previously, this was a warning.
12308
12309----------------------------------------
1231016 September 2005. Summary of changes for version 20050916:
12311
123121) ACPI CA Core Subsystem:
12313
12314Fixed a problem within the Resource Manager where support for the Generic
12315Register descriptor was not fully implemented. This descriptor is now
12316fully
12317recognized, parsed, disassembled, and displayed.
12318
12319Completely restructured the Resource Manager code to utilize table-driven
12320dispatch and lookup, eliminating many of the large switch() statements.
12321This
12322reduces overall subsystem code size and code complexity. Affects the
12323resource parsing and construction, disassembly, and debug dump output.
12324
12325Cleaned up and restructured the debug dump output for all resource
12326descriptors. Improved readability of the output and reduced code size.
12327
12328Fixed a problem where changes to internal data structures caused the
12329optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12330
12331Code and Data Size: The current and previous library sizes for the core
12332subsystem are shown below. These are the code and data sizes for the
12333acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12334These
12335values do not include any ACPI driver or OSPM code. The debug version of
12336the
12337code includes the debug output trace mechanism and has a much larger code
12338and data size. Note that these values will vary depending on the
12339efficiency
12340of the compiler and the compiler options used during generation.
12341
12342  Previous Release:
12343    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12344    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12345  Current Release:
12346    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
12347    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
12348
12349
123502) iASL Compiler/Disassembler:
12351
12352Updated the disassembler to automatically insert an EndDependentFn()
12353macro
12354into the ASL stream if this macro is missing in the original AML code,
12355simplifying compilation of the resulting ASL module.
12356
12357Fixed a problem in the disassembler where a disassembled ResourceSource
12358string (within a large resource descriptor) was not surrounded by quotes
12359and
12360not followed by a comma, causing errors when the resulting ASL module was
12361compiled. Also, escape sequences within a ResourceSource string are now
12362handled correctly (especially "\\")
12363
12364----------------------------------------
1236502 September 2005. Summary of changes for version 20050902:
12366
123671) ACPI CA Core Subsystem:
12368
12369Fixed a problem with the internal Owner ID allocation and deallocation
12370mechanisms for control method execution and recursive method invocation.
12371This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12372messages seen on some systems. Recursive method invocation depth is
12373currently limited to 255. (Alexey Starikovskiy)
12374
12375Completely eliminated all vestiges of support for the "module-level
12376executable code" until this support is fully implemented and debugged.
12377This
12378should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12379some systems that invoke this support.
12380
12381Fixed a problem within the resource manager code where the transaction
12382flags
12383for a 64-bit address descriptor were handled incorrectly in the type-
12384specific flag byte.
12385
12386Consolidated duplicate code within the address descriptor resource
12387manager
12388code, reducing overall subsystem code size.
12389
12390Fixed a fault when using the AML debugger "disassemble" command to
12391disassemble individual control methods.
12392
12393Removed references to the "release_current" directory within the Unix
12394release package.
12395
12396Code and Data Size: The current and previous core subsystem library sizes
12397are shown below. These are the code and data sizes for the acpica.lib
12398produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12399include any ACPI driver or OSPM code. The debug version of the code
12400includes
12401the debug output trace mechanism and has a much larger code and data
12402size.
12403Note that these values will vary depending on the efficiency of the
12404compiler
12405and the compiler options used during generation.
12406
12407  Previous Release:
12408    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12409    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12410  Current Release:
12411    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
12412    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
12413
12414
124152) iASL Compiler/Disassembler:
12416
12417Implemented an error check for illegal duplicate values in the interrupt
12418and
12419dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12420Interrupt().
12421
12422Implemented error checking for the Irq() and IrqNoFlags() macros to
12423detect
12424too many values in the interrupt list (16 max) and invalid values in the
12425list (range 0 - 15)
12426
12427The maximum length string literal within an ASL file is now restricted to
12428200 characters as per the ACPI specification.
12429
12430Fixed a fault when using the -ln option (generate namespace listing).
12431
12432Implemented an error check to determine if a DescriptorName within a
12433resource descriptor has already been used within the current scope.
12434
12435----------------------------------------
1243615 August 2005.  Summary of changes for version 20050815:
12437
124381) ACPI CA Core Subsystem:
12439
12440Implemented a full bytewise compare to determine if a table load request
12441is
12442attempting to load a duplicate table. The compare is performed if the
12443table
12444signatures and table lengths match. This will allow different tables with
12445the same OEM Table ID and revision to be loaded - probably against the
12446ACPI
12447specification, but discovered in the field nonetheless.
12448
12449Added the changes.txt logfile to each of the zipped release packages.
12450
12451Code and Data Size: Current and previous core subsystem library sizes are
12452shown below. These are the code and data sizes for the acpica.lib
12453produced
12454by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12455any ACPI driver or OSPM code. The debug version of the code includes the
12456debug output trace mechanism and has a much larger code and data size.
12457Note
12458that these values will vary depending on the efficiency of the compiler
12459and
12460the compiler options used during generation.
12461
12462  Previous Release:
12463    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12464    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12465  Current Release:
12466    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12467    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
12468
12469
124702) iASL Compiler/Disassembler:
12471
12472Fixed a problem where incorrect AML code could be generated for Package
12473objects if optimization is disabled (via the -oa switch).
12474
12475Fixed a problem with where incorrect AML code is generated for variable-
12476length packages when the package length is not specified and the number
12477of
12478initializer values is greater than 255.
12479
12480
12481----------------------------------------
1248229 July 2005.  Summary of changes for version 20050729:
12483
124841) ACPI CA Core Subsystem:
12485
12486Implemented support to ignore an attempt to install/load a particular
12487ACPI
12488table more than once. Apparently there exists BIOS code that repeatedly
12489attempts to load the same SSDT upon certain events. With assistance from
12490Venkatesh Pallipadi.
12491
12492Restructured the main interface to the AML parser in order to correctly
12493handle all exceptional conditions. This will prevent leakage of the
12494OwnerId
12495resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12496some
12497machines. With assistance from Alexey Starikovskiy.
12498
12499Support for "module level code" has been disabled in this version due to
12500a
12501number of issues that have appeared on various machines. The support can
12502be
12503enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12504compilation. When the issues are fully resolved, the code will be enabled
12505by
12506default again.
12507
12508Modified the internal functions for debug print support to define the
12509FunctionName parameter as a (const char *) for compatibility with
12510compiler
12511built-in macros such as __FUNCTION__, etc.
12512
12513Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12514
12515Implemented support to display an object count summary for the AML
12516Debugger
12517commands Object and Methods.
12518
12519Code and Data Size: Current and previous core subsystem library sizes are
12520shown below. These are the code and data sizes for the acpica.lib
12521produced
12522by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12523any ACPI driver or OSPM code. The debug version of the code includes the
12524debug output trace mechanism and has a much larger code and data size.
12525Note
12526that these values will vary depending on the efficiency of the compiler
12527and
12528the compiler options used during generation.
12529
12530  Previous Release:
12531    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12532    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12533  Current Release:
12534    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
12535    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
12536
12537
125382) iASL Compiler/Disassembler:
12539
12540Fixed a regression that appeared in the 20050708 version of the compiler
12541where an error message was inadvertently emitted for invocations of the
12542_OSI
12543reserved control method.
12544
12545----------------------------------------
1254608 July 2005.  Summary of changes for version 20050708:
12547
125481) ACPI CA Core Subsystem:
12549
12550The use of the CPU stack in the debug version of the subsystem has been
12551considerably reduced. Previously, a debug structure was declared in every
12552function that used the debug macros. This structure has been removed in
12553favor of declaring the individual elements as parameters to the debug
12554functions. This reduces the cumulative stack use during nested execution
12555of
12556ACPI function calls at the cost of a small increase in the code size of
12557the
12558debug version of the subsystem. With assistance from Alexey Starikovskiy
12559and
12560Len Brown.
12561
12562Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12563headers to define a macro that will return the current function name at
12564runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12565by
12566the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12567compiler-dependent header, the function name is saved on the CPU stack
12568(one
12569pointer per function.) This mechanism is used because apparently there
12570exists no standard ANSI-C defined macro that that returns the function
12571name.
12572
12573Redesigned and reimplemented the "Owner ID" mechanism used to track
12574namespace objects created/deleted by ACPI tables and control method
12575execution. A bitmap is now used to allocate and free the IDs, thus
12576solving
12577the wraparound problem present in the previous implementation. The size
12578of
12579the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12580Starikovskiy).
12581
12582Removed the UINT32_BIT and UINT16_BIT types that were used for the
12583bitfield
12584flag definitions within the headers for the predefined ACPI tables. These
12585have been replaced by UINT8_BIT in order to increase the code portability
12586of
12587the subsystem. If the use of UINT8 remains a problem, we may be forced to
12588eliminate bitfields entirely because of a lack of portability.
12589
12590Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12591This
12592is a frequently used function and this improvement increases the
12593performance
12594of the entire subsystem (Alexey Starikovskiy).
12595
12596Fixed several possible memory leaks and the inverse - premature object
12597deletion (Alexey Starikovskiy).
12598
12599Code and Data Size: Current and previous core subsystem library sizes are
12600shown below. These are the code and data sizes for the acpica.lib
12601produced
12602by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12603any ACPI driver or OSPM code. The debug version of the code includes the
12604debug output trace mechanism and has a much larger code and data size.
12605Note
12606that these values will vary depending on the efficiency of the compiler
12607and
12608the compiler options used during generation.
12609
12610  Previous Release:
12611    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12612    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12613  Current Release:
12614    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
12615    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
12616
12617----------------------------------------
1261824 June 2005.  Summary of changes for version 20050624:
12619
126201) ACPI CA Core Subsystem:
12621
12622Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12623the host-defined cache object. This allows the OSL implementation to
12624define
12625and type this object in any manner desired, simplifying the OSL
12626implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12627Linux, and should be defined in the OS-specific header file for other
12628operating systems as required.
12629
12630Changed the interface to AcpiOsAcquireObject to directly return the
12631requested object as the function return (instead of ACPI_STATUS.) This
12632change was made for performance reasons, since this is the purpose of the
12633interface in the first place. AcpiOsAcquireObject is now similar to the
12634AcpiOsAllocate interface.
12635
12636Implemented a new AML debugger command named Businfo. This command
12637displays
12638information about all devices that have an associate _PRT object. The
12639_ADR,
12640_HID, _UID, and _CID are displayed for these devices.
12641
12642Modified the initialization sequence in AcpiInitializeSubsystem to call
12643the
12644OSL interface AcpiOslInitialize first, before any local initialization.
12645This
12646change was required because the global initialization now calls OSL
12647interfaces.
12648
12649Enhanced the Dump command to display the entire contents of Package
12650objects
12651(including all sub-objects and their values.)
12652
12653Restructured the code base to split some files because of size and/or
12654because the code logically belonged in a separate file. New files are
12655listed
12656below. All makefiles and project files included in the ACPI CA release
12657have
12658been updated.
12659    utilities/utcache.c           /* Local cache interfaces */
12660    utilities/utmutex.c           /* Local mutex support */
12661    utilities/utstate.c           /* State object support */
12662    interpreter/parser/psloop.c   /* Main AML parse loop */
12663
12664Code and Data Size: Current and previous core subsystem library sizes are
12665shown below. These are the code and data sizes for the acpica.lib
12666produced
12667by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12668any ACPI driver or OSPM code. The debug version of the code includes the
12669debug output trace mechanism and has a much larger code and data size.
12670Note
12671that these values will vary depending on the efficiency of the compiler
12672and
12673the compiler options used during generation.
12674
12675  Previous Release:
12676    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12677    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12678  Current Release:
12679    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
12680    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
12681
12682
126832) iASL Compiler/Disassembler:
12684
12685Fixed a regression introduced in version 20050513 where the use of a
12686Package
12687object within a Case() statement caused a compile time exception. The
12688original behavior has been restored (a Match() operator is emitted.)
12689
12690----------------------------------------
1269117 June 2005.  Summary of changes for version 20050617:
12692
126931) ACPI CA Core Subsystem:
12694
12695Moved the object cache operations into the OS interface layer (OSL) to
12696allow
12697the host OS to handle these operations if desired (for example, the Linux
12698OSL will invoke the slab allocator). This support is optional; the
12699compile
12700time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12701cache
12702code in the ACPI CA core. The new OSL interfaces are shown below. See
12703utalloc.c for an example implementation, and acpiosxf.h for the exact
12704interface definitions. With assistance from Alexey Starikovskiy.
12705    AcpiOsCreateCache
12706    AcpiOsDeleteCache
12707    AcpiOsPurgeCache
12708    AcpiOsAcquireObject
12709    AcpiOsReleaseObject
12710
12711Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12712return
12713and restore a flags parameter. This fits better with many OS lock models.
12714Note: the current execution state (interrupt handler or not) is no longer
12715passed to these interfaces. If necessary, the OSL must determine this
12716state
12717by itself, a simple and fast operation. With assistance from Alexey
12718Starikovskiy.
12719
12720Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12721present if the revision of the RSDP was 2 or greater. According to the
12722ACPI
12723specification, the XSDT is optional in all cases, and the table manager
12724therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12725Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12726contain
12727only the RSDT.
12728
12729Fixed an interpreter problem with the Mid() operator in the case of an
12730input
12731string where the resulting output string is of zero length. It now
12732correctly
12733returns a valid, null terminated string object instead of a string object
12734with a null pointer.
12735
12736Fixed a problem with the control method argument handling to allow a
12737store
12738to an Arg object that already contains an object of type Device. The
12739Device
12740object is now correctly overwritten. Previously, an error was returned.
12741
12742
12743Enhanced the debugger Find command to emit object values in addition to
12744the
12745found object pathnames. The output format is the same as the dump
12746namespace
12747command.
12748
12749Enhanced the debugger Set command. It now has the ability to set the
12750value
12751of any Named integer object in the namespace (Previously, only method
12752locals
12753and args could be set.)
12754
12755Code and Data Size: Current and previous core subsystem library sizes are
12756shown below. These are the code and data sizes for the acpica.lib
12757produced
12758by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12759any ACPI driver or OSPM code. The debug version of the code includes the
12760debug output trace mechanism and has a much larger code and data size.
12761Note
12762that these values will vary depending on the efficiency of the compiler
12763and
12764the compiler options used during generation.
12765
12766  Previous Release:
12767    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12768    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12769  Current Release:
12770    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
12771    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
12772
12773
127742) iASL Compiler/Disassembler:
12775
12776Fixed a regression in the disassembler where if/else/while constructs
12777were
12778output incorrectly. This problem was introduced in the previous release
12779(20050526). This problem also affected the single-step disassembly in the
12780debugger.
12781
12782Fixed a problem where compiling the reserved _OSI method would randomly
12783(but
12784rarely) produce compile errors.
12785
12786Enhanced the disassembler to emit compilable code in the face of
12787incorrect
12788AML resource descriptors. If the optional ResourceSourceIndex is present,
12789but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12790disassembly. Otherwise, the resulting code cannot be compiled without
12791errors.
12792
12793----------------------------------------
1279426 May 2005.  Summary of changes for version 20050526:
12795
127961) ACPI CA Core Subsystem:
12797
12798Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12799the module level (not within a control method.) These opcodes are
12800executed
12801exactly once at the time the table is loaded. This type of code was legal
12802up
12803until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12804in
12805order to provide backwards compatibility with earlier BIOS
12806implementations.
12807This eliminates the "Encountered executable code at module level" warning
12808that was previously generated upon detection of such code.
12809
12810Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12811inadvertently be generated during the lookup of namespace objects in the
12812second pass parse of ACPI tables and control methods. It appears that
12813this
12814problem could occur during the resolution of forward references to
12815namespace
12816objects.
12817
12818Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12819corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12820allows the deadlock detection debug code to be compiled out in the normal
12821case, improving mutex performance (and overall subsystem performance)
12822considerably.
12823
12824Implemented a handful of miscellaneous fixes for possible memory leaks on
12825error conditions and error handling control paths. These fixes were
12826suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12827
12828Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12829(tbxfroot.c)
12830to prevent a fault in this error case.
12831
12832Code and Data Size: Current and previous core subsystem library sizes are
12833shown below. These are the code and data sizes for the acpica.lib
12834produced
12835by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12836any ACPI driver or OSPM code. The debug version of the code includes the
12837debug output trace mechanism and has a much larger code and data size.
12838Note
12839that these values will vary depending on the efficiency of the compiler
12840and
12841the compiler options used during generation.
12842
12843  Previous Release:
12844    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12845    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12846  Current Release:
12847    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
12848    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
12849
12850
128512) iASL Compiler/Disassembler:
12852
12853Implemented support to allow Type 1 and Type 2 ASL operators to appear at
12854the module level (not within a control method.) These operators will be
12855executed once at the time the table is loaded. This type of code was
12856legal
12857up until the release of ACPI 2.0B (2002) and is now supported by the iASL
12858compiler in order to provide backwards compatibility with earlier BIOS
12859ASL
12860code.
12861
12862The ACPI integer width (specified via the table revision ID or the -r
12863override, 32 or 64 bits) is now used internally during compile-time
12864constant
12865folding to ensure that constants are truncated to 32 bits if necessary.
12866Previously, the revision ID value was only emitted in the AML table
12867header.
12868
12869An error message is now generated for the Mutex and Method operators if
12870the
12871SyncLevel parameter is outside the legal range of 0 through 15.
12872
12873Fixed a problem with the Method operator ParameterTypes list handling
12874(ACPI
128753.0). Previously, more than 2 types or 2 arguments generated a syntax
12876error.
12877The actual underlying implementation of method argument typechecking is
12878still under development, however.
12879
12880----------------------------------------
1288113 May 2005.  Summary of changes for version 20050513:
12882
128831) ACPI CA Core Subsystem:
12884
12885Implemented support for PCI Express root bridges -- added support for
12886device
12887PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
12888
12889The interpreter now automatically truncates incoming 64-bit constants to
1289032
12891bits if currently executing out of a 32-bit ACPI table (Revision < 2).
12892This
12893also affects the iASL compiler constant folding. (Note: as per below, the
12894iASL compiler no longer allows 64-bit constants within 32-bit tables.)
12895
12896Fixed a problem where string and buffer objects with "static" pointers
12897(pointers to initialization data within an ACPI table) were not handled
12898consistently. The internal object copy operation now always copies the
12899data
12900to a newly allocated buffer, regardless of whether the source object is
12901static or not.
12902
12903Fixed a problem with the FromBCD operator where an implicit result
12904conversion was improperly performed while storing the result to the
12905target
12906operand. Since this is an "explicit conversion" operator, the implicit
12907conversion should never be performed on the output.
12908
12909Fixed a problem with the CopyObject operator where a copy to an existing
12910named object did not always completely overwrite the existing object
12911stored
12912at name. Specifically, a buffer-to-buffer copy did not delete the
12913existing
12914buffer.
12915
12916Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
12917and
12918structs for consistency.
12919
12920Code and Data Size: Current and previous core subsystem library sizes are
12921shown below. These are the code and data sizes for the acpica.lib
12922produced
12923by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12924any ACPI driver or OSPM code. The debug version of the code includes the
12925debug output trace mechanism and has a much larger code and data size.
12926Note
12927that these values will vary depending on the efficiency of the compiler
12928and
12929the compiler options used during generation.
12930
12931  Previous Release:
12932    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12933    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12934  Current Release: (Same sizes)
12935    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
12936    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
12937
12938
129392) iASL Compiler/Disassembler:
12940
12941The compiler now emits a warning if an attempt is made to generate a 64-
12942bit
12943integer constant from within a 32-bit ACPI table (Revision < 2). The
12944integer
12945is truncated to 32 bits.
12946
12947Fixed a problem with large package objects: if the static length of the
12948package is greater than 255, the "variable length package" opcode is
12949emitted. Previously, this caused an error. This requires an update to the
12950ACPI spec, since it currently (incorrectly) states that packages larger
12951than
12952255 elements are not allowed.
12953
12954The disassembler now correctly handles variable length packages and
12955packages
12956larger than 255 elements.
12957
12958----------------------------------------
1295908 April 2005.  Summary of changes for version 20050408:
12960
129611) ACPI CA Core Subsystem:
12962
12963Fixed three cases in the interpreter where an "index" argument to an ASL
12964function was still (internally) 32 bits instead of the required 64 bits.
12965This was the Index argument to the Index, Mid, and Match operators.
12966
12967The "strupr" function is now permanently local (AcpiUtStrupr), since this
12968is
12969not a POSIX-defined function and not present in most kernel-level C
12970libraries. All references to the C library strupr function have been
12971removed
12972from the headers.
12973
12974Completed the deployment of static functions/prototypes. All prototypes
12975with
12976the static attribute have been moved from the headers to the owning C
12977file.
12978
12979Implemented an extract option (-e) for the AcpiBin utility (AML binary
12980utility). This option allows the utility to extract individual ACPI
12981tables
12982from the output of AcpiDmp. It provides the same functionality of the
12983acpixtract.pl perl script without the worry of setting the correct perl
12984options. AcpiBin runs on Windows and has not yet been generated/validated
12985in
12986the Linux/Unix environment (but should be soon).
12987
12988Updated and fixed the table dump option for AcpiBin (-d). This option
12989converts a single ACPI table to a hex/ascii file, similar to the output
12990of
12991AcpiDmp.
12992
12993Code and Data Size: Current and previous core subsystem library sizes are
12994shown below. These are the code and data sizes for the acpica.lib
12995produced
12996by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12997any ACPI driver or OSPM code. The debug version of the code includes the
12998debug output trace mechanism and has a much larger code and data size.
12999Note
13000that these values will vary depending on the efficiency of the compiler
13001and
13002the compiler options used during generation.
13003
13004  Previous Release:
13005    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13006    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13007  Current Release:
13008    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13009    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13010
13011
130122) iASL Compiler/Disassembler:
13013
13014Disassembler fix: Added a check to ensure that the table length found in
13015the
13016ACPI table header within the input file is not longer than the actual
13017input
13018file size. This indicates some kind of file or table corruption.
13019
13020----------------------------------------
1302129 March 2005.  Summary of changes for version 20050329:
13022
130231) ACPI CA Core Subsystem:
13024
13025An error is now generated if an attempt is made to create a Buffer Field
13026of
13027length zero (A CreateField with a length operand of zero.)
13028
13029The interpreter now issues a warning whenever executable code at the
13030module
13031level is detected during ACPI table load. This will give some idea of the
13032prevalence of this type of code.
13033
13034Implemented support for references to named objects (other than control
13035methods) within package objects.
13036
13037Enhanced package object output for the debug object. Package objects are
13038now
13039completely dumped, showing all elements.
13040
13041Enhanced miscellaneous object output for the debug object. Any object can
13042now be written to the debug object (for example, a device object can be
13043written, and the type of the object will be displayed.)
13044
13045The "static" qualifier has been added to all local functions across both
13046the
13047core subsystem and the iASL compiler.
13048
13049The number of "long" lines (> 80 chars) within the source has been
13050significantly reduced, by about 1/3.
13051
13052Cleaned up all header files to ensure that all CA/iASL functions are
13053prototyped (even static functions) and the formatting is consistent.
13054
13055Two new header files have been added, acopcode.h and acnames.h.
13056
13057Removed several obsolete functions that were no longer used.
13058
13059Code and Data Size: Current and previous core subsystem library sizes are
13060shown below. These are the code and data sizes for the acpica.lib
13061produced
13062by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13063any ACPI driver or OSPM code. The debug version of the code includes the
13064debug output trace mechanism and has a much larger code and data size.
13065Note
13066that these values will vary depending on the efficiency of the compiler
13067and
13068the compiler options used during generation.
13069
13070  Previous Release:
13071    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13072    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13073  Current Release:
13074    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13075    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13076
13077
13078
130792) iASL Compiler/Disassembler:
13080
13081Fixed a problem with the resource descriptor generation/support. For the
13082ResourceSourceIndex and the ResourceSource fields, both must be present,
13083or
13084both must be not present - can't have one without the other.
13085
13086The compiler now returns non-zero from the main procedure if any errors
13087have
13088occurred during the compilation.
13089
13090
13091----------------------------------------
1309209 March 2005.  Summary of changes for version 20050309:
13093
130941) ACPI CA Core Subsystem:
13095
13096The string-to-buffer implicit conversion code has been modified again
13097after
13098a change to the ACPI specification.  In order to match the behavior of
13099the
13100other major ACPI implementation, the target buffer is no longer truncated
13101if
13102the source string is smaller than an existing target buffer. This change
13103requires an update to the ACPI spec, and should eliminate the recent
13104AE_AML_BUFFER_LIMIT issues.
13105
13106The "implicit return" support was rewritten to a new algorithm that
13107solves
13108the general case. Rather than attempt to determine when a method is about
13109to
13110exit, the result of every ASL operator is saved momentarily until the
13111very
13112next ASL operator is executed. Therefore, no matter how the method exits,
13113there will always be a saved implicit return value. This feature is only
13114enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
13115eliminate
13116AE_AML_NO_RETURN_VALUE errors when enabled.
13117
13118Implemented implicit conversion support for the predicate (operand) of
13119the
13120If, Else, and While operators. String and Buffer arguments are
13121automatically
13122converted to Integers.
13123
13124Changed the string-to-integer conversion behavior to match the new ACPI
13125errata: "If no integer object exists, a new integer is created. The ASCII
13126string is interpreted as a hexadecimal constant. Each string character is
13127interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
13128with the first character as the most significant digit, and ending with
13129the
13130first non-hexadecimal character or end-of-string." This means that the
13131first
13132non-hex character terminates the conversion and this is the code that was
13133changed.
13134
13135Fixed a problem where the ObjectType operator would fail (fault) when
13136used
13137on an Index of a Package which pointed to a null package element. The
13138operator now properly returns zero (Uninitialized) in this case.
13139
13140Fixed a problem where the While operator used excessive memory by not
13141properly popping the result stack during execution. There was no memory
13142leak
13143after execution, however. (Code provided by Valery Podrezov.)
13144
13145Fixed a problem where references to control methods within Package
13146objects
13147caused the method to be invoked, instead of producing a reference object
13148pointing to the method.
13149
13150Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13151to
13152improve performance and reduce code size. (Code provided by Alexey
13153Starikovskiy.)
13154
13155Code and Data Size: Current and previous core subsystem library sizes are
13156shown below. These are the code and data sizes for the acpica.lib
13157produced
13158by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13159any ACPI driver or OSPM code. The debug version of the code includes the
13160debug output trace mechanism and has a much larger code and data size.
13161Note
13162that these values will vary depending on the efficiency of the compiler
13163and
13164the compiler options used during generation.
13165
13166  Previous Release:
13167    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13168    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13169  Current Release:
13170    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13171    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13172
13173
131742) iASL Compiler/Disassembler:
13175
13176Fixed a problem with the Return operator with no arguments. Since the AML
13177grammar for the byte encoding requires an operand for the Return opcode,
13178the
13179compiler now emits a Return(Zero) for this case.  An ACPI specification
13180update has been written for this case.
13181
13182For tables other than the DSDT, namepath optimization is automatically
13183disabled. This is because SSDTs can be loaded anywhere in the namespace,
13184the
13185compiler has no knowledge of where, and thus cannot optimize namepaths.
13186
13187Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13188inadvertently omitted from the ACPI specification, and will require an
13189update to the spec.
13190
13191The source file scan for ASCII characters is now optional (-a). This
13192change
13193was made because some vendors place non-ascii characters within comments.
13194However, the scan is simply a brute-force byte compare to ensure all
13195characters in the file are in the range 0x00 to 0x7F.
13196
13197Fixed a problem with the CondRefOf operator where the compiler was
13198inappropriately checking for the existence of the target. Since the point
13199of
13200the operator is to check for the existence of the target at run-time, the
13201compiler no longer checks for the target existence.
13202
13203Fixed a problem where errors generated from the internal AML interpreter
13204during constant folding were not handled properly, causing a fault.
13205
13206Fixed a problem with overly aggressive range checking for the Stall
13207operator. The valid range (max 255) is now only checked if the operand is
13208of
13209type Integer. All other operand types cannot be statically checked.
13210
13211Fixed a problem where control method references within the RefOf,
13212DeRefOf,
13213and ObjectType operators were not treated properly. They are now treated
13214as
13215actual references, not method invocations.
13216
13217Fixed and enhanced the "list namespace" option (-ln). This option was
13218broken
13219a number of releases ago.
13220
13221Improved error handling for the Field, IndexField, and BankField
13222operators.
13223The compiler now cleanly reports and recovers from errors in the field
13224component (FieldUnit) list.
13225
13226Fixed a disassembler problem where the optional ResourceDescriptor fields
13227TRS and TTP were not always handled correctly.
13228
13229Disassembler - Comments in output now use "//" instead of "/*"
13230
13231----------------------------------------
1323228 February 2005.  Summary of changes for version 20050228:
13233
132341) ACPI CA Core Subsystem:
13235
13236Fixed a problem where the result of an Index() operator (an object
13237reference) must increment the reference count on the target object for
13238the
13239life of the object reference.
13240
13241Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13242Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13243WordSpace
13244resource descriptors.
13245
13246Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13247Space Descriptor" string, indicating interpreter support for the
13248descriptors
13249above.
13250
13251Implemented header support for the new ACPI 3.0 FADT flag bits.
13252
13253Implemented header support for the new ACPI 3.0 PCI Express bits for the
13254PM1
13255status/enable registers.
13256
13257Updated header support for the MADT processor local Apic struct and MADT
13258platform interrupt source struct for new ACPI 3.0 fields.
13259
13260Implemented header support for the SRAT and SLIT ACPI tables.
13261
13262Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13263flag
13264at runtime.
13265
13266Code and Data Size: Current and previous core subsystem library sizes are
13267shown below. These are the code and data sizes for the acpica.lib
13268produced
13269by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13270any ACPI driver or OSPM code. The debug version of the code includes the
13271debug output trace mechanism and has a much larger code and data size.
13272Note
13273that these values will vary depending on the efficiency of the compiler
13274and
13275the compiler options used during generation.
13276
13277  Previous Release:
13278    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13279    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13280  Current Release:
13281    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13282    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
13283
13284
132852) iASL Compiler/Disassembler:
13286
13287Fixed a problem with the internal 64-bit String-to-integer conversion
13288with
13289strings less than two characters long.
13290
13291Fixed a problem with constant folding where the result of the Index()
13292operator can not be considered a constant. This means that Index() cannot
13293be
13294a type3 opcode and this will require an update to the ACPI specification.
13295
13296Disassembler: Implemented support for the TTP, MTP, and TRS resource
13297descriptor fields. These fields were inadvertently ignored and not output
13298in
13299the disassembly of the resource descriptor.
13300
13301
13302 ----------------------------------------
1330311 February 2005.  Summary of changes for version 20050211:
13304
133051) ACPI CA Core Subsystem:
13306
13307Implemented ACPI 3.0 support for implicit conversion within the Match()
13308operator. MatchObjects can now be of type integer, buffer, or string
13309instead
13310of just type integer.  Package elements are implicitly converted to the
13311type
13312of the MatchObject. This change aligns the behavior of Match() with the
13313behavior of the other logical operators (LLess(), etc.) It also requires
13314an
13315errata change to the ACPI specification as this support was intended for
13316ACPI 3.0, but was inadvertently omitted.
13317
13318Fixed a problem with the internal implicit "to buffer" conversion.
13319Strings
13320that are converted to buffers will cause buffer truncation if the string
13321is
13322smaller than the target buffer. Integers that are converted to buffers
13323will
13324not cause buffer truncation, only zero extension (both as per the ACPI
13325spec.) The problem was introduced when code was added to truncate the
13326buffer, but this should not be performed in all cases, only the string
13327case.
13328
13329Fixed a problem with the Buffer and Package operators where the
13330interpreter
13331would get confused if two such operators were used as operands to an ASL
13332operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13333stack was not being popped after the execution of these operators,
13334resulting
13335in an AE_NO_RETURN_VALUE exception.
13336
13337Fixed a problem with constructs of the form Store(Index(...),...). The
13338reference object returned from Index was inadvertently resolved to an
13339actual
13340value. This problem was introduced in version 20050114 when the behavior
13341of
13342Store() was modified to restrict the object types that can be used as the
13343source operand (to match the ACPI specification.)
13344
13345Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13346
13347Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13348
13349Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13350
13351Code and Data Size: Current and previous core subsystem library sizes are
13352shown below. These are the code and data sizes for the acpica.lib
13353produced
13354by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13355any ACPI driver or OSPM code. The debug version of the code includes the
13356debug output trace mechanism and has a much larger code and data size.
13357Note
13358that these values will vary depending on the efficiency of the compiler
13359and
13360the compiler options used during generation.
13361
13362  Previous Release:
13363    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
13364    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
13365  Current Release:
13366    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
13367    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
13368
13369
133702) iASL Compiler/Disassembler:
13371
13372Fixed a code generation problem in the constant folding optimization code
13373where incorrect code was generated if a constant was reduced to a buffer
13374object (i.e., a reduced type 5 opcode.)
13375
13376Fixed a typechecking problem for the ToBuffer operator. Caused by an
13377incorrect return type in the internal opcode information table.
13378
13379----------------------------------------
1338025 January 2005.  Summary of changes for version 20050125:
13381
133821) ACPI CA Core Subsystem:
13383
13384Fixed a recently introduced problem with the Global Lock where the
13385underlying semaphore was not created.  This problem was introduced in
13386version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13387Acquire() operation on _GL.
13388
13389The local object cache is now optional, and is disabled by default. Both
13390AcpiExec and the iASL compiler enable the cache because they run in user
13391mode and this enhances their performance. #define
13392ACPI_ENABLE_OBJECT_CACHE
13393to enable the local cache.
13394
13395Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13396the
13397optional "implicit return" support where an error was returned if no
13398return
13399object was expected, but one was implicitly returned. AE_OK is now
13400returned
13401in this case and the implicitly returned object is deleted.
13402AcpiUtEvaluateObject is only occasionally used, and only to execute
13403reserved
13404methods such as _STA and _INI where the return type is known up front.
13405
13406Fixed a few issues with the internal convert-to-integer code. It now
13407returns
13408an error if an attempt is made to convert a null string, a string of only
13409blanks/tabs, or a zero-length buffer. This affects both implicit
13410conversion
13411and explicit conversion via the ToInteger() operator.
13412
13413The internal debug code in AcpiUtAcquireMutex has been commented out. It
13414is
13415not needed for normal operation and should increase the performance of
13416the
13417entire subsystem. The code remains in case it is needed for debug
13418purposes
13419again.
13420
13421The AcpiExec source and makefile are included in the Unix/Linux package
13422for
13423the first time.
13424
13425Code and Data Size: Current and previous core subsystem library sizes are
13426shown below. These are the code and data sizes for the acpica.lib
13427produced
13428by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13429any ACPI driver or OSPM code. The debug version of the code includes the
13430debug output trace mechanism and has a much larger code and data size.
13431Note
13432that these values will vary depending on the efficiency of the compiler
13433and
13434the compiler options used during generation.
13435
13436  Previous Release:
13437    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13438    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13439  Current Release:
13440    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
13441    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
13442
134432) iASL Compiler/Disassembler:
13444
13445Switch/Case support: A warning is now issued if the type of the Switch
13446value
13447cannot be determined at compile time. For example, Switch(Arg0) will
13448generate the warning, and the type is assumed to be an integer. As per
13449the
13450ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13451the
13452warning.
13453
13454Switch/Case support: Implemented support for buffer and string objects as
13455the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
13456buffers and strings.
13457
13458Switch/Case support: The emitted code for the LEqual() comparisons now
13459uses
13460the switch value as the first operand, not the second. The case value is
13461now
13462the second operand, and this allows the case value to be implicitly
13463converted to the type of the switch value, not the other way around.
13464
13465Switch/Case support: Temporary variables are now emitted immediately
13466within
13467the control method, not at the global level. This means that there are
13468now
1346936 temps available per-method, not 36 temps per-module as was the case
13470with
13471the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13472
13473----------------------------------------
1347414 January 2005.  Summary of changes for version 20050114:
13475
13476Added 2005 copyright to all module headers.  This affects every module in
13477the core subsystem, iASL compiler, and the utilities.
13478
134791) ACPI CA Core Subsystem:
13480
13481Fixed an issue with the String-to-Buffer conversion code where the string
13482null terminator was not included in the buffer after conversion, but
13483there
13484is existing ASL that assumes the string null terminator is included. This
13485is
13486the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13487introduced in the previous version when the code was updated to correctly
13488set the converted buffer size as per the ACPI specification. The ACPI
13489spec
13490is ambiguous and will be updated to specify that the null terminator must
13491be
13492included in the converted buffer. This also affects the ToBuffer() ASL
13493operator.
13494
13495Fixed a problem with the Mid() ASL/AML operator where it did not work
13496correctly on Buffer objects. Newly created sub-buffers were not being
13497marked
13498as initialized.
13499
13500
13501Fixed a problem in AcpiTbFindTable where incorrect string compares were
13502performed on the OemId and OemTableId table header fields.  These fields
13503are
13504not null terminated, so strncmp is now used instead of strcmp.
13505
13506Implemented a restriction on the Store() ASL/AML operator to align the
13507behavior with the ACPI specification.  Previously, any object could be
13508used
13509as the source operand.  Now, the only objects that may be used are
13510Integers,
13511Buffers, Strings, Packages, Object References, and DDB Handles.  If
13512necessary, the original behavior can be restored by enabling the
13513EnableInterpreterSlack flag.
13514
13515Enhanced the optional "implicit return" support to allow an implicit
13516return
13517value from methods that are invoked externally via the AcpiEvaluateObject
13518interface.  This enables implicit returns from the _STA and _INI methods,
13519for example.
13520
13521Changed the Revision() ASL/AML operator to return the current version of
13522the
13523AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13524returned
13525the supported ACPI version (This is the function of the _REV method).
13526
13527Updated the _REV predefined method to return the currently supported
13528version
13529of ACPI, now 3.
13530
13531Implemented batch mode option for the AcpiExec utility (-b).
13532
13533Code and Data Size: Current and previous core subsystem library sizes are
13534shown below. These are the code and data sizes for the acpica.lib
13535produced
13536by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13537any ACPI driver or OSPM code. The debug version of the code includes the
13538debug output trace mechanism and has a much larger code and data size.
13539Note
13540that these values will vary depending on the efficiency of the compiler
13541and
13542the compiler options used during generation.
13543
13544  Previous Release:
13545    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13546    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13547  Current Release:
13548    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
13549    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
13550
13551----------------------------------------
1355210 December 2004.  Summary of changes for version 20041210:
13553
13554ACPI 3.0 support is nearing completion in both the iASL compiler and the
13555ACPI CA core subsystem.
13556
135571) ACPI CA Core Subsystem:
13558
13559Fixed a problem in the ToDecimalString operator where the resulting
13560string
13561length was incorrectly calculated. The length is now calculated exactly,
13562eliminating incorrect AE_STRING_LIMIT exceptions.
13563
13564Fixed a problem in the ToHexString operator to allow a maximum 200
13565character
13566string to be produced.
13567
13568Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13569copy
13570routine where the length of the resulting buffer was not truncated to the
13571new size (if the target buffer already existed).
13572
13573Code and Data Size: Current and previous core subsystem library sizes are
13574shown below. These are the code and data sizes for the acpica.lib
13575produced
13576by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13577any ACPI driver or OSPM code. The debug version of the code includes the
13578debug output trace mechanism and has a much larger code and data size.
13579Note
13580that these values will vary depending on the efficiency of the compiler
13581and
13582the compiler options used during generation.
13583
13584  Previous Release:
13585    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13586    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13587  Current Release:
13588    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13589    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
13590
13591
135922) iASL Compiler/Disassembler:
13593
13594Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13595ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13596Includes support in the disassembler.
13597
13598Implemented support for the new (ACPI 3.0) parameter to the Register
13599macro,
13600AccessSize.
13601
13602Fixed a problem where the _HE resource name for the Interrupt macro was
13603referencing bit 0 instead of bit 1.
13604
13605Implemented check for maximum 255 interrupts in the Interrupt macro.
13606
13607Fixed a problem with the predefined resource descriptor names where
13608incorrect AML code was generated if the offset within the resource buffer
13609was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
13610but did not update the surrounding package lengths.
13611
13612Changes to the Dma macro:  All channels within the channel list must be
13613in
13614the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
13615optional (default is BusMaster).
13616
13617Implemented check for maximum 7 data bytes for the VendorShort macro.
13618
13619The ReadWrite parameter is now optional for the Memory32 and similar
13620macros.
13621
13622----------------------------------------
1362303 December 2004.  Summary of changes for version 20041203:
13624
136251) ACPI CA Core Subsystem:
13626
13627The low-level field insertion/extraction code (exfldio) has been
13628completely
13629rewritten to eliminate unnecessary complexity, bugs, and boundary
13630conditions.
13631
13632Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13633ToDecimalString
13634operators where the input operand could be inadvertently deleted if no
13635conversion was necessary (e.g., if the input to ToInteger was an Integer
13636object.)
13637
13638Fixed a problem with the ToDecimalString and ToHexString where an
13639incorrect
13640exception code was returned if the resulting string would be > 200 chars.
13641AE_STRING_LIMIT is now returned.
13642
13643Fixed a problem with the Concatenate operator where AE_OK was always
13644returned, even if the operation failed.
13645
13646Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13647semaphores to be allocated.
13648
13649Code and Data Size: Current and previous core subsystem library sizes are
13650shown below. These are the code and data sizes for the acpica.lib
13651produced
13652by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13653any ACPI driver or OSPM code. The debug version of the code includes the
13654debug output trace mechanism and has a much larger code and data size.
13655Note
13656that these values will vary depending on the efficiency of the compiler
13657and
13658the compiler options used during generation.
13659
13660  Previous Release:
13661    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13662    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13663  Current Release:
13664    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
13665    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
13666
13667
136682) iASL Compiler/Disassembler:
13669
13670Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
13671recently introduced in 20041119.
13672
13673Fixed a problem with the ToUUID macro where the upper nybble of each
13674buffer
13675byte was inadvertently set to zero.
13676
13677----------------------------------------
1367819 November 2004.  Summary of changes for version 20041119:
13679
136801) ACPI CA Core Subsystem:
13681
13682Fixed a problem in the internal ConvertToInteger routine where new
13683integers
13684were not truncated to 32 bits for 32-bit ACPI tables. This routine
13685converts
13686buffers and strings to integers.
13687
13688Implemented support to store a value to an Index() on a String object.
13689This
13690is an ACPI 2.0 feature that had not yet been implemented.
13691
13692Implemented new behavior for storing objects to individual package
13693elements
13694(via the Index() operator). The previous behavior was to invoke the
13695implicit
13696conversion rules if an object was already present at the index.  The new
13697behavior is to simply delete any existing object and directly store the
13698new
13699object. Although the ACPI specification seems unclear on this subject,
13700other
13701ACPI implementations behave in this manner.  (This is the root of the
13702AE_BAD_HEX_CONSTANT issue.)
13703
13704Modified the RSDP memory scan mechanism to support the extended checksum
13705for
13706ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13707RSDP signature is found with a valid checksum.
13708
13709Code and Data Size: Current and previous core subsystem library sizes are
13710shown below. These are the code and data sizes for the acpica.lib
13711produced
13712by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13713any ACPI driver or OSPM code. The debug version of the code includes the
13714debug output trace mechanism and has a much larger code and data size.
13715Note
13716that these values will vary depending on the efficiency of the compiler
13717and
13718the compiler options used during generation.
13719
13720  Previous Release:
13721    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13722    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13723  Current Release:
13724    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13725    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13726
13727
137282) iASL Compiler/Disassembler:
13729
13730Fixed a missing semicolon in the aslcompiler.y file.
13731
13732----------------------------------------
1373305 November 2004.  Summary of changes for version 20041105:
13734
137351) ACPI CA Core Subsystem:
13736
13737Implemented support for FADT revision 2.  This was an interim table
13738(between
13739ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13740
13741Implemented optional support to allow uninitialized LocalX and ArgX
13742variables in a control method.  The variables are initialized to an
13743Integer
13744object with a value of zero.  This support is enabled by setting the
13745AcpiGbl_EnableInterpreterSlack flag to TRUE.
13746
13747Implemented support for Integer objects for the SizeOf operator.  Either
137484
13749or 8 is returned, depending on the current integer size (32-bit or 64-
13750bit,
13751depending on the parent table revision).
13752
13753Fixed a problem in the implementation of the SizeOf and ObjectType
13754operators
13755where the operand was resolved to a value too early, causing incorrect
13756return values for some objects.
13757
13758Fixed some possible memory leaks during exceptional conditions.
13759
13760Code and Data Size: Current and previous core subsystem library sizes are
13761shown below. These are the code and data sizes for the acpica.lib
13762produced
13763by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13764any ACPI driver or OSPM code. The debug version of the code includes the
13765debug output trace mechanism and has a much larger code and data size.
13766Note
13767that these values will vary depending on the efficiency of the compiler
13768and
13769the compiler options used during generation.
13770
13771  Previous Release:
13772    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13773    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13774  Current Release:
13775    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
13776    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
13777
13778
137792) iASL Compiler/Disassembler:
13780
13781Implemented support for all ACPI 3.0 reserved names and methods.
13782
13783Implemented all ACPI 3.0 grammar elements in the front-end, including
13784support for semicolons.
13785
13786Implemented the ACPI 3.0 Function() and ToUUID() macros
13787
13788Fixed a problem in the disassembler where a Scope() operator would not be
13789emitted properly if the target of the scope was in another table.
13790
13791----------------------------------------
1379215 October 2004.  Summary of changes for version 20041015:
13793
13794Note:  ACPI CA is currently undergoing an in-depth and complete formal
13795evaluation to test/verify the following areas. Other suggestions are
13796welcome. This will result in an increase in the frequency of releases and
13797the number of bug fixes in the next few months.
13798  - Functional tests for all ASL/AML operators
13799  - All implicit/explicit type conversions
13800  - Bit fields and operation regions
13801  - 64-bit math support and 32-bit-only "truncated" math support
13802  - Exceptional conditions, both compiler and interpreter
13803  - Dynamic object deletion and memory leaks
13804  - ACPI 3.0 support when implemented
13805  - External interfaces to the ACPI subsystem
13806
13807
138081) ACPI CA Core Subsystem:
13809
13810Fixed two alignment issues on 64-bit platforms - within debug statements
13811in
13812AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13813Address
13814field within the non-aligned ACPI generic address structure.
13815
13816Fixed a problem in the Increment and Decrement operators where incorrect
13817operand resolution could result in the inadvertent modification of the
13818original integer when the integer is passed into another method as an
13819argument and the arg is then incremented/decremented.
13820
13821Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13822bit
13823BCD number were truncated during conversion.
13824
13825Fixed a problem in the ToDecimal operator where the length of the
13826resulting
13827string could be set incorrectly too long if the input operand was a
13828Buffer
13829object.
13830
13831Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13832(0)
13833within a buffer would prematurely terminate a compare between buffer
13834objects.
13835
13836Added a check for string overflow (>200 characters as per the ACPI
13837specification) during the Concatenate operator with two string operands.
13838
13839Code and Data Size: Current and previous core subsystem library sizes are
13840shown below. These are the code and data sizes for the acpica.lib
13841produced
13842by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13843any ACPI driver or OSPM code. The debug version of the code includes the
13844debug output trace mechanism and has a much larger code and data size.
13845Note
13846that these values will vary depending on the efficiency of the compiler
13847and
13848the compiler options used during generation.
13849
13850  Previous Release:
13851    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13852    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13853  Current Release:
13854    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
13855    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
13856
13857
13858
138592) iASL Compiler/Disassembler:
13860
13861Allow the use of the ObjectType operator on uninitialized Locals and Args
13862(returns 0 as per the ACPI specification).
13863
13864Fixed a problem where the compiler would fault if there was a syntax
13865error
13866in the FieldName of all of the various CreateXXXField operators.
13867
13868Disallow the use of lower case letters within the EISAID macro, as per
13869the
13870ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
13871Where
13872U is an uppercase letter and N is a hex digit.
13873
13874
13875----------------------------------------
1387606 October 2004.  Summary of changes for version 20041006:
13877
138781) ACPI CA Core Subsystem:
13879
13880Implemented support for the ACPI 3.0 Timer operator. This ASL function
13881implements a 64-bit timer with 100 nanosecond granularity.
13882
13883Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
13884implement the ACPI 3.0 Timer operator.  This allows the host OS to
13885implement
13886the timer with the best clock available. Also, it keeps the core
13887subsystem
13888out of the clock handling business, since the host OS (usually) performs
13889this function.
13890
13891Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
13892functions use a 64-bit address which is part of the packed ACPI Generic
13893Address Structure. Since the structure is non-aligned, the alignment
13894macros
13895are now used to extract the address to a local variable before use.
13896
13897Fixed a problem where the ToInteger operator assumed all input strings
13898were
13899hexadecimal. The operator now handles both decimal strings and hex
13900strings
13901(prefixed with "0x").
13902
13903Fixed a problem where the string length in the string object created as a
13904result of the internal ConvertToString procedure could be incorrect. This
13905potentially affected all implicit conversions and also the
13906ToDecimalString
13907and ToHexString operators.
13908
13909Fixed two problems in the ToString operator. If the length parameter was
13910zero, an incorrect string object was created and the value of the input
13911length parameter was inadvertently changed from zero to Ones.
13912
13913Fixed a problem where the optional ResourceSource string in the
13914ExtendedIRQ
13915resource macro was ignored.
13916
13917Simplified the interfaces to the internal division functions, reducing
13918code
13919size and complexity.
13920
13921Code and Data Size: Current and previous core subsystem library sizes are
13922shown below. These are the code and data sizes for the acpica.lib
13923produced
13924by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13925any ACPI driver or OSPM code. The debug version of the code includes the
13926debug output trace mechanism and has a much larger code and data size.
13927Note
13928that these values will vary depending on the efficiency of the compiler
13929and
13930the compiler options used during generation.
13931
13932  Previous Release:
13933    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
13934    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
13935  Current Release:
13936    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
13937    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
13938
13939
139402) iASL Compiler/Disassembler:
13941
13942Implemented support for the ACPI 3.0 Timer operator.
13943
13944Fixed a problem where the Default() operator was inadvertently ignored in
13945a
13946Switch/Case block.  This was a problem in the translation of the Switch
13947statement to If...Else pairs.
13948
13949Added support to allow a standalone Return operator, with no parentheses
13950(or
13951operands).
13952
13953Fixed a problem with code generation for the ElseIf operator where the
13954translated Else...If parse tree was improperly constructed leading to the
13955loss of some code.
13956
13957----------------------------------------
1395822 September 2004.  Summary of changes for version 20040922:
13959
139601) ACPI CA Core Subsystem:
13961
13962Fixed a problem with the implementation of the LNot() operator where
13963"Ones"
13964was not returned for the TRUE case. Changed the code to return Ones
13965instead
13966of (!Arg) which was usually 1. This change affects iASL constant folding
13967for
13968this operator also.
13969
13970Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
13971not
13972initialized properly -- Now zero the entire buffer in this case where the
13973buffer already exists.
13974
13975Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
13976Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
13977related code considerably. This will require changes/updates to all OS
13978interface layers (OSLs.)
13979
13980Implemented a new external interface, AcpiInstallExceptionHandler, to
13981allow
13982a system exception handler to be installed. This handler is invoked upon
13983any
13984run-time exception that occurs during control method execution.
13985
13986Added support for the DSDT in AcpiTbFindTable. This allows the
13987DataTableRegion() operator to access the local copy of the DSDT.
13988
13989Code and Data Size: Current and previous core subsystem library sizes are
13990shown below. These are the code and data sizes for the acpica.lib
13991produced
13992by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13993any ACPI driver or OSPM code. The debug version of the code includes the
13994debug output trace mechanism and has a much larger code and data size.
13995Note
13996that these values will vary depending on the efficiency of the compiler
13997and
13998the compiler options used during generation.
13999
14000  Previous Release:
14001    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14002    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14003  Current Release:
14004    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14005    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14006
14007
140082) iASL Compiler/Disassembler:
14009
14010Fixed a problem with constant folding and the LNot operator. LNot was
14011returning 1 in the TRUE case, not Ones as per the ACPI specification.
14012This
14013could result in the generation of an incorrect folded/reduced constant.
14014
14015End-Of-File is now allowed within a "//"-style comment.  A parse error no
14016longer occurs if such a comment is at the very end of the input ASL
14017source
14018file.
14019
14020Implemented the "-r" option to override the Revision in the table header.
14021The initial use of this option will be to simplify the evaluation of the
14022AML
14023interpreter by allowing a single ASL source module to be compiled for
14024either
1402532-bit or 64-bit integers.
14026
14027
14028----------------------------------------
1402927 August 2004.  Summary of changes for version 20040827:
14030
140311) ACPI CA Core Subsystem:
14032
14033- Implemented support for implicit object conversion in the non-numeric
14034logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14035and
14036LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
14037the second operand is implicitly converted on the fly to match the type
14038of
14039the first operand.  For example:
14040
14041    LEqual (Source1, Source2)
14042
14043Source1 and Source2 must each evaluate to an integer, a string, or a
14044buffer.
14045The data type of Source1 dictates the required type of Source2. Source2
14046is
14047implicitly converted if necessary to match the type of Source1.
14048
14049- Updated and corrected the behavior of the string conversion support.
14050The
14051rules concerning conversion of buffers to strings (according to the ACPI
14052specification) are as follows:
14053
14054ToDecimalString - explicit byte-wise conversion of buffer to string of
14055decimal values (0-255) separated by commas. ToHexString - explicit byte-
14056wise
14057conversion of buffer to string of hex values (0-FF) separated by commas.
14058ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
14059byte
14060copy with no transform except NULL terminated. Any other implicit buffer-
14061to-
14062string conversion - byte-wise conversion of buffer to string of hex
14063values
14064(0-FF) separated by spaces.
14065
14066- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14067
14068- Fixed a problem in AcpiNsGetPathnameLength where the returned length
14069was
14070one byte too short in the case of a node in the root scope.  This could
14071cause a fault during debug output.
14072
14073- Code and Data Size: Current and previous core subsystem library sizes
14074are
14075shown below.  These are the code and data sizes for the acpica.lib
14076produced
14077by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14078any ACPI driver or OSPM code.  The debug version of the code includes the
14079debug output trace mechanism and has a much larger code and data size.
14080Note
14081that these values will vary depending on the efficiency of the compiler
14082and
14083the compiler options used during generation.
14084
14085  Previous Release:
14086    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14087    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14088  Current Release:
14089    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14090    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14091
14092
140932) iASL Compiler/Disassembler:
14094
14095- Fixed a Linux generation error.
14096
14097
14098----------------------------------------
1409916 August 2004.  Summary of changes for version 20040816:
14100
141011) ACPI CA Core Subsystem:
14102
14103Designed and implemented support within the AML interpreter for the so-
14104called "implicit return".  This support returns the result of the last
14105ASL
14106operation within a control method, in the absence of an explicit Return()
14107operator.  A few machines depend on this behavior, even though it is not
14108explicitly supported by the ASL language.  It is optional support that
14109can
14110be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
14111
14112Removed support for the PCI_Config address space from the internal low
14113level
14114hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
14115support was not used internally, and would not work correctly anyway
14116because
14117the PCI bus number and segment number were not supported.  There are
14118separate interfaces for PCI configuration space access because of the
14119unique
14120interface.
14121
14122Code and Data Size: Current and previous core subsystem library sizes are
14123shown below.  These are the code and data sizes for the acpica.lib
14124produced
14125by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14126any ACPI driver or OSPM code.  The debug version of the code includes the
14127debug output trace mechanism and has a much larger code and data size.
14128Note
14129that these values will vary depending on the efficiency of the compiler
14130and
14131the compiler options used during generation.
14132
14133  Previous Release:
14134    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14135    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14136  Current Release:
14137    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14138    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14139
14140
141412) iASL Compiler/Disassembler:
14142
14143Fixed a problem where constants in ASL expressions at the root level (not
14144within a control method) could be inadvertently truncated during code
14145generation.  This problem was introduced in the 20040715 release.
14146
14147
14148----------------------------------------
1414915 July 2004.  Summary of changes for version 20040715:
14150
141511) ACPI CA Core Subsystem:
14152
14153Restructured the internal HW GPE interfaces to pass/track the current
14154state
14155of interrupts (enabled/disabled) in order to avoid possible deadlock and
14156increase flexibility of the interfaces.
14157
14158Implemented a "lexicographical compare" for String and Buffer objects
14159within
14160the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14161-
14162as per further clarification to the ACPI specification.  Behavior is
14163similar
14164to C library "strcmp".
14165
14166Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14167external function.  In the 32-bit non-debug case, the stack use has been
14168reduced from 168 bytes to 32 bytes.
14169
14170Deployed a new run-time configuration flag,
14171AcpiGbl_EnableInterpreterSlack,
14172whose purpose is to allow the AML interpreter to forgive certain bad AML
14173constructs.  Default setting is FALSE.
14174
14175Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14176IO
14177support code.  If enabled, it allows field access to go beyond the end of
14178a
14179region definition if the field is within the region length rounded up to
14180the
14181next access width boundary (a common coding error.)
14182
14183Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14184ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
14185these
14186symbols are lowercase by the latest version of the AcpiSrc tool.
14187
14188The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14189rename "Register" to simply "Reg" to prevent certain compilers from
14190complaining.
14191
14192Code and Data Size: Current and previous core subsystem library sizes are
14193shown below.  These are the code and data sizes for the acpica.lib
14194produced
14195by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14196any ACPI driver or OSPM code.  The debug version of the code includes the
14197debug output trace mechanism and has a much larger code and data size.
14198Note
14199that these values will vary depending on the efficiency of the compiler
14200and
14201the compiler options used during generation.
14202
14203  Previous Release:
14204    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14205    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14206  Current Release:
14207    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14208    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
14209
14210
142112) iASL Compiler/Disassembler:
14212
14213Implemented full support for Package objects within the Case() operator.
14214Note: The Break() operator is currently not supported within Case blocks
14215(TermLists) as there is some question about backward compatibility with
14216ACPI
142171.0 interpreters.
14218
14219
14220Fixed a problem where complex terms were not supported properly within
14221the
14222Switch() operator.
14223
14224Eliminated extraneous warning for compiler-emitted reserved names of the
14225form "_T_x".  (Used in Switch/Case operators.)
14226
14227Eliminated optimization messages for "_T_x" objects and small constants
14228within the DefinitionBlock operator.
14229
14230
14231----------------------------------------
1423215 June 2004.  Summary of changes for version 20040615:
14233
142341) ACPI CA Core Subsystem:
14235
14236Implemented support for Buffer and String objects (as per ACPI 2.0) for
14237the
14238following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14239LLessEqual.
14240
14241All directory names in the entire source package are lower case, as they
14242were in earlier releases.
14243
14244Implemented "Disassemble" command in the AML debugger that will
14245disassemble
14246a single control method.
14247
14248Code and Data Size: Current and previous core subsystem library sizes are
14249shown below.  These are the code and data sizes for the acpica.lib
14250produced
14251by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14252any ACPI driver or OSPM code.  The debug version of the code includes the
14253debug output trace mechanism and has a much larger code and data size.
14254Note
14255that these values will vary depending on the efficiency of the compiler
14256and
14257the compiler options used during generation.
14258
14259  Previous Release:
14260    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14261    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14262
14263  Current Release:
14264    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14265    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
14266
14267
142682) iASL Compiler/Disassembler:
14269
14270Implemented support for Buffer and String objects (as per ACPI 2.0) for
14271the
14272following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
14273LLessEqual.
14274
14275All directory names in the entire source package are lower case, as they
14276were in earlier releases.
14277
14278Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14279not found.
14280
14281Fixed an issue with the Windows version of the compiler where later
14282versions
14283of Windows place the FADT in the registry under the name "FADT" and not
14284"FACP" as earlier versions did.  This applies when using the -g or -
14285d<nofilename> options.  The compiler now looks for both strings as
14286necessary.
14287
14288Fixed a problem with compiler namepath optimization where a namepath
14289within
14290the Scope() operator could not be optimized if the namepath was a subpath
14291of
14292the current scope path.
14293
14294----------------------------------------
1429527 May 2004.  Summary of changes for version 20040527:
14296
142971) ACPI CA Core Subsystem:
14298
14299Completed a new design and implementation for EBDA (Extended BIOS Data
14300Area)
14301support in the RSDP scan code.  The original code improperly scanned for
14302the
14303EBDA by simply scanning from memory location 0 to 0x400.  The correct
14304method
14305is to first obtain the EBDA pointer from within the BIOS data area, then
14306scan 1K of memory starting at the EBDA pointer.  There appear to be few
14307if
14308any machines that place the RSDP in the EBDA, however.
14309
14310Integrated a fix for a possible fault during evaluation of BufferField
14311arguments.  Obsolete code that was causing the problem was removed.
14312
14313Found and fixed a problem in the Field Support Code where data could be
14314corrupted on a bit field read that starts on an aligned boundary but does
14315not end on an aligned boundary.  Merged the read/write "datum length"
14316calculation code into a common procedure.
14317
14318Rolled in a couple of changes to the FreeBSD-specific header.
14319
14320
14321Code and Data Size: Current and previous core subsystem library sizes are
14322shown below.  These are the code and data sizes for the acpica.lib
14323produced
14324by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14325any ACPI driver or OSPM code.  The debug version of the code includes the
14326debug output trace mechanism and has a much larger code and data size.
14327Note
14328that these values will vary depending on the efficiency of the compiler
14329and
14330the compiler options used during generation.
14331
14332  Previous Release:
14333    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14334    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14335  Current Release:
14336    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
14337    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
14338
14339
143402) iASL Compiler/Disassembler:
14341
14342Fixed a generation warning produced by some overly-verbose compilers for
14343a
1434464-bit constant.
14345
14346----------------------------------------
1434714 May 2004.  Summary of changes for version 20040514:
14348
143491) ACPI CA Core Subsystem:
14350
14351Fixed a problem where hardware GPE enable bits sometimes not set properly
14352during and after GPE method execution.  Result of 04/27 changes.
14353
14354Removed extra "clear all GPEs" when sleeping/waking.
14355
14356Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14357AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14358to
14359the new AcpiEv* calls as appropriate.
14360
14361ACPI_OS_NAME was removed from the OS-specific headers.  The default name
14362is
14363now "Microsoft Windows NT" for maximum compatibility.  However this can
14364be
14365changed by modifying the acconfig.h file.
14366
14367Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14368traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
14369
14370Run _INI methods on ThermalZone objects.  This is against the ACPI
14371specification, but there is apparently ASL code in the field that has
14372these
14373_INI methods, and apparently "other" AML interpreters execute them.
14374
14375Performed a full 16/32/64 bit lint that resulted in some small changes.
14376
14377Added a sleep simulation command to the AML debugger to test sleep code.
14378
14379Code and Data Size: Current and previous core subsystem library sizes are
14380shown below.  These are the code and data sizes for the acpica.lib
14381produced
14382by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14383any ACPI driver or OSPM code.  The debug version of the code includes the
14384debug output trace mechanism and has a much larger code and data size.
14385Note
14386that these values will vary depending on the efficiency of the compiler
14387and
14388the compiler options used during generation.
14389
14390  Previous Release:
14391    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14392    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14393  Current Release:
14394    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14395    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
14396
14397----------------------------------------
1439827 April 2004.  Summary of changes for version 20040427:
14399
144001) ACPI CA Core Subsystem:
14401
14402Completed a major overhaul of the GPE handling within ACPI CA.  There are
14403now three types of GPEs:  wake-only, runtime-only, and combination
14404wake/run.
14405The only GPEs allowed to be combination wake/run are for button-style
14406devices such as a control-method power button, control-method sleep
14407button,
14408or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
14409not
14410referenced by any _PRW methods are marked for "runtime" and hardware
14411enabled.  Any GPE that is referenced by a _PRW method is marked for
14412"wake"
14413(and disabled at runtime).  However, at sleep time, only those GPEs that
14414have been specifically enabled for wake via the AcpiEnableGpe interface
14415will
14416actually be hardware enabled.
14417
14418A new external interface has been added, AcpiSetGpeType(), that is meant
14419to
14420be used by device drivers to force a GPE to a particular type.  It will
14421be
14422especially useful for the drivers for the button devices mentioned above.
14423
14424Completed restructuring of the ACPI CA initialization sequence so that
14425default operation region handlers are installed before GPEs are
14426initialized
14427and the _PRW methods are executed.  This will prevent errors when the
14428_PRW
14429methods attempt to access system memory or I/O space.
14430
14431GPE enable/disable no longer reads the GPE enable register.  We now keep
14432the
14433enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
14434thus no longer depend on the hardware to maintain these bits.
14435
14436Always clear the wake status and fixed/GPE status bits before sleep, even
14437for state S5.
14438
14439Improved the AML debugger output for displaying the GPE blocks and their
14440current status.
14441
14442Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14443where
14444x = 0,1,2,3,4.
14445
14446Fixed a problem where the physical address was incorrectly calculated
14447when
14448the Load() operator was used to directly load from an Operation Region
14449(vs.
14450loading from a Field object.)  Also added check for minimum table length
14451for
14452this case.
14453
14454Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
14455mutex release.
14456
14457Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14458consistency with the other fields returned.
14459
14460Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
14461structure for each GPE in the system, so the size of this structure is
14462important.
14463
14464CPU stack requirement reduction:  Cleaned up the method execution and
14465object
14466evaluation paths so that now a parameter structure is passed, instead of
14467copying the various method parameters over and over again.
14468
14469In evregion.c:  Correctly exit and reenter the interpreter region if and
14470only if dispatching an operation region request to a user-installed
14471handler.
14472Do not exit/reenter when dispatching to a default handler (e.g., default
14473system memory or I/O handlers)
14474
14475
14476Notes for updating drivers for the new GPE support.  The following
14477changes
14478must be made to ACPI-related device drivers that are attached to one or
14479more
14480GPEs: (This information will be added to the ACPI CA Programmer
14481Reference.)
14482
144831) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14484must
14485explicitly call AcpiEnableGpe.
144862) There is a new interface called AcpiSetGpeType. This should be called
14487before enabling the GPE.  Also, this interface will automatically disable
14488the GPE if it is currently enabled.
144893) AcpiEnableGpe no longer supports a GPE type flag.
14490
14491Specific drivers that must be changed:
144921) EC driver:
14493    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14494AeGpeHandler, NULL);
14495    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14496    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14497
144982) Button Drivers (Power, Lid, Sleep):
14499Run _PRW method under parent device
14500If _PRW exists: /* This is a control-method button */
14501    Extract GPE number and possibly GpeDevice
14502    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14503    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14504
14505For all other devices that have _PRWs, we automatically set the GPE type
14506to
14507ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14508This
14509must be done on a selective basis, usually requiring some kind of user
14510app
14511to allow the user to pick the wake devices.
14512
14513
14514Code and Data Size: Current and previous core subsystem library sizes are
14515shown below.  These are the code and data sizes for the acpica.lib
14516produced
14517by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14518any ACPI driver or OSPM code.  The debug version of the code includes the
14519debug output trace mechanism and has a much larger code and data size.
14520Note
14521that these values will vary depending on the efficiency of the compiler
14522and
14523the compiler options used during generation.
14524
14525  Previous Release:
14526    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14527    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14528  Current Release:
14529
14530    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
14531    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
14532
14533
14534
14535----------------------------------------
1453602 April 2004.  Summary of changes for version 20040402:
14537
145381) ACPI CA Core Subsystem:
14539
14540Fixed an interpreter problem where an indirect store through an ArgX
14541parameter was incorrectly applying the "implicit conversion rules" during
14542the store.  From the ACPI specification: "If the target is a method local
14543or
14544argument (LocalX or ArgX), no conversion is performed and the result is
14545stored directly to the target".  The new behavior is to disable implicit
14546conversion during ALL stores to an ArgX.
14547
14548Changed the behavior of the _PRW method scan to ignore any and all errors
14549returned by a given _PRW.  This prevents the scan from aborting from the
14550failure of any single _PRW.
14551
14552Moved the runtime configuration parameters from the global init procedure
14553to
14554static variables in acglobal.h.  This will allow the host to override the
14555default values easily.
14556
14557Code and Data Size: Current and previous core subsystem library sizes are
14558shown below.  These are the code and data sizes for the acpica.lib
14559produced
14560by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14561any ACPI driver or OSPM code.  The debug version of the code includes the
14562debug output trace mechanism and has a much larger code and data size.
14563Note
14564that these values will vary depending on the efficiency of the compiler
14565and
14566the compiler options used during generation.
14567
14568  Previous Release:
14569    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14570    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14571  Current Release:
14572    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
14573    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
14574
14575
145762) iASL Compiler/Disassembler:
14577
14578iASL now fully disassembles SSDTs.  However, External() statements are
14579not
14580generated automatically for unresolved symbols at this time.  This is a
14581planned feature for future implementation.
14582
14583Fixed a scoping problem in the disassembler that occurs when the type of
14584the
14585target of a Scope() operator is overridden.  This problem caused an
14586incorrectly nested internal namespace to be constructed.
14587
14588Any warnings or errors that are emitted during disassembly are now
14589commented
14590out automatically so that the resulting file can be recompiled without
14591any
14592hand editing.
14593
14594----------------------------------------
1459526 March 2004.  Summary of changes for version 20040326:
14596
145971) ACPI CA Core Subsystem:
14598
14599Implemented support for "wake" GPEs via interaction between GPEs and the
14600_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
14601identified as a WAKE GPE and by default will no longer be enabled at
14602runtime.  Previously, we were blindly enabling all GPEs with a
14603corresponding
14604_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14605We
14606believe this has been the cause of thousands of "spurious" GPEs on some
14607systems.
14608
14609This new GPE behavior is can be reverted to the original behavior (enable
14610ALL GPEs at runtime) via a runtime flag.
14611
14612Fixed a problem where aliased control methods could not access objects
14613properly.  The proper scope within the namespace was not initialized
14614(transferred to the target of the aliased method) before executing the
14615target method.
14616
14617Fixed a potential race condition on internal object deletion on the
14618return
14619object in AcpiEvaluateObject.
14620
14621Integrated a fix for resource descriptors where both _MEM and _MTP were
14622being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
14623wide, 0x0F instead of 0x03.)
14624
14625Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14626preventing
14627a
14628fault in some cases.
14629
14630Updated Notify() values for debug statements in evmisc.c
14631
14632Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14633
14634Code and Data Size: Current and previous core subsystem library sizes are
14635shown below.  These are the code and data sizes for the acpica.lib
14636produced
14637by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14638any ACPI driver or OSPM code.  The debug version of the code includes the
14639debug output trace mechanism and has a much larger code and data size.
14640Note
14641that these values will vary depending on the efficiency of the compiler
14642and
14643the compiler options used during generation.
14644
14645  Previous Release:
14646
14647    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14648    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14649  Current Release:
14650    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
14651    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
14652
14653----------------------------------------
1465411 March 2004.  Summary of changes for version 20040311:
14655
146561) ACPI CA Core Subsystem:
14657
14658Fixed a problem where errors occurring during the parse phase of control
14659method execution did not abort cleanly.  For example, objects created and
14660installed in the namespace were not deleted.  This caused all subsequent
14661invocations of the method to return the AE_ALREADY_EXISTS exception.
14662
14663Implemented a mechanism to force a control method to "Serialized"
14664execution
14665if the method attempts to create namespace objects. (The root of the
14666AE_ALREADY_EXISTS problem.)
14667
14668Implemented support for the predefined _OSI "internal" control method.
14669Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14670and
14671"Windows 2001.1", and can be easily upgraded for new strings as
14672necessary.
14673This feature will allow "other" operating systems to execute the fully
14674tested, "Windows" code path through the ASL code
14675
14676Global Lock Support:  Now allows multiple acquires and releases with any
14677internal thread.  Removed concept of "owning thread" for this special
14678mutex.
14679
14680Fixed two functions that were inappropriately declaring large objects on
14681the
14682CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
14683during
14684method execution considerably.
14685
14686Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14687S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14688
14689Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14690defined on the machine.
14691
14692Implemented two runtime options:  One to force all control method
14693execution
14694to "Serialized" to mimic Windows behavior, another to disable _OSI
14695support
14696if it causes problems on a given machine.
14697
14698Code and Data Size: Current and previous core subsystem library sizes are
14699shown below.  These are the code and data sizes for the acpica.lib
14700produced
14701by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14702any ACPI driver or OSPM code.  The debug version of the code includes the
14703debug output trace mechanism and has a much larger code and data size.
14704Note
14705that these values will vary depending on the efficiency of the compiler
14706and
14707the compiler options used during generation.
14708
14709  Previous Release:
14710    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14711    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14712  Current Release:
14713    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
14714    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
14715
147162) iASL Compiler/Disassembler:
14717
14718Fixed an array size problem for FreeBSD that would cause the compiler to
14719fault.
14720
14721----------------------------------------
1472220 February 2004.  Summary of changes for version 20040220:
14723
14724
147251) ACPI CA Core Subsystem:
14726
14727Implemented execution of _SxD methods for Device objects in the
14728GetObjectInfo interface.
14729
14730Fixed calls to _SST method to pass the correct arguments.
14731
14732Added a call to _SST on wake to restore to "working" state.
14733
14734Check for End-Of-Buffer failure case in the WalkResources interface.
14735
14736Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14737structures to the beginning of the file.
14738
14739After wake, clear GPE status register(s) before enabling GPEs.
14740
14741After wake, clear/enable power button.  (Perhaps we should clear/enable
14742all
14743fixed events upon wake.)
14744
14745Fixed a couple of possible memory leaks in the Namespace manager.
14746
14747Integrated latest acnetbsd.h file.
14748
14749----------------------------------------
1475011 February 2004.  Summary of changes for version 20040211:
14751
14752
147531) ACPI CA Core Subsystem:
14754
14755Completed investigation and implementation of the call-by-reference
14756mechanism for control method arguments.
14757
14758Fixed a problem where a store of an object into an indexed package could
14759fail if the store occurs within a different method than the method that
14760created the package.
14761
14762Fixed a problem where the ToDecimal operator could return incorrect
14763results.
14764
14765Fixed a problem where the CopyObject operator could fail on some of the
14766more
14767obscure objects (e.g., Reference objects.)
14768
14769Improved the output of the Debug object to display buffer, package, and
14770index objects.
14771
14772Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14773return
14774the expected result.
14775
14776Added permanent ACPI_REPORT_ERROR macros for all instances of the
14777ACPI_AML_INTERNAL exception.
14778
14779Integrated latest version of acfreebsd.h
14780
14781----------------------------------------
1478216 January 2004.  Summary of changes for version 20040116:
14783
14784The purpose of this release is primarily to update the copyright years in
14785each module, thus causing a huge number of diffs.  There are a few small
14786functional changes, however.
14787
147881) ACPI CA Core Subsystem:
14789
14790Improved error messages when there is a problem finding one or more of
14791the
14792required base ACPI tables
14793
14794Reintroduced the definition of APIC_HEADER in actbl.h
14795
14796Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14797
14798Removed extraneous reference to NewObj in dsmthdat.c
14799
148002) iASL compiler
14801
14802Fixed a problem introduced in December that disabled the correct
14803disassembly
14804of Resource Templates
14805
14806
14807----------------------------------------
1480803 December 2003.  Summary of changes for version 20031203:
14809
148101) ACPI CA Core Subsystem:
14811
14812Changed the initialization of Operation Regions during subsystem
14813init to perform two entire walks of the ACPI namespace; The first
14814to initialize the regions themselves, the second to execute the
14815_REG methods.  This fixed some interdependencies across _REG
14816methods found on some machines.
14817
14818Fixed a problem where a Store(Local0, Local1) could simply update
14819the object reference count, and not create a new copy of the
14820object if the Local1 is uninitialized.
14821
14822Implemented support for the _SST reserved method during sleep
14823transitions.
14824
14825Implemented support to clear the SLP_TYP and SLP_EN bits when
14826waking up, this is apparently required by some machines.
14827
14828When sleeping, clear the wake status only if SleepState is not S5.
14829
14830Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14831pointer arithmetic advanced a string pointer too far.
14832
14833Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14834could be returned if the requested table has not been loaded.
14835
14836Within the support for IRQ resources, restructured the handling of
14837the active and edge/level bits.
14838
14839Fixed a few problems in AcpiPsxExecute() where memory could be
14840leaked under certain error conditions.
14841
14842Improved error messages for the cases where the ACPI mode could
14843not be entered.
14844
14845Code and Data Size: Current and previous core subsystem library
14846sizes are shown below.  These are the code and data sizes for the
14847acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14848these values do not include any ACPI driver or OSPM code.  The
14849debug version of the code includes the debug output trace
14850mechanism and has a much larger code and data size.  Note that
14851these values will vary depending on the efficiency of the compiler
14852and the compiler options used during generation.
14853
14854  Previous Release (20031029):
14855    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14856    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14857  Current Release:
14858    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
14859    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
14860
148612) iASL Compiler/Disassembler:
14862
14863Implemented a fix for the iASL disassembler where a bad index was
14864generated.  This was most noticeable on 64-bit platforms
14865
14866
14867----------------------------------------
1486829 October 2003.  Summary of changes for version 20031029:
14869
148701) ACPI CA Core Subsystem:
14871
14872
14873Fixed a problem where a level-triggered GPE with an associated
14874_Lxx control method was incorrectly cleared twice.
14875
14876Fixed a problem with the Field support code where an access can
14877occur beyond the end-of-region if the field is non-aligned but
14878extends to the very end of the parent region (resulted in an
14879AE_AML_REGION_LIMIT exception.)
14880
14881Fixed a problem with ACPI Fixed Events where an RT Clock handler
14882would not get invoked on an RTC event.  The RTC event bitmasks for
14883the PM1 registers were not being initialized properly.
14884
14885Implemented support for executing _STA and _INI methods for
14886Processor objects.  Although this is currently not part of the
14887ACPI specification, there is existing ASL code that depends on the
14888init-time execution of these methods.
14889
14890Implemented and deployed a GetDescriptorName function to decode
14891the various types of internal descriptors.  Guards against null
14892descriptors during debug output also.
14893
14894Implemented and deployed a GetNodeName function to extract the 4-
14895character namespace node name.  This function simplifies the debug
14896and error output, as well as guarding against null pointers during
14897output.
14898
14899Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
14900simplify the debug and error output of 64-bit integers.  This
14901macro replaces the HIDWORD and LODWORD macros for dumping these
14902integers.
14903
14904Updated the implementation of the Stall() operator to only call
14905AcpiOsStall(), and also return an error if the operand is larger
14906than 255.  This preserves the required behavior of not
14907relinquishing the processor, as would happen if AcpiOsSleep() was
14908called for "long stalls".
14909
14910Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
14911initialized are now treated as NOOPs.
14912
14913Cleaned up a handful of warnings during 64-bit generation.
14914
14915Fixed a reported error where and incorrect GPE number was passed
14916to the GPE dispatch handler.  This value is only used for error
14917output, however.  Used this opportunity to clean up and streamline
14918the GPE dispatch code.
14919
14920Code and Data Size: Current and previous core subsystem library
14921sizes are shown below.  These are the code and data sizes for the
14922acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14923these values do not include any ACPI driver or OSPM code.  The
14924
14925debug version of the code includes the debug output trace
14926mechanism and has a much larger code and data size.  Note that
14927these values will vary depending on the efficiency of the compiler
14928and the compiler options used during generation.
14929
14930  Previous Release (20031002):
14931    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14932    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14933  Current Release:
14934    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
14935    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
14936
14937
149382) iASL Compiler/Disassembler:
14939
14940Updated the iASL compiler to return an error if the operand to the
14941Stall() operator is larger than 255.
14942
14943
14944----------------------------------------
1494502 October 2003.  Summary of changes for version 20031002:
14946
14947
149481) ACPI CA Core Subsystem:
14949
14950Fixed a problem with Index Fields where the index was not
14951incremented for fields that require multiple writes to the
14952index/data registers (Fields that are wider than the data
14953register.)
14954
14955Fixed a problem with all Field objects where a write could go
14956beyond the end-of-field if the field was larger than the access
14957granularity and therefore required multiple writes to complete the
14958request.  An extra write beyond the end of the field could happen
14959inadvertently.
14960
14961Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
14962would incorrectly be returned if the width of the Data Register
14963was larger than the specified field access width.
14964
14965Completed fixes for LoadTable() and Unload() and verified their
14966operation.  Implemented full support for the "DdbHandle" object
14967throughout the ACPI CA subsystem.
14968
14969Implemented full support for the MADT and ECDT tables in the ACPI
14970CA header files.  Even though these tables are not directly
14971consumed by ACPI CA, the header definitions are useful for ACPI
14972device drivers.
14973
14974Integrated resource descriptor fixes posted to the Linux ACPI
14975list.  This included checks for minimum descriptor length, and
14976support for trailing NULL strings within descriptors that have
14977optional string elements.
14978
14979Code and Data Size: Current and previous core subsystem library
14980sizes are shown below.  These are the code and data sizes for the
14981acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14982these values do not include any ACPI driver or OSPM code.  The
14983debug version of the code includes the debug output trace
14984mechanism and has a much larger code and data size.  Note that
14985these values will vary depending on the efficiency of the compiler
14986and the compiler options used during generation.
14987
14988  Previous Release (20030918):
14989    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
14990    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
14991  Current Release:
14992    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
14993    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
14994
14995
149962) iASL Compiler:
14997
14998Implemented detection of non-ASCII characters within the input
14999source ASL file.  This catches attempts to compile binary (AML)
15000files early in the compile, with an informative error message.
15001
15002Fixed a problem where the disassembler would fault if the output
15003filename could not be generated or if the output file could not be
15004opened.
15005
15006----------------------------------------
1500718 September 2003.  Summary of changes for version 20030918:
15008
15009
150101) ACPI CA Core Subsystem:
15011
15012Found and fixed a longstanding problem with the late execution of
15013the various deferred AML opcodes (such as Operation Regions,
15014Buffer Fields, Buffers, and Packages).  If the name string
15015specified for the name of the new object placed the object in a
15016scope other than the current scope, the initialization/execution
15017of the opcode failed.  The solution to this problem was to
15018implement a mechanism where the late execution of such opcodes
15019does not attempt to lookup/create the name a second time in an
15020incorrect scope.  This fixes the "region size computed
15021incorrectly" problem.
15022
15023Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15024Global Lock AE_BAD_PARAMETER error.
15025
15026Fixed several 64-bit issues with prototypes, casting and data
15027types.
15028
15029Removed duplicate prototype from acdisasm.h
15030
15031Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15032
15033Code and Data Size: Current and previous core subsystem library
15034sizes are shown below.  These are the code and data sizes for the
15035acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15036these values do not include any ACPI driver or OSPM code.  The
15037debug version of the code includes the debug output trace
15038mechanism and has a much larger code and data size.  Note that
15039these values will vary depending on the efficiency of the compiler
15040and the compiler options used during generation.
15041
15042  Previous Release:
15043
15044    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15045    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15046  Current Release:
15047    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15048    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15049
15050
150512) Linux:
15052
15053Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15054correct sleep time in seconds.
15055
15056----------------------------------------
1505714 July 2003.  Summary of changes for version 20030619:
15058
150591) ACPI CA Core Subsystem:
15060
15061Parse SSDTs in order discovered, as opposed to reverse order
15062(Hrvoje Habjanic)
15063
15064Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15065Klausner,
15066   Nate Lawson)
15067
15068
150692) Linux:
15070
15071Dynamically allocate SDT list (suggested by Andi Kleen)
15072
15073proc function return value cleanups (Andi Kleen)
15074
15075Correctly handle NMI watchdog during long stalls (Andrew Morton)
15076
15077Make it so acpismp=force works (reported by Andrew Morton)
15078
15079
15080----------------------------------------
1508119 June 2003.  Summary of changes for version 20030619:
15082
150831) ACPI CA Core Subsystem:
15084
15085Fix To/FromBCD, eliminating the need for an arch-specific #define.
15086
15087Do not acquire a semaphore in the S5 shutdown path.
15088
15089Fix ex_digits_needed for 0. (Takayoshi Kochi)
15090
15091Fix sleep/stall code reversal. (Andi Kleen)
15092
15093Revert a change having to do with control method calling
15094semantics.
15095
150962) Linux:
15097
15098acpiphp update (Takayoshi Kochi)
15099
15100Export acpi_disabled for sonypi (Stelian Pop)
15101
15102Mention acpismp=force in config help
15103
15104Re-add acpitable.c and acpismp=force. This improves backwards
15105
15106compatibility and also cleans up the code to a significant degree.
15107
15108Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
15109
15110----------------------------------------
1511122 May 2003.  Summary of changes for version 20030522:
15112
151131) ACPI CA Core Subsystem:
15114
15115Found and fixed a reported problem where an AE_NOT_FOUND error
15116occurred occasionally during _BST evaluation.  This turned out to
15117be an Owner ID allocation issue where a called method did not get
15118a new ID assigned to it.  Eventually, (after 64k calls), the Owner
15119ID UINT16 would wraparound so that the ID would be the same as the
15120caller's and the called method would delete the caller's
15121namespace.
15122
15123Implemented extended error reporting for control methods that are
15124aborted due to a run-time exception.  Output includes the exact
15125AML instruction that caused the method abort, a dump of the method
15126locals and arguments at the time of the abort, and a trace of all
15127nested control method calls.
15128
15129Modified the interpreter to allow the creation of buffers of zero
15130length from the AML code. Implemented new code to ensure that no
15131attempt is made to actually allocate a memory buffer (of length
15132zero) - instead, a simple buffer object with a NULL buffer pointer
15133and length zero is created.  A warning is no longer issued when
15134the AML attempts to create a zero-length buffer.
15135
15136Implemented a workaround for the "leading asterisk issue" in
15137_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
15138asterisk is automatically removed if present in any HID, UID, or
15139CID strings.  The iASL compiler will still flag this asterisk as
15140an error, however.
15141
15142Implemented full support for _CID methods that return a package of
15143multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
15144now additionally returns a device _CID list if present.  This
15145required a change to the external interface in order to pass an
15146ACPI_BUFFER object as a parameter since the _CID list is of
15147variable length.
15148
15149Fixed a problem with the new AE_SAME_HANDLER exception where
15150handler initialization code did not know about this exception.
15151
15152Code and Data Size: Current and previous core subsystem library
15153sizes are shown below.  These are the code and data sizes for the
15154acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15155these values do not include any ACPI driver or OSPM code.  The
15156debug version of the code includes the debug output trace
15157mechanism and has a much larger code and data size.  Note that
15158these values will vary depending on the efficiency of the compiler
15159and the compiler options used during generation.
15160
15161  Previous Release (20030509):
15162    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15163    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15164  Current Release:
15165    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15166    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15167
15168
151692) Linux:
15170
15171Fixed a bug in which we would reinitialize the ACPI interrupt
15172after it was already working, thus disabling all ACPI and the IRQs
15173for any other device sharing the interrupt. (Thanks to Stian
15174Jordet)
15175
15176Toshiba driver update (John Belmonte)
15177
15178Return only 0 or 1 for our interrupt handler status (Andrew
15179Morton)
15180
15181
151823) iASL Compiler:
15183
15184Fixed a reported problem where multiple (nested) ElseIf()
15185statements were not handled correctly by the compiler, resulting
15186in incorrect warnings and incorrect AML code.  This was a problem
15187in both the ASL parser and the code generator.
15188
15189
151904) Documentation:
15191
15192Added changes to existing interfaces, new exception codes, and new
15193text concerning reference count object management versus garbage
15194collection.
15195
15196----------------------------------------
1519709 May 2003.  Summary of changes for version 20030509.
15198
15199
152001) ACPI CA Core Subsystem:
15201
15202Changed the subsystem initialization sequence to hold off
15203installation of address space handlers until the hardware has been
15204initialized and the system has entered ACPI mode.  This is because
15205the installation of space handlers can cause _REG methods to be
15206run.  Previously, the _REG methods could potentially be run before
15207ACPI mode was enabled.
15208
15209Fixed some memory leak issues related to address space handler and
15210notify handler installation.  There were some problems with the
15211reference count mechanism caused by the fact that the handler
15212objects are shared across several namespace objects.
15213
15214Fixed a reported problem where reference counts within the
15215namespace were not properly updated when named objects created by
15216method execution were deleted.
15217
15218Fixed a reported problem where multiple SSDTs caused a deletion
15219issue during subsystem termination.  Restructured the table data
15220structures to simplify the linked lists and the related code.
15221
15222Fixed a problem where the table ID associated with secondary
15223tables (SSDTs) was not being propagated into the namespace objects
15224created by those tables.  This would only present a problem for
15225tables that are unloaded at run-time, however.
15226
15227Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15228type as the length parameter (instead of UINT32).
15229
15230Solved a long-standing problem where an ALREADY_EXISTS error
15231appears on various systems.  This problem could happen when there
15232are multiple PCI_Config operation regions under a single PCI root
15233bus.  This doesn't happen very frequently, but there are some
15234systems that do this in the ASL.
15235
15236Fixed a reported problem where the internal DeleteNode function
15237was incorrectly handling the case where a namespace node was the
15238first in the parent's child list, and had additional peers (not
15239the only child, but first in the list of children.)
15240
15241Code and Data Size: Current core subsystem library sizes are shown
15242below.  These are the code and data sizes for the acpica.lib
15243produced by the Microsoft Visual C++ 6.0 compiler, and these
15244values do not include any ACPI driver or OSPM code.  The debug
15245version of the code includes the debug output trace mechanism and
15246has a much larger code and data size.  Note that these values will
15247vary depending on the efficiency of the compiler and the compiler
15248options used during generation.
15249
15250  Previous Release
15251    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15252    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15253  Current Release:
15254    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
15255    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
15256
15257
152582) Linux:
15259
15260Allow ":" in OS override string (Ducrot Bruno)
15261
15262Kobject fix (Greg KH)
15263
15264
152653 iASL Compiler/Disassembler:
15266
15267Fixed a problem in the generation of the C source code files (AML
15268is emitted in C source statements for BIOS inclusion) where the
15269Ascii dump that appears within a C comment at the end of each line
15270could cause a compile time error if the AML sequence happens to
15271have an open comment or close comment sequence embedded.
15272
15273
15274----------------------------------------
1527524 April 2003.  Summary of changes for version 20030424.
15276
15277
152781) ACPI CA Core Subsystem:
15279
15280Support for big-endian systems has been implemented.  Most of the
15281support has been invisibly added behind big-endian versions of the
15282ACPI_MOVE_* macros.
15283
15284Fixed a problem in AcpiHwDisableGpeBlock() and
15285AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15286low level hardware write routine.  The offset parameter was
15287actually eliminated from the low level read/write routines because
15288they had become obsolete.
15289
15290Fixed a problem where a handler object was deleted twice during
15291the removal of a fixed event handler.
15292
15293
152942) Linux:
15295
15296A fix for SMP systems with link devices was contributed by
15297
15298Compaq's Dan Zink.
15299
15300(2.5) Return whether we handled the interrupt in our IRQ handler.
15301(Linux ISRs no longer return void, so we can propagate the handler
15302return value from the ACPI CA core back to the OS.)
15303
15304
15305
153063) Documentation:
15307
15308The ACPI CA Programmer Reference has been updated to reflect new
15309interfaces and changes to existing interfaces.
15310
15311----------------------------------------
1531228 March 2003.  Summary of changes for version 20030328.
15313
153141) ACPI CA Core Subsystem:
15315
15316The GPE Block Device support has been completed.  New interfaces
15317are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
15318interfaces (enable, disable, clear, getstatus) have been split
15319into separate interfaces for Fixed Events and General Purpose
15320Events (GPEs) in order to support GPE Block Devices properly.
15321
15322Fixed a problem where the error message "Failed to acquire
15323semaphore" would appear during operations on the embedded
15324controller (EC).
15325
15326Code and Data Size: Current core subsystem library sizes are shown
15327below.  These are the code and data sizes for the acpica.lib
15328produced by the Microsoft Visual C++ 6.0 compiler, and these
15329values do not include any ACPI driver or OSPM code.  The debug
15330version of the code includes the debug output trace mechanism and
15331has a much larger code and data size.  Note that these values will
15332vary depending on the efficiency of the compiler and the compiler
15333options used during generation.
15334
15335  Previous Release
15336    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15337    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15338  Current Release:
15339    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
15340    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
15341
15342
15343----------------------------------------
1534428 February 2003.  Summary of changes for version 20030228.
15345
15346
153471) ACPI CA Core Subsystem:
15348
15349The GPE handling and dispatch code has been completely overhauled
15350in preparation for support of GPE Block Devices (ID ACPI0006).
15351This affects internal data structures and code only; there should
15352be no differences visible externally.  One new file has been
15353added, evgpeblk.c
15354
15355The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15356fields that are used to determine the GPE block lengths.  The
15357REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15358structures are ignored.  This is per the ACPI specification but it
15359isn't very clear.  The full 256 Block 0/1 GPEs are now supported
15360(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15361
15362In the SCI interrupt handler, removed the read of the PM1_CONTROL
15363register to look at the SCI_EN bit.  On some machines, this read
15364causes an SMI event and greatly slows down SCI events.  (This may
15365in fact be the cause of slow battery status response on some
15366systems.)
15367
15368Fixed a problem where a store of a NULL string to a package object
15369could cause the premature deletion of the object.  This was seen
15370during execution of the battery _BIF method on some systems,
15371resulting in no battery data being returned.
15372
15373Added AcpiWalkResources interface to simplify parsing of resource
15374lists.
15375
15376Code and Data Size: Current core subsystem library sizes are shown
15377below.  These are the code and data sizes for the acpica.lib
15378produced by the Microsoft Visual C++ 6.0 compiler, and these
15379values do not include any ACPI driver or OSPM code.  The debug
15380version of the code includes the debug output trace mechanism and
15381has a much larger code and data size.  Note that these values will
15382vary depending on the efficiency of the compiler and the compiler
15383options used during generation.
15384
15385  Previous Release
15386    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15387    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15388  Current Release:
15389    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
15390    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
15391
15392
153932) Linux
15394
15395S3 fixes (Ole Rohne)
15396
15397Update ACPI PHP driver with to use new acpi_walk_resource API
15398(Bjorn Helgaas)
15399
15400Add S4BIOS support (Pavel Machek)
15401
15402Map in entire table before performing checksum (John Stultz)
15403
15404Expand the mem= cmdline to allow the specification of reserved and
15405ACPI DATA blocks (Pavel Machek)
15406
15407Never use ACPI on VISWS
15408
15409Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15410
15411Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15412causing us to think that some systems support C2 when they really
15413don't.
15414
15415Do not count processor objects for non-present CPUs (Thanks to
15416Dominik Brodowski)
15417
15418
154193) iASL Compiler:
15420
15421Fixed a problem where ASL include files could not be found and
15422opened.
15423
15424Added support for the _PDC reserved name.
15425
15426
15427----------------------------------------
1542822 January 2003.  Summary of changes for version 20030122.
15429
15430
154311) ACPI CA Core Subsystem:
15432
15433Added a check for constructs of the form:  Store (Local0, Local0)
15434where Local0 is not initialized.  Apparently, some BIOS
15435programmers believe that this is a NOOP.  Since this store doesn't
15436do anything anyway, the new prototype behavior will ignore this
15437error.  This is a case where we can relax the strict checking in
15438the interpreter in the name of compatibility.
15439
15440
154412) Linux
15442
15443The AcpiSrc Source Conversion Utility has been released with the
15444Linux package for the first time.  This is the utility that is
15445used to convert the ACPI CA base source code to the Linux version.
15446
15447(Both) Handle P_BLK lengths shorter than 6 more gracefully
15448
15449(Both) Move more headers to include/acpi, and delete an unused
15450header.
15451
15452(Both) Move drivers/acpi/include directory to include/acpi
15453
15454(Both) Boot functions don't use cmdline, so don't pass it around
15455
15456(Both) Remove include of unused header (Adrian Bunk)
15457
15458(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15459the
15460former now also includes the latter, acpiphp.h only needs the one,
15461now.
15462
15463(2.5) Make it possible to select method of bios restoring after S3
15464resume. [=> no more ugly ifdefs] (Pavel Machek)
15465
15466(2.5) Make proc write interfaces work (Pavel Machek)
15467
15468(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15469
15470(2.5) Break out ACPI Perf code into its own module, under cpufreq
15471(Dominik Brodowski)
15472
15473(2.4) S4BIOS support (Ducrot Bruno)
15474
15475(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15476Visinoni)
15477
15478
154793) iASL Compiler:
15480
15481Added support to disassemble SSDT and PSDTs.
15482
15483Implemented support to obtain SSDTs from the Windows registry if
15484available.
15485
15486
15487----------------------------------------
1548809 January 2003.  Summary of changes for version 20030109.
15489
154901) ACPI CA Core Subsystem:
15491
15492Changed the behavior of the internal Buffer-to-String conversion
15493function.  The current ACPI specification states that the contents
15494of the buffer are "converted to a string of two-character
15495hexadecimal numbers, each separated by a space".  Unfortunately,
15496this definition is not backwards compatible with existing ACPI 1.0
15497implementations (although the behavior was not defined in the ACPI
154981.0 specification).  The new behavior simply copies data from the
15499buffer to the string until a null character is found or the end of
15500the buffer is reached.  The new String object is always null
15501terminated.  This problem was seen during the generation of _BIF
15502battery data where incorrect strings were returned for battery
15503type, etc.  This will also require an errata to the ACPI
15504specification.
15505
15506Renamed all instances of NATIVE_UINT and NATIVE_INT to
15507ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15508
15509Copyright in all module headers (both Linux and non-Linux) has be
15510updated to 2003.
15511
15512Code and Data Size: Current core subsystem library sizes are shown
15513below.  These are the code and data sizes for the acpica.lib
15514produced by the Microsoft Visual C++ 6.0 compiler, and these
15515values do not include any ACPI driver or OSPM code.  The debug
15516version of the code includes the debug output trace mechanism and
15517has a much larger code and data size.  Note that these values will
15518vary depending on the efficiency of the compiler and the compiler
15519options used during generation.
15520
15521  Previous Release
15522    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15523    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15524  Current Release:
15525    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15526    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15527
15528
155292) Linux
15530
15531Fixed an oops on module insertion/removal (Matthew Tippett)
15532
15533(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15534
15535(2.5) Replace pr_debug (Randy Dunlap)
15536
15537(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15538
15539(Both) Eliminate spawning of thread from timer callback, in favor
15540of schedule_work()
15541
15542(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15543
15544(Both) Added define for Fixed Function HW region (Matthew Wilcox)
15545
15546(Both) Add missing statics to button.c (Pavel Machek)
15547
15548Several changes have been made to the source code translation
15549utility that generates the Linux Code in order to make the code
15550more "Linux-like":
15551
15552All typedefs on structs and unions have been removed in keeping
15553with the Linux coding style.
15554
15555Removed the non-Linux SourceSafe module revision number from each
15556module header.
15557
15558Completed major overhaul of symbols to be lowercase for linux.
15559Doubled the number of symbols that are lowercase.
15560
15561Fixed a problem where identifiers within procedure headers and
15562within quotes were not fully lower cased (they were left with a
15563starting capital.)
15564
15565Some C macros whose only purpose is to allow the generation of 16-
15566bit code are now completely removed in the Linux code, increasing
15567readability and maintainability.
15568
15569----------------------------------------
15570
1557112 December 2002.  Summary of changes for version 20021212.
15572
15573
155741) ACPI CA Core Subsystem:
15575
15576Fixed a problem where the creation of a zero-length AML Buffer
15577would cause a fault.
15578
15579Fixed a problem where a Buffer object that pointed to a static AML
15580buffer (in an ACPI table) could inadvertently be deleted, causing
15581memory corruption.
15582
15583Fixed a problem where a user buffer (passed in to the external
15584ACPI CA interfaces) could be overwritten if the buffer was too
15585small to complete the operation, causing memory corruption.
15586
15587Fixed a problem in the Buffer-to-String conversion code where a
15588string of length one was always returned, regardless of the size
15589of the input Buffer object.
15590
15591Removed the NATIVE_CHAR data type across the entire source due to
15592lack of need and lack of consistent use.
15593
15594Code and Data Size: Current core subsystem library sizes are shown
15595below.  These are the code and data sizes for the acpica.lib
15596produced by the Microsoft Visual C++ 6.0 compiler, and these
15597values do not include any ACPI driver or OSPM code.  The debug
15598version of the code includes the debug output trace mechanism and
15599has a much larger code and data size.  Note that these values will
15600vary depending on the efficiency of the compiler and the compiler
15601options used during generation.
15602
15603  Previous Release
15604    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15605    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15606  Current Release:
15607    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
15608    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
15609
15610
15611----------------------------------------
1561205 December 2002.  Summary of changes for version 20021205.
15613
156141) ACPI CA Core Subsystem:
15615
15616Fixed a problem where a store to a String or Buffer object could
15617cause corruption of the DSDT if the object type being stored was
15618the same as the target object type and the length of the object
15619being stored was equal to or smaller than the original (existing)
15620target object.  This was seen to cause corruption of battery _BIF
15621buffers if the _BIF method modified the buffer on the fly.
15622
15623Fixed a problem where an internal error was generated if a control
15624method invocation was used in an OperationRegion, Buffer, or
15625Package declaration.  This was caused by the deferred parsing of
15626the control method and thus the deferred creation of the internal
15627method object.  The solution to this problem was to create the
15628internal method object at the moment the method is encountered in
15629the first pass - so that subsequent references to the method will
15630able to obtain the required parameter count and thus properly
15631parse the method invocation.  This problem presented itself as an
15632AE_AML_INTERNAL during the pass 1 parse phase during table load.
15633
15634Fixed a problem where the internal String object copy routine did
15635not always allocate sufficient memory for the target String object
15636and caused memory corruption.  This problem was seen to cause
15637"Allocation already present in list!" errors as memory allocation
15638became corrupted.
15639
15640Implemented a new function for the evaluation of namespace objects
15641that allows the specification of the allowable return object
15642types.  This simplifies a lot of code that checks for a return
15643object of one or more specific objects returned from the
15644evaluation (such as _STA, etc.)  This may become and external
15645function if it would be useful to ACPI-related drivers.
15646
15647Completed another round of prefixing #defines with "ACPI_" for
15648clarity.
15649
15650Completed additional code restructuring to allow more modular
15651linking for iASL compiler and AcpiExec.  Several files were split
15652creating new files.  New files:  nsparse.c dsinit.c evgpe.c
15653
15654Implemented an abort mechanism to terminate an executing control
15655method via the AML debugger.  This feature is useful for debugging
15656control methods that depend (wait) for specific hardware
15657responses.
15658
15659Code and Data Size: Current core subsystem library sizes are shown
15660below.  These are the code and data sizes for the acpica.lib
15661produced by the Microsoft Visual C++ 6.0 compiler, and these
15662values do not include any ACPI driver or OSPM code.  The debug
15663version of the code includes the debug output trace mechanism and
15664has a much larger code and data size.  Note that these values will
15665vary depending on the efficiency of the compiler and the compiler
15666options used during generation.
15667
15668  Previous Release
15669    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15670    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15671  Current Release:
15672    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
15673    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
15674
15675
156762) iASL Compiler/Disassembler
15677
15678Fixed a compiler code generation problem for "Interrupt" Resource
15679Descriptors.  If specified in the ASL, the optional "Resource
15680Source Index" and "Resource Source" fields were not inserted into
15681the correct location within the AML resource descriptor, creating
15682an invalid descriptor.
15683
15684Fixed a disassembler problem for "Interrupt" resource descriptors.
15685The optional "Resource Source Index" and "Resource Source" fields
15686were ignored.
15687
15688
15689----------------------------------------
1569022 November 2002.  Summary of changes for version 20021122.
15691
15692
156931) ACPI CA Core Subsystem:
15694
15695Fixed a reported problem where an object stored to a Method Local
15696or Arg was not copied to a new object during the store - the
15697object pointer was simply copied to the Local/Arg.  This caused
15698all subsequent operations on the Local/Arg to also affect the
15699original source of the store operation.
15700
15701Fixed a problem where a store operation to a Method Local or Arg
15702was not completed properly if the Local/Arg contained a reference
15703(from RefOf) to a named field.  The general-purpose store-to-
15704namespace-node code is now used so that this case is handled
15705automatically.
15706
15707Fixed a problem where the internal object copy routine would cause
15708a protection fault if the object being copied was a Package and
15709contained either 1) a NULL package element or 2) a nested sub-
15710package.
15711
15712Fixed a problem with the GPE initialization that resulted from an
15713ambiguity in the ACPI specification.  One section of the
15714specification states that both the address and length of the GPE
15715block must be zero if the block is not supported.  Another section
15716implies that only the address need be zero if the block is not
15717supported.  The code has been changed so that both the address and
15718the length must be non-zero to indicate a valid GPE block (i.e.,
15719if either the address or the length is zero, the GPE block is
15720invalid.)
15721
15722Code and Data Size: Current core subsystem library sizes are shown
15723below.  These are the code and data sizes for the acpica.lib
15724produced by the Microsoft Visual C++ 6.0 compiler, and these
15725values do not include any ACPI driver or OSPM code.  The debug
15726version of the code includes the debug output trace mechanism and
15727has a much larger code and data size.  Note that these values will
15728vary depending on the efficiency of the compiler and the compiler
15729options used during generation.
15730
15731  Previous Release
15732    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15733    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15734  Current Release:
15735    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15736    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
15737
15738
157392) Linux
15740
15741Cleaned up EC driver. Exported an external EC read/write
15742interface. By going through this, other drivers (most notably
15743sonypi) will be able to serialize access to the EC.
15744
15745
157463) iASL Compiler/Disassembler
15747
15748Implemented support to optionally generate include files for both
15749ASM and C (the -i switch).  This simplifies BIOS development by
15750automatically creating include files that contain external
15751declarations for the symbols that are created within the
15752
15753(optionally generated) ASM and C AML source files.
15754
15755
15756----------------------------------------
1575715 November 2002.  Summary of changes for version 20021115.
15758
157591) ACPI CA Core Subsystem:
15760
15761Fixed a memory leak problem where an error during resolution of
15762
15763method arguments during a method invocation from another method
15764failed to cleanup properly by deleting all successfully resolved
15765argument objects.
15766
15767Fixed a problem where the target of the Index() operator was not
15768correctly constructed if the source object was a package.  This
15769problem has not been detected because the use of a target operand
15770with Index() is very rare.
15771
15772Fixed a problem with the Index() operator where an attempt was
15773made to delete the operand objects twice.
15774
15775Fixed a problem where an attempt was made to delete an operand
15776twice during execution of the CondRefOf() operator if the target
15777did not exist.
15778
15779Implemented the first of perhaps several internal create object
15780functions that create and initialize a specific object type.  This
15781consolidates duplicated code wherever the object is created, thus
15782shrinking the size of the subsystem.
15783
15784Implemented improved debug/error messages for errors that occur
15785during nested method invocations.  All executing method pathnames
15786are displayed (with the error) as the call stack is unwound - thus
15787simplifying debug.
15788
15789Fixed a problem introduced in the 10/02 release that caused
15790premature deletion of a buffer object if a buffer was used as an
15791ASL operand where an integer operand is required (Thus causing an
15792implicit object conversion from Buffer to Integer.)  The change in
15793the 10/02 release was attempting to fix a memory leak (albeit
15794incorrectly.)
15795
15796Code and Data Size: Current core subsystem library sizes are shown
15797below.  These are the code and data sizes for the acpica.lib
15798produced by the Microsoft Visual C++ 6.0 compiler, and these
15799values do not include any ACPI driver or OSPM code.  The debug
15800version of the code includes the debug output trace mechanism and
15801has a much larger code and data size.  Note that these values will
15802vary depending on the efficiency of the compiler and the compiler
15803options used during generation.
15804
15805  Previous Release
15806    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15807    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15808  Current Release:
15809    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
15810    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
15811
15812
158132) Linux
15814
15815Changed the implementation of the ACPI semaphores to use down()
15816instead of down_interruptable().  It is important that the
15817execution of ACPI control methods not be interrupted by signals.
15818Methods must run to completion, or the system may be left in an
15819unknown/unstable state.
15820
15821Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15822(Shawn Starr)
15823
15824
158253) iASL Compiler/Disassembler
15826
15827
15828Changed the default location of output files.  All output files
15829are now placed in the current directory by default instead of in
15830the directory of the source file.  This change may affect some
15831existing makefiles, but it brings the behavior of the compiler in
15832line with other similar tools.  The location of the output files
15833can be overridden with the -p command line switch.
15834
15835
15836----------------------------------------
1583711 November 2002.  Summary of changes for version 20021111.
15838
15839
158400) ACPI Specification 2.0B is released and is now available at:
15841http://www.acpi.info/index.html
15842
15843
158441) ACPI CA Core Subsystem:
15845
15846Implemented support for the ACPI 2.0 SMBus Operation Regions.
15847This includes the early detection and handoff of the request to
15848the SMBus region handler (avoiding all of the complex field
15849support code), and support for the bidirectional return packet
15850from an SMBus write operation.  This paves the way for the
15851development of SMBus drivers in each host operating system.
15852
15853Fixed a problem where the semaphore WAIT_FOREVER constant was
15854defined as 32 bits, but must be 16 bits according to the ACPI
15855specification.  This had the side effect of causing ASL
15856Mutex/Event timeouts even though the ASL code requested a wait
15857forever.  Changed all internal references to the ACPI timeout
15858parameter to 16 bits to prevent future problems.  Changed the name
15859of WAIT_FOREVER to ACPI_WAIT_FOREVER.
15860
15861Code and Data Size: Current core subsystem library sizes are shown
15862below.  These are the code and data sizes for the acpica.lib
15863produced by the Microsoft Visual C++ 6.0 compiler, and these
15864values do not include any ACPI driver or OSPM code.  The debug
15865version of the code includes the debug output trace mechanism and
15866has a much larger code and data size.  Note that these values will
15867vary depending on the efficiency of the compiler and the compiler
15868options used during generation.
15869
15870  Previous Release
15871    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15872    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15873  Current Release:
15874    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
15875    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
15876
15877
158782) Linux
15879
15880Module loading/unloading fixes (John Cagle)
15881
15882
158833) iASL Compiler/Disassembler
15884
15885Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
15886
15887Implemented support for the disassembly of all SMBus protocol
15888keywords (SMBQuick, SMBWord, etc.)
15889
15890----------------------------------------
1589101 November 2002.  Summary of changes for version 20021101.
15892
15893
158941) ACPI CA Core Subsystem:
15895
15896Fixed a problem where platforms that have a GPE1 block but no GPE0
15897block were not handled correctly.  This resulted in a "GPE
15898overlap" error message.  GPE0 is no longer required.
15899
15900Removed code added in the previous release that inserted nodes
15901into the namespace in alphabetical order.  This caused some side-
15902effects on various machines.  The root cause of the problem is
15903still under investigation since in theory, the internal ordering
15904of the namespace nodes should not matter.
15905
15906
15907Enhanced error reporting for the case where a named object is not
15908found during control method execution.  The full ACPI namepath
15909(name reference) of the object that was not found is displayed in
15910this case.
15911
15912Note: as a result of the overhaul of the namespace object types in
15913the previous release, the namespace nodes for the predefined
15914scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
15915instead of ACPI_TYPE_ANY.  This simplifies the namespace
15916management code but may affect code that walks the namespace tree
15917looking for specific object types.
15918
15919Code and Data Size: Current core subsystem library sizes are shown
15920below.  These are the code and data sizes for the acpica.lib
15921produced by the Microsoft Visual C++ 6.0 compiler, and these
15922values do not include any ACPI driver or OSPM code.  The debug
15923version of the code includes the debug output trace mechanism and
15924has a much larger code and data size.  Note that these values will
15925vary depending on the efficiency of the compiler and the compiler
15926options used during generation.
15927
15928  Previous Release
15929    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
15930    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
15931  Current Release:
15932    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
15933    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
15934
15935
159362) Linux
15937
15938Fixed a problem introduced in the previous release where the
15939Processor and Thermal objects were not recognized and installed in
15940/proc.  This was related to the scope type change described above.
15941
15942
159433) iASL Compiler/Disassembler
15944
15945Implemented the -g option to get all of the required ACPI tables
15946from the registry and save them to files (Windows version of the
15947compiler only.)  The required tables are the FADT, FACS, and DSDT.
15948
15949Added ACPI table checksum validation during table disassembly in
15950order to catch corrupted tables.
15951
15952
15953----------------------------------------
1595422 October 2002.  Summary of changes for version 20021022.
15955
159561) ACPI CA Core Subsystem:
15957
15958Implemented a restriction on the Scope operator that the target
15959must already exist in the namespace at the time the operator is
15960encountered (during table load or method execution).  In other
15961words, forward references are not allowed and Scope() cannot
15962create a new object. This changes the previous behavior where the
15963interpreter would create the name if not found.  This new behavior
15964correctly enables the search-to-root algorithm during namespace
15965lookup of the target name.  Because of this upsearch, this fixes
15966the known Compaq _SB_.OKEC problem and makes both the AML
15967interpreter and iASL compiler compatible with other ACPI
15968implementations.
15969
15970Completed a major overhaul of the internal ACPI object types for
15971the ACPI Namespace and the associated operand objects.  Many of
15972these types had become obsolete with the introduction of the two-
15973pass namespace load.  This cleanup simplifies the code and makes
15974the entire namespace load mechanism much clearer and easier to
15975understand.
15976
15977Improved debug output for tracking scope opening/closing to help
15978diagnose scoping issues.  The old scope name as well as the new
15979scope name are displayed.  Also improved error messages for
15980problems with ASL Mutex objects and error messages for GPE
15981problems.
15982
15983Cleaned up the namespace dump code, removed obsolete code.
15984
15985All string output (for all namespace/object dumps) now uses the
15986common ACPI string output procedure which handles escapes properly
15987and does not emit non-printable characters.
15988
15989Fixed some issues with constants in the 64-bit version of the
15990local C library (utclib.c)
15991
15992
159932) Linux
15994
15995EC Driver:  No longer attempts to acquire the Global Lock at
15996interrupt level.
15997
15998
159993) iASL Compiler/Disassembler
16000
16001Implemented ACPI 2.0B grammar change that disallows all Type 1 and
160022 opcodes outside of a control method.  This means that the
16003"executable" operators (versus the "namespace" operators) cannot
16004be used at the table level; they can only be used within a control
16005method.
16006
16007Implemented the restriction on the Scope() operator where the
16008target must already exist in the namespace at the time the
16009operator is encountered (during ASL compilation). In other words,
16010forward references are not allowed and Scope() cannot create a new
16011object.  This makes the iASL compiler compatible with other ACPI
16012implementations and makes the Scope() implementation adhere to the
16013ACPI specification.
16014
16015Fixed a problem where namepath optimization for the Alias operator
16016was optimizing the wrong path (of the two namepaths.)  This caused
16017a "Missing alias link" error message.
16018
16019Fixed a problem where an "unknown reserved name" warning could be
16020incorrectly generated for names like "_SB" when the trailing
16021underscore is not used in the original ASL.
16022
16023Fixed a problem where the reserved name check did not handle
16024NamePaths with multiple NameSegs correctly.  The first nameseg of
16025the NamePath was examined instead of the last NameSeg.
16026
16027
16028----------------------------------------
16029
1603002 October 2002.  Summary of changes for this release.
16031
16032
160331) ACPI CA Core Subsystem version 20021002:
16034
16035Fixed a problem where a store/copy of a string to an existing
16036string did not always set the string length properly in the String
16037object.
16038
16039Fixed a reported problem with the ToString operator where the
16040behavior was identical to the ToHexString operator instead of just
16041simply converting a raw buffer to a string data type.
16042
16043Fixed a problem where CopyObject and the other "explicit"
16044conversion operators were not updating the internal namespace node
16045type as part of the store operation.
16046
16047Fixed a memory leak during implicit source operand conversion
16048where the original object was not deleted if it was converted to a
16049new object of a different type.
16050
16051Enhanced error messages for all problems associated with namespace
16052lookups.  Common procedure generates and prints the lookup name as
16053well as the formatted status.
16054
16055Completed implementation of a new design for the Alias support
16056within the namespace.  The existing design did not handle the case
16057where a new object was assigned to one of the two names due to the
16058use of an explicit conversion operator, resulting in the two names
16059pointing to two different objects.  The new design simply points
16060the Alias name to the original name node - not to the object.
16061This results in a level of indirection that must be handled in the
16062name resolution mechanism.
16063
16064Code and Data Size: Current core subsystem library sizes are shown
16065below.  These are the code and data sizes for the acpica.lib
16066produced by the Microsoft Visual C++ 6.0 compiler, and these
16067values do not include any ACPI driver or OSPM code.  The debug
16068version of the code includes the debug output trace mechanism and
16069has a larger code and data size.  Note that these values will vary
16070depending on the efficiency of the compiler and the compiler
16071options used during generation.
16072
16073  Previous Release
16074    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16075    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16076  Current Release:
16077    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16078    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16079
16080
160812) Linux
16082
16083Initialize thermal driver's timer before it is used. (Knut
16084Neumann)
16085
16086Allow handling negative celsius values. (Kochi Takayoshi)
16087
16088Fix thermal management and make trip points. R/W (Pavel Machek)
16089
16090Fix /proc/acpi/sleep. (P. Christeas)
16091
16092IA64 fixes. (David Mosberger)
16093
16094Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
16095
16096Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
16097Brodowski)
16098
16099
161003) iASL Compiler/Disassembler
16101
16102Clarified some warning/error messages.
16103
16104
16105----------------------------------------
1610618 September 2002.  Summary of changes for this release.
16107
16108
161091) ACPI CA Core Subsystem version 20020918:
16110
16111Fixed a reported problem with reference chaining (via the Index()
16112and RefOf() operators) in the ObjectType() and SizeOf() operators.
16113The definition of these operators includes the dereferencing of
16114all chained references to return information on the base object.
16115
16116Fixed a problem with stores to indexed package elements - the
16117existing code would not complete the store if an "implicit
16118conversion" was not performed.  In other words, if the existing
16119object (package element) was to be replaced completely, the code
16120didn't handle this case.
16121
16122Relaxed typechecking on the ASL "Scope" operator to allow the
16123target name to refer to an object of type Integer, String, or
16124Buffer, in addition to the scoping object types (Device,
16125predefined Scopes, Processor, PowerResource, and ThermalZone.)
16126This allows existing AML code that has workarounds for a bug in
16127Windows to function properly.  A warning is issued, however.  This
16128affects both the AML interpreter and the iASL compiler. Below is
16129an example of this type of ASL code:
16130
16131      Name(DEB,0x00)
16132      Scope(DEB)
16133      {
16134
16135Fixed some reported problems with 64-bit integer support in the
16136local implementation of C library functions (clib.c)
16137
16138
161392) Linux
16140
16141Use ACPI fix map region instead of IOAPIC region, since it is
16142undefined in non-SMP.
16143
16144Ensure that the SCI has the proper polarity and trigger, even on
16145systems that do not have an interrupt override entry in the MADT.
16146
161472.5 big driver reorganization (Pat Mochel)
16148
16149Use early table mapping code from acpitable.c (Andi Kleen)
16150
16151New blacklist entries (Andi Kleen)
16152
16153Blacklist improvements. Split blacklist code out into a separate
16154file. Move checking the blacklist to very early. Previously, we
16155would use ACPI tables, and then halfway through init, check the
16156blacklist -- too late. Now, it's early enough to completely fall-
16157back to non-ACPI.
16158
16159
161603) iASL Compiler/Disassembler version 20020918:
16161
16162Fixed a problem where the typechecking code didn't know that an
16163alias could point to a method.  In other words, aliases were not
16164being dereferenced during typechecking.
16165
16166
16167----------------------------------------
1616829 August 2002.  Summary of changes for this release.
16169
161701) ACPI CA Core Subsystem Version 20020829:
16171
16172If the target of a Scope() operator already exists, it must be an
16173object type that actually opens a scope -- such as a Device,
16174Method, Scope, etc.  This is a fatal runtime error.  Similar error
16175check has been added to the iASL compiler also.
16176
16177Tightened up the namespace load to disallow multiple names in the
16178same scope.  This previously was allowed if both objects were of
16179the same type.  (i.e., a lookup was the same as entering a new
16180name).
16181
16182
161832) Linux
16184
16185Ensure that the ACPI interrupt has the proper trigger and
16186polarity.
16187
16188local_irq_disable is extraneous. (Matthew Wilcox)
16189
16190Make "acpi=off" actually do what it says, and not use the ACPI
16191interpreter *or* the tables.
16192
16193Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16194Takayoshi)
16195
16196
161973) iASL Compiler/Disassembler  Version 20020829:
16198
16199Implemented namepath optimization for name declarations.  For
16200example, a declaration like "Method (\_SB_.ABCD)" would get
16201optimized to "Method (ABCD)" if the declaration is within the
16202\_SB_ scope.  This optimization is in addition to the named
16203reference path optimization first released in the previous
16204version. This would seem to complete all possible optimizations
16205for namepaths within the ASL/AML.
16206
16207If the target of a Scope() operator already exists, it must be an
16208object type that actually opens a scope -- such as a Device,
16209Method, Scope, etc.
16210
16211Implemented a check and warning for unreachable code in the same
16212block below a Return() statement.
16213
16214Fixed a problem where the listing file was not generated if the
16215compiler aborted if the maximum error count was exceeded (200).
16216
16217Fixed a problem where the typechecking of method return values was
16218broken.  This includes the check for a return value when the
16219method is invoked as a TermArg (a return value is expected.)
16220
16221Fixed a reported problem where EOF conditions during a quoted
16222string or comment caused a fault.
16223
16224
16225----------------------------------------
1622615 August 2002.  Summary of changes for this release.
16227
162281) ACPI CA Core Subsystem Version 20020815:
16229
16230Fixed a reported problem where a Store to a method argument that
16231contains a reference did not perform the indirect store correctly.
16232This problem was created during the conversion to the new
16233reference object model - the indirect store to a method argument
16234code was not updated to reflect the new model.
16235
16236Reworked the ACPI mode change code to better conform to ACPI 2.0,
16237handle corner cases, and improve code legibility (Kochi Takayoshi)
16238
16239Fixed a problem with the pathname parsing for the carat (^)
16240prefix.  The heavy use of the carat operator by the new namepath
16241optimization in the iASL compiler uncovered a problem with the AML
16242interpreter handling of this prefix.  In the case where one or
16243more carats precede a single nameseg, the nameseg was treated as
16244standalone and the search rule (to root) was inadvertently
16245applied.  This could cause both the iASL compiler and the
16246interpreter to find the wrong object or to miss the error that
16247should occur if the object does not exist at that exact pathname.
16248
16249Found and fixed the problem where the HP Pavilion DSDT would not
16250load.  This was a relatively minor tweak to the table loading code
16251(a problem caused by the unexpected encounter with a method
16252invocation not within a control method), but it does not solve the
16253overall issue of the execution of AML code at the table level.
16254This investigation is still ongoing.
16255
16256Code and Data Size: Current core subsystem library sizes are shown
16257below.  These are the code and data sizes for the acpica.lib
16258produced by the Microsoft Visual C++ 6.0 compiler, and these
16259values do not include any ACPI driver or OSPM code.  The debug
16260version of the code includes the debug output trace mechanism and
16261has a larger code and data size.  Note that these values will vary
16262depending on the efficiency of the compiler and the compiler
16263options used during generation.
16264
16265  Previous Release
16266    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16267    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16268  Current Release:
16269    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16270    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16271
16272
162732) Linux
16274
16275Remove redundant slab.h include (Brad Hards)
16276
16277Fix several bugs in thermal.c (Herbert Nachtnebel)
16278
16279Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16280
16281Change acpi_system_suspend to use updated irq functions (Pavel
16282Machek)
16283
16284Export acpi_get_firmware_table (Matthew Wilcox)
16285
16286Use proper root proc entry for ACPI (Kochi Takayoshi)
16287
16288Fix early-boot table parsing (Bjorn Helgaas)
16289
16290
162913) iASL Compiler/Disassembler
16292
16293Reworked the compiler options to make them more consistent and to
16294use two-letter options where appropriate.  We were running out of
16295sensible letters.   This may break some makefiles, so check the
16296current options list by invoking the compiler with no parameters.
16297
16298Completed the design and implementation of the ASL namepath
16299optimization option for the compiler.  This option optimizes all
16300references to named objects to the shortest possible path.  The
16301first attempt tries to utilize a single nameseg (4 characters) and
16302the "search-to-root" algorithm used by the interpreter.  If that
16303cannot be used (because either the name is not in the search path
16304or there is a conflict with another object with the same name),
16305the pathname is optimized using the carat prefix (usually a
16306shorter string than specifying the entire path from the root.)
16307
16308Implemented support to obtain the DSDT from the Windows registry
16309(when the disassembly option is specified with no input file).
16310Added this code as the implementation for AcpiOsTableOverride in
16311the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
16312utility) to scan memory for the DSDT to the AcpiOsTableOverride
16313function in the DOS OSL to make the disassembler truly OS
16314independent.
16315
16316Implemented a new option to disassemble and compile in one step.
16317When used without an input filename, this option will grab the
16318DSDT from the local machine, disassemble it, and compile it in one
16319step.
16320
16321Added a warning message for invalid escapes (a backslash followed
16322by any character other than the allowable escapes).  This catches
16323the quoted string error "\_SB_" (which should be "\\_SB_" ).
16324
16325Also, there are numerous instances in the ACPI specification where
16326this error occurs.
16327
16328Added a compiler option to disable all optimizations.  This is
16329basically the "compatibility mode" because by using this option,
16330the AML code will come out exactly the same as other ASL
16331compilers.
16332
16333Added error messages for incorrectly ordered dependent resource
16334functions.  This includes: missing EndDependentFn macro at end of
16335dependent resource list, nested dependent function macros (both
16336start and end), and missing StartDependentFn macro.  These are
16337common errors that should be caught at compile time.
16338
16339Implemented _OSI support for the disassembler and compiler.  _OSI
16340must be included in the namespace for proper disassembly (because
16341the disassembler must know the number of arguments.)
16342
16343Added an "optimization" message type that is optional (off by
16344default).  This message is used for all optimizations - including
16345constant folding, integer optimization, and namepath optimization.
16346
16347----------------------------------------
1634825 July 2002.  Summary of changes for this release.
16349
16350
163511) ACPI CA Core Subsystem Version 20020725:
16352
16353The AML Disassembler has been enhanced to produce compilable ASL
16354code and has been integrated into the iASL compiler (see below) as
16355well as the single-step disassembly for the AML debugger and the
16356disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
16357resource templates and macros are fully supported.  The
16358disassembler has been tested on over 30 different AML files,
16359producing identical AML when the resulting disassembled ASL file
16360is recompiled with the same ASL compiler.
16361
16362Modified the Resource Manager to allow zero interrupts and zero
16363dma channels during the GetCurrentResources call.  This was
16364causing problems on some platforms.
16365
16366Added the AcpiOsRedirectOutput interface to the OSL to simplify
16367output redirection for the AcpiOsPrintf and AcpiOsVprintf
16368interfaces.
16369
16370Code and Data Size: Current core subsystem library sizes are shown
16371below.  These are the code and data sizes for the acpica.lib
16372produced by the Microsoft Visual C++ 6.0 compiler, and these
16373values do not include any ACPI driver or OSPM code.  The debug
16374version of the code includes the debug output trace mechanism and
16375has a larger code and data size.  Note that these values will vary
16376depending on the efficiency of the compiler and the compiler
16377options used during generation.
16378
16379  Previous Release
16380    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16381    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16382  Current Release:
16383    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
16384    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
16385
16386
163872) Linux
16388
16389Fixed a panic in the EC driver (Dominik Brodowski)
16390
16391Implemented checksum of the R/XSDT itself during Linux table scan
16392(Richard Schaal)
16393
16394
163953) iASL compiler
16396
16397The AML disassembler is integrated into the compiler.  The "-d"
16398option invokes the disassembler  to completely disassemble an
16399input AML file, producing as output a text ASL file with the
16400extension ".dsl" (to avoid name collisions with existing .asl
16401source files.)  A future enhancement will allow the disassembler
16402to obtain the BIOS DSDT from the registry under Windows.
16403
16404Fixed a problem with the VendorShort and VendorLong resource
16405descriptors where an invalid AML sequence was created.
16406
16407Implemented a fix for BufferData term in the ASL parser.  It was
16408inadvertently defined twice, allowing invalid syntax to pass and
16409causing reduction conflicts.
16410
16411Fixed a problem where the Ones opcode could get converted to a
16412value of zero if "Ones" was used where a byte, word or dword value
16413was expected.  The 64-bit value is now truncated to the correct
16414size with the correct value.
16415
16416
16417
16418----------------------------------------
1641902 July 2002.  Summary of changes for this release.
16420
16421
164221) ACPI CA Core Subsystem Version 20020702:
16423
16424The Table Manager code has been restructured to add several new
16425features.  Tables that are not required by the core subsystem
16426(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16427validated in any way and are returned from AcpiGetFirmwareTable if
16428requested.  The AcpiOsTableOverride interface is now called for
16429each table that is loaded by the subsystem in order to allow the
16430host to override any table it chooses.  Previously, only the DSDT
16431could be overridden.  Added one new files, tbrsdt.c and
16432tbgetall.c.
16433
16434Fixed a problem with the conversion of internal package objects to
16435external objects (when a package is returned from a control
16436method.)  The return buffer length was set to zero instead of the
16437proper length of the package object.
16438
16439Fixed a reported problem with the use of the RefOf and DeRefOf
16440operators when passing reference arguments to control methods.  A
16441new type of Reference object is used internally for references
16442produced by the RefOf operator.
16443
16444Added additional error messages in the Resource Manager to explain
16445AE_BAD_DATA errors when they occur during resource parsing.
16446
16447Split the AcpiEnableSubsystem into two primitives to enable a
16448finer granularity initialization sequence.  These two calls should
16449be called in this order: AcpiEnableSubsystem (flags),
16450AcpiInitializeObjects (flags).  The flags parameter remains the
16451same.
16452
16453
164542) Linux
16455
16456Updated the ACPI utilities module to understand the new style of
16457fully resolved package objects that are now returned from the core
16458subsystem.  This eliminates errors of the form:
16459
16460    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16461    acpi_utils-0430 [145] acpi_evaluate_reference:
16462        Invalid element in package (not a device reference)
16463
16464The method evaluation utility uses the new buffer allocation
16465scheme instead of calling AcpiEvaluate Object twice.
16466
16467Added support for ECDT. This allows the use of the Embedded
16468
16469Controller before the namespace has been fully initialized, which
16470is necessary for ACPI 2.0 support, and for some laptops to
16471initialize properly. (Laptops using ECDT are still rare, so only
16472limited testing was performed of the added functionality.)
16473
16474Fixed memory leaks in the EC driver.
16475
16476Eliminated a brittle code structure in acpi_bus_init().
16477
16478Eliminated the acpi_evaluate() helper function in utils.c. It is
16479no longer needed since acpi_evaluate_object can optionally
16480allocate memory for the return object.
16481
16482Implemented fix for keyboard hang when getting battery readings on
16483some systems (Stephen White)
16484
16485PCI IRQ routing update (Dominik Brodowski)
16486
16487Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16488support
16489
16490----------------------------------------
1649111 June 2002.  Summary of changes for this release.
16492
16493
164941) ACPI CA Core Subsystem Version 20020611:
16495
16496Fixed a reported problem where constants such as Zero and One
16497appearing within _PRT packages were not handled correctly within
16498the resource manager code.  Originally reported against the ASL
16499compiler because the code generator now optimizes integers to
16500their minimal AML representation (i.e. AML constants if possible.)
16501The _PRT code now handles all AML constant opcodes correctly
16502(Zero, One, Ones, Revision).
16503
16504Fixed a problem with the Concatenate operator in the AML
16505interpreter where a buffer result object was incorrectly marked as
16506not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16507
16508All package sub-objects are now fully resolved before they are
16509returned from the external ACPI interfaces.  This means that name
16510strings are resolved to object handles, and constant operators
16511(Zero, One, Ones, Revision) are resolved to Integers.
16512
16513Implemented immediate resolution of the AML Constant opcodes
16514(Zero, One, Ones, Revision) to Integer objects upon detection
16515within the AML stream. This has simplified and reduced the
16516generated code size of the subsystem by eliminating about 10
16517switch statements for these constants (which previously were
16518contained in Reference objects.)  The complicating issues are that
16519the Zero opcode is used as a "placeholder" for unspecified
16520optional target operands and stores to constants are defined to be
16521no-ops.
16522
16523Code and Data Size: Current core subsystem library sizes are shown
16524below. These are the code and data sizes for the acpica.lib
16525produced by the Microsoft Visual C++ 6.0 compiler, and these
16526values do not include any ACPI driver or OSPM code.  The debug
16527version of the code includes the debug output trace mechanism and
16528has a larger code and data size.  Note that these values will vary
16529depending on the efficiency of the compiler and the compiler
16530options used during generation.
16531
16532  Previous Release
16533    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16534    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16535  Current Release:
16536    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
16537    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
16538
16539
165402) Linux
16541
16542
16543Added preliminary support for obtaining _TRA data for PCI root
16544bridges (Bjorn Helgaas).
16545
16546
165473) iASL Compiler Version X2046:
16548
16549Fixed a problem where the "_DDN" reserved name was defined to be a
16550control method with one argument.  There are no arguments, and
16551_DDN does not have to be a control method.
16552
16553Fixed a problem with the Linux version of the compiler where the
16554source lines printed with error messages were the wrong lines.
16555This turned out to be the "LF versus CR/LF" difference between
16556Windows and Unix.  This appears to be the longstanding issue
16557concerning listing output and error messages.
16558
16559Fixed a problem with the Linux version of compiler where opcode
16560names within error messages were wrong.  This was caused by a
16561slight difference in the output of the Flex tool on Linux versus
16562Windows.
16563
16564Fixed a problem with the Linux compiler where the hex output files
16565contained some garbage data caused by an internal buffer overrun.
16566
16567
16568----------------------------------------
1656917 May 2002.  Summary of changes for this release.
16570
16571
165721) ACPI CA Core Subsystem Version 20020517:
16573
16574Implemented a workaround to an BIOS bug discovered on the HP
16575OmniBook where the FADT revision number and the table size are
16576inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
16577behavior is to fallback to using only the ACPI 1.0 fields of the
16578FADT if the table is too small to be a ACPI 2.0 table as claimed
16579by the revision number.  Although this is a BIOS bug, this is a
16580case where the workaround is simple enough and with no side
16581effects, so it seemed prudent to add it.  A warning message is
16582issued, however.
16583
16584Implemented minimum size checks for the fixed-length ACPI tables -
16585- the FADT and FACS, as well as consistency checks between the
16586revision number and the table size.
16587
16588Fixed a reported problem in the table override support where the
16589new table pointer was incorrectly treated as a physical address
16590instead of a logical address.
16591
16592Eliminated the use of the AE_AML_ERROR exception and replaced it
16593with more descriptive codes.
16594
16595Fixed a problem where an exception would occur if an ASL Field was
16596defined with no named Field Units underneath it (used by some
16597index fields).
16598
16599Code and Data Size: Current core subsystem library sizes are shown
16600below.  These are the code and data sizes for the acpica.lib
16601produced by the Microsoft Visual C++ 6.0 compiler, and these
16602values do not include any ACPI driver or OSPM code.  The debug
16603version of the code includes the debug output trace mechanism and
16604has a larger code and data size.  Note that these values will vary
16605depending on the efficiency of the compiler and the compiler
16606options used during generation.
16607
16608  Previous Release
16609    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16610    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16611  Current Release:
16612    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
16613    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
16614
16615
16616
166172) Linux
16618
16619Much work done on ACPI init (MADT and PCI IRQ routing support).
16620(Paul D. and Dominik Brodowski)
16621
16622Fix PCI IRQ-related panic on boot (Sam Revitch)
16623
16624Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16625
16626Fix "MHz" typo (Dominik Brodowski)
16627
16628Fix RTC year 2000 issue (Dominik Brodowski)
16629
16630Preclude multiple button proc entries (Eric Brunet)
16631
16632Moved arch-specific code out of include/platform/aclinux.h
16633
166343) iASL Compiler Version X2044:
16635
16636Implemented error checking for the string used in the EISAID macro
16637(Usually used in the definition of the _HID object.)  The code now
16638strictly enforces the PnP format - exactly 7 characters, 3
16639uppercase letters and 4 hex digits.
16640
16641If a raw string is used in the definition of the _HID object
16642(instead of the EISAID macro), the string must contain all
16643alphanumeric characters (e.g., "*PNP0011" is not allowed because
16644of the asterisk.)
16645
16646Implemented checking for invalid use of ACPI reserved names for
16647most of the name creation operators (Name, Device, Event, Mutex,
16648OperationRegion, PowerResource, Processor, and ThermalZone.)
16649Previously, this check was only performed for control methods.
16650
16651Implemented an additional check on the Name operator to emit an
16652error if a reserved name that must be implemented in ASL as a
16653control method is used.  We know that a reserved name must be a
16654method if it is defined with input arguments.
16655
16656The warning emitted when a namespace object reference is not found
16657during the cross reference phase has been changed into an error.
16658The "External" directive should be used for names defined in other
16659modules.
16660
16661
166624) Tools and Utilities
16663
16664The 16-bit tools (adump16 and aexec16) have been regenerated and
16665tested.
16666
16667Fixed a problem with the output of both acpidump and adump16 where
16668the indentation of closing parentheses and brackets was not
16669
16670aligned properly with the parent block.
16671
16672
16673----------------------------------------
1667403 May 2002.  Summary of changes for this release.
16675
16676
166771) ACPI CA Core Subsystem Version 20020503:
16678
16679Added support a new OSL interface that allows the host operating
16680
16681system software to override the DSDT found in the firmware -
16682AcpiOsTableOverride.  With this interface, the OSL can examine the
16683version of the firmware DSDT and replace it with a different one
16684if desired.
16685
16686Added new external interfaces for accessing ACPI registers from
16687device drivers and other system software - AcpiGetRegister and
16688AcpiSetRegister.  This was simply an externalization of the
16689existing AcpiHwBitRegister interfaces.
16690
16691Fixed a regression introduced in the previous build where the
16692ASL/AML CreateField operator always returned an error,
16693"destination must be a NS Node".
16694
16695Extended the maximum time (before failure) to successfully enable
16696ACPI mode to 3 seconds.
16697
16698Code and Data Size: Current core subsystem library sizes are shown
16699below.  These are the code and data sizes for the acpica.lib
16700produced by the Microsoft Visual C++ 6.0 compiler, and these
16701values do not include any ACPI driver or OSPM code.  The debug
16702version of the code includes the debug output trace mechanism and
16703has a larger code and data size.  Note that these values will vary
16704depending on the efficiency of the compiler and the compiler
16705options used during generation.
16706
16707  Previous Release
16708    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16709    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16710  Current Release:
16711    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
16712    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
16713
16714
167152) Linux
16716
16717Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16718free. While 3 out of 4 of our in-house systems work fine, the last
16719one still hangs when testing the LAPIC timer.
16720
16721Renamed many files in 2.5 kernel release to omit "acpi_" from the
16722name.
16723
16724Added warning on boot for Presario 711FR.
16725
16726Sleep improvements (Pavel Machek)
16727
16728ACPI can now be built without CONFIG_PCI enabled.
16729
16730IA64: Fixed memory map functions (JI Lee)
16731
16732
167333) iASL Compiler Version X2043:
16734
16735Added support to allow the compiler to be integrated into the MS
16736VC++ development environment for one-button compilation of single
16737files or entire projects -- with error-to-source-line mapping.
16738
16739Implemented support for compile-time constant folding for the
16740Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16741specification.  This allows the ASL writer to use expressions
16742instead of Integer/Buffer/String constants in terms that must
16743evaluate to constants at compile time and will also simplify the
16744emitted AML in any such sub-expressions that can be folded
16745(evaluated at compile-time.)  This increases the size of the
16746compiler significantly because a portion of the ACPI CA AML
16747interpreter is included within the compiler in order to pre-
16748evaluate constant expressions.
16749
16750
16751Fixed a problem with the "Unicode" ASL macro that caused the
16752compiler to fault.  (This macro is used in conjunction with the
16753_STR reserved name.)
16754
16755Implemented an AML opcode optimization to use the Zero, One, and
16756Ones opcodes where possible to further reduce the size of integer
16757constants and thus reduce the overall size of the generated AML
16758code.
16759
16760Implemented error checking for new reserved terms for ACPI version
167612.0A.
16762
16763Implemented the -qr option to display the current list of ACPI
16764reserved names known to the compiler.
16765
16766Implemented the -qc option to display the current list of ASL
16767operators that are allowed within constant expressions and can
16768therefore be folded at compile time if the operands are constants.
16769
16770
167714) Documentation
16772
16773Updated the Programmer's Reference for new interfaces, data types,
16774and memory allocation model options.
16775
16776Updated the iASL Compiler User Reference to apply new format and
16777add information about new features and options.
16778
16779----------------------------------------
1678019 April 2002.  Summary of changes for this release.
16781
167821) ACPI CA Core Subsystem Version 20020419:
16783
16784The source code base for the Core Subsystem has been completely
16785cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16786versions.  The Lint option files used are included in the
16787/acpi/generate/lint directory.
16788
16789Implemented enhanced status/error checking across the entire
16790Hardware manager subsystem.  Any hardware errors (reported from
16791the OSL) are now bubbled up and will abort a running control
16792method.
16793
16794
16795Fixed a problem where the per-ACPI-table integer width (32 or 64)
16796was stored only with control method nodes, causing a fault when
16797non-control method code was executed during table loading.  The
16798solution implemented uses a global variable to indicate table
16799width across the entire ACPI subsystem.  Therefore, ACPI CA does
16800not support mixed integer widths across different ACPI tables
16801(DSDT, SSDT).
16802
16803Fixed a problem where NULL extended fields (X fields) in an ACPI
168042.0 ACPI FADT caused the table load to fail.  Although the
16805existing ACPI specification is a bit fuzzy on this topic, the new
16806behavior is to fall back on a ACPI 1.0 field if the corresponding
16807ACPI 2.0 X field is zero (even though the table revision indicates
16808a full ACPI 2.0 table.)  The ACPI specification will be updated to
16809clarify this issue.
16810
16811Fixed a problem with the SystemMemory operation region handler
16812where memory was always accessed byte-wise even if the AML-
16813specified access width was larger than a byte.  This caused
16814problems on systems with memory-mapped I/O.  Memory is now
16815accessed with the width specified.  On systems that do not support
16816non-aligned transfers, a check is made to guarantee proper address
16817alignment before proceeding in order to avoid an AML-caused
16818alignment fault within the kernel.
16819
16820
16821Fixed a problem with the ExtendedIrq resource where only one byte
16822of the 4-byte Irq field was extracted.
16823
16824Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
16825function was out of date and required a rewrite.
16826
16827Code and Data Size: Current core subsystem library sizes are shown
16828below.  These are the code and data sizes for the acpica.lib
16829produced by the Microsoft Visual C++ 6.0 compiler, and these
16830values do not include any ACPI driver or OSPM code.  The debug
16831version of the code includes the debug output trace mechanism and
16832has a larger code and data size.  Note that these values will vary
16833depending on the efficiency of the compiler and the compiler
16834options used during generation.
16835
16836  Previous Release
16837    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16838    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16839  Current Release:
16840    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
16841    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
16842
16843
168442) Linux
16845
16846PCI IRQ routing fixes (Dominik Brodowski)
16847
16848
168493) iASL Compiler Version X2042:
16850
16851Implemented an additional compile-time error check for a field
16852unit whose size + minimum access width would cause a run-time
16853access beyond the end-of-region.  Previously, only the field size
16854itself was checked.
16855
16856The Core subsystem and iASL compiler now share a common parse
16857object in preparation for compile-time evaluation of the type
168583/4/5 ASL operators.
16859
16860
16861----------------------------------------
16862Summary of changes for this release: 03_29_02
16863
168641) ACPI CA Core Subsystem Version 20020329:
16865
16866Implemented support for late evaluation of TermArg operands to
16867Buffer and Package objects.  This allows complex expressions to be
16868used in the declarations of these object types.
16869
16870Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
168711.0, if the field was larger than 32 bits, it was returned as a
16872buffer - otherwise it was returned as an integer.  In ACPI 2.0,
16873the field is returned as a buffer only if the field is larger than
1687464 bits.  The TableRevision is now considered when making this
16875conversion to avoid incompatibility with existing ASL code.
16876
16877Implemented logical addressing for AcpiOsGetRootPointer.  This
16878allows an RSDP with either a logical or physical address.  With
16879this support, the host OS can now override all ACPI tables with
16880one logical RSDP.  Includes implementation of  "typed" pointer
16881support to allow a common data type for both physical and logical
16882pointers internally.  This required a change to the
16883AcpiOsGetRootPointer interface.
16884
16885Implemented the use of ACPI 2.0 Generic Address Structures for all
16886GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
16887mapped I/O for these ACPI features.
16888
16889Initialization now ignores not only non-required tables (All
16890tables other than the FADT, FACS, DSDT, and SSDTs), but also does
16891not validate the table headers of unrecognized tables.
16892
16893Fixed a problem where a notify handler could only be
16894installed/removed on an object of type Device.  All "notify"
16895
16896objects are now supported -- Devices, Processor, Power, and
16897Thermal.
16898
16899Removed most verbosity from the ACPI_DB_INFO debug level.  Only
16900critical information is returned when this debug level is enabled.
16901
16902Code and Data Size: Current core subsystem library sizes are shown
16903below.  These are the code and data sizes for the acpica.lib
16904produced by the Microsoft Visual C++ 6.0 compiler, and these
16905values do not include any ACPI driver or OSPM code.  The debug
16906version of the code includes the debug output trace mechanism and
16907has a larger code and data size.  Note that these values will vary
16908depending on the efficiency of the compiler and the compiler
16909options used during generation.
16910
16911  Previous Release
16912    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
16913    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
16914  Current Release:
16915    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
16916    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
16917
16918
169192) Linux:
16920
16921The processor driver (acpi_processor.c) now fully supports ACPI
169222.0-based processor performance control (e.g. Intel(R)
16923SpeedStep(TM) technology) Note that older laptops that only have
16924the Intel "applet" interface are not supported through this.  The
16925'limit' and 'performance' interface (/proc) are fully functional.
16926[Note that basic policy for controlling performance state
16927transitions will be included in the next version of ospmd.]  The
16928idle handler was modified to more aggressively use C2, and PIIX4
16929errata handling underwent a complete overhaul (big thanks to
16930Dominik Brodowski).
16931
16932Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
16933based devices in the ACPI namespace are now dynamically bound
16934(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
16935This allows, among other things, ACPI to resolve bus numbers for
16936subordinate PCI bridges.
16937
16938Enhanced PCI IRQ routing to get the proper bus number for _PRT
16939entries defined underneath PCI bridges.
16940
16941Added IBM 600E to bad bios list due to invalid _ADR value for
16942PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
16943
16944In the process of adding full MADT support (e.g. IOAPIC) for IA32
16945(acpi.c, mpparse.c) -- stay tuned.
16946
16947Added back visual differentiation between fixed-feature and
16948control-method buttons in dmesg.  Buttons are also subtyped (e.g.
16949button/power/PWRF) to simplify button identification.
16950
16951We no longer use -Wno-unused when compiling debug. Please ignore
16952any "_THIS_MODULE defined but not used" messages.
16953
16954Can now shut down the system using "magic sysrq" key.
16955
16956
169573) iASL Compiler version 2041:
16958
16959Fixed a problem where conversion errors for hex/octal/decimal
16960constants were not reported.
16961
16962Implemented a fix for the General Register template Address field.
16963This field was 8 bits when it should be 64.
16964
16965Fixed a problem where errors/warnings were no longer being emitted
16966within the listing output file.
16967
16968Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
16969exactly 4 characters, alphanumeric only.
16970
16971
16972
16973
16974----------------------------------------
16975Summary of changes for this release: 03_08_02
16976
16977
169781) ACPI CA Core Subsystem Version 20020308:
16979
16980Fixed a problem with AML Fields where the use of the "AccessAny"
16981keyword could cause an interpreter error due to attempting to read
16982or write beyond the end of the parent Operation Region.
16983
16984Fixed a problem in the SystemMemory Operation Region handler where
16985an attempt was made to map memory beyond the end of the region.
16986This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
16987errors on some Linux systems.
16988
16989Fixed a problem where the interpreter/namespace "search to root"
16990algorithm was not functioning for some object types.  Relaxed the
16991internal restriction on the search to allow upsearches for all
16992external object types as well as most internal types.
16993
16994
169952) Linux:
16996
16997We now use safe_halt() macro versus individual calls to sti | hlt.
16998
16999Writing to the processor limit interface should now work. "echo 1"
17000will increase the limit, 2 will decrease, and 0 will reset to the
17001
17002default.
17003
17004
170053) ASL compiler:
17006
17007Fixed segfault on Linux version.
17008
17009
17010----------------------------------------
17011Summary of changes for this release: 02_25_02
17012
170131) ACPI CA Core Subsystem:
17014
17015
17016Fixed a problem where the GPE bit masks were not initialized
17017properly, causing erratic GPE behavior.
17018
17019Implemented limited support for multiple calling conventions.  The
17020code can be generated with either the VPL (variable parameter
17021list, or "C") convention, or the FPL (fixed parameter list, or
17022"Pascal") convention.  The core subsystem is about 3.4% smaller
17023when generated with FPL.
17024
17025
170262) Linux
17027
17028Re-add some /proc/acpi/event functionality that was lost during
17029the rewrite
17030
17031Resolved issue with /proc events for fixed-feature buttons showing
17032up as the system device.
17033
17034Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17035
17036Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17037
17038Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17039
17040Fixed limit interface & usage to fix bugs with passive cooling
17041hysterisis.
17042
17043Restructured PRT support.
17044
17045
17046----------------------------------------
17047Summary of changes for this label: 02_14_02
17048
17049
170501) ACPI CA Core Subsystem:
17051
17052Implemented support in AcpiLoadTable to allow loading of FACS and
17053FADT tables.
17054
17055Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17056been removed.  All 64-bit platforms should be migrated to the ACPI
170572.0 tables.  The actbl71.h header has been removed from the source
17058tree.
17059
17060All C macros defined within the subsystem have been prefixed with
17061"ACPI_" to avoid collision with other system include files.
17062
17063Removed the return value for the two AcpiOsPrint interfaces, since
17064it is never used and causes lint warnings for ignoring the return
17065value.
17066
17067Added error checking to all internal mutex acquire and release
17068calls.  Although a failure from one of these interfaces is
17069probably a fatal system error, these checks will cause the
17070immediate abort of the currently executing method or interface.
17071
17072Fixed a problem where the AcpiSetCurrentResources interface could
17073fault.  This was a side effect of the deployment of the new memory
17074allocation model.
17075
17076Fixed a couple of problems with the Global Lock support introduced
17077in the last major build.  The "common" (1.0/2.0) internal FACS was
17078being overwritten with the FACS signature and clobbering the
17079Global Lock pointer.  Also, the actual firmware FACS was being
17080unmapped after construction of the "common" FACS, preventing
17081access to the actual Global Lock field within it.  The "common"
17082internal FACS is no longer installed as an actual ACPI table; it
17083is used simply as a global.
17084
17085Code and Data Size: Current core subsystem library sizes are shown
17086below.  These are the code and data sizes for the acpica.lib
17087produced by the Microsoft Visual C++ 6.0 compiler, and these
17088values do not include any ACPI driver or OSPM code.  The debug
17089version of the code includes the debug output trace mechanism and
17090has a larger code and data size.  Note that these values will vary
17091depending on the efficiency of the compiler and the compiler
17092options used during generation.
17093
17094  Previous Release (02_07_01)
17095    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17096    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17097  Current Release:
17098    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17099    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17100
17101
171022) Linux
17103
17104Updated Linux-specific code for core macro and OSL interface
17105changes described above.
17106
17107Improved /proc/acpi/event. It now can be opened only once and has
17108proper poll functionality.
17109
17110Fixed and restructured power management (acpi_bus).
17111
17112Only create /proc "view by type" when devices of that class exist.
17113
17114Fixed "charging/discharging" bug (and others) in acpi_battery.
17115
17116Improved thermal zone code.
17117
17118
171193) ASL Compiler, version X2039:
17120
17121
17122Implemented the new compiler restriction on ASL String hex/octal
17123escapes to non-null, ASCII values.  An error results if an invalid
17124value is used.  (This will require an ACPI 2.0 specification
17125change.)
17126
17127AML object labels that are output to the optional C and ASM source
17128are now prefixed with both the ACPI table signature and table ID
17129to help guarantee uniqueness within a large BIOS project.
17130
17131
17132----------------------------------------
17133Summary of changes for this label: 02_01_02
17134
171351) ACPI CA Core Subsystem:
17136
17137ACPI 2.0 support is complete in the entire Core Subsystem and the
17138ASL compiler. All new ACPI 2.0 operators are implemented and all
17139other changes for ACPI 2.0 support are complete.  With
17140simultaneous code and data optimizations throughout the subsystem,
17141ACPI 2.0 support has been implemented with almost no additional
17142cost in terms of code and data size.
17143
17144Implemented a new mechanism for allocation of return buffers.  If
17145the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17146be allocated on behalf of the caller.  Consolidated all return
17147buffer validation and allocation to a common procedure.  Return
17148buffers will be allocated via the primary OSL allocation interface
17149since it appears that a separate pool is not needed by most users.
17150If a separate pool is required for these buffers, the caller can
17151still use the original mechanism and pre-allocate the buffer(s).
17152
17153Implemented support for string operands within the DerefOf
17154operator.
17155
17156Restructured the Hardware and Event managers to be table driven,
17157simplifying the source code and reducing the amount of generated
17158code.
17159
17160Split the common read/write low-level ACPI register bitfield
17161procedure into a separate read and write, simplifying the code
17162considerably.
17163
17164Obsoleted the AcpiOsCallocate OSL interface.  This interface was
17165used only a handful of times and didn't have enough critical mass
17166for a separate interface.  Replaced with a common calloc procedure
17167in the core.
17168
17169Fixed a reported problem with the GPE number mapping mechanism
17170that allows GPE1 numbers to be non-contiguous with GPE0.
17171Reorganized the GPE information and shrunk a large array that was
17172originally large enough to hold info for all possible GPEs (256)
17173to simply large enough to hold all GPEs up to the largest GPE
17174number on the machine.
17175
17176Fixed a reported problem with resource structure alignment on 64-
17177bit platforms.
17178
17179Changed the AcpiEnableEvent and AcpiDisableEvent external
17180interfaces to not require any flags for the common case of
17181enabling/disabling a GPE.
17182
17183Implemented support to allow a "Notify" on a Processor object.
17184
17185Most TBDs in comments within the source code have been resolved
17186and eliminated.
17187
17188
17189Fixed a problem in the interpreter where a standalone parent
17190prefix (^) was not handled correctly in the interpreter and
17191debugger.
17192
17193Removed obsolete and unnecessary GPE save/restore code.
17194
17195Implemented Field support in the ASL Load operator.  This allows a
17196table to be loaded from a named field, in addition to loading a
17197table directly from an Operation Region.
17198
17199Implemented timeout and handle support in the external Global Lock
17200interfaces.
17201
17202Fixed a problem in the AcpiDump utility where pathnames were no
17203longer being generated correctly during the dump of named objects.
17204
17205Modified the AML debugger to give a full display of if/while
17206predicates instead of just one AML opcode at a time.  (The
17207predicate can have several nested ASL statements.)  The old method
17208was confusing during single stepping.
17209
17210Code and Data Size: Current core subsystem library sizes are shown
17211below. These are the code and data sizes for the acpica.lib
17212produced by the Microsoft Visual C++ 6.0 compiler, and these
17213values do not include any ACPI driver or OSPM code.  The debug
17214version of the code includes the debug output trace mechanism and
17215has a larger code and data size.  Note that these values will vary
17216depending on the efficiency of the compiler and the compiler
17217options used during generation.
17218
17219  Previous Release (12_18_01)
17220     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17221     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17222   Current Release:
17223     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
17224     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
17225
172262) Linux
17227
17228 Implemented fix for PIIX reverse throttling errata (Processor
17229driver)
17230
17231Added new Limit interface (Processor and Thermal drivers)
17232
17233New thermal policy (Thermal driver)
17234
17235Many updates to /proc
17236
17237Battery "low" event support (Battery driver)
17238
17239Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17240
17241IA32 - IA64 initialization unification, no longer experimental
17242
17243Menuconfig options redesigned
17244
172453) ASL Compiler, version X2037:
17246
17247Implemented several new output features to simplify integration of
17248AML code into  firmware: 1) Output the AML in C source code with
17249labels for each named ASL object.  The    original ASL source code
17250is interleaved as C comments. 2) Output the AML in ASM source code
17251with labels and interleaved ASL    source. 3) Output the AML in
17252raw hex table form, in either C or ASM.
17253
17254Implemented support for optional string parameters to the
17255LoadTable operator.
17256
17257Completed support for embedded escape sequences within string
17258literals.  The compiler now supports all single character escapes
17259as well as the Octal and Hex escapes.  Note: the insertion of a
17260null byte into a string literal (via the hex/octal escape) causes
17261the string to be immediately terminated.  A warning is issued.
17262
17263Fixed a problem where incorrect AML was generated for the case
17264where an ASL namepath consists of a single parent prefix (
17265
17266) with no trailing name segments.
17267
17268The compiler has been successfully generated with a 64-bit C
17269compiler.
17270
17271
17272
17273
17274----------------------------------------
17275Summary of changes for this label: 12_18_01
17276
172771) Linux
17278
17279Enhanced blacklist with reason and severity fields. Any table's
17280signature may now be used to identify a blacklisted system.
17281
17282Call _PIC control method to inform the firmware which interrupt
17283model the OS is using. Turn on any disabled link devices.
17284
17285Cleaned up busmgr /proc error handling (Andreas Dilger)
17286
17287 2) ACPI CA Core Subsystem:
17288
17289Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17290while loop)
17291
17292Completed implementation of the ACPI 2.0 "Continue",
17293"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17294operators.  All new ACPI 2.0 operators are now implemented in both
17295the ASL compiler and the AML interpreter.  The only remaining ACPI
172962.0 task is support for the String data type in the DerefOf
17297operator.  Fixed a problem with AcquireMutex where the status code
17298was lost if the caller had to actually wait for the mutex.
17299
17300Increased the maximum ASL Field size from 64K bits to 4G bits.
17301
17302Completed implementation of the external Global Lock interfaces --
17303AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
17304Handler parameters were added.
17305
17306Completed another pass at removing warnings and issues when
17307compiling with 64-bit compilers.  The code now compiles cleanly
17308with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
17309add and subtract (diff) macros have changed considerably.
17310
17311
17312Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1731364-bit platforms, 32-bits on all others.  This type is used
17314wherever memory allocation and/or the C sizeof() operator is used,
17315and affects the OSL memory allocation interfaces AcpiOsAllocate
17316and AcpiOsCallocate.
17317
17318Implemented sticky user breakpoints in the AML debugger.
17319
17320Code and Data Size: Current core subsystem library sizes are shown
17321below. These are the code and data sizes for the acpica.lib
17322produced by the Microsoft Visual C++ 6.0 compiler, and these
17323values do not include any ACPI driver or OSPM code.  The debug
17324version of the code includes the debug output trace mechanism and
17325has a larger code and data size. Note that these values will vary
17326depending on the efficiency of the compiler and the compiler
17327options used during generation.
17328
17329  Previous Release (12_05_01)
17330     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17331     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17332   Current Release:
17333     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
17334     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
17335
17336 3) ASL Compiler, version X2034:
17337
17338Now checks for (and generates an error if detected) the use of a
17339Break or Continue statement without an enclosing While statement.
17340
17341
17342Successfully generated the compiler with the Intel 64-bit C
17343compiler.
17344
17345 ----------------------------------------
17346Summary of changes for this label: 12_05_01
17347
17348 1) ACPI CA Core Subsystem:
17349
17350The ACPI 2.0 CopyObject operator is fully implemented.  This
17351operator creates a new copy of an object (and is also used to
17352bypass the "implicit conversion" mechanism of the Store operator.)
17353
17354The ACPI 2.0 semantics for the SizeOf operator are fully
17355implemented.  The change is that performing a SizeOf on a
17356reference object causes an automatic dereference of the object to
17357tha actual value before the size is evaluated. This behavior was
17358undefined in ACPI 1.0.
17359
17360The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17361have been implemented.  The interrupt polarity and mode are now
17362independently set.
17363
17364Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17365appearing in Package objects were not properly converted to
17366integers when the internal Package was converted to an external
17367object (via the AcpiEvaluateObject interface.)
17368
17369Fixed a problem with the namespace object deletion mechanism for
17370objects created by control methods.  There were two parts to this
17371problem: 1) Objects created during the initialization phase method
17372parse were not being deleted, and 2) The object owner ID mechanism
17373to track objects was broken.
17374
17375Fixed a problem where the use of the ASL Scope operator within a
17376control method would result in an invalid opcode exception.
17377
17378Fixed a problem introduced in the previous label where the buffer
17379length required for the _PRT structure was not being returned
17380correctly.
17381
17382Code and Data Size: Current core subsystem library sizes are shown
17383below. These are the code and data sizes for the acpica.lib
17384produced by the Microsoft Visual C++ 6.0 compiler, and these
17385values do not include any ACPI driver or OSPM code.  The debug
17386version of the code includes the debug output trace mechanism and
17387has a larger code and data size.  Note that these values will vary
17388depending on the efficiency of the compiler and the compiler
17389options used during generation.
17390
17391  Previous Release (11_20_01)
17392     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17393     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17394
17395  Current Release:
17396     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
17397     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
17398
17399 2) Linux:
17400
17401Updated all files to apply cleanly against 2.4.16.
17402
17403Added basic PCI Interrupt Routing Table (PRT) support for IA32
17404(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
17405version supports both static and dynamic PRT entries, but dynamic
17406entries are treated as if they were static (not yet
17407reconfigurable).  Architecture- specific code to use this data is
17408absent on IA32 but should be available shortly.
17409
17410Changed the initialization sequence to start the ACPI interpreter
17411(acpi_init) prior to initialization of the PCI driver (pci_init)
17412in init/main.c.  This ordering is required to support PRT and
17413facilitate other (future) enhancement.  A side effect is that the
17414ACPI bus driver and certain device drivers can no longer be loaded
17415as modules.
17416
17417Modified the 'make menuconfig' options to allow PCI Interrupt
17418Routing support to be included without the ACPI Bus and other
17419device drivers.
17420
17421 3) ASL Compiler, version X2033:
17422
17423Fixed some issues with the use of the new CopyObject and
17424DataTableRegion operators.  Both are fully functional.
17425
17426 ----------------------------------------
17427Summary of changes for this label: 11_20_01
17428
17429 20 November 2001.  Summary of changes for this release.
17430
17431 1) ACPI CA Core Subsystem:
17432
17433Updated Index support to match ACPI 2.0 semantics.  Storing a
17434Integer, String, or Buffer to an Index of a Buffer will store only
17435the least-significant byte of the source to the Indexed buffer
17436byte.  Multiple writes are not performed.
17437
17438Fixed a problem where the access type used in an AccessAs ASL
17439operator was not recorded correctly into the field object.
17440
17441Fixed a problem where ASL Event objects were created in a
17442signalled state. Events are now created in an unsignalled state.
17443
17444The internal object cache is now purged after table loading and
17445initialization to reduce the use of dynamic kernel memory -- on
17446the assumption that object use is greatest during the parse phase
17447of the entire table (versus the run-time use of individual control
17448methods.)
17449
17450ACPI 2.0 variable-length packages are now fully operational.
17451
17452Code and Data Size: Code and Data optimizations have permitted new
17453feature development with an actual reduction in the library size.
17454Current core subsystem library sizes are shown below.  These are
17455the code and data sizes for the acpica.lib produced by the
17456Microsoft Visual C++ 6.0 compiler, and these values do not include
17457any ACPI driver or OSPM code.  The debug version of the code
17458includes the debug output trace mechanism and has a larger code
17459and data size.  Note that these values will vary depending on the
17460efficiency of the compiler and the compiler options used during
17461generation.
17462
17463  Previous Release (11_09_01):
17464     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17465     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17466
17467  Current Release:
17468     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
17469     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
17470
17471 2) Linux:
17472
17473Enhanced the ACPI boot-time initialization code to allow the use
17474of Local APIC tables for processor enumeration on IA-32, and to
17475pave the way for a fully MPS-free boot (on SMP systems) in the
17476near future.  This functionality replaces
17477arch/i386/kernel/acpitables.c, which was introduced in an earlier
174782.4.15-preX release.  To enable this feature you must add
17479"acpi_boot=on" to the kernel command line -- see the help entry
17480for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
17481the works...
17482
17483Restructured the configuration options to allow boot-time table
17484parsing support without inclusion of the ACPI Interpreter (and
17485other) code.
17486
17487NOTE: This release does not include fixes for the reported events,
17488power-down, and thermal passive cooling issues (coming soon).
17489
17490 3) ASL Compiler:
17491
17492Added additional typechecking for Fields within restricted access
17493Operation Regions.  All fields within EC and CMOS regions must be
17494declared with ByteAcc. All fields within SMBus regions must be
17495declared with the BufferAcc access type.
17496
17497Fixed a problem where the listing file output of control methods
17498no longer interleaved the actual AML code with the ASL source
17499code.
17500
17501
17502
17503
17504----------------------------------------
17505Summary of changes for this label: 11_09_01
17506
175071) ACPI CA Core Subsystem:
17508
17509Implemented ACPI 2.0-defined support for writes to fields with a
17510Buffer, String, or Integer source operand that is smaller than the
17511target field. In these cases, the source operand is zero-extended
17512to fill the target field.
17513
17514Fixed a problem where a Field starting bit offset (within the
17515parent operation region) was calculated incorrectly if the
17516
17517alignment of the field differed from the access width.  This
17518affected CreateWordField, CreateDwordField, CreateQwordField, and
17519possibly other fields that use the "AccessAny" keyword.
17520
17521Fixed a problem introduced in the 11_02_01 release where indirect
17522stores through method arguments did not operate correctly.
17523
175242) Linux:
17525
17526Implemented boot-time ACPI table parsing support
17527(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
17528facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17529legacy BIOS interfaces (e.g. MPS) for the configuration of system
17530processors, memory, and interrupts during setup_arch().  Note that
17531this patch does not include the required architecture-specific
17532changes required to apply this information -- subsequent patches
17533will be posted for both IA32 and IA64 to achieve this.
17534
17535Added low-level sleep support for IA32 platforms, courtesy of Pat
17536Mochel. This allows IA32 systems to transition to/from various
17537sleeping states (e.g. S1, S3), although the lack of a centralized
17538driver model and power-manageable drivers will prevent its
17539(successful) use on most systems.
17540
17541Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17542submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17543tables" option, etc.
17544
17545Increased the default timeout for the EC driver from 1ms to 10ms
17546(1000 cycles of 10us) to try to address AE_TIME errors during EC
17547transactions.
17548
17549 ----------------------------------------
17550Summary of changes for this label: 11_02_01
17551
175521) ACPI CA Core Subsystem:
17553
17554ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17555(QWordAcc keyword). All ACPI 2.0 64-bit support is now
17556implemented.
17557
17558OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17559changes to support ACPI 2.0 Qword field access.  Read/Write
17560PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17561accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
17562the value parameter for the address space handler interface is now
17563an ACPI_INTEGER.  OSL implementations of these interfaces must now
17564handle the case where the Width parameter is 64.
17565
17566Index Fields: Fixed a problem where unaligned bit assembly and
17567disassembly for IndexFields was not supported correctly.
17568
17569Index and Bank Fields:  Nested Index and Bank Fields are now
17570supported. During field access, a check is performed to ensure
17571that the value written to an Index or Bank register is not out of
17572the range of the register.  The Index (or Bank) register is
17573written before each access to the field data. Future support will
17574include allowing individual IndexFields to be wider than the
17575DataRegister width.
17576
17577Fields: Fixed a problem where the AML interpreter was incorrectly
17578attempting to write beyond the end of a Field/OpRegion.  This was
17579a boundary case that occurred when a DWORD field was written to a
17580BYTE access OpRegion, forcing multiple writes and causing the
17581interpreter to write one datum too many.
17582
17583Fields: Fixed a problem with Field/OpRegion access where the
17584starting bit address of a field was incorrectly calculated if the
17585current access type was wider than a byte (WordAcc, DwordAcc, or
17586QwordAcc).
17587
17588Fields: Fixed a problem where forward references to individual
17589FieldUnits (individual Field names within a Field definition) were
17590not resolved during the AML table load.
17591
17592Fields: Fixed a problem where forward references from a Field
17593definition to the parent Operation Region definition were not
17594resolved during the AML table load.
17595
17596Fields: Duplicate FieldUnit names within a scope are now detected
17597during AML table load.
17598
17599Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17600returned an incorrect name for the root node.
17601
17602Code and Data Size: Code and Data optimizations have permitted new
17603feature development with an actual reduction in the library size.
17604Current core subsystem library sizes are shown below.  These are
17605the code and data sizes for the acpica.lib produced by the
17606Microsoft Visual C++ 6.0 compiler, and these values do not include
17607any ACPI driver or OSPM code.  The debug version of the code
17608includes the debug output trace mechanism and has a larger code
17609and data size.  Note that these values will vary depending on the
17610efficiency of the compiler and the compiler options used during
17611generation.
17612
17613  Previous Release (10_18_01):
17614     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17615     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17616
17617  Current Release:
17618     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
17619     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
17620
17621 2) Linux:
17622
17623Improved /proc processor output (Pavel Machek) Re-added
17624MODULE_LICENSE("GPL") to all modules.
17625
17626 3) ASL Compiler version X2030:
17627
17628Duplicate FieldUnit names within a scope are now detected and
17629flagged as errors.
17630
17631 4) Documentation:
17632
17633Programmer Reference updated to reflect OSL and address space
17634handler interface changes described above.
17635
17636----------------------------------------
17637Summary of changes for this label: 10_18_01
17638
17639ACPI CA Core Subsystem:
17640
17641Fixed a problem with the internal object reference count mechanism
17642that occasionally caused premature object deletion. This resolves
17643all of the outstanding problem reports where an object is deleted
17644in the middle of an interpreter evaluation.  Although this problem
17645only showed up in rather obscure cases, the solution to the
17646problem involved an adjustment of all reference counts involving
17647objects attached to namespace nodes.
17648
17649Fixed a problem with Field support in the interpreter where
17650writing to an aligned field whose length is an exact multiple (2
17651or greater) of the field access granularity would cause an attempt
17652to write beyond the end of the field.
17653
17654The top level AML opcode execution functions within the
17655interpreter have been renamed with a more meaningful and
17656consistent naming convention.  The modules exmonad.c and
17657exdyadic.c were eliminated.  New modules are exoparg1.c,
17658exoparg2.c, exoparg3.c, and exoparg6.c.
17659
17660Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17661
17662Fixed a problem where the AML debugger was causing some internal
17663objects to not be deleted during subsystem termination.
17664
17665Fixed a problem with the external AcpiEvaluateObject interface
17666where the subsystem would fault if the named object to be
17667evaluated referred to a constant such as Zero, Ones, etc.
17668
17669Fixed a problem with IndexFields and BankFields where the
17670subsystem would fault if the index, data, or bank registers were
17671not defined in the same scope as the field itself.
17672
17673Added printf format string checking for compilers that support
17674this feature.  Corrected more than 50 instances of issues with
17675format specifiers within invocations of ACPI_DEBUG_PRINT
17676throughout the core subsystem code.
17677
17678The ASL "Revision" operator now returns the ACPI support level
17679implemented in the core - the value "2" since the ACPI 2.0 support
17680is more than 50% implemented.
17681
17682Enhanced the output of the AML debugger "dump namespace" command
17683to output in a more human-readable form.
17684
17685Current core subsystem library code sizes are shown below.  These
17686
17687are the code and data sizes for the acpica.lib produced by the
17688Microsoft Visual C++ 6.0 compiler, and these values do not include
17689any ACPI driver or OSPM code.  The debug version of the code
17690includes the full debug trace mechanism -- leading to a much
17691
17692larger code and data size.  Note that these values will vary
17693depending on the efficiency of the compiler and the compiler
17694options used during generation.
17695
17696     Previous Label (09_20_01):
17697     Non-Debug Version:    65K Code,     5K Data,     70K Total
17698     Debug Version:       138K Code,    58K Data,    196K Total
17699
17700     This Label:
17701
17702     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
17703     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
17704
17705Linux:
17706
17707Implemented a "Bad BIOS Blacklist" to track machines that have
17708known ASL/AML problems.
17709
17710Enhanced the /proc interface for the thermal zone driver and added
17711support for _HOT (the critical suspend trip point).  The 'info'
17712file now includes threshold/policy information, and allows setting
17713of _SCP (cooling preference) and _TZP (polling frequency) values
17714to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17715frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17716preference to the passive/quiet mode (if supported by the ASL).
17717
17718Implemented a workaround for a gcc bug that resuted in an OOPs
17719when loading the control method battery driver.
17720
17721 ----------------------------------------
17722Summary of changes for this label: 09_20_01
17723
17724 ACPI CA Core Subsystem:
17725
17726The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17727modified to allow individual GPE levels to be flagged as wake-
17728enabled (i.e., these GPEs are to remain enabled when the platform
17729sleeps.)
17730
17731The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17732support wake-enabled GPEs.  This means that upon entering the
17733sleep state, all GPEs that are not wake-enabled are disabled.
17734When leaving the sleep state, these GPEs are re-enabled.
17735
17736A local double-precision divide/modulo module has been added to
17737enhance portability to OS kernels where a 64-bit math library is
17738not available.  The new module is "utmath.c".
17739
17740Several optimizations have been made to reduce the use of CPU
17741stack.  Originally over 2K, the maximum stack usage is now below
177422K at 1860  bytes (1.82k)
17743
17744Fixed a problem with the AcpiGetFirmwareTable interface where the
17745root table pointer was not mapped into a logical address properly.
17746
17747Fixed a problem where a NULL pointer was being dereferenced in the
17748interpreter code for the ASL Notify operator.
17749
17750Fixed a problem where the use of the ASL Revision operator
17751returned an error. This operator now returns the current version
17752of the ACPI CA core subsystem.
17753
17754Fixed a problem where objects passed as control method parameters
17755to AcpiEvaluateObject were always deleted at method termination.
17756However, these objects may end up being stored into the namespace
17757by the called method.  The object reference count mechanism was
17758applied to these objects instead of a force delete.
17759
17760Fixed a problem where static strings or buffers (contained in the
17761AML code) that are declared as package elements within the ASL
17762code could cause a fault because the interpreter would attempt to
17763delete them.  These objects are now marked with the "static
17764object" flag to prevent any attempt to delete them.
17765
17766Implemented an interpreter optimization to use operands directly
17767from the state object instead of extracting the operands to local
17768variables.  This reduces stack use and code size, and improves
17769performance.
17770
17771The module exxface.c was eliminated as it was an unnecessary extra
17772layer of code.
17773
17774Current core subsystem library code sizes are shown below.  These
17775are the code and data sizes for the acpica.lib produced by the
17776Microsoft Visual C++ 6.0 compiler, and these values do not include
17777any ACPI driver or OSPM code.  The debug version of the code
17778includes the full debug trace mechanism -- leading to a much
17779larger code and data size.  Note that these values will vary
17780depending on the efficiency of the compiler and the compiler
17781options used during generation.
17782
17783  Non-Debug Version:  65K Code,   5K Data,   70K Total
17784(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
17785Total  (Previously 195K)
17786
17787Linux:
17788
17789Support for ACPI 2.0 64-bit integers has been added.   All ACPI
17790Integer objects are now 64 bits wide
17791
17792All Acpi data types and structures are now in lower case.  Only
17793Acpi macros are upper case for differentiation.
17794
17795 Documentation:
17796
17797Changes to the external interfaces as described above.
17798
17799 ----------------------------------------
17800Summary of changes for this label: 08_31_01
17801
17802 ACPI CA Core Subsystem:
17803
17804A bug with interpreter implementation of the ASL Divide operator
17805was found and fixed.  The implicit function return value (not the
17806explicit store operands) was returning the remainder instead of
17807the quotient.  This was a longstanding bug and it fixes several
17808known outstanding issues on various platforms.
17809
17810The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17811been further optimized for size.  There are 700 invocations of the
17812DEBUG_PRINT macro alone, so each optimization reduces the size of
17813the debug version of the subsystem significantly.
17814
17815A stack trace mechanism has been implemented.  The maximum stack
17816usage is about 2K on 32-bit platforms.  The debugger command "stat
17817stack" will display the current maximum stack usage.
17818
17819All public symbols and global variables within the subsystem are
17820now prefixed with the string "Acpi".  This keeps all of the
17821symbols grouped together in a kernel map, and avoids conflicts
17822with other kernel subsystems.
17823
17824Most of the internal fixed lookup tables have been moved into the
17825code segment via the const operator.
17826
17827Several enhancements have been made to the interpreter to both
17828reduce the code size and improve performance.
17829
17830Current core subsystem library code sizes are shown below.  These
17831are the code and data sizes for the acpica.lib produced by the
17832Microsoft Visual C++ 6.0 compiler, and these values do not include
17833any ACPI driver or OSPM code.  The debug version of the code
17834includes the full debug trace mechanism which contains over 700
17835invocations of the DEBUG_PRINT macro, 500 function entry macro
17836invocations, and over 900 function exit macro invocations --
17837leading to a much larger code and data size.  Note that these
17838values will vary depending on the efficiency of the compiler and
17839the compiler options used during generation.
17840
17841        Non-Debug Version:  64K Code,   5K Data,   69K Total
17842Debug Version:     137K Code,  58K Data,  195K Total
17843
17844 Linux:
17845
17846Implemented wbinvd() macro, pending a kernel-wide definition.
17847
17848Fixed /proc/acpi/event to handle poll() and short reads.
17849
17850 ASL Compiler, version X2026:
17851
17852Fixed a problem introduced in the previous label where the AML
17853
17854code emitted for package objects produced packages with zero
17855length.
17856
17857 ----------------------------------------
17858Summary of changes for this label: 08_16_01
17859
17860ACPI CA Core Subsystem:
17861
17862The following ACPI 2.0 ASL operators have been implemented in the
17863AML interpreter (These are already supported by the Intel ASL
17864compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
17865ToBuffer.  Support for 64-bit AML constants is implemented in the
17866AML parser, debugger, and disassembler.
17867
17868The internal memory tracking mechanism (leak detection code) has
17869been upgraded to reduce the memory overhead (a separate tracking
17870block is no longer allocated for each memory allocation), and now
17871supports all of the internal object caches.
17872
17873The data structures and code for the internal object caches have
17874been coelesced and optimized so that there is a single cache and
17875memory list data structure and a single group of functions that
17876implement generic cache management.  This has reduced the code
17877size in both the debug and release versions of the subsystem.
17878
17879The DEBUG_PRINT macro(s) have been optimized for size and replaced
17880by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
17881different, because it generates a single call to an internal
17882function.  This results in a savings of about 90 bytes per
17883invocation, resulting in an overall code and data savings of about
1788416% in the debug version of the subsystem.
17885
17886 Linux:
17887
17888Fixed C3 disk corruption problems and re-enabled C3 on supporting
17889machines.
17890
17891Integrated low-level sleep code by Patrick Mochel.
17892
17893Further tweaked source code Linuxization.
17894
17895Other minor fixes.
17896
17897 ASL Compiler:
17898
17899Support for ACPI 2.0 variable length packages is fixed/completed.
17900
17901Fixed a problem where the optional length parameter for the ACPI
179022.0 ToString operator.
17903
17904Fixed multiple extraneous error messages when a syntax error is
17905detected within the declaration line of a control method.
17906
17907 ----------------------------------------
17908Summary of changes for this label: 07_17_01
17909
17910ACPI CA Core Subsystem:
17911
17912Added a new interface named AcpiGetFirmwareTable to obtain any
17913ACPI table via the ACPI signature.  The interface can be called at
17914any time during kernel initialization, even before the kernel
17915virtual memory manager is initialized and paging is enabled.  This
17916allows kernel subsystems to obtain ACPI tables very early, even
17917before the ACPI CA subsystem is initialized.
17918
17919Fixed a problem where Fields defined with the AnyAcc attribute
17920could be resolved to the incorrect address under the following
17921conditions: 1) the field width is larger than 8 bits and 2) the
17922parent operation region is not defined on a DWORD boundary.
17923
17924Fixed a problem where the interpreter is not being locked during
17925namespace initialization (during execution of the _INI control
17926methods), causing an error when an attempt is made to release it
17927later.
17928
17929ACPI 2.0 support in the AML Interpreter has begun and will be
17930ongoing throughout the rest of this year.  In this label, The Mod
17931operator is implemented.
17932
17933Added a new data type to contain full PCI addresses named
17934ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
17935and Function values.
17936
17937 Linux:
17938
17939Enhanced the Linux version of the source code to change most
17940capitalized ACPI type names to lowercase. For example, all
17941instances of ACPI_STATUS are changed to acpi_status.  This will
17942result in a large diff, but the change is strictly cosmetic and
17943aligns the CA code closer to the Linux coding standard.
17944
17945OSL Interfaces:
17946
17947The interfaces to the PCI configuration space have been changed to
17948add the PCI Segment number and to split the single 32-bit combined
17949DeviceFunction field into two 16-bit fields.  This was
17950accomplished by moving the four values that define an address in
17951PCI configuration space (segment, bus, device, and function) to
17952the new ACPI_PCI_ID structure.
17953
17954The changes to the PCI configuration space interfaces led to a
17955reexamination of the complete set of address space access
17956interfaces for PCI, I/O, and Memory.  The previously existing 18
17957interfaces have proven difficult to maintain (any small change
17958must be propagated across at least 6 interfaces) and do not easily
17959allow for future expansion to 64 bits if necessary.  Also, on some
17960systems, it would not be appropriate to demultiplex the access
17961width (8, 16, 32,or 64) before calling the OSL if the
17962corresponding native OS interfaces contain a similar access width
17963parameter.  For these reasons, the 18 address space interfaces
17964have been replaced by these 6 new ones:
17965
17966AcpiOsReadPciConfiguration
17967AcpiOsWritePciConfiguration
17968AcpiOsReadMemory
17969AcpiOsWriteMemory
17970AcpiOsReadPort
17971AcpiOsWritePort
17972
17973Added a new interface named AcpiOsGetRootPointer to allow the OSL
17974to perform the platform and/or OS-specific actions necessary to
17975obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
17976interface will simply call down to the CA core to perform the low-
17977memory search for the table.  On IA-64, the RSDP is obtained from
17978EFI.  Migrating this interface to the OSL allows the CA core to
17979
17980remain OS and platform independent.
17981
17982Added a new interface named AcpiOsSignal to provide a generic
17983"function code and pointer" interface for various miscellaneous
17984signals and notifications that must be made to the host OS.   The
17985first such signals are intended to support the ASL Fatal and
17986Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
17987interface has been obsoleted.
17988
17989The definition of the AcpiFormatException interface has been
17990changed to simplify its use.  The caller no longer must supply a
17991buffer to the call; A pointer to a const string is now returned
17992directly.  This allows the call to be easily used in printf
17993statements, etc. since the caller does not have to manage a local
17994buffer.
17995
17996
17997 ASL Compiler, Version X2025:
17998
17999The ACPI 2.0 Switch/Case/Default operators have been implemented
18000and are fully functional.  They will work with all ACPI 1.0
18001interpreters, since the operators are simply translated to If/Else
18002pairs.
18003
18004The ACPI 2.0 ElseIf operator is implemented and will also work
18005with 1.0 interpreters, for the same reason.
18006
18007Implemented support for ACPI 2.0 variable-length packages.  These
18008packages have a separate opcode, and their size is determined by
18009the interpreter at run-time.
18010
18011Documentation The ACPI CA Programmer Reference has been updated to
18012reflect the new interfaces and changes to existing interfaces.
18013
18014 ------------------------------------------
18015Summary of changes for this label: 06_15_01
18016
18017 ACPI CA Core Subsystem:
18018
18019Fixed a problem where a DWORD-accessed field within a Buffer
18020object would get its byte address inadvertently rounded down to
18021the nearest DWORD.  Buffers are always Byte-accessible.
18022
18023 ASL Compiler, version X2024:
18024
18025Fixed a problem where the Switch() operator would either fault or
18026hang the compiler.  Note however, that the AML code for this ACPI
180272.0 operator is not yet implemented.
18028
18029Compiler uses the new AcpiOsGetTimer interface to obtain compile
18030timings.
18031
18032Implementation of the CreateField operator automatically converts
18033a reference to a named field within a resource descriptor from a
18034byte offset to a bit offset if required.
18035
18036Added some missing named fields from the resource descriptor
18037support. These are the names that are automatically created by the
18038compiler to reference fields within a descriptor.  They are only
18039valid at compile time and are not passed through to the AML
18040interpreter.
18041
18042Resource descriptor named fields are now typed as Integers and
18043subject to compile-time typechecking when used in expressions.
18044
18045 ------------------------------------------
18046Summary of changes for this label: 05_18_01
18047
18048 ACPI CA Core Subsystem:
18049
18050Fixed a couple of problems in the Field support code where bits
18051from adjacent fields could be returned along with the proper field
18052bits. Restructured the field support code to improve performance,
18053readability and maintainability.
18054
18055New DEBUG_PRINTP macro automatically inserts the procedure name
18056into the output, saving hundreds of copies of procedure name
18057strings within the source, shrinking the memory footprint of the
18058debug version of the core subsystem.
18059
18060 Source Code Structure:
18061
18062The source code directory tree was restructured to reflect the
18063current organization of the component architecture.  Some files
18064and directories have been moved and/or renamed.
18065
18066 Linux:
18067
18068Fixed leaking kacpidpc processes.
18069
18070Fixed queueing event data even when /proc/acpi/event is not
18071opened.
18072
18073 ASL Compiler, version X2020:
18074
18075Memory allocation performance enhancement - over 24X compile time
18076improvement on large ASL files.  Parse nodes and namestring
18077buffers are now allocated from a large internal compiler buffer.
18078
18079The temporary .SRC file is deleted unless the "-s" option is
18080specified
18081
18082The "-d" debug output option now sends all output to the .DBG file
18083instead of the console.
18084
18085"External" second parameter is now optional
18086
18087"ElseIf" syntax now properly allows the predicate
18088
18089Last operand to "Load" now recognized as a Target operand
18090
18091Debug object can now be used anywhere as a normal object.
18092
18093ResourceTemplate now returns an object of type BUFFER
18094
18095EISAID now returns an object of type INTEGER
18096
18097"Index" now works with a STRING operand
18098
18099"LoadTable" now accepts optional parameters
18100
18101"ToString" length parameter is now optional
18102
18103"Interrupt (ResourceType," parse error fixed.
18104
18105"Register" with a user-defined region space parse error fixed
18106
18107Escaped backslash at the end of a string ("\\") scan/parse error
18108fixed
18109
18110"Revision" is now an object of type INTEGER.
18111
18112
18113
18114------------------------------------------
18115Summary of changes for this label: 05_02_01
18116
18117Linux:
18118
18119/proc/acpi/event now blocks properly.
18120
18121Removed /proc/sys/acpi. You can still dump your DSDT from
18122/proc/acpi/dsdt.
18123
18124 ACPI CA Core Subsystem:
18125
18126Fixed a problem introduced in the previous label where some of the
18127"small" resource descriptor types were not recognized.
18128
18129Improved error messages for the case where an ASL Field is outside
18130the range of the parent operation region.
18131
18132 ASL Compiler, version X2018:
18133
18134
18135Added error detection for ASL Fields that extend beyond the length
18136of the parent operation region (only if the length of the region
18137is known at compile time.)  This includes fields that have a
18138minimum access width that is smaller than the parent region, and
18139individual field units that are partially or entirely beyond the
18140extent of the parent.
18141
18142
18143
18144------------------------------------------
18145Summary of changes for this label: 04_27_01
18146
18147 ACPI CA Core Subsystem:
18148
18149Fixed a problem where the namespace mutex could be released at the
18150wrong time during execution of AcpiRemoveAddressSpaceHandler.
18151
18152Added optional thread ID output for debug traces, to simplify
18153debugging of multiple threads.  Added context switch notification
18154when the debug code realizes that a different thread is now
18155executing ACPI code.
18156
18157Some additional external data types have been prefixed with the
18158string "ACPI_" for consistency.  This may effect existing code.
18159The data types affected are the external callback typedefs - e.g.,
18160
18161WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18162
18163 Linux:
18164
18165Fixed an issue with the OSL semaphore implementation where a
18166thread was waking up with an error from receiving a SIGCHLD
18167signal.
18168
18169Linux version of ACPI CA now uses the system C library for string
18170manipulation routines instead of a local implementation.
18171
18172Cleaned up comments and removed TBDs.
18173
18174 ASL Compiler, version X2017:
18175
18176Enhanced error detection and reporting for all file I/O
18177operations.
18178
18179 Documentation:
18180
18181Programmer Reference updated to version 1.06.
18182
18183
18184
18185------------------------------------------
18186Summary of changes for this label: 04_13_01
18187
18188 ACPI CA Core Subsystem:
18189
18190Restructured support for BufferFields and RegionFields.
18191BankFields support is now fully operational.  All known 32-bit
18192limitations on field sizes have been removed.  Both BufferFields
18193and (Operation) RegionFields are now supported by the same field
18194management code.
18195
18196Resource support now supports QWORD address and IO resources. The
1819716/32/64 bit address structures and the Extended IRQ structure
18198have been changed to properly handle Source Resource strings.
18199
18200A ThreadId of -1 is now used to indicate a "mutex not acquired"
18201condition internally and must never be returned by AcpiOsThreadId.
18202This reserved value was changed from 0 since Unix systems allow a
18203thread ID of 0.
18204
18205Linux:
18206
18207Driver code reorganized to enhance portability
18208
18209Added a kernel configuration option to control ACPI_DEBUG
18210
18211Fixed the EC driver to honor _GLK.
18212
18213ASL Compiler, version X2016:
18214
18215Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
18216address space was set to 0, not 0x7f as it should be.
18217
18218 ------------------------------------------
18219Summary of changes for this label: 03_13_01
18220
18221 ACPI CA Core Subsystem:
18222
18223During ACPI initialization, the _SB_._INI method is now run if
18224present.
18225
18226Notify handler fix - notifies are deferred until the parent method
18227completes execution.  This fixes the "mutex already acquired"
18228issue seen occasionally.
18229
18230Part of the "implicit conversion" rules in ACPI 2.0 have been
18231found to cause compatibility problems with existing ASL/AML.  The
18232convert "result-to-target-type" implementation has been removed
18233for stores to method Args and Locals.  Source operand conversion
18234is still fully implemented.  Possible changes to ACPI 2.0
18235specification pending.
18236
18237Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18238length.
18239
18240Fix for compiler warnings for 64-bit compiles.
18241
18242 Linux:
18243
18244/proc output aligned for easier parsing.
18245
18246Release-version compile problem fixed.
18247
18248New kernel configuration options documented in Configure.help.
18249
18250IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18251context" message.
18252
18253 OSPM:
18254
18255Power resource driver integrated with bus manager.
18256
18257Fixed kernel fault during active cooling for thermal zones.
18258
18259Source Code:
18260
18261The source code tree has been restructured.
18262
18263
18264
18265------------------------------------------
18266Summary of changes for this label: 03_02_01
18267
18268 Linux OS Services Layer (OSL):
18269
18270Major revision of all Linux-specific code.
18271
18272Modularized all ACPI-specific drivers.
18273
18274Added new thermal zone and power resource drivers.
18275
18276Revamped /proc interface (new functionality is under /proc/acpi).
18277
18278New kernel configuration options.
18279
18280 Linux known issues:
18281
18282New kernel configuration options not documented in Configure.help
18283yet.
18284
18285
18286Module dependencies not currently implemented. If used, they
18287should be loaded in this order: busmgr, power, ec, system,
18288processor, battery, ac_adapter, button, thermal.
18289
18290Modules will not load if CONFIG_MODVERSION is set.
18291
18292IBM 600E - entering S5 may reboot instead of shutting down.
18293
18294IBM 600E - Sleep button may generate "Invalid <NULL> context"
18295message.
18296
18297Some systems may fail with "execution mutex already acquired"
18298message.
18299
18300 ACPI CA Core Subsystem:
18301
18302Added a new OSL Interface, AcpiOsGetThreadId.  This was required
18303for the  deadlock detection code. Defined to return a non-zero, 32-
18304bit thread ID for the currently executing thread.  May be a non-
18305zero constant integer on single-thread systems.
18306
18307Implemented deadlock detection for internal subsystem mutexes.  We
18308may add conditional compilation for this code (debug only) later.
18309
18310ASL/AML Mutex object semantics are now fully supported.  This
18311includes multiple acquires/releases by owner and support for the
18312
18313Mutex SyncLevel parameter.
18314
18315A new "Force Release" mechanism automatically frees all ASL
18316Mutexes that have been acquired but not released when a thread
18317exits the interpreter.  This forces conformance to the ACPI spec
18318("All mutexes must be released when an invocation exits") and
18319prevents deadlocked ASL threads.  This mechanism can be expanded
18320(later) to monitor other resource acquisitions if OEM ASL code
18321continues to misbehave (which it will).
18322
18323Several new ACPI exception codes have been added for the Mutex
18324support.
18325
18326Recursive method calls are now allowed and supported (the ACPI
18327spec does in fact allow recursive method calls.)  The number of
18328recursive calls is subject to the restrictions imposed by the
18329SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18330parameter.
18331
18332Implemented support for the SyncLevel parameter for control
18333methods (ACPI 2.0 feature)
18334
18335Fixed a deadlock problem when multiple threads attempted to use
18336the interpreter.
18337
18338Fixed a problem where the string length of a String package
18339element was not always set in a package returned from
18340AcpiEvaluateObject.
18341
18342Fixed a problem where the length of a String package element was
18343not always included in the length of the overall package returned
18344from AcpiEvaluateObject.
18345
18346Added external interfaces (Acpi*) to the ACPI debug memory
18347manager.  This manager keeps a list of all outstanding
18348allocations, and can therefore detect memory leaks and attempts to
18349free memory blocks more than once. Useful for code such as the
18350power manager, etc.  May not be appropriate for device drivers.
18351Performance with the debug code enabled is slow.
18352
18353The ACPI Global Lock is now an optional hardware element.
18354
18355 ASL Compiler Version X2015:
18356
18357Integrated changes to allow the compiler to be generated on
18358multiple platforms.
18359
18360Linux makefile added to generate the compiler on Linux
18361
18362 Source Code:
18363
18364All platform-specific headers have been moved to their own
18365subdirectory, Include/Platform.
18366
18367New source file added, Interpreter/ammutex.c
18368
18369New header file, Include/acstruct.h
18370
18371 Documentation:
18372
18373The programmer reference has been updated for the following new
18374interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18375
18376 ------------------------------------------
18377Summary of changes for this label: 02_08_01
18378
18379Core ACPI CA Subsystem: Fixed a problem where an error was
18380incorrectly returned if the return resource buffer was larger than
18381the actual data (in the resource interfaces).
18382
18383References to named objects within packages are resolved to the
18384
18385full pathname string before packages are returned directly (via
18386the AcpiEvaluateObject interface) or indirectly via the resource
18387interfaces.
18388
18389Linux OS Services Layer (OSL):
18390
18391Improved /proc battery interface.
18392
18393
18394Added C-state debugging output and other miscellaneous fixes.
18395
18396ASL Compiler Version X2014:
18397
18398All defined method arguments can now be used as local variables,
18399including the ones that are not actually passed in as parameters.
18400The compiler tracks initialization of the arguments and issues an
18401exception if they are used without prior assignment (just like
18402locals).
18403
18404The -o option now specifies a filename prefix that is used for all
18405output files, including the AML output file.  Otherwise, the
18406default behavior is as follows:  1) the AML goes to the file
18407specified in the DSDT.  2) all other output files use the input
18408source filename as the base.
18409
18410 ------------------------------------------
18411Summary of changes for this label: 01_25_01
18412
18413Core ACPI CA Subsystem: Restructured the implementation of object
18414store support within the  interpreter.  This includes support for
18415the Store operator as well  as any ASL operators that include a
18416target operand.
18417
18418Partially implemented support for Implicit Result-to-Target
18419conversion. This is when a result object is converted on the fly
18420to the type of  an existing target object.  Completion of this
18421support is pending  further analysis of the ACPI specification
18422concerning this matter.
18423
18424CPU-specific code has been removed from the subsystem (hardware
18425directory).
18426
18427New Power Management Timer functions added
18428
18429Linux OS Services Layer (OSL): Moved system state transition code
18430to the core, fixed it, and modified  Linux OSL accordingly.
18431
18432Fixed C2 and C3 latency calculations.
18433
18434
18435We no longer use the compilation date for the version message on
18436initialization, but retrieve the version from AcpiGetSystemInfo().
18437
18438Incorporated for fix Sony VAIO machines.
18439
18440Documentation:  The Programmer Reference has been updated and
18441reformatted.
18442
18443
18444ASL Compiler:  Version X2013: Fixed a problem where the line
18445numbering and error reporting could get out  of sync in the
18446presence of multiple include files.
18447
18448 ------------------------------------------
18449Summary of changes for this label: 01_15_01
18450
18451Core ACPI CA Subsystem:
18452
18453Implemented support for type conversions in the execution of the
18454ASL  Concatenate operator (The second operand is converted to
18455match the type  of the first operand before concatenation.)
18456
18457Support for implicit source operand conversion is partially
18458implemented.   The ASL source operand types Integer, Buffer, and
18459String are freely  interchangeable for most ASL operators and are
18460converted by the interpreter  on the fly as required.  Implicit
18461Target operand conversion (where the  result is converted to the
18462target type before storing) is not yet implemented.
18463
18464Support for 32-bit and 64-bit BCD integers is implemented.
18465
18466Problem fixed where a field read on an aligned field could cause a
18467read  past the end of the field.
18468
18469New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18470does not return a value, but the caller expects one.  (The ASL
18471compiler flags this as a warning.)
18472
18473ASL Compiler:
18474
18475Version X2011:
184761. Static typechecking of all operands is implemented. This
18477prevents the use of invalid objects (such as using a Package where
18478an Integer is required) at compile time instead of at interpreter
18479run-time.
184802. The ASL source line is printed with ALL errors and warnings.
184813. Bug fix for source EOF without final linefeed.
184824. Debug option is split into a parse trace and a namespace trace.
184835. Namespace output option (-n) includes initial values for
18484integers and strings.
184856. Parse-only option added for quick syntax checking.
184867. Compiler checks for duplicate ACPI name declarations
18487
18488Version X2012:
184891. Relaxed typechecking to allow interchangeability between
18490strings, integers, and buffers.  These types are now converted by
18491the interpreter at runtime.
184922. Compiler reports time taken by each internal subsystem in the
18493debug         output file.
18494
18495
18496 ------------------------------------------
18497Summary of changes for this label: 12_14_00
18498
18499ASL Compiler:
18500
18501This is the first official release of the compiler. Since the
18502compiler requires elements of the Core Subsystem, this label
18503synchronizes everything.
18504
18505------------------------------------------
18506Summary of changes for this label: 12_08_00
18507
18508
18509Fixed a problem where named references within the ASL definition
18510of both OperationRegions and CreateXXXFields did not work
18511properly.  The symptom was an AE_AML_OPERAND_TYPE during
18512initialization of the region/field. This is similar (but not
18513related internally) to the problem that was fixed in the last
18514label.
18515
18516Implemented both 32-bit and 64-bit support for the BCD ASL
18517functions ToBCD and FromBCD.
18518
18519Updated all legal headers to include "2000" in the copyright
18520years.
18521
18522 ------------------------------------------
18523Summary of changes for this label: 12_01_00
18524
18525Fixed a problem where method invocations within the ASL definition
18526of both OperationRegions and CreateXXXFields did not work
18527properly.  The symptom was an AE_AML_OPERAND_TYPE during
18528initialization of the region/field:
18529
18530  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18531[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18532(0x3005)
18533
18534Fixed a problem where operators with more than one nested
18535subexpression would fail.  The symptoms were varied, by mostly
18536AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
18537problem that has gone unnoticed until now.
18538
18539  Subtract (Add (1,2), Multiply (3,4))
18540
18541Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18542previous build (The prefix part of a relative path was handled
18543incorrectly).
18544
18545Fixed a problem where Operation Region initialization failed if
18546the operation region name was a "namepath" instead of a simple
18547"nameseg". Symptom was an AE_NO_OPERAND error.
18548
18549Fixed a problem where an assignment to a local variable via the
18550indirect RefOf mechanism only worked for the first such
18551assignment.  Subsequent assignments were ignored.
18552
18553 ------------------------------------------
18554Summary of changes for this label: 11_15_00
18555
18556ACPI 2.0 table support with backwards support for ACPI 1.0 and the
185570.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
18558the AML  interpreter does NOT have support for the new 2.0 ASL
18559grammar terms at this time.
18560
18561All ACPI hardware access is via the GAS structures in the ACPI 2.0
18562FADT.
18563
18564All physical memory addresses across all platforms are now 64 bits
18565wide. Logical address width remains dependent on the platform
18566(i.e., "void *").
18567
18568AcpiOsMapMemory interface changed to a 64-bit physical address.
18569
18570The AML interpreter integer size is now 64 bits, as per the ACPI
185712.0 specification.
18572
18573For backwards compatibility with ACPI 1.0, ACPI tables with a
18574revision number less than 2 use 32-bit integers only.
18575
18576Fixed a problem where the evaluation of OpRegion operands did not
18577always resolve them to numbers properly.
18578
18579------------------------------------------
18580Summary of changes for this label: 10_20_00
18581
18582Fix for CBN_._STA issue.  This fix will allow correct access to
18583CBN_ OpRegions when the _STA returns 0x8.
18584
18585Support to convert ACPI constants (Ones, Zeros, One) to actual
18586values before a package object is returned
18587
18588Fix for method call as predicate to if/while construct causing
18589incorrect if/while behavior
18590
18591Fix for Else block package lengths sometimes calculated wrong (if
18592block > 63 bytes)
18593
18594Fix for Processor object length field, was always zero
18595
18596Table load abort if FACP sanity check fails
18597
18598Fix for problem with Scope(name) if name already exists
18599
18600Warning emitted if a named object referenced cannot be found
18601(resolved) during method execution.
18602
18603
18604
18605
18606
18607------------------------------------------
18608Summary of changes for this label: 9_29_00
18609
18610New table initialization interfaces: AcpiInitializeSubsystem no
18611longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18612necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18613>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18614AcpiLoadTables
18615
18616Note: These interface changes require changes to all existing OSDs
18617
18618The PCI_Config default address space handler is always installed
18619at the root namespace object.
18620
18621-------------------------------------------
18622Summary of changes for this label: 09_15_00
18623
18624The new initialization architecture is implemented.  New
18625interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18626AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18627
18628(Namespace is automatically loaded when a table is loaded)
18629
18630The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1863152 bytes to 32 bytes.  There is usually one of these for every
18632namespace object, so the memory savings is significant.
18633
18634Implemented just-in-time evaluation of the CreateField operators.
18635
18636Bug fixes for IA-64 support have been integrated.
18637
18638Additional code review comments have been implemented
18639
18640The so-called "third pass parse" has been replaced by a final walk
18641through the namespace to initialize all operation regions (address
18642spaces) and fields that have not yet been initialized during the
18643execution of the various _INI and REG methods.
18644
18645New file - namespace/nsinit.c
18646
18647-------------------------------------------
18648Summary of changes for this label: 09_01_00
18649
18650Namespace manager data structures have been reworked to change the
18651primary  object from a table to a single object.  This has
18652resulted in dynamic memory  savings of 3X within the namespace and
186532X overall in the ACPI CA subsystem.
18654
18655Fixed problem where the call to AcpiEvFindPciRootBuses was
18656inadvertently left  commented out.
18657
18658Reduced the warning count when generating the source with the GCC
18659compiler.
18660
18661Revision numbers added to each module header showing the
18662SourceSafe version of the file.  Please refer to this version
18663number when giving us feedback or comments on individual modules.
18664
18665The main object types within the subsystem have been renamed to
18666clarify their  purpose:
18667
18668ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18669ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18670ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18671
18672NOTE: no changes to the initialization sequence are included in
18673this label.
18674
18675-------------------------------------------
18676Summary of changes for this label: 08_23_00
18677
18678Fixed problem where TerminateControlMethod was being called
18679multiple times per  method
18680
18681Fixed debugger problem where single stepping caused a semaphore to
18682be  oversignalled
18683
18684Improved performance through additional parse object caching -
18685added  ACPI_EXTENDED_OP type
18686
18687-------------------------------------------
18688Summary of changes for this label: 08_10_00
18689
18690Parser/Interpreter integration:  Eliminated the creation of
18691complete parse trees  for ACPI tables and control methods.
18692Instead, parse subtrees are created and  then deleted as soon as
18693they are processed (Either entered into the namespace or  executed
18694by the interpreter).  This reduces the use of dynamic kernel
18695memory  significantly. (about 10X)
18696
18697Exception codes broken into classes and renumbered.  Be sure to
18698recompile all  code that includes acexcep.h.  Hopefully we won't
18699have to renumber the codes  again now that they are split into
18700classes (environment, programmer, AML code,  ACPI table, and
18701internal).
18702
18703Fixed some additional alignment issues in the Resource Manager
18704subcomponent
18705
18706Implemented semaphore tracking in the AcpiExec utility, and fixed
18707several places  where mutexes/semaphores were being unlocked
18708without a corresponding lock  operation.  There are no known
18709semaphore or mutex "leaks" at this time.
18710
18711Fixed the case where an ASL Return operator is used to return an
18712unnamed  package.
18713
18714-------------------------------------------
18715Summary of changes for this label: 07_28_00
18716
18717Fixed a problem with the way addresses were calculated in
18718AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
18719manifested itself when a Field was  created with WordAccess or
18720DwordAccess, but the field unit defined within the  Field was less
18721
18722than a Word or Dword.
18723
18724Fixed a problem in AmlDumpOperands() module's loop to pull
18725operands off of the  operand stack to display information. The
18726problem manifested itself as a TLB  error on 64-bit systems when
18727accessing an operand stack with two or more  operands.
18728
18729Fixed a problem with the PCI configuration space handlers where
18730context was  getting confused between accesses. This required a
18731change to the generic address  space handler and address space
18732setup definitions. Handlers now get both a  global handler context
18733(this is the one passed in by the user when executing
18734AcpiInstallAddressSpaceHandler() and a specific region context
18735that is unique to  each region (For example, the _ADR, _SEG and
18736_BBN values associated with a  specific region). The generic
18737function definitions have changed to the  following:
18738
18739typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18740UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18741*HandlerContext, // This used to be void *Context void
18742*RegionContext); // This is an additional parameter
18743
18744typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18745RegionHandle, UINT32 Function, void *HandlerContext,  void
18746**RegionContext); // This used to be **ReturnContext
18747
18748-------------------------------------------
18749Summary of changes for this label: 07_21_00
18750
18751Major file consolidation and rename.  All files within the
18752interpreter have been  renamed as well as most header files.  This
18753was done to prevent collisions with  existing files in the host
18754OSs -- filenames such as "config.h" and "global.h"  seem to be
18755quite common.  The VC project files have been updated.  All
18756makefiles  will require modification.
18757
18758The parser/interpreter integration continues in Phase 5 with the
18759implementation  of a complete 2-pass parse (the AML is parsed
18760twice) for each table;  This  avoids the construction of a huge
18761parse tree and therefore reduces the amount of  dynamic memory
18762required by the subsystem.  Greater use of the parse object cache
18763means that performance is unaffected.
18764
18765Many comments from the two code reviews have been rolled in.
18766
18767The 64-bit alignment support is complete.
18768
18769-------------------------------------------
18770Summary of changes for this label: 06_30_00
18771
18772With a nod and a tip of the hat to the technology of yesteryear,
18773we've added  support in the source code for 80 column output
18774devices.  The code is now mostly  constrained to 80 columns or
18775less to support environments and editors that 1)  cannot display
18776or print more than 80 characters on a single line, and 2) cannot
18777disable line wrapping.
18778
18779A major restructuring of the namespace data structure has been
18780completed.  The  result is 1) cleaner and more
18781understandable/maintainable code, and 2) a  significant reduction
18782in the dynamic memory requirement for each named ACPI  object
18783(almost half).
18784
18785-------------------------------------------
18786Summary of changes for this label: 06_23_00
18787
18788Linux support has been added.  In order to obtain approval to get
18789the ACPI CA  subsystem into the Linux kernel, we've had to make
18790quite a few changes to the  base subsystem that will affect all
18791users (all the changes are generic and OS- independent).  The
18792effects of these global changes have been somewhat far  reaching.
18793Files have been merged and/or renamed and interfaces have been
18794renamed.   The major changes are described below.
18795
18796Osd* interfaces renamed to AcpiOs* to eliminate namespace
18797pollution/confusion  within our target kernels.  All OSD
18798interfaces must be modified to match the new  naming convention.
18799
18800Files merged across the subsystem.  A number of the smaller source
18801and header  files have been merged to reduce the file count and
18802increase the density of the  existing files.  There are too many
18803to list here.  In general, makefiles that  call out individual
18804files will require rebuilding.
18805
18806Interpreter files renamed.  All interpreter files now have the
18807prefix am*  instead of ie* and is*.
18808
18809Header files renamed:  The acapi.h file is now acpixf.h.  The
18810acpiosd.h file is  now acpiosxf.h.  We are removing references to
18811the acronym "API" since it is  somewhat windowsy. The new name is
18812"external interface" or xface or xf in the  filenames.j
18813
18814
18815All manifest constants have been forced to upper case (some were
18816mixed case.)   Also, the string "ACPI_" has been prepended to many
18817(not all) of the constants,  typedefs, and structs.
18818
18819The globals "DebugLevel" and "DebugLayer" have been renamed
18820"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
18821
18822All other globals within the subsystem are now prefixed with
18823"AcpiGbl_" Internal procedures within the subsystem are now
18824prefixed with "Acpi" (with only  a few exceptions).  The original
18825two-letter abbreviation for the subcomponent  remains after "Acpi"
18826- for example, CmCallocate became AcpiCmCallocate.
18827
18828Added a source code translation/conversion utility.  Used to
18829generate the Linux  source code, it can be modified to generate
18830other types of source as well. Can  also be used to cleanup
18831existing source by removing extraneous spaces and blank  lines.
18832Found in tools/acpisrc/*
18833
18834OsdUnMapMemory was renamed to OsdUnmapMemory and then
18835AcpiOsUnmapMemory.  (UnMap  became Unmap).
18836
18837A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18838When set to  one, this indicates that the caller wants to use the
18839
18840semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
18841both types.  However, implementers of this  call may want to use
18842different OS primitives depending on the type of semaphore
18843requested.  For example, some operating systems provide separate
18844
18845"mutex" and  "semaphore" interfaces - where the mutex interface is
18846much faster because it  doesn't have all the overhead of a full
18847semaphore implementation.
18848
18849Fixed a deadlock problem where a method that accesses the PCI
18850address space can  block forever if it is the first access to the
18851space.
18852
18853-------------------------------------------
18854Summary of changes for this label: 06_02_00
18855
18856Support for environments that cannot handle unaligned data
18857accesses (e.g.  firmware and OS environments devoid of alignment
18858handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
18859been added (via configurable macros) in  these three areas: -
18860Transfer of data from the raw AML byte stream is done via byte
18861moves instead of    word/dword/qword moves. - External objects are
18862aligned within the user buffer, including package   elements (sub-
18863objects). - Conversion of name strings to UINT32 Acpi Names is now
18864done byte-wise.
18865
18866The Store operator was modified to mimic Microsoft's
18867implementation when storing  to a Buffer Field.
18868
18869Added a check of the BM_STS bit before entering C3.
18870
18871The methods subdirectory has been obsoleted and removed.  A new
18872file, cmeval.c  subsumes the functionality.
18873
18874A 16-bit (DOS) version of AcpiExec has been developed.  The
18875makefile is under  the acpiexec directory.
18876