xref: /freebsd/sys/contrib/dev/acpica/changes.txt (revision 7697e6c4df7188ee3a2aa66f73c572c27479bdf2)
1----------------------------------------
28 April 2026. Summary of changes for version 20260804:
3
4Major changes:
5
6� ACPI Table Enhancements:
7Updated IORT and MADT template compilations to add new IWB and GICv5 translator/router/ITS entries. Introduced full support for the new DTPR table, including compiler and disassembler handling, template fixes, and register structure refinements. � Jose Marinho and Michal Camacho Romero
8
9� Expanded IDs, GUIDs, and Methods:
10Added Framework Computer Hardware IDs, modern standby _DSM GUIDs, and TPM2 start methods. Updated _DSM Arg3 formatting and _CPC handling to align with newer ACPI specifications and avoid Linux compatibility warnings. � Daniel Schaefer and Saket Dumbre
11
12� Compiler, Disassembler, and Tooling Improvements:
13Enhanced the ASL compiler and disassembler with External() deduplication, alias node support, improved validation of malformed inputs, and comma-separated Package output. Updated acpisrc to recognize missing structures and improved parse tree walk termination logic. � ikaros and Pawel Chmielewski
14
15� Security and Stability Fixes:
16Fixed multiple critical issues, including heap-buffer-overflows, use-after-free, NULL pointer dereferences, integer overflows, and out-of-bounds accesses across AML parsing, interpretation, and table handling code paths. � ikaros and Weiming Shi
17
18� Resource and Register Refactoring:
19Corrected I2C LVR resource descriptor handling and refactored TPR Base/Limit registers to use compatible bitmask representations, with additional validation and cleanup across DTPR-related code. � Akhil R and Michal Camacho Romero
20
21� General Cleanup and Build Fixes:
22Fixed a syntax error caused by a stray character, corrected spelling issues, improved comment alignment and formatting, updated dummy compiler metadata, and disabled excessive MSVC bitfield warnings (C4214) to improve build clarity. � Colin Ian King and Saket Dumbre
23
24
25----------------------------------------
2612 December 2025. Summary of changes for version 20251212:
27
28Major changes:
29
30Update many existing ACPI tables to follow the ACPI 6.6 Specification
31changes and/or newly approved ASWG ECRs - multiple contributors
32
33Add a few new ACPI tables: IOVT, SWFT, KEYP - multiple contributors
34
35Add many new UUIDs, Hardware/PnP/ACPI IDs - Armin Wolf and Pawel
36Chmielewski
37
38Support a few new special methods (_xxx format) and modify few existing
39ones to stay compliant with the latest ACPI Specification changes
40
41Improve existing tools/utilities and fix/clean up some problematic usages
42along with patching certain vulnerabilities
43
44
45----------------------------------------
467 August 2025. Summary of changes for version 20250807:
47
48Major changes:
49
50Added option to skip the global lock for SMM - Huacai Chen
51
52Fixed non-NUL terminated string implementations - Ahmed Salem
53
54Fixed CCEL and CDAT templates - Ahmed Salem
55
56Fixed a major Linux kernel bug (UAF) that was triggered by unequal number
57of method parameters (definition) vs arguments (invocation) in different
58places - Peter Williams, Hans de Goede, Rafael Wysocki
59
60Define distinct D3 states (D3Hot and D3Cold) that help clarify the device
61behavior support - Aymeric Wibo
62
63A few cleanups, improvements to existing table supports, small fixes,
64spelling corrections etc.
65
66
67----------------------------------------
684 April 2025. Summary of changes for version 20250404:
69
70Major changes:
71
72Update all the copyright continuation year to 2025 in the license header
73of all files
74
75Add complete support for 3 new ACPI tables - MRRM,ERDT and RIMT (Tony
76Luck & V L Sunil)
77
78Add a license file to the project which is a great improvement (Dionna
79Glaze)
80
81Update DMAR and TPM2 tables to support their latest versions (Alexey
82Neyman and Stuart Yoder)
83
84A few fixes including local cache allocation, FFixedHW Region, attribute
85packing, string vs. non-string char array, vsnprintf()etc. along with
86some comments, spelling errors and code alignment (multiple awesome
87contributors)
88
89
90----------------------------------------
9112 December 2024. Summary of changes for version 20241212:
92
93Major changes:
94
95Fix 2 critical CVE addressing memory leaks - Seunghun Han
96
97EINJ V2 updates - Zaid Alali (Ampere Computing)
98
99CDAT updates - Ira Weiny (Intel Corporation)
100
101Fix mutex handling, do not release ones that were never acquired - Daniil
102Tatianin
103
104Experiment with new tag name format Ryyyy_mm_dd to solve chronological
105sorting problems
106
107
108----------------------------------------
10927 September 2024. Summary of changes for version 20240927:
110
111Major changes:
112
113Fix the acpixf.h file which caused issues for the last release (before
114this) 20240827
115
116Fix the pointer offset for the SLIC table
117
118Verify the local environment and GitHub commits are all in sync which was
119a problem with the second from last release (before this)20240322 (aka
12020240323 - date issue)
121
122
123
124----------------------------------------
12527 August 2024. Summary of changes for version 20240827:
126
127Major changes:
128
129Fix the PHAT table working: ensure that the PHAT firmware health record
130offset works correctly, fix various sub-table offsets, prevent
131segmentation faults when encountering invalid device paths. Contributed
132by: Armin Wolf <W_Armin@gmx.de>
133
134Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin
135<99danilt@gmail.com>
136
137Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone
138(Fedora) <ahs3@ahs3.net>
139
140Add support for QWordPCC and DWordPCC by Jose Marinho (ARM)
141
142Fix the integer to hex string conversions by Armin Wolf
143
144Detecting FACS in reduced HW mode and allowing setting waking vector
145thereby waking up from S3 state
146
147Fixing issues with crossing page boundaries when mapping operation
148regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD)
149
150Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables
151
152Fix multiple issues with table parsing, compilation and disassembly by
153Myra DeMere (Google)
154
155Allow for more flexibility in _DSM usage.
156
157
158----------------------------------------
15922 March 2024. Summary of changes for version 20240322:
160
161Major changes:
162
163Update all the license header year from 2023 to 2024.
164
165Fix table argument ordering to work properly with iasl.
166
167Get rid of the annoying repeated warning types in MSVC and Windows.
168
169Fix a test in ASLTS with edge case failure.
170
171Fix a couple of issues with how GPEs are counted and enabled.
172
173Add new tables for various architectures/OS, mainly RISC-V and also
174update many more.
175
176Add an option to either make the output deterministic or non-
177deterministic.
178
179Remove redundant checks, duplicated code and fix spellings in various
180files.
181
182Fix flex arrays for C++ compilers and also make ACPICA overall more
183compatible with different compilers which throw warnings related to
184memory sanitization etc.
185
186
187----------------------------------------
18828 June 2023. Summary of changes for version 20230628:
189
1900) Global changes:
191
192Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN:
193?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of
194range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag
195to Timer (since there are no runtime arguments). Reported by: Abhishek
196Mainkar abmainkar@nvidia.com.
197
198Added a define for size of acpi_srat_generic_affinity DeviceHandle.
199Replaced a magic number with a define. The Linux kernel code will utilize
200this. Reported by Dave Jiang dave.jiang@intel.com.
201
202Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5.
203
2041) ACPICA kernel-resident subsystem:
205
206Added port definitions for CDAT SSLBIS. Add upstream port and any port
207definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com.
208
209Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE ->
210ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang
211dave.jiang@intel.com.
212
2131) ACPICA kernel-resident subsystem:
214
215Fix GCC 12 dangling-pointer warning.  We're storing a persistent pointer
216to an ephemeral local variable which technically is a dangling pointer
217and the compiler is correct. However, since we never indirect the
218pointer, this is a safe operation and we can suppress the warning.
219
220Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly
221so we must include it explicitly or we won't have the type definition for
222uintptr_t.
223
2242) iASL Compiler/Disassembler and ACPICA tools:.
225
226IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table
227is updated with new nodes. Add compile and dump functionality for these
228new structures.
229
230AcpiExec: Added a new command, ?interrupt?. The Interrupt command
231simulates an interrupt with a IntID (GSIV) equal to the first argument of
232the call/invocation. The acpiexec code simulates the behavior by OSPM:
233execute the _EVT method of the GED device associated with that IntID.
234Submitted by: Jose Marinho jose.marinho@arm.com.
235
236AcpiExec: Detect GED device and keep track of _EVT. The GED device is
237described by a _HID of ACPI0013. This code traverses the namespace
238identifying all GED devices. For each GED device in the namespace we
239record the Interrupt object and the _EVT method. This information is used
240when an interrupt is simulated via the ?interrupt? command. Submitted by:
241Jose Marinho jose.marinho@arm.com.
242----------------------------------------
24331 March 2023. Summary of changes for version 20230331:
244
245This release is available at https://acpica.org/downloads
246
2470) Global changes:
248
249
250Update all copyright notices to the year 2023. This effects all source
251modules, as well as utility signons.
252Add OS-specific support for Zephyr RTOS.
253Fix miscellaneous code that accesses various objects.
254Remove some dead code.
255Add C ?Flexible Array? support.
256Add support for 64 bit LoongArch compilation.
257Add first batch of RISC-V related definitions.
258Performed a global automated update to remove tabs, fix indentation
259issues, etc.
260
2611) ACPICA kernel-resident subsystem:
262
263hwvalid: Drop port I/O validation.
264
2652) ACPICA tools and utilities:
266
267iASL: Added full macro support in the preprocessor. Example:
268#define ABCD(a,b,c,d) a+b+c-d
269
270Known macro support limitations (at this time):
271	No support for multi-line #define macros (backslash continuation
272lines)
273	No support for the C-style ternary operator
274	No support for the stringizing operator (#)
275	No support for the concatenation (token pasting) operator (##)
276	No support for variable number of macro arguments
277
278Add support for AMD Secure Processor Table (ASPT) version 1.
279Add support for Arm's MPAM ACPI table version 2.
280ACPI 6.5: MADT: add support for trace buffer extension in GICC.
281Headers: Delete bogus NodeArray array of pointers from AEST table.
282PHAT table support is still ongoing.
283
284
285----------------------------------------
28620 October 2022. Summary of changes for version 20221020:
287
288This release is available at https://acpica.org/downloads
289
2900) Global changes:
291
292Allow disabling of -Werror. For distro maintainers having `-Werror` can
293delay update of GCC. Since every GCC release might add new warnings that
294were not yet captured, it might break the build of packages. With this
295change, distros can now build with `NOWERROR=TRUE` instead of patching
296either the errors or the makefiles. The default behavior keeps on using
297`-Werror`.
298
2991) ACPICA kernel-resident subsystem:
300
301Added support for FFH Operation Region special context data. FFH(Fixed
302Function Hardware) Opregion is approved to be added in ACPI 6.5 via code
303first approach[1]. It requires special context data similar to GPIO and
304Generic Serial Bus as it needs to know platform specific offset and
305length.
306
307Reverted this commit "executer/exsystem: Warn about sleeps greater than
30810 ms." Due to user complaints about valid sleeps greater than 10ms seen
309in some existing machines -- generating lots of warnings.
310
311Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that
312EBDA region must be at least 1KiB in size. Because this is not
313guaranteed, it might happen that while scanning the memory for RSDP
314pointer, the kernel touches memory above 640KiB. This is unwanted as the
315VGA memory range may not be decoded or even present when running under
316virtualization.
317
318Check that EBDA pointer is in valid memory. If the memory at 0x40e is
319uninitialized, the retrieved physical memory address of EBDA may be
320beyond the low memory (i.e. above 640K). If so, the kernel may
321unintentionally access the VGA memory, that might not be decoded or even
322present in case of virtualization.
323
3242) iASL Compiler/Disassembler and ACPICA tools:
325
326Completed the existing partial support for the CDAT "table". Although
327this isn't technically an ACPI table (It doesn't go into the XSDT), it is
328possible to support this table in the Data Table compiler. Created one
329new file, "utilities/utcksum.c", used to centralize checksum
330generation/validation into one location. Includes changes to makefiles
331and MSVC project files.
332
333Updated support for the IORT table - update to version E.e
334
335Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table
336
337iASL: Added CCEL table to both compiler/disassembler.
338
339iASL: NHLT table: Fixed compilation of optional undocumented fields
340
341iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763
342("iASL: Add CCEL table to both compiler/disassembler") introduced the
343iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL
344table member reference. To fix it,  change ACPI_TDEL_OFFSET with
345ACPI_CCEL_OFFSET.
346
347----------------------------------------
34831 March 2022. Summary of changes for version 20220331:
349
3500) Global changes:
351
352Update all copyright notices to the year 2022. This effects all source
353modules, as well as utility signons.
354
355
3561) ACPICA kernel-resident subsystem:
357
358For the ASL Sleep() operator, issue a warning if the sleep value is
359greater than 10 Milliseconds. Quick boottime is important, so warn about
360sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350
361ms, so excessive delays should be called out. 10 ms is chosen randomly,
362but three of such delays would already make up ten percent of the
363boottime.
364
365Namespace: Avoid attempting to walk the Namespace if the Namespace does
366not exist.
367
368AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the
369LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a
370pass/fail integer. Now load returns a pass/fail integer, as well as
371storing the return value in an optional 2nd argument.
372
373Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid
374"performing pointer subtraction with a null pointer has undefined
375behavior" compiler warnings, use uintptr_t and offsetof() that are always
376available during Linux kernel builds to define ACPI_UINTPTR_T and the
377ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code
378in the Linux kernel.
379
380Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted
381by superm1.
382
383executer/exsystem: Inform users about ACPI spec violation for the Stall()
384operator. Values greater than 100 microseconds violate the ACPI
385specification, so warn users about it. From the ACPI Specification
386version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*:
387> The implementation of Stall is OS-specific, but must not relinquish
388> control of the processor. Because of this, delays longer than 100
389> microseconds must use Sleep instead of Stall.
390
391
3922) iASL Compiler/Disassembler and ACPICA tools:
393
394Data Table Compiler/Disassembler: Add support for the APMT table - ARM
395Performance Monitoring Unit table. Submitted by @bwicaksononv.
396
397Data Table Compiler/Disassembler: For MADT, add support for the OEM-
398defined subtables (Types 0x80-0x7F).
399
400Data Table Compiler: Fixed a problem with support for the SDEV table,
401where a subtable Length was not computed correctly.
402
403Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT
404Acpi table support.
405
406Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and
407add template. Submitted by MasterDrogo.
408
409Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz:
410iASL/NHLT: Rename linux specific structures to DeviceInfo to improve
411readability of the code.
412iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint.
413Undocumented bytes at the end of Endpoint Descriptor can be present
414independently of Linux-specific structures. Their size can also vary.
415iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4
416bytes of size and then an amount of bytes specified by size. All of the
417terminators that I've seen had a size equal to 4, but theoretically it
418can vary.
419
420iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
421
422iASL: Remove a remark due to excessive output. Removed a remark for
423duplicate Offset() operators, due to a user complaint.
424
425----------------------------------------
42617 December 2021. Summary of changes for version 20211217:
427
4281) ACPICA kernel-resident subsystem:
429
430Hardware: Do not flush CPU cache when entering S4 and S5. According to
431ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to
432S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of
433the sleep state. Blind cache flush on entering S5 causes problems for
434TDX.
435
436Avoid subobject buffer overflow when validating RSDP signature. Since the
437Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to
438it is only to a 4-char array, and so trying to read past the 4th
439character, as will be done when it is an RSDP, reads beyond the bounds of
440the accessed member. Contributed by jrtc27.
441
442Add support for PCC Opregion special context data. PCC Opregion added in
443ACPIC 6.3 requires special context data similar to GPIO and Generic
444Serial Bus as it needs to know the internal PCC buffer and its length as
445well as the PCC channel index when the opregion handler is being executed
446by the OSPM. Adds support for the special context data needed by PCC
447Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com>
448
4492) iASL Compiler/Disassembler and ACPICA tools:
450
451iASL: Completed compiler support for the NHLT ACPI table.
452
453iASL/NHLT table: Fixed a reported problem where a fault would occur
454during disassembly of a "Linux-Specific" section if the "Specific Data"
455part was not present.
456
457iASL: Added full support (compiler and disassembler) for the AGDI ACPI
458table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>.
459
460iASL: Added full support for the TDEL ACPI table.
461
462iASL table compiler: FADT support updates:
4631) Allow the 32-bit DSDT address to be zero.
4642) Issue error if both the 32-bit and 64-bit DSDT addresses are zero.
465
466iASL: Fix unaligned accesses to local cache allocations. Contributed by
467jrtc27.
468
469iASL: Open binary input files in binary mode, not text mode Affects
470binary input AML files, as well as binary data table files, for
471disassembly.
472
473----------------------------------------
47430 September 2021. Summary of changes for version 20210930:
475
476This release is available at https://acpica.org/downloads
477
4781) ACPICA kernel-resident subsystem:
479
480Hardware: Avoid evaluating methods too early during system resume. During
481wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called
482and it tries to get memory from the OS in order to evaluate a control
483method, but if KFENCE is enabled in the Linux kernel, the memory
484allocation attempt causes an IRQ work to be queued and a self-IPI to be
485sent to the CPU running the code which requires the memory controller to
486be ready, so if that happens too early in the wakeup path, it doesn't
487work.
488
489Prevent that from taking place by calling AcpiGetSleepTypeData() for S0
490upfront, when preparing to enter a given sleep state, and saving the data
491obtained by it for later use during system wakeup.
492
493Added a new _OSI string, "Windows 2020". Posted by superm1.
494
4952) iASL Compiler/Disassembler and ACPICA tools:
496
497iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS
498objects:
499New/latest rules: Under a Device Object:
500         1) If _PRS is present, must have _CRS and _SRS
501         2) If _SRS is present, must have _PRS (_PRS requires _CRS and
502_SRS)
503         3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS
504requires _CRS and _SRS)
505         4) If _SRS is present, probably should have a _DIS (Remark only)
506
507iASL table disassembler: Added disassembly support for the NHLT ACPI
508table. Note: support for Vendor-defined microphone arrays and SNR
509extensions are not supported at this time -- mostly due to a lack of
510example tables. Actual compiler support for NHLT is forthcoming.
511
512Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It
513uses the same subtable structure as the existing Generic Initiator
514Affinity type.
515
516Added the flag for online capable in the MADT, introduced in ACPI 6.3.
517Posted by superm1.
518
5193) ACPICA documentation: Updated the legal info (that appears at the
520start of the Documents) to clarify distribution rights that are granted.
521
522
523----------------------------------------
52430 July 2021. Summary of changes for version 20210730:
525
526This release is available at https://acpica.org/downloads
527
5281) ACPICA kernel-resident subsystem:
529
5302) iASL Compiler/Disassembler and ACPICA tools:
531
532iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021).
533  Under the Device Object:
534  1) If _DIS is present, must have a _CRS and _SRS
535  2) If _PRS is present, must have a _CRS, _DIS, and _SRS
536  3) If _SRS is present, must have a _CRS and _DIS
537A warning will be issued for each of these cases.
538Note: For existing ASL/projects, these warnings may be disabled by
539specifying this on the command line:
540"-vw 3141"
541
542iASL Table Disassembler/Table compiler: Fix for WPBT table with no
543command-line arguments. Handle the case where the Command-line
544Arguments table field does not exist (zero).
545
546Headers: Add new DBG2 Serial Port Subtypes
547The Microsoft Debug Port Table 2 (DBG2) specification revision
548September 21, 2020 comprises additional Serial Port Subtypes [1].
549Reflect that in the actbl1.h header file. Submitted by:
550semihalf-wojtas-marcin
551
552iASL: Add full support for the AEST table (data compiler)
553Includes support in the table compiler and the disassembler.
554
555Add PRMT module header to facilitate parsing.
556This structure is used in to parse PRMT in other Operating Systems
557that relies on using subtable headers in order to parse ACPI tables.
558Although the PRMT doesn't have "subtables" it has a list of module
559information structures that act as subtables.
560
561iASL: Table disassembler: Add missing strings to decode subtable types.
562Includes the MADT and CEDT tables.
563
564
565----------------------------------------
56604 June 2021. Summary of changes for version 20210604:
567
5681) ACPICA kernel-resident subsystem:
569
570Cleaned up (delete) the context mutex during local address handler object
571deletion.
572
573Fixed a memory leak caused by the _CID repair function.
574
575Added support for PlatformRtMechanism OperationRegion handler. Adds a new
576utility function, AcpiUtConvertUuidToString. Writing a buffer to a
577PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
578input buffer contains 26 bytes containing 9 bytes of status, a command
579byte and a 16-byte UUID. This change will simply pass this incoming
580buffer to a handler registered by the OS.
581
5822) iASL Compiler/Disassembler and ACPICA tools:
583
584Added full support for the PRMT ACPI table (Platform Runtime Mechanism
585Table). Includes support in the iASL compiler, the disassembler, and the
586template generator.
587
588Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
589
590Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
591table.
592
593Added full support for the SVKL (Storage Volume Key Location Table) ACPI
594table. Header file support from Kuppuswamy Sathyanarayanan
595<sathyanarayanan.kuppuswamy@linux.intel.com>.
596
597Completed full support for the IVRS (I/O Virtualization Reporting
598Structure) ACPI table. Added compiler support for IVRS, updated
599disassembler support. Adds a new utility, UtIsIdInteger, to determine if
600a HID/CID is an integer or a string.
601
602Headers: Added more structs to the CEDT table: CXL fixed memory window
603structure.
604
605ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
606
607----------------------------------------
60831 March 2021. Summary of changes for version 20210331:
609
610This release is available at https://acpica.org/downloads, and includes
611all ACPI 6.4 support
612
6131) ACPICA kernel-resident subsystem:
614ACPI 6.4: iASL: deprecate DDBHandleObj keyword
615Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
616allocating an object using kmalloc(), but then frees it
617using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
618Fixed a race condition in generic serial bus operation region handler.
619Fixed by Hans de Goede.
620
6212) iASL Compiler/Disassembler and ACPICA tools:
622
623ACPI 6.4: NFIT: add Location Cookie field
624ACPI 6.4: HMAT: add new fields/flags
625ACPI 6.4: Add new flags in SRAT
626ACPI 6.4: add SDEV secure access components
627ACPI 6.4: add Csi2Bus resource template
628ACPI 6.4: add support for PHAT table
629ACPI 6.4: add support for PMTT table
630Add disassembly support for the IVRS table. Compilation of the table is
631not yet complete.
632Fixed a potential infinite loop due to type mismatch. The for-loop is
633using a UINT8 counter and comparing the upper
634limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
635the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
636will wrap around to zero and the loop will never exit. I suspect
637the AslGbl_ExpectedMessagesIndex is never that high, but fixing
638this does future proof the code and cleans up static analysis
639warnings.Colin King.
640iASL/TableCompiler: update it with IORT table E.b revision changes. From
641shamiali2008.
642iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
643off-by: Jean-Philippe Brucker.
644iASL/TableCompiler: Add compilation support for CEDT table. Also, update
645the CEDT template.
646
647----------------------------------------
64805 January 2021. Summary of changes for version 20210105:
649
650This release is available at https://acpica.org/downloads
651
652
6531) ACPICA kernel-resident subsystem:
654
655Updated all copyrights to 2021. This affects all ACPICA source code
656modules.
657
6582) iASL Compiler/Disassembler and ACPICA tools:
659
660ASL test suite (ASLTS): Updated all copyrights to 2021.
661
662Tools and utilities: Updated all signon copyrights to 2021.
663
664iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
665MTMR. Al Stone.
666
667
668----------------------------------------
66917 December 2020. Summary of changes for version 20201217:
670
671This release is available at https://acpica.org/downloads
672
673
6741) ACPICA kernel-resident subsystem:
675
676Note: The implementation of ACPI 6.4 is underway, and is expected to be
677mostly finished next month, when ACPI 6.4 is released.
678
679From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
680several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
681enable this.
682
683AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
684These included a few casts, as well as a null pointer check.
685
686Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
687implicit fallthrough, as well as __attribute__((__fallthrough__)) and
688comments to explicitly denote that cases of fallthrough were intentional.
689Clang also supports this warning and statement attribute, but not the
690comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
691of GCC. With assistance from @nickdesaulniers.
692
6932) iASL Compiler/Disassembler and ACPICA tools:
694
695Added improvement to method call analysis by saving the return type and
696relaxing certain cases of type checking.
697
698iASL Table Compiler: Improved info messages. Added a message to the -T
699option for when the default template (DSDT) is used.
700Also added a note for when multiple SSDTs are created with a DSDT that
701the SSDTs are created in the same file as the DSDT.
702
703
704----------------------------------------
705
70613 November 2020. Summary of changes for version 20201113:
707
708This release is available at https://acpica.org/downloads
709
710
7111) ACPICA kernel-resident subsystem:
712
713Interpreter: fixed a memory leak by using use existing buffer in _HID
714repair. There was a memory leak that occurred when a _CID object is
715defined as a package containing string objects. When _CID is checked for
716any possible repairs, it calls a helper function to repair _HID (because
717_CID basically contains multiple _HID entries). The _HID repair function
718assumes that string objects are standalone objects that are not contained
719inside of any packages. The _HID repair function replaced the string
720object with a brand new object and attempted to delete the old object by
721decrementing the reference count of the old object. Strings inside of
722packages have a reference count of 2 so the _HID repair function leaves
723this object in a dangling state and causes a memory leak. Instead of
724allocating a brand new object and removing the old object, use the
725existing object when repairing the _HID object.
726
727Added function trace macros to improve namespace debugging. The namespace
728repair mechanism does not have function tracing macros. Add several trace
729macros to improve debuggability.
730
731Handle "orphan" _REG methods for GPIO OpRegions. Before this change
732AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
733matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
734Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
735The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
736UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
737to potential issues with checks for OpRegion availability, or in other
738words checks if _REG has been called for the OpRegion which the ACPI code
739wants to use. Except for the "orphan" EC handling, ACPICA core does not
740call _REG on an ACPI node which does not define an OpRegion matching the
741type being registered; and the reference design DSDT, from which most
742Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
743UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
744were assigned ACPI controlled functions in the reference design. Together
745this leads to the perfect storm, at least on the Cherry Trail based
746Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
747and has added the Cherry Trail specific UserDefined(0x93) opregion to its
748GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
749availability check for the standard GeneralPurposeIo OpRegion. This
750clearly is a bug in the DSDT, but this does work under Windows. This
751issue leads to the intel vbtn driver reporting the device always being in
752tablet-mode at boot, even if it is in laptop mode. Which in turn causes
753userspace to ignore touchpad events. So in other words, this issue causes
754the touchpad to not work at boot. This change fixes this by extending the
755"orphan" _REG method handling to also apply to GPIO address-space
756handlers.
757
758
7592) iASL Compiler/Disassembler and ACPICA tools:
760
761iASL: Added more info to namespace dump file (-ln option). In a separate
762section of the dump file (after the main namespace dump), emit the full
763pathname for each namespace node, its type, and the ASL filename and line
764number where it is declared.
765
766AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
767x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
768is omitted, all iASL exceptions are displayed.
769
770iASL: Use StringLiteral instead of StringData for some ASL macros. The
771use of the stringData rule allows for some "string" oriented opcodes
772(Such as ToString, ToHexString, etc.) None of which make sense with the
773macros in question. This change modifies the StringData part of the rule
774for these macros to a simple string  literal - thus disallowing the use
775of ToString, ToHexString, etc.
776The following ASL operators (macros) are affected:
777EisaId
778Fprintf
779Printf
780ToUuid
781Unicode
782Note: The MS compiler requires the use of string literals for these
783operators also.
784
785iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
786the list of "known" UUIDs for the input to the ToUUID macro.
787
788Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
789NFIT table.
790
791
792----------------------------------------
793
79425 September 2020. Summary of changes for version 20200925:
795
796This release is available at https://acpica.org/downloads
797
798
7991) ACPICA kernel-resident subsystem:
800
801Preserve memory opregion mappings. The ACPICA's strategy with respect to
802the handling of memory mappings associated with memory operation regions
803is to avoid mapping the entire region at once which may be problematic at
804least in principle (for example, it may lead to conflicts with
805overlapping mappings having different attributes created by drivers).  It
806may also be wasteful, because memory opregions on some systems take up
807vastchunks of address space while the fields in those regions actually
808accessed by AML are sparsely distributed.
809
810For this reason, a one-page "window" is mapped for a given opregion on
811the first memory access through it and if that "window" does not cover an
812address range accessed through that opregion subsequently, it is unmapped
813and a new "window" is mapped to replace it.  Next, if the new "window" is
814not sufficient to access memory through the opregion in question in the
815future, it will be replaced with yet another "window" and so on.  That
816may lead to a suboptimal sequence of memory mapping and unmapping
817operations, for example if two fields in one opregion separated from each
818other by a sufficiently wide chunk of unused address space are accessed
819in an alternating pattern.
820
821Added support for 64 bit risc-v compilation.  Useful for acpica tools and
822incorporating ACPICA into the Firmware Test Suite. Colin Ian King
823<colin.king@canonical.com>.
824
825Added support for SMBus predefined names (from SMBus Control Method
826Interface Specification, Version 1.0, December 10, 1999. New predefined
827names:
828    _SBA
829    _SBI
830    _SBR
831    _SBT
832    _SBW
833
834AML Disassembler: Added a new command, "All <NameSeg>". This command will
835evaluate all objects in the current namespace whose NameString contains
836the input NameSeg as the last element of the NameString. Useful for
837debugging.
838
839
8402) iASL Compiler/Disassembler and ACPICA tools:
841
842iASL: fixed a crash that occurred when predefined objects return packages
843with lengths that exceed the initializer list.
844
845iASL: added more detail to external resolution error message when
846compiling multiple definition blocks.
847
848iASL: added a remark for an attempt to create a nameseg or namestring
849containing lower-case letters. This should prevent declaring multiple
850namesegs or namestrings in an attempt to refer to different objects (with
851different cases), but actually refer to the same object(s).
852
853iASL: improve alias analysis by saving object type. If the alias is a
854method type, the parameter count is also recorded.
855
856AcpiExec: Increase the default loop timeout value. Was 1 second, is now
85710 seconds. Prevents unnecessary timeouts when executing control methods
858from the command line.
859
860AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
861list. Includes:
862    Memory Device
863    Generic Buttons Device
864    NVDIMM Root Device
865    Control Method Battery
866    Device Graphs for _DSD method
867    Hierarchical Data Extension
868....ARM CoreSight Graph
869
870----------------------------------------
871
872
87317 July 2020. Summary of changes for version 20200717:
874
875This release is available at https://acpica.org/downloads
876
877
8781) ACPICA kernel-resident subsystem:
879
880Do not increment OperationRegion reference counts for field units. Recent
881server firmware has revealed that this reference count can overflow on
882large servers that declare many field units (thousands) under the same
883OperationRegion. This occurs because each field unit declaration will add
884a reference count to the source OperationRegion. This release solves the
885reference count overflow for OperationRegion objects by preventing
886fieldUnits from incrementing their parent OperationRegion's reference
887count.
888
889Replaced one-element arrays with flexible-arrays, which were introduced
890in C99.
891
892Restored the readme file containing the directions for generation of
893ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
894located at: generate/msvc2017/readme.txt
895
8962) iASL Compiler/Disassembler and ACPICA tools:
897
898iASL: Fixed a regression found in version 20200214. Prevent iASL from
899emitting an extra byte of garbage data when control methods declared a
900single parameter type without using braces. This extra byte is known to
901cause a blue screen on the Windows AML interpreter.
902
903iASL: Made a change to allow external declarations to specify the type of
904a named object even when some name segments are not defined.
905This change allows the following ASL code to compile (When DEV0 is not
906defined or not defined yet):
907
908    External (\_SB.DEV0.OBJ1, IntObj)
909    External (\_SB.DEV0, DeviceObj)
910
911iASL: Fixed a problem where method names in "Alias ()" statement could be
912misinterpreted. They are now interpreted correctly as method invocations.
913
914iASL: capture a method parameter count (Within the Method info segment,
915as well as the argument node) when using parameter type lists.
916
917----------------------------------------
918
919
92028 May 2020. Summary of changes for version 20200528:
921
922
9231) ACPICA kernel-resident subsystem:
924
925Removed old/obsolete Visual Studio files which were used to build the
926Windows versions of the ACPICA tools. Since we have moved to Visual
927Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
928project files. The new subdirectory and solution file are located at:
929
930    acpica/generate/msvc2017/AcpiComponents.sln
931
932
9332) iASL Compiler/Disassembler and ACPICA tools:
934
935iASL: added support for a new OperationRegion Address Space (subtype):
936PlatformRtMechanism. Support for this new keyword is being released for
937early prototyping. It will appear in the next release of the ACPI
938specification.
939
940iASL: do not optimize the NameString parameter of the CondRefOf operator.
941In the previous iASL compiler release, the NameString parameter of the
942CondRefOf was optimized. There is evidence that some implementations of
943the AML interpreter do not perform the recursive search-to-parent search
944during the execution of the CondRefOf operator. Therefore, the CondRefOf
945operator behaves differently when the NameString parameter is a single
946name segment (a NameSeg) as opposed to a full NamePath (starting at the
947root scope) or a NameString containing parent prefixes.
948
949iASL: Prevent an inadvertent remark message. This change prevents a
950remark if within a control method the following exist:
9511) An Operation Region is defined, and
9522) A Field operator is defined that refers to the region.
953This happens because at the top level, the Field operator does not
954actually create a new named object, it simply references the operation
955region.
956
957Removed support for the acpinames utility. The acpinames was a simple
958utility used to populate and display the ACPI namespace without executing
959any AML code. However, ACPICA now supports executable opcodes outside of
960control methods. This means that executable AML opcodes such as If and
961Store opcodes need to be executed during table load. Therefore, acpinames
962would need to be updated to match the same behavior as the acpiexec
963utility and since acpiexec can already dump the entire namespace (via the
964'namespace' command), we no longer have the need to maintain acpinames.
965
966    In order to dump the contents of the ACPI namespace using acpiexec,
967execute the following command from the command line:
968
969        acpiexec -b "n" [aml files]
970
971----------------------------------------
972
973
97430 April 2020. Summary of changes for version 20200430:
975
9761) ACPICA kernel-resident subsystem:
977
978Cleaned up the coding style of a couple of global variables
979(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
980AcpiProtocolLengths was made static, and the definition of
981AcpiGbl_NextCmdNum was moved to acglobal.h.
982
983
9842) iASL Compiler/Disassembler and ACPICA tools:
985
986iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
987associated with a field.
988
989Disassembler: has been made more resilient so that it will continue to
990parse AML even if the AML generates ACPI namespace errors. This enables
991iASL to disassemble some AML that may have been compiled using older
992versions of iASL that no longer compile with newer versions of iASL.
993
994iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
995was a mixup where _NIG required one parameter and _NIH required zero
996parameters. This change swaps these parameter requirements. Now it is
997required that _NIH must be called with one parameter and _NIG requires
998zero parameters.
999
1000iASL: Allow use of undefined externals as long as they are protected by
1001an if (CondRefOf (...)) block when compiling multiple definition blocks.
1002
1003iASL: Fixed the type override behavior of named objects that are declared
1004as External. External declarations will no longer override the type of
1005the actual definition if it already exists.
1006
1007AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
1008command line wildcard support on Windows. Note: the AcpiNames utility is
1009essentially redundant with the AcpiExec utility (using the "namespace"
1010command) and is therefore deprecated. It will be removed in future
1011releases of ACPICA.
1012
1013Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
1014operators. The disassembler is intended to emit existing ASL code as-is.
1015Therefore, error messages emitted during disassembly should be ignored or
1016handled in a way such that the disassembler can continue to parse the
1017AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
1018parsing for create operators in order to complete parsing ASL termlists.
1019
1020iASL DataTable Compiler: IVRS table: fix potentially uninitialized
1021variable warning. Some compilers catch potential uninitialized variables.
1022This is done by examining branches of if/else statements. This change
1023replaces an "else if" with an "else" to fix the uninitialized variable
1024warning.
1025
1026
1027----------------------------------------
102826 March 2020. Summary of changes for version 20200326:
1029
1030
10311) ACPICA kernel-resident subsystem:
1032
1033Performed a code clean-up to prevent build errors on early versions of
1034GCC-10.
1035
1036Added the NHLT table signature. iASL data table compiler/disassembler
1037support for this table is coming soon.
1038
1039
10402) iASL Compiler/Disassembler and ACPICA tools:
1041
1042AcpiExec: Fixed several problems with the namespace initialization file
1043(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
1044errors, several seg faults, and enhancements to line parsing within the
1045init file. In addition, each object found in the init file and it's new
1046value is displayed, as well as any such entries that do not have a
1047corresponding name in the namespace. For reference, the syntax for the
1048various supported data types are presented below:
1049	PCHG 0x777788889999BBBB	// Integer
1050	\DEV1.STR1 "XYZ"			// String
1051	BUF1 (88 99 AA)			// Buffer
1052	PKG1 [0x1111 0x2222]		// Package
1053	\BF1 0x7980				// BufferField
1054	RCRV 0x0123456789ABCDEF	// Field Unit
1055
1056iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
1057can be used anywhere in a given ASL file to configure iASL to expect an
1058iASL compiler error code on the line where this macro was placed. If the
1059error code does not exist, an error is generated. This is intended to be
1060used for ACPICA's ASL test suite, but can be used by ASL developers as
1061well.
1062
1063iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
1064IVRS table parsing supported only IVHD type 10h structures. Parsing an
1065IVHD type 11h caused the iasl to report unknown subtable type. Add
1066necessary structure definition for IVHD type 11h and apply correct
1067parsing method based on subtable type. Micha? ?ygowski.
1068
1069iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
1070According to AMD IOMMU Specification Revision 3.05 the reserved field
1071should be IOMMU Feature Reporting. Change the name of the field to the
1072correct one. Micha? ?ygowski.
1073
1074acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
1075based on suggestions by David Seifert and Benjamin Berg.
1076
1077iASL: table compiler: removed an unused variable (DtCompilerParserResult)
1078causing linking errors. Patch based on suggestions by David Seifert and
1079Benjamin Berg.
1080
1081iASL: table compiler: make LexBuffer static to avoid linking errors in
1082newer compilers. Patch based on suggestions by David Seifert and Benjamin
1083Berg.
1084
1085iASL: fixed type matching between External and Named objects. External
1086object types can only be expressed with ACPI object type values that are
1087defined in the ACPI spec. However, iASL uses ACPI object type values that
1088are local to ACPICA in addition to the values defined in the ACPI spec.
1089This change implements type matching to map some object type values
1090specific to ACPICA to ones that are defined in the ACPI spec.
1091
1092iASL: Dropped the type mismatch compiler error that can arise from
1093External declarations to a warning. This warning can occur when there is
1094a type difference between the external declaration and the actual object
1095declaration (when compiling multiple files/modules simultaneously).
1096
1097iASL: removed an incorrect error message regarding externals. This change
1098removes an incorrect error that is emitted when a duplicate external
1099declaration does not contain a type that opens a scope. This is incorrect
1100because the duplicate external with conflicting types are already caught
1101by iASL and it doesn't make any sense to enforce what this conflicting
1102type should be.
1103
1104AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
1105surrounded by parens. Otherwise, a logical statement that applies a
1106logical not operator to this macro could result in a computation that
1107applies the operator to the left side of the logical and but not the
1108right. Reported-by: John Levon <john.levon@joyent.com>
1109
1110Fixed a problem with the local version of sprint(): On 32-bit, the
1111provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
1112String + Size will wrap, meaning End < Start, and
1113AcpiUtBoundStringOutput() will never output anything as a result. The
1114symptom seen of this was acpixtract failing to output anything -- with a
1115custom build that included utprint.c. Signed-off-by: John Levon
1116<john.levon@joyent.com>
1117
1118iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
1119ACPI specification.
1120
1121
1122----------------------------------------
112314 February 2020. Summary of changes for version 20200214:
1124
1125
11261) ACPICA kernel-resident subsystem:
1127
1128Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
1129in a guest when it receives a sleep trigger from the hypervisor. When the
1130guest resumes from this power state, it does not see the SleepEnabled
1131bit. In other words, the sleepHibernation (S4) is triggered in a guest
1132when it receives a sleep trigger from the hypervisor. When the guest
1133resumes from this power state, it does not see the SleepEnabled bit. In
1134other words, the sleep button is not enabled on waking from an S4 state.
1135This causes subsequent invocation of sleep state to fail since the
1136guest.button is not enabled on waking from an S4 state. This causes
1137subsequent invocation of sleep state to fail in the guest. Fix this
1138problem by enabling the sleep button in ACPI legacy wake. From Anchal
1139Agarwal <anchalag@amazon.com>.
1140
1141Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
1142for checking the status bits of all enabled GPEs in one go. It is needed
1143to distinguish spurious SCIs from genuine ones when deciding whether or
1144not to wake up the system from suspend-to-idle.
1145
1146Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
1147using HOST in their environment to represent the host name for their
1148machines. Avoid this problem by renaming this variable from HOST to
1149ACPI_HOST.
1150
1151MSVC 2017 project files: Enable multiprocessor generation to improve
1152build performance.
1153
1154Added a macro to get the byte width of a Generic Address structure. New
1155ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
1156ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
1157
1158
11592) iASL Compiler/Disassembler and ACPICA tools:
1160
1161iASL: Implemented full support for the (optional, rarely used) ReturnType
1162and ParameterTypesList for the Method, Function, and External operators.
1163For Method declarations, the number of individual ParameterTypes must
1164match the declaration of the number of arguments (NumArgs). This also
1165Fixes a problem with the External operator where extra/extraneous bytes
1166were emitted in the AML code if the optional ReturnType/ParameterTypes
1167were specified for a MethodObj declaration.
1168New error message:
11691) Method NumArgs count does not match length of ParameterTypes list
1170
1171iASL: Implemented detection of type mismatches between External
1172declarations and named object declarations. Also, detect type mismatches
1173between multiple External declarations of the same Name.
1174New error messages:
11751) Type mismatch between external declaration and actual object
1176declaration detected
11772) Type mismatch between multiple external declarations detected
1178
1179iASL: Implemented new error messages for External operators that specify
1180a ReturnType and/or ParameterTypesList for any object type other than
1181control methods (MethodObj).
1182New error messages:
11831) Return type is only allowed for Externals declared as MethodObj
11842) Parameter type is only allowed for Externals declared as MethodObj
1185
1186iASL: Implemented two new remark/warning messages for ASL code that
1187creates named objects from within a control method. This is very
1188inefficient since the named object must be created and deleted each time
1189the method is executed.
1190New messages:
11911) Creation of named objects within a method is highly inefficient, use
1192globals or method local variables instead (remark)
11932) Static OperationRegion should be declared outside control method
1194(warning)
1195
1196iASL: Improved illegal forward reference detection by adding support to
1197detect forward-reference method invocations.
1198
1199iASL: Detect and issue an error message for NameStrings that contain too
1200many individual NameSegs (>255). This is an AML limitation that is
1201defined in the ACPI specification.
1202New message:
12031) NameString contains too many NameSegs (>255)
1204
1205acpidump: windows: use GetSystemFirmwareTable API for all tables except
1206SSDT. By using this API, acpidump is able to get all tables in the XSDT
1207
1208iASL: Removed unused parser file and updated msvc2017 project files.
1209Removed the obsolete AslCompiler.y from the repository.
1210
1211iASL: msvc2017: Fixed macros in the file dependency list to prevent
1212unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
1213
1214Disassembler: Prevent spilling error messages to the output file. All
1215errors are directed to the console instead. These error messages
1216prevented re-compilation of the resulting disassembled ASL output file
1217(.DSL).
1218
1219
1220----------------------------------------
122110 January 2020. Summary of changes for version 20200110:
1222
1223
12241) ACPICA kernel-resident subsystem:
1225
1226Updated all copyrights to 2020. This affects all ACPICA source code
1227modules.
1228
1229
12302) iASL Compiler/Disassembler and ACPICA tools:
1231
1232ASL test suite (ASLTS): Updated all copyrights to 2020.
1233
1234Tools and utilities: Updated all signon copyrights to 2020.
1235
1236iASL: fix forward reference analysis for field declarations. Fixes
1237forward reference analysis for field declarations by searching the
1238parent scope for the named object when the object is not present in
1239the current scope.
1240
1241iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
1242full pathname of the name that already exists is printed.
1243
1244iASL: Enhance duplicate Case() detection for buffers. Add check for
1245buffers with no initializer list (these buffers will be filled with
1246zeros at runtime.)
1247
1248
1249----------------------------------------
125013 December 2019. Summary of changes for version 20191213:
1251
1252
12531) ACPICA kernel-resident subsystem:
1254
1255Return a Buffer object for all fields created via the CreateField
1256operator. Previously, an Integer would be returned if the size of
1257the field was less than or equal to the current size of an Integer.
1258Although this goes against the ACPI specification, it provides
1259compatibility with other ACPI implementations. Also updated the
1260ASLTS test suite to reflect this new behavior.
1261
12622) iASL Compiler/Disassembler and ACPICA tools:
1263
1264iASL: Implemented detection of (and throw an error for) duplicate
1265values for Case statements within a single Switch statement. Duplicate
1266Integers, Strings, and Buffers are supported.
1267
1268iASL: Fix error logging issue during multiple file compilation --
1269Switch to the correct input file during error node creation.
1270
1271iASL: For duplicate named object creation, now emit an error instead
1272of a warning - since this will cause a runtime error.
1273
1274AcpiSrc: Add unix line-ending support for non-Windows builds.
1275
1276iASL: Add an error condition for an attempt to create a NameString
1277with > 255 NameSegs (the max allowable via the AML definition).
1278
1279
1280----------------------------------------
128118 October 2019. Summary of changes for version 20191018:
1282
1283
12841) ACPICA kernel-resident subsystem:
1285
1286Debugger: added a new command: ?Fields [address space ID]?. This command
1287dumps the contents of all field units that are defined within the
1288namespace with a particular address space ID.
1289
1290Modified the external interface AcpiLoadTable() to return a table index.
1291This table index can be used for unloading a table for debugging.
1292    ACPI_STATUS
1293    AcpiLoadTable (
1294        ACPI_TABLE_HEADER       *Table,
1295        UINT32                  *TableIndex))
1296
1297Implemented a new external interface: AcpiUnloadTable() This new function
1298takes a table index as an argument and unloads the table. Useful for
1299debugging only.
1300    ACPI_STATUS
1301    AcpiUnloadTable (
1302        UINT32                  TableIndex))
1303
1304Ported the AcpiNames utility to use the new table initialization
1305sequence. The utility was broken before this change. Also, it was
1306required to include most of the AML interpreter into the utility in order
1307to process table initialization (module-level code execution.)
1308
1309Update for results from running Clang V8.0.1. This fixes all "dead
1310assignment" warnings. There are still several "Dereference of NULL
1311pointer" warnings, but these have been found to be false positive
1312warnings.
1313
1314
13152) iASL Compiler/Disassembler and ACPICA tools:
1316
1317iASL: numerous table compiler changes to ensure that the usage of
1318yacc/bison syntax is POSIX-compliant.
1319
1320iASL/disassembler: several simple bug fixes in the data table
1321disassembler.
1322
1323Acpiexec: expanded the initialization file (the -fi option) to initialize
1324strings, buffers, packages, and field units.
1325
1326
1327----------------------------------------
132816 August 2019. Summary of changes for version 20190816:
1329
1330This release is available at https://acpica.org/downloads
1331
1332
13331) ACPICA kernel-resident subsystem:
1334
1335Modified the OwnerId mechanism to allow for more Owner Ids. The previous
1336limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
1337exceptions on machines with a large number of initialization threads,
1338many CPU cores and nested initialization control methods.
1339
1340Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
1341checking if the given GPE (as represented by a GPE device handle and a
1342GPE number) is currently active and dispatching it (if that's the case)
1343outside of interrupt context.
1344
1345Table load: exit the interpreter before initializing objects within the
1346new table This prevents re-acquiring the interpreter lock when loading
1347tables
1348
1349Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
1350uk Kim
1351
1352Macros: removed pointer math on a null pointer. Causes warnings on some
1353compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
1354instead of using arithmetic.
1355
1356Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
1357across all "printf-like" internal functions. Also, cleanup all calls to
1358such functions (both in 32-bit mode and 64-bit mode) now that they are
1359analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
1360
1361
13622) iASL Compiler/Disassembler and ACPICA tools:
1363
1364iASL: implemented a new data table compiler flex/bison front-end. This
1365change is internal and is not intended to result in changes to the
1366compiled code. This new compiler front-end can be invoked using the -tp
1367option for now, until the old mechanism is removed.
1368
1369ASLTS: Implemented a new data table compiler test suite. This test suite
1370generates all table templates and compile/disassemble/re-compile/binary-
1371compare each file.
1372
1373iASL: return -1 if AML files were not generated due to compiler errors
1374
1375iASL: added a warning on use of the now-legacy ASL Processor () keyword.
1376
1377iASL: added an error on _UID object declaration that returns a String
1378within a Processor () declaration. A _UID for a processor must be an
1379Integer.
1380
1381iASL: added a null terminator to name strings that consist only of
1382multiple parent prefixes (^)
1383
1384iASL: added support to compile both ASL and data table files in a single
1385command.
1386
1387Updated the tool generation project files that were recently migrated to
1388MSVC 2017 to eliminate all new warnings. The new project files appear in
1389the directory \acpica\generate\msvc2017. This change effectively
1390deprecates the older project files in \acpica\generate\msvc9.
1391
1392
1393----------------------------------------
139403 July 2019. Summary of changes for version 20190703:
1395
1396
13971) ACPICA kernel-resident subsystem:
1398
1399Remove legacy module-level support code. There were still some remnants
1400of the legacy module-level code executions. Since we no longer support
1401this option, this is essentially dead code and has been removed from the
1402ACPICA source.
1403
1404iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1405scope. If these named objects are declared outside the root scope, they
1406will not be invoked by any host Operating System.
1407
1408Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
1409one) can be enabled in two situations. First, the GPEs with existing _Lxx
1410and _Exx methods are enabled implicitly by ACPICA during system
1411initialization.  Second, the GPEs without these methods (like GPEs listed
1412by _PRW objects for wakeup devices) need to be enabled directly by the
1413code that is going to use them (e.g. ACPI power management or device
1414drivers).
1415
1416In the former case, if the status of a given GPE is set to start with,
1417its handler method (either _Lxx or _Exx) needs to be invoked to take care
1418of the events (possibly) signaled before the GPE was enabled. In the
1419latter case, however, the first caller of AcpiEnableGpe() for a given GPE
1420should not be expected to care about any events that might be signaled
1421through it earlier.  In that case, it is better to clear the status of
1422the GPE before enabling it, to prevent stale events from triggering
1423unwanted actions (like spurious system resume, for example).
1424
1425For this reason, modify AcpiEvAddGpeReference() to take an additional
1426boolean argument indicating whether or not the GPE status needs to be
1427cleared when its reference counter changes from zero to one and make
1428AcpiEnableGpe() pass TRUE to it through that new argument.
1429
1430
14312) iASL Compiler/Disassembler and ACPICA tools:
1432
1433The tool generation process has been migrated to MSVC 2017, and all
1434project files have been upgraded. The new project files appear in the
1435directory \acpica\generate\msvc2017. This change effectively deprecates
1436the older project files in \acpica\generate\msvc9.
1437
1438iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1439scope. If these named objects are declared outside the root scope, they
1440will not be invoked by any host Operating System
1441
1442----------------------------------------
144309 May 2019. Summary of changes for version 20190509:
1444
1445
14461) ACPICA kernel-resident subsystem:
1447
1448Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
1449them") that causes problems with Thunderbolt controllers to occur if a
1450dock device is connected at init time (the xhci_hcd and thunderbolt
1451modules crash which prevents peripherals connected through them from
1452working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
1453Dispatch active GPEs at init time") to get undone, so the problem
1454addressed by commit ecc1165b8b74 appears again as a result of it.
1455
1456
14572) iASL Compiler/Disassembler and ACPICA tools:
1458
1459Reverted iASL: Additional forward reference detection. This change
1460reverts forward reference detection for field declarations. The feature
1461unintentionally emitted AML bytecode with incorrect package lengths for
1462some ASL code related to Fields and OperationRegions. This malformed AML
1463can cause systems to crash
1464during boot. The malformed AML bytecode is emitted in iASL version
146520190329 and 20190405.
1466
1467iASL: improve forward reference detection. This change improves forward
1468reference detection for named objects inside of scopes. If a parse object
1469has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
1470a named object that is declared later in the AML bytecode. This is
1471allowed if the reference is inside of a method and the declaration is
1472outside of a method like so:
1473
1474DefinitionBlock(...)
1475{
1476    Method (TEST)
1477    {
1478        Return (NUM0)
1479    }
1480    Name (NUM0,0)
1481}
1482
1483However, if the declaration and reference are both in the same method or
1484outside any methods, this is a forward reference and should be marked as
1485an error because it would result in runtime errors.
1486
1487DefinitionBlock(...)
1488{
1489    Name (BUFF, Buffer (NUM0) {}) // Forward reference
1490    Name (NUM0, 0x0)
1491
1492    Method (TEST)
1493    {
1494        Local0 = NUM1
1495        Name (NUM1, 0x1) // Forward reference
1496        return (Local0)
1497    }
1498}
1499
1500iASL: Implemented additional buffer overflow analysis for BufferField
1501declarations. Check if a buffer index argument to a create buffer field
1502operation is beyond the end of the target buffer.
1503
1504This affects these AML operators:
1505
1506   AML_CREATE_FIELD_OP
1507   AML_CREATE_BIT_FIELD_OP
1508   AML_CREATE_BYTE_FIELD_OP
1509   AML_CREATE_WORD_FIELD_OP
1510   AML_CREATE_DWORD_FIELD_OP
1511   AML_CREATE_QWORD_FIELD_OP
1512
1513 There are three conditions that must be satisfied in order to allow this
1514validation at compile time:
1515
1516   1) The length of the target buffer must be an integer constant
1517   2) The index specified in the create* must be an integer constant
1518   3) For CreateField, the bit length argument must be non-zero.
1519
1520Example:
1521    Name (BUF1, Buffer() {1,2})
1522    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1523
1524dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1525Error    6165 -                           ^ Buffer index beyond end of
1526target buffer
1527
1528
1529----------------------------------------
153005 April 2019. Summary of changes for version 20190405:
1531
1532
15331) ACPICA kernel-resident subsystem:
1534
1535Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
1536unconditionally clearing ACPI IRQs during suspend/resume") was added
1537earlier to stop clearing of event status bits unconditionally on suspend
1538and resume paths. Though this change fixed an issue on suspend path, it
1539introduced regressions on several resume paths. In the case of S0ix,
1540events are enabled as part of device suspend path. If status bits for the
1541events are set when they are enabled, it could result in premature wake
1542from S0ix. If status is cleared for any event that is being enabled so
1543that any stale events are cleared out. In case of S0ix, events are
1544enabled as part of device suspend path. If status bits for the events are
1545set when they are enabled, it could result in premature wake from S0ix.
1546
1547This change ensures that status is cleared for any event that is being
1548enabled so that any stale events are cleared out.
1549
1550
15512) iASL Compiler/Disassembler and ACPICA tools:
1552
1553iASL: Implemented an enhanced multiple file compilation that combines
1554named objects from all input files to a single namespace. With this
1555feature, any unresolved external declarations as well as duplicate named
1556object declarations can be detected during compilation rather than
1557generating errors much later at runtime. The following commands are
1558examples that utilize this feature:
1559    iasl dsdt.asl ssdt.asl
1560    iasl dsdt.asl ssdt1.asl ssdt2.asl
1561    iasl dsdt.asl ssdt*.asl
1562
1563----------------------------------------
156429 March 2019. Summary of changes for version 20190329:
1565
1566
15671) ACPICA kernel-resident subsystem:
1568
1569Namespace support: Remove the address nodes from global list after method
1570termination. The global address list contains pointers to namespace nodes
1571that represent Operation Regions. This change properly removes Operation
1572Region namespace nodes that are declared dynamically during method
1573execution.
1574
1575Linux: Use a different debug default than ACPICA. There was a divergence
1576between Linux and the ACPICA codebases. In order to resolve this
1577divergence, Linux now declares its own debug default in aclinux.h
1578
1579Renamed some internal macros to improve code understanding and
1580maintenance. The macros below all operate on single 4-character ACPI
1581NameSegs, not generic strings (old -> new):
1582    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
1583    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
1584    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
1585
1586Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
1587table.
1588
1589Test suite: Update makefiles, add PCC operation region support
1590
1591
15922) iASL Compiler/Disassembler and Tools:
1593
1594iASL: Implemented additional illegal forward reference detection. Now
1595detect and emit an error upon detection of a forward reference from a
1596Field to an Operation Region. This will fail at runtime if allowed to
1597pass the compiler.
1598
1599AcpiExec: Add an address list check for dynamic Operation Regions. This
1600feature performs a sanity test for each node the global address list.
1601This is done in order to ensure that all dynamic operation regions are
1602properly removed from the global address list and no dangling pointers
1603are left behind.
1604
1605Disassembler: Improved generation of resource pathnames. This change
1606improves the code that generates resource descriptor and resource tag
1607pathnames. The original code used a bunch of str* C library functions
1608that caused warnings on some compilers.
1609
1610iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
1611function can overwrite buffers if the calling code is not very careful.
1612In the case of generating a module/table header, use of memmove is a
1613better implementation.
1614
1615
16163) Status of new features that have not been completed at this time:
1617
1618iASL: Implementing an enhanced multiple file compilation into a single
1619namespace feature (Status): This feature will be released soon, and
1620allows multiple ASL files to be compiled into the same single namespace.
1621By doing so, any unresolved external declarations as well as duplicate
1622named object declarations can be detected during compilation (rather than
1623later during runtime). The following commands are examples that utilize
1624this feature:
1625    iasl dsdt.asl ssdt.asl
1626    iasl dsdt.asl ssdt1.asl ssdt2.asl
1627    iasl dsdt.asl ssdt*.asl
1628
1629ASL tutorial status: Feedback is being gathered internally and the
1630current plan is to publish this tutorial on the ACPICA website after a
1631final review by a tech writer.
1632
1633----------------------------------------
163415 February 2019. Summary of changes for version 20190215:
1635
1636
16370) Support for ACPI specification version 6.3:
1638
1639Add PCC operation region support for the AML interpreter. This adds PCC
1640operation region support in the AML interpreter and a default handler for
1641acpiexec. The change also renames the PCC region address space keyword to
1642PlatformCommChannel.
1643
1644Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
1645These methods provide OSPM with health information and device boot
1646status.
1647
1648PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
1649defines if the trigger needs to be invoked by OSPM before or at the end
1650of kernel crash dump processing/handling operation.
1651
1652SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
1653is used for describing devices such as heterogeneous processors,
1654accelerators, GPUs, and IO devices with integrated compute or DMA
1655engines.
1656
1657MADT: Add support for statistical profiling in GICC. Statistical
1658profiling extension (SPE) is an architecture-specific feature for ARM.
1659
1660MADT: Add online capable flag. If this bit is set, system hardware
1661supports enabling this processor during OS runtime.
1662
1663New Error Disconnect Recover Notification value. There are a number of
1664scenarios where system Firmware in collaboration with hardware may
1665disconnect one or more devices from the rest of the system for purposes
1666of error containment. Firmware can use this new notification value to
1667alert OSPM of such a removal.
1668
1669PPTT: New additional fields in Processor Structure Flags. These flags
1670provide more information about processor topology.
1671
1672NFIT/Disassembler: Change a field name from "Address Range" to "Region
1673Type".
1674
1675HMAT updates: make several existing fields to be reserved as well as
1676rename subtable 0 to "memory proximity domain attributes".
1677
1678GTDT: Add support for new GTDT Revision 3. This revision adds information
1679for the EL2 timer.
1680
1681iASL: Update the HMAT example template for new fields.
1682
1683iASL: Add support for the new revision of the GTDT (Rev 3).
1684
1685
16861) ACPICA kernel-resident subsystem:
1687
1688AML Parser: fix the main AML parse loop to correctly skip erroneous
1689extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
1690byte extended opcodes. If an error occurs during an AML table load, the
1691AML parser will continue loading the table by skipping the offending
1692opcode. This implements a "load table at any cost" philosophy.
1693
1694
16952) iASL Compiler/Disassembler and Tools:
1696
1697iASL: Add checks for illegal object references, such as a reference
1698outside of method to an object within a method. Such an object is only
1699temporary.
1700
1701iASL: Emit error for creation of a zero-length operation region. Such a
1702region is rather pointless. If encountered, a runtime error is also
1703implemented in the interpreter.
1704
1705Debugger: Fix a possible fault with the "test objects" command.
1706
1707iASL: Makefile: support parent directory filenames containing embedded
1708spaces.
1709
1710iASL: Update the TPM2 template to revision 4.
1711
1712iASL: Add the ability to report specific warnings or remarks as errors.
1713
1714Disassembler: Disassemble OEMx tables as actual AML byte code.
1715Previously, these tables were treated as "unknown table".
1716
1717iASL: Add definition and disassembly for TPM2 revision 3.
1718
1719iASL: Add support for TPM2 rev 3 compilation.
1720
1721
1722----------------------------------------
172308 January 2019. Summary of changes for version 20190108:
1724
1725
17261) ACPICA kernel-resident subsystem:
1727
1728Updated all copyrights to 2019. This affects all source code modules.
1729
1730
17312) iASL Compiler/Disassembler and Tools:
1732
1733ASL test suite (ASLTS): Updated all copyrights to 2019.
1734
1735Tools: Updated all signon copyrights to 2019.
1736
1737AcpiExec: Added a new option to dump extra information concerning any
1738memory leaks detected by the internal object/cache tracking mechanism. -
1739va
1740
1741iASL: Updated the table template for the TPM2 table to the newest version
1742of the table (Revision 4)
1743
1744
1745----------------------------------------
174613 December 2018. Summary of changes for version 20181213:
1747
1748
17491) ACPICA Kernel-resident Subsystem:
1750
1751Fixed some buffer length issues with the GenericSerialBus, related to two
1752of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
1753which are rarely seen in the field. For these, the LEN field of the ASL
1754buffer is now ignored. Hans de Goede
1755
1756Implemented a new object evaluation trace mechanism for control methods
1757and data objects. This includes nested control methods. It is
1758particularly useful for examining the ACPI execution during system
1759initialization since the output is relatively terse. The flag below
1760enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
1761   #define ACPI_LV_EVALUATION          0x00080000
1762
1763Examples:
1764   Enter evaluation       :  _SB.PCI0._INI (Method)
1765   Exit evaluation        :  _SB.PCI0._INI
1766   Enter evaluation       :  _OSI (Method)
1767   Exit evaluation        :  _OSI
1768   Enter evaluation       :  _SB.PCI0.TEST (Method)
1769   Nested method call     :     _SB.PCI0.NST1
1770   Exit nested method     :     _SB.PCI0.NST1
1771   Exit evaluation        :  _SB.PCI0.TEST
1772
1773Added two recently-defined _OSI strings. See
1774https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
1775osi.
1776   "Windows 2018"
1777   "Windows 2018.2"
1778
1779Update for buffer-to-string conversions via the ToHexString ASL operator.
1780A "0x" is now prepended to each of the hex values in the output string.
1781This provides compatibility with other ACPI implementations. The ACPI
1782specification is somewhat vague on this issue.
1783   Example output string after conversion:
1784"0x01,0x02,0x03,0x04,0x05,0x06"
1785
1786Return a run-time error for TermArg expressions within individual package
1787elements. Although this is technically supported by the ASL grammar,
1788other ACPI implementations do not support this either. Also, this fixes a
1789fault if this type of construct is ever encountered (it never has been).
1790
1791
17922) iASL Compiler/Disassembler and Tools:
1793
1794iASL: Implemented a new compile option (-ww) that will promote individual
1795warnings and remarks to errors. This is intended to enhance the firmware
1796build process.
1797
1798AcpiExec: Implemented a new command-line option (-eo) to support the new
1799object evaluation trace mechanism described above.
1800
1801Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1802instead of a "unknown table" message.
1803
1804AcpiHelp: Improved support for the "special" predefined names such as
1805_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
1806used for "xx" and "x".
1807
1808----------------------------------------
180931 October 2018. Summary of changes for version 20181031:
1810
1811
1812An Operation Region regression was fixed by properly adding address
1813ranges to a global list during initialization. This allows OS to
1814accurately check for overlapping regions between native devices (such as
1815PCI) and Operation regions as well as checking for region conflicts
1816between two Operation Regions.
1817
1818Added support for the 2-byte extended opcodes in the code/feature that
1819attempts to continue parsing during the table load phase. Skip parsing
1820Device declarations (and other extended opcodes) when an error occurs
1821during parsing. Previously, only single-byte opcodes were supported.
1822
1823Cleanup: Simplified the module-level code support by eliminating a
1824useless global variable (AcpiGbl_GroupModuleLeveCode).
1825
1826
18272) iASL Compiler/Disassembler and Tools:
1828
1829iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1830could cause a fault in the preprocessor. This was an inadvertent side-
1831effect from moving more allocations/frees to the local cache/memory
1832mechanism.
1833
1834iASL: Enhanced error detection by validating that all NameSeg elements
1835within a NamePatch actually exist. The previous behavior was spotty at
1836best, and such errors could be improperly ignored at compiler time (never
1837at runtime, however. There are two new error messages, as shown in the
1838examples below:
1839
1840dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
1841Error    6161 -                              ^ One or more objects within
1842the Pathname do not exist (TTTT.BXXX)
1843
1844dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1845Error    6160 -        One or more prefix Scopes do not exist ^
1846(BBBB.CBF1)
1847
1848iASL: Disassembler/table-compiler: Added support for the static data
1849table TPM2 revision 3 (an older version of TPM2). The support has been
1850added for the compiler and the disassembler.
1851
1852Fixed compilation of DOS format data table file on Unix/Linux systems.
1853iASL now properly detects line continuations (\) for DOS format data
1854table definition language files on when executing on Unix/Linux.
1855
1856----------------------------------------
185703 October 2018. Summary of changes for version 20181003:
1858
1859
18602) iASL Compiler/Disassembler and Tools:
1861
1862Fixed a regression introduced in version 20180927 that could cause the
1863compiler to fault, especially with NamePaths containing one or more
1864carats (^). Such as: ^^_SB_PCI0
1865
1866Added a new remark for the Sleep() operator when the sleep time operand
1867is larger than one second. This is a very long time for the ASL/BIOS code
1868and may not be what was intended by the ASL writer.
1869
1870----------------------------------------
187127 September 2018. Summary of changes for version 20180927:
1872
1873
18741) ACPICA kernel-resident subsystem:
1875
1876Updated the GPE support to clear the status of all ACPI events when
1877entering any/all sleep states in order to avoid premature wakeups. In
1878theory, this may cause some wakeup events to be missed, but the
1879likelihood of this is small. This change restores the original behavior
1880of the ACPICA code in order to fix a regression seen from the previous
1881"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1882This regression could cause some systems to incorrectly wake immediately.
1883
1884Updated the execution of the _REG methods during initialization and
1885namespace loading to bring the behavior into closer conformance to the
1886ACPI specification and other ACPI implementations:
1887
1888From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1889    "Control methods must assume all operation regions are inaccessible
1890until the _REG(RegionSpace, 1) method is executed"
1891
1892    "The exceptions to this rule are:
18931.  OSPM must guarantee that the following operation regions are always
1894accessible:
1895    SystemIO operation regions.
1896    SystemMemory operation regions when accessing memory returned by the
1897System Address Map reporting interfaces."
1898
1899Since the state of both the SystemIO and SystemMemory address spaces are
1900defined by the specification to never change, this ACPICA change ensures
1901that now _REG is never called on them. This solves some problems seen in
1902the field and provides compatibility with other ACPI implementations. An
1903update to the upcoming new version of the ACPI specification will help
1904clarify this behavior.
1905
1906Updated the implementation of support for the Generic Serial Bus. For the
1907"bidirectional" protocols, the internal implementation now automatically
1908creates a return data buffer of the maximum size (255). This handles the
1909worst-case for data that is returned from the serial bus handler, and
1910fixes some problems seen in the field. This new buffer is directly
1911returned to the ASL. As such, there is no true "bidirectional" buffer,
1912which matches the ACPI specification. This is the reason for the "double
1913store" seen in the example ASL code in the specification, shown below:
1914
1915Word Process Call (AttribProcessCall):
1916    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1917    Field(TOP1, BufferAcc, NoLock, Preserve)
1918    {
1919        FLD1, 8, // Virtual register at command value 1.
1920    }
1921
1922    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1923                             // as BUFF
1924    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1925
1926    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
1927    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
1928transaction
1929                           // This is the "double store". The write to
1930                           // FLD1 returns a new buffer, which is stored
1931                           // back into BUFF with the second Store.
1932
1933
19342) iASL Compiler/Disassembler and Tools:
1935
1936iASL: Implemented detection of extraneous/redundant uses of the Offset()
1937operator within a Field Unit list. A remark is now issued for these. For
1938example, the first two of the Offset() operators below are extraneous.
1939Because both the compiler and the interpreter track the offsets
1940automatically, these Offsets simply refer to the current offset and are
1941unnecessary. Note, when optimization is enabled, the iASL compiler will
1942in fact remove the redundant Offset operators and will not emit any AML
1943code for them.
1944
1945    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1946    Field (OPR1)
1947    {
1948        Offset (0),     // Never needed
1949        FLD1, 32,
1950        Offset (4),     // Redundant, offset is already 4 (bytes)
1951        FLD2, 8,
1952        Offset (64),    // OK use of Offset.
1953        FLD3, 16,
1954    }
1955dsdt.asl     14:         Offset (0),
1956Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1957operator
1958
1959dsdt.asl     16:         Offset (4),
1960Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1961operator
1962
1963----------------------------------------
196410 August 2018. Summary of changes for version 20180810:
1965
1966
19671) ACPICA kernel-resident subsystem:
1968
1969Initial ACPI table loading: Attempt to continue loading ACPI tables
1970regardless of malformed AML. Since migrating table initialization to the
1971new module-level code support, the AML interpreter rejected tables upon
1972any ACPI error encountered during table load. This is a problem because
1973non-serious ACPI errors during table load do not necessarily mean that
1974the entire definition block (DSDT or SSDT) is invalid. This change
1975improves the table loading by ignoring some types of errors that can be
1976generated by incorrect AML. This can range from object type errors, scope
1977errors, and index errors.
1978
1979Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1980during suspend/resume. The status of ACPI events is no longer cleared
1981when entering the ACPI S5 system state (power off) which caused some
1982systems to power up immediately after turning off power in certain
1983situations. This was a functional regression. It was fixed by clearing
1984the status of all ACPI events again when entering S5 (for system-wide
1985suspend or hibernation the clearing of the status of all events is not
1986desirable, as it might cause the kernel to miss wakeup events sometimes).
1987Rafael Wysocki.
1988
1989
19902) iASL Compiler/Disassembler and Tools:
1991
1992AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1993elements listed in the initialization file were previously initialized
1994after the table load and before executing module-level code blocks.
1995Recent changes in the module-level code support means that the table load
1996becomes a large control method execution. If fields are used within
1997module-level code and we are executing with the -fi option, the
1998initialization values were used to initialize the namespace object(s)
1999only after the table was finished loading. This change Provides an early
2000initialization of objects specified in the initialization file so that
2001field unit values are populated during the table load (not after the
2002load).
2003
2004AcpiExec: Fixed a small memory leak regression that could result in
2005warnings during exit of the utility. These warnings were similar to
2006these:
2007    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
2008    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
2009
2010----------------------------------------
201129 June 2018. Summary of changes for version 20180629:
2012
2013
20141) iASL Compiler/Disassembler and Tools:
2015
2016iASL: Fixed a regression related to the use of the ASL External
2017statement. Error checking for the use of the External() statement has
2018been relaxed. Previously, a restriction on the use of External meant that
2019the referenced named object was required to be defined in a different
2020table (an SSDT). Thus it would be an error to declare an object as an
2021external and then define the same named object in the same table. For
2022example:
2023    DefinitionBlock (...)
2024    {
2025        External (DEV1)
2026        Device (DEV1){...} // This was an error
2027    }
2028However, this behavior has caused regressions in some existing ASL code,
2029because there is code that depends on named objects and externals (with
2030the same name) being declared in the same table. This change will allow
2031the ASL code above to compile without errors or warnings.
2032
2033iASL: Implemented ASL language extensions for four operators to make some
2034of their arguments optional instead of required:
2035    1) Field (RegionName, AccessType, LockRule, UpdateRule)
2036    2) BankField (RegionName, BankName, BankValue,
2037                AccessType, LockRule, UpdateRule)
2038    3) IndexField (IndexName, DataName,
2039                AccessType, LockRule, UpdateRule)
2040For the Field operators above, the AccessType, LockRule, and UpdateRule
2041are now optional arguments. The default values are:
2042        AccessType: AnyAcc
2043        LockRule:   NoLock
2044        UpdateRule: Preserve
2045    4) Mutex (MutexName, SyncLevel)
2046For this operator, the SyncLevel argument is now optional. This argument
2047is rarely used in any meaningful way by ASL code, and thus it makes sense
2048to make it optional. The default value is:
2049        SyncLevel:  0
2050
2051iASL: Attempted use of the ASL Unload() operator now results in the
2052following warning:
2053    "Unload is not supported by all operating systems"
2054This is in fact very true, and the Unload operator may be completely
2055deprecated in the near future.
2056
2057AcpiExec: Fixed a regression for the -fi option (Namespace initialization
2058file. Recent changes in the ACPICA module-level code support altered the
2059table load/initialization sequence . This means that the table load has
2060become a large method execution of the table itself. If Operation Region
2061Fields are used within any module-level code and the -fi option was
2062specified, the initialization values were populated only after the table
2063had completely finished loading (and thus the module-level code had
2064already been executed). This change moves the initialization of objects
2065listed in the initialization file to before the table is executed as a
2066method. Field unit values are now initialized before the table execution
2067is performed.
2068
2069----------------------------------------
207031 May 2018. Summary of changes for version 20180531:
2071
2072
20731) ACPICA kernel-resident Subsystem:
2074
2075Implemented additional support to help ensure that a DSDT or SSDT is
2076fully loaded even if errors are incurred during the load. The majority of
2077the problems that are seen is the failure of individual AML operators
2078that occur during execution of any module-level code (MLC) existing in
2079the table. This support adds a mechanism to abort the current ASL
2080statement (AML opcode), emit an error message, and to simply move on to
2081the next opcode -- instead of aborting the entire table load. This is
2082different than the execution of a control method where the entire method
2083is aborted upon any error. The goal is to perform a very "best effort" to
2084load the ACPI tables. The most common MLC errors that have been seen in
2085the field are direct references to unresolved ASL/AML symbols (referenced
2086directly without the use of the CondRefOf operator to validate the
2087symbol). This new ACPICA behavior is now compatible with other ACPI
2088implementations.
2089
2090Interpreter: The Unload AML operator is no longer supported for the
2091reasons below. An AE_NOT_IMPLEMENTED exception is returned.
20921) A correct implementation on at least some hosts may not be possible.
20932) Other ACPI implementations do not correctly/fully support it.
20943) It requires host device driver support which is not known to exist.
2095    (To properly support namespace unload out from underneath.)
20964) This AML operator has never been seen in the field.
2097
2098Parser: Added a debug option to dump AML parse sub-trees as they are
2099being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
2100ACPI_DB_PARSE_TREES.
2101
2102Debugger: Reduced the verbosity for errors incurred during table load and
2103module-level code execution.
2104
2105Completed an investigation into adding a namespace node "owner list"
2106instead of the current "owner ID" associated with namespace nodes. This
2107list would link together all nodes that are owned by an individual
2108control method. The purpose would be to enhance control method execution
2109by speeding up cleanup during method exit (all namespace nodes created by
2110a method are deleted upon method termination.) Currently, the entire
2111namespace must be searched for matching owner IDs if (and only if) the
2112method creates named objects outside of the local scope. However, by far
2113the most common case is that methods create objects locally, not outside
2114the method scope. There is already an ACPICA optimization in place that
2115only searches the entire namespace in the rare case of a method creating
2116objects elsewhere in the namespace. Therefore, it is felt that the
2117overhead of adding an additional pointer to each namespace node to
2118implement the owner list makes this feature unnecessary.
2119
2120
21212) iASL Compiler/Disassembler and Tools:
2122
2123iASL, Disassembler, and Template generator: Implemented support for
2124Revision D of the IORT table. Adds a new subtable that is used to specify
2125SMMUv3 PMCGs. rmurphy-arm.
2126
2127Disassembler: Restored correct table header validation for the "special"
2128ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
2129table header and must be special-cased. This was a regression that has
2130been present for apparently a long time.
2131
2132AcpiExec: Reduced verbosity of the local exception handler implemented
2133within acpiexec. This handler is invoked by ACPICA upon any exceptions
2134generated during control method execution. A new option was added: -vh
2135restores the original verbosity level if desired.
2136
2137AcpiExec: Changed the default base from decimal to hex for the -x option
2138(set debug level). This simplifies the use of this option and matches the
2139behavior of the corresponding iASL -x option.
2140
2141AcpiExec: Restored a force-exit on multiple control-c (sigint)
2142interrupts. This allows program termination even if other issues cause
2143the control-c to fail.
2144
2145ASL test suite (ASLTS): Added tests for the recently implemented package
2146element resolution mechanism that allows forward references to named
2147objects from individual package elements (this mechanism provides
2148compatibility with other ACPI implementations.)
2149
2150
2151----------------------------------------
21528 May 2018. Summary of changes for version 20180508:
2153
2154
21551) ACPICA kernel-resident subsystem:
2156
2157Completed the new (recently deployed) package resolution mechanism for
2158the Load and LoadTable ASL/AML operators. This fixes a regression that
2159was introduced in version 20180209 that could result in an
2160AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
2161(SSDT) that contains package objects.
2162
2163
21642) iASL Compiler/Disassembler and Tools:
2165
2166AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
21671 MB. This change allows for table offsets within the acpidump file to be
2168up to 8 characters. These changes are backwards compatible with existing
2169acpidump files.
2170
2171
2172----------------------------------------
217327 April 2018. Summary of changes for version 20180427:
2174
2175
21761) ACPICA kernel-resident subsystem:
2177
2178Debugger: Added support for Package objects in the "Test Objects"
2179command. This command walks the entire namespace and evaluates all named
2180data objects (Integers, Strings, Buffers, and now Packages).
2181
2182Improved error messages for the namespace root node. Originally, the root
2183was referred to by the confusing string "\___". This has been replaced by
2184"Namespace Root" for clarification.
2185
2186Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
2187Ian King <colin.king@canonical.com>.
2188
2189
21902) iASL Compiler/Disassembler and Tools:
2191
2192iASL: Implemented support to detect and flag illegal forward references.
2193For compatibility with other ACPI implementations, these references are
2194now illegal at the root level of the DSDT or SSDTs. Forward references
2195have always been illegal within control methods. This change should not
2196affect existing ASL/AML code because of the fact that these references
2197have always been illegal in the other ACPI implementation.
2198
2199iASL: Added error messages for the case where a table OEM ID and OEM
2200TABLE ID strings are longer than the ACPI-defined length. Previously,
2201these strings were simply silently truncated.
2202
2203iASL: Enhanced the -tc option (which creates an AML hex file in C,
2204suitable for import into a firmware project):
2205  1) Create a unique name for the table, to simplify use of multiple
2206SSDTs.
2207  2) Add a protection #ifdef in the file, similar to a .h header file.
2208With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
2209evan.lloyd@arm.com
2210
2211AcpiExec: Added a new option, -df, to disable the local fault handler.
2212This is useful during debugging, where it may be desired to drop into a
2213debugger on a fault.
2214
2215----------------------------------------
221613 March 2018. Summary of changes for version 20180313:
2217
2218
22191) ACPICA kernel-resident subsystem:
2220
2221Implemented various improvements to the GPE support:
2222
22231) Dispatch all active GPEs at initialization time so that no GPEs are
2224lost.
22252) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
2226before devices are enumerated.
22273) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
2228IRQs are not lost.
22294) Add parallel GPE handling to eliminate the possibility of dispatching
2230the same GPE twice.
22315) Dispatch any pending GPEs after enabling for the first time.
2232
2233AcpiGetObjectInfo - removed support for the _STA method. This was causing
2234problems on some platforms.
2235
2236Added a new _OSI string, "Windows 2017.2".
2237
2238Cleaned up and simplified the module-level code support. These changes
2239are in preparation for the eventual removal of the legacy MLC support
2240(deferred execution), replaced by the new MLC architecture which executes
2241the MLC as a table is loaded (DSDT/SSDTs).
2242
2243Changed a compile-time option to a runtime option. Changes the option to
2244ignore ACPI table load-time package resolution errors into a runtime
2245option. Used only for platforms that generate many AE_NOT_FOUND errors
2246during boot. AcpiGbl_IgnorePackageResolutionErrors.
2247
2248Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
2249ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
2250compilation errors from unused variables (seen with some compilers).
2251
2252
22532) iASL Compiler/Disassembler and Tools:
2254
2255ASLTS: parallelized execution in order to achieve an (approximately) 2X
2256performance increase.
2257
2258ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
2259error reporting.
2260
2261----------------------------------------
226209 February 2018. Summary of changes for version 20180209:
2263
2264
22651) ACPICA kernel-resident subsystem:
2266
2267Completed the final integration of the recent changes to Package Object
2268handling and the module-level AML code support. This allows forward
2269references from individual package elements when the package object is
2270declared from within module-level code blocks. Provides compatibility
2271with other ACPI implementations.
2272
2273The new architecture for the AML module-level code has been completed and
2274is now the default for the ACPICA code. This new architecture executes
2275the module-level code in-line as the ACPI table is loaded/parsed instead
2276of the previous architecture which deferred this code until after the
2277table was fully loaded. This solves some ASL code ordering issues and
2278provides compatibility with other ACPI implementations. At this time,
2279there is an option to fallback to the earlier architecture, but this
2280support is deprecated and is planned to be completely removed later this
2281year.
2282
2283Added a compile-time option to ignore AE_NOT_FOUND exceptions during
2284resolution of named reference elements within Package objects. Although
2285this is potentially a serious problem, it can generate a lot of
2286noise/errors on platforms whose firmware carries around a bunch of unused
2287Package objects. To disable these errors, define
2288ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
2289errors are always reported for ACPICA applications such as AcpiExec.
2290
2291Fixed a regression related to the explicit type-conversion AML operators
2292(ToXXXX). The regression was introduced early in 2017 but was not seen
2293until recently because these operators are not fully supported by other
2294ACPI implementations and are thus rarely used by firmware developers. The
2295operators are defined by the ACPI specification to not implement the
2296"implicit result object conversion". The regression incorrectly
2297introduced this object conversion for the following explicit conversion
2298operators:
2299    ToInteger
2300    ToString
2301    ToBuffer
2302    ToDecimalString
2303    ToHexString
2304    ToBCD
2305    FromBCD
2306
2307
23082) iASL Compiler/Disassembler and Tools:
2309
2310iASL: Fixed a problem with the compiler constant folding feature as
2311related to the ToXXXX explicit conversion operators. These operators do
2312not support the "implicit result object conversion" by definition. Thus,
2313ASL expressions that use these operators cannot be folded to a simple
2314Store operator because Store implements the implicit conversion. This
2315change uses the CopyObject operator for the ToXXXX operator folding
2316instead. CopyObject is defined to not implement implicit result
2317conversions and is thus appropriate for folding the ToXXXX operators.
2318
2319iASL: Changed the severity of an error condition to a simple warning for
2320the case where a symbol is declared both locally and as an external
2321symbol. This accommodates existing ASL code.
2322
2323AcpiExec: The -ep option to enable the new architecture for module-level
2324code has been removed. It is replaced by the -dp option which instead has
2325the opposite effect: it disables the new architecture (the default) and
2326enables the legacy architecture. When the legacy code is removed in the
2327future, the -dp option will be removed also.
2328
2329----------------------------------------
233005 January 2018. Summary of changes for version 20180105:
2331
2332
23331) ACPICA kernel-resident subsystem:
2334
2335Updated all copyrights to 2018. This affects all source code modules.
2336
2337Fixed a possible build error caused by an unresolved reference to the
2338AcpiUtSafeStrncpy function.
2339
2340Removed NULL pointer arithmetic in the various pointer manipulation
2341macros. All "(void *) NULL" constructs are converted to "(void *) 0".
2342This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
2343
2344Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
2345Mittal.
2346
2347
23482) iASL Compiler/Disassembler and Tools:
2349
2350ASLTS: Updated all copyrights to 2018.
2351
2352Tools: Updated all signon copyrights to 2018.
2353
2354AcpiXtract: Fixed a regression related to ACPI table signatures where the
2355signature was truncated to 3 characters (instead of 4).
2356
2357AcpiExec: Restore the original terminal mode after the use of the -v and
2358-vd options.
2359
2360ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
2361
2362----------------------------------------
236314 December 2017. Summary of changes for version 20171214:
2364
2365
23661) ACPICA kernel-resident subsystem:
2367
2368Fixed a regression in the external (public) AcpiEvaluateObjectTyped
2369interface where the optional "pathname" argument had inadvertently become
2370a required argument returning an error if omitted (NULL pointer
2371argument).
2372
2373Fixed two possible memory leaks related to the recently developed "late
2374resolution" of reference objects within ASL Package Object definitions.
2375
2376Added two recently defined _OSI strings: "Windows 2016" and "Windows
23772017". Mario Limonciello.
2378
2379Implemented and deployed a safer version of the C library function
2380strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
2381creation of unterminated strings as a possible result of a standard
2382strncpy.
2383
2384Cleaned up and restructured the global variable file (acglobal.h). There
2385are many changes, but no functional changes.
2386
2387
23882) iASL Compiler/Disassembler and Tools:
2389
2390iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
2391optional OemData field at the end of the table was incorrectly required
2392for proper compilation. It is now correctly an optional field.
2393
2394ASLTS: The entire suite was converted from standard ASL to the ASL+
2395language, using the ASL-to-ASL+ converter which is integrated into the
2396iASL compiler. A binary compare of all output files has verified the
2397correctness of the conversion.
2398
2399iASL: Fixed the source code build for platforms where "char" is unsigned.
2400This affected the iASL lexer only. Jung-uk Kim.
2401
2402----------------------------------------
240310 November 2017. Summary of changes for version 20171110:
2404
2405
24061) ACPICA kernel-resident subsystem:
2407
2408This release implements full support for ACPI 6.2A:
2409    NFIT - Added a new subtable, "Platform Capabilities Structure"
2410No other changes to ACPICA were required, since ACPI 6.2A is primarily an
2411errata release of the specification.
2412
2413Other ACPI table changes:
2414    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
2415    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
2416Linton
2417
2418Utilities: Modified the string/integer conversion functions to use
2419internal 64-bit divide support instead of a native divide. On 32-bit
2420platforms, a 64-bit divide typically requires a library function which
2421may not be present in the build (kernel or otherwise).
2422
2423Implemented a targeted error message for timeouts returned from the
2424Embedded Controller device driver. This is seen frequently enough to
2425special-case an AE_TIME returned from an EC operation region access:
2426    "Timeout from EC hardware or EC device driver"
2427
2428Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
2429runtime error messages have the identical prefix.
2430
2431
24322) iASL Compiler/Disassembler and Tools:
2433
2434AcpiXtract: Fixed a problem with table header detection within the
2435acpidump file. Processing a table could be ended early if a 0x40 (@)
2436appears in the original binary table, resulting in the @ symbol appearing
2437in the decoded ASCII field at the end of the acpidump text line. The
2438symbol caused acpixtract to incorrectly think it had reached the end of
2439the current table and the beginning of a new table.
2440
2441AcpiXtract: Added an option (-f) to ignore some errors during table
2442extraction. This initial implementation ignores non-ASCII and non-
2443printable characters found in the acpidump text file.
2444
2445TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
2446for ASLTS. This feature is used to track memory allocations from
2447different memory caches within the ACPICA code. At the end of an ASLTS
2448run, these memory statistics are recorded and stored in a log file.
2449
2450Debugger (user-space version): Implemented a simple "Background" command.
2451Creates a new thread to execute a control method in the background, while
2452control returns to the debugger prompt to allow additional commands.
2453    Syntax: Background <Namepath> [Arguments]
2454
2455----------------------------------------
245629 September 2017. Summary of changes for version 20170929:
2457
2458
24591) ACPICA kernel-resident subsystem:
2460
2461Redesigned and implemented an improved ASL While() loop timeout
2462mechanism. This mechanism is used to prevent infinite loops in the kernel
2463AML interpreter caused by either non-responsive hardware or incorrect AML
2464code. The new implementation uses AcpiOsGetTimer instead of a simple
2465maximum loop count, and is thus more accurate and constant across
2466different machines. The default timeout is currently 30 seconds, but this
2467may be adjusted later.
2468
2469Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
2470better reflect the new implementation of the loop timeout mechanism.
2471
2472Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
2473and to fix an off-by-one error. Jung-uk Kim.
2474
2475Fixed an EFI build problem by updating the makefiles to for a new file
2476that was added, utstrsuppt.c
2477
2478
24792) iASL Compiler/Disassembler and Tools:
2480
2481Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
2482includes support in the table disassembler, compiler, and template
2483generator.
2484
2485iASL: Added an exception for an illegal type of recursive method
2486invocation. If a method creates named objects, the first recursive call
2487will fail at runtime. This change adds an error detection at compile time
2488to catch the problem up front. Note: Marking such a method as
2489"serialized" will not help with this problem, because the same thread can
2490acquire the method mutex more than once. Example compiler and runtime
2491output:
2492
2493    Method (MTH1)
2494    {
2495        Name (INT1, 1)
2496        MTH1 ()
2497    }
2498
2499    dsdt.asl     22: MTH1 ()
2500    Error    6152 -  ^ Illegal recursive call to method
2501                       that creates named objects (MTH1)
2502
2503Previous runtime exception:
2504    ACPI Error: [INT1] Namespace lookup failure,
2505    AE_ALREADY_EXISTS (20170831/dswload2-465)
2506
2507iASL: Updated support for External() opcodes to improve namespace
2508management and error detection. These changes are related to issues seen
2509with multiple-segment namespace pathnames within External declarations,
2510such as below:
2511
2512    External(\_SB.PCI0.GFX0, DeviceObj)
2513    External(\_SB.PCI0.GFX0.ALSI)
2514
2515iASL: Implemented support for multi-line error/warning messages. This
2516enables more detailed and helpful error messages as below, from the
2517initial deployment for the duplicate names error:
2518
2519    DSDT.iiii   1692:       Device(PEG2) {
2520    Error    6074 -                  ^ Name already exists in scope
2521(PEG2)
2522
2523        Original name creation/declaration below:
2524        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
2525
2526AcpiXtract: Added additional flexibility to support differing input hex
2527dump formats. Specifically, hex dumps that contain partial disassembly
2528and/or comments within the ACPI table data definition. There exist some
2529dump utilities seen in the field that create this type of hex dump (such
2530as Simics). For example:
2531
2532    DSDT @ 0xdfffd0c0 (10999 bytes)
2533        Signature DSDT
2534        Length 10999
2535        Revision 1
2536        Checksum 0xf3 (Ok)
2537        OEM_ID BXPC
2538        OEM_table_id BXDSDT
2539        OEM_revision 1
2540        Creator_id 1280593481
2541        Creator_revision 537399345
2542      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
2543      ...
2544      2af0: 5f 4c 30 46 00 a4 01
2545
2546Test suite: Miscellaneous changes/fixes:
2547    More cleanup and simplification of makefiles
2548    Continue compilation of test cases after a compile failure
2549    Do not perform binary compare unless both files actually exist
2550
2551iASL: Performed some code/module restructuring. Moved all memory
2552allocation functions to new modules. Two new files, aslallocate.c and
2553aslcache.c
2554
2555----------------------------------------
255631 August 2017. Summary of changes for version 20170831:
2557
2558
25591) ACPICA kernel-resident subsystem:
2560
2561Implemented internal support for full 64-bit addresses that appear in all
2562Generic Address Structure (GAS) structures. Previously, only the lower 32
2563bits were used. Affects the use of GAS structures in the FADT and other
2564tables, as well as the GAS structures passed to the AcpiRead and
2565AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
2566
2567Added header support for the PDTT ACPI table (Processor Debug Trigger
2568Table). Full support in the iASL Data Table Compiler and disassembler is
2569forthcoming.
2570
2571
25722) iASL Compiler/Disassembler and Tools:
2573
2574iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
2575Properties Topology Table) where a flag bit was specified in the wrong
2576bit position ("Line Size Valid", bit 6).
2577
2578iASL: Implemented support for Octal integer constants as defined by the
2579ASL language grammar, per the ACPI specification. Any integer constant
2580that starts with a zero is an octal constant. For example,
2581    Store (037777, Local0) /* Octal constant */
2582    Store (0x3FFF, Local0) /* Hex equivalent */
2583    Store (16383,  Local0) /* Decimal equivalent */
2584
2585iASL: Improved overflow detection for 64-bit string conversions during
2586compilation of integer constants. "Overflow" in this case means a string
2587that represents an integer that is too large to fit into a 64-bit value.
2588Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
2589the low-order 32 bits with a warning, as previously implemented. Several
2590new exceptions are defined that indicate a 64-bit overflow, as well as
2591the base (radix) that was used during the attempted conversion. Examples:
2592    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
2593    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
2594    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
2595
2596iASL: Added a warning for the case where a ResourceTemplate is declared
2597with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
2598this case, the resulting template is created with a single END_TAG
2599descriptor, which is essentially useless.
2600
2601iASL: Expanded the -vw option (ignore specific warnings/remarks) to
2602include compilation error codes as well.
2603
2604----------------------------------------
260528 July 2017. Summary of changes for version 20170728:
2606
2607
26081) ACPICA kernel-resident subsystem:
2609
2610Fixed a regression seen with small resource descriptors that could cause
2611an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
2612
2613AML interpreter: Implemented a new feature that allows forward references
2614from individual named references within package objects that are
2615contained within blocks of "module-level code". This provides
2616compatibility with other ACPI implementations and supports existing
2617firmware that depends on this feature. Example:
2618
2619    Name (ABCD, 1)
2620    If (ABCD)                       /* An If() at module-level */
2621    {
2622        Name (PKG1, Package()
2623        {
2624            INT1                    /* Forward reference to object INT1
2625*/
2626        })
2627        Name (INT1, 0x1234)
2628    }
2629
2630AML Interpreter: Fixed a problem with the Alias() operator where aliases
2631to some ASL objects were not handled properly. Objects affected are:
2632Mutex, Event, and OperationRegion.
2633
2634AML Debugger: Enhanced to properly handle AML Alias objects. These
2635objects have one level of indirection which was not fully supported by
2636the debugger.
2637
2638Table Manager: Added support to detect and ignore duplicate SSDTs within
2639the XSDT/RSDT. This error in the XSDT has been seen in the field.
2640
2641EFI and EDK2 support:
2642    Enabled /WX flag for MSVC builds
2643    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
2644    Added local support for 64-bit multiply and shift operations
2645    Added support to compile acpidump.efi on Windows
2646    Added OSL function stubs for interfaces not used under EFI
2647
2648Added additional support for the _DMA predefined name. _DMA returns a
2649buffer containing a resource template. This change add support within the
2650resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
2651resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
2652
2653
26542) iASL Compiler/Disassembler and Tools:
2655
2656iASL: Fixed a problem where the internal input line buffer(s) could
2657overflow if there are very long lines in the input ASL source code file.
2658Implemented buffer management that automatically increases the size of
2659the buffers as necessary.
2660
2661iASL: Added an option (-vx) to "expect" particular remarks, warnings and
2662errors. If the specified exception is not raised during compilation, the
2663compiler emits an error. This is intended to support the ASL test suite,
2664but may be useful in other contexts.
2665
2666iASL: Implemented a new predefined macro, __METHOD__, which returns a
2667string containing the name of the current control method that is being
2668compiled.
2669
2670iASL: Implemented debugger and table compiler support for the SDEI ACPI
2671table (Software Delegated Exception Interface). James Morse
2672<james.morse@arm.com>
2673
2674Unix/Linux makefiles: Added an option to disable compile optimizations.
2675The disable occurs when the NOOPT flag is set to TRUE.
2676theracermaster@gmail.com
2677
2678Acpidump: Added support for multiple DSDT and FACS tables. This can occur
2679when there are different tables for 32-bit versus 64-bit.
2680
2681Enhanced error reporting for the ASL test suite (ASLTS) by removing
2682unnecessary/verbose text, and emit the actual line number where an error
2683has occurred. These changes are intended to improve the usefulness of the
2684test suite.
2685
2686----------------------------------------
268729 June 2017. Summary of changes for version 20170629:
2688
2689
26901) ACPICA kernel-resident subsystem:
2691
2692Tables: Implemented a deferred ACPI table verification. This is useful
2693for operating systems where the tables cannot be verified in the early
2694initialization stage due to early memory mapping limitations on some
2695architectures. Lv Zheng.
2696
2697Tables: Removed the signature validation for dynamically loaded tables.
2698Provides compatibility with other ACPI implementations. Previously, only
2699SSDT tables were allowed, as per the ACPI specification. Now, any table
2700signature can be used via the Load() operator. Lv Zheng.
2701
2702Tables: Fixed several mutex issues that could cause errors during table
2703acquisition. Lv Zheng.
2704
2705Tables: Fixed a problem where an ACPI warning could be generated if a
2706null pointer was passed to the AcpiPutTable interface. Lv Zheng.
2707
2708Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
2709AcpiPutTable interfaces. This applies to the "late stage" table loading
2710when the use of AcpiPutTable is no longer required (since the system
2711memory manager is fully running and available). Lv Zheng.
2712
2713Fixed/Reverted a regression during processing of resource descriptors
2714that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
2715exception in this case.
2716
2717Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
2718I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
2719
2720Interpreter: Fixed a possible fault if an Alias operator with an invalid
2721or duplicate target is encountered during Alias creation in
2722AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
2723
2724Added an option to use designated initializers for function pointers.
2725Kees Cook <keescook@google.com>
2726
2727
27282) iASL Compiler/Disassembler and Tools:
2729
2730iASL: Allow compilation of External declarations with target pathnames
2731that refer to existing named objects within the table. Erik Schmauss.
2732
2733iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
2734FieldUnit name also is declared via External in the same table. Erik
2735Schmauss.
2736
2737iASL: Allow existing scope names within pathnames used in External
2738statements. For example:
2739    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
2740    Device (ABCD)
2741
2742iASL: IORT ACPI table: Implemented changes required to decode the new
2743Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
2744compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
2745
2746Disassembler: Don't abort disassembly on errors from External()
2747statements. Erik Schmauss.
2748
2749Disassembler: fixed a possible fault when one of the Create*Field
2750operators references a Resource Template. ACPICA Bugzilla 1396.
2751
2752iASL: In the source code, resolved some naming inconsistences across the
2753parsing support. Fixes confusion between "Parse Op" and "Parse Node".
2754Adds a new file, aslparseop.c
2755
2756----------------------------------------
275731 May 2017. Summary of changes for version 20170531:
2758
2759
27600) ACPI 6.2 support:
2761
2762The ACPI specification version 6.2 has been released and is available at
2763http://uefi.org/specifications
2764
2765This version of ACPICA fully supports the ACPI 6.2 specification. Changes
2766are summarized below.
2767
2768New ACPI tables (Table Compiler/Disassembler/Templates):
2769    HMAT (Heterogeneous Memory Attributes Table)
2770    WSMT (Windows SMM Security Mitigation Table)
2771    PPTT (Processor Properties Topology Table)
2772
2773New subtables for existing ACPI tables:
2774    HEST (New subtable, Arch-deferred machine check)
2775    SRAT (New subtable, Arch-specific affinity structure)
2776    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
2777
2778Simple updates for existing ACPI tables:
2779    BGRT (two new flag bits)
2780    HEST (New bit defined for several subtables, GHES_ASSIST)
2781
2782New Resource Descriptors and Resource macros (Compiler/Disassembler):
2783    PinConfig()
2784    PinFunction()
2785    PinGroup()
2786    PinGroupConfig()
2787    PinGroupFunction()
2788    New type for hardware error notification (section 18.3.2.9)
2789
2790New predefined names/methods (Compiler/Interpreter):
2791    _HMA (Heterogeneous Memory Attributes)
2792    _LSI (Label Storage Information)
2793    _LSR (Label Storage Read)
2794    _LSW (Label Storage Write)
2795
2796ASL grammar/macro changes (Compiler):
2797    For() ASL macro, implemented with the AML while operator
2798    Extensions to Concatenate operator
2799    Support for multiple definition blocks in same ASL file
2800    Clarification for Buffer operator
2801    Allow executable AML code underneath all scopes (Devices, etc.)
2802    Clarification/change for the _OSI return value
2803    ASL grammar update for reference operators
2804    Allow a zero-length string for AML filename in DefinitionBlock
2805
2806Miscellaneous:
2807    New device object notification value
2808    Remove a notify value (0x0C) for graceful shutdown
2809    New UUIDs for processor/cache properties and
2810        physical package property
2811    New _HID, ACPI0014 (Wireless Power Calibration Device)
2812
2813
28141) ACPICA kernel-resident subsystem:
2815
2816Added support to disable ACPI events on hardware-reduced platforms.
2817Eliminates error messages of the form "Could not enable fixed event". Lv
2818Zheng
2819
2820Fixed a problem using Device/Thermal objects with the ObjectType and
2821DerefOf ASL operators. This support had not been fully/properly
2822implemented.
2823
2824Fixed a problem where if a Buffer object containing a resource template
2825was longer than the actual resource template, an error was generated --
2826even though the AML is legal. This case has been seen in the field.
2827
2828Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2829The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2830
2831Added header file changes for the TPM2 ACPI table. Update to new version
2832of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2833
2834Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2835These interfaces are intended to be used only in conjunction with the
2836predefined _DLM method (Device Lock Method). "This object appears in a
2837device scope when AML access to the device must be synchronized with the
2838OS environment".
2839
2840Example Code and Data Size: These are the sizes for the OS-independent
2841acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2842debug version of the code includes the debug output trace mechanism and
2843has a much larger code and data size.
2844
2845  Current Release:
2846    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
2847    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
2848  Previous Release:
2849    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2850    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2851
2852
28532) iASL Compiler/Disassembler and Tools:
2854
2855iASL: Fixed a problem where an External() declaration could not refer to
2856a Field Unit. Erik Schmauss.
2857
2858Disassembler: Improved support for the Switch/Case operators. This
2859feature will disassemble AML code back to the original Switch operators
2860when possible, instead of an If..Else sequence. David Box
2861
2862iASL and disassembler: Improved the handling of multiple extraneous
2863parentheses for both ASL input and disassembled ASL output.
2864
2865Improved the behavior of the iASL compiler and disassembler to detect
2866improper use of external declarations
2867
2868Disassembler: Now aborts immediately upon detection of an unknown AML
2869opcode. The AML parser has no real way to recover from this, and can
2870result in the creation of an ill-formed parse tree that causes errors
2871later during the disassembly.
2872
2873All tools: Fixed a problem where the Unix application OSL did not handle
2874control-c correctly. For example, a control-c could incorrectly wake the
2875debugger.
2876
2877AcpiExec: Improved the Control-C handling and added a handler for
2878segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2879environments.
2880
2881Reduced the verbosity of the generic unix makefiles. Previously, each
2882compilation displayed the full set of compiler options. This has been
2883eliminated as the options are easily inspected within the makefiles. Each
2884compilation now results in a single line of output.
2885
2886----------------------------------------
288703 March 2017. Summary of changes for version 20170303:
2888
2889
28900) ACPICA licensing:
2891
2892The licensing information at the start of each source code module has
2893been updated. In addition to the Intel license, the dual GPLv2/BSD
2894license has been added for completeness. Now, a single version of the
2895source code should be suitable for all ACPICA customers. This is the
2896major change for this release since it affects all source code modules.
2897
2898
28991) ACPICA kernel-resident subsystem:
2900
2901Fixed two issues with the common asltypes.h header that could cause
2902problems in some environments: (Kim Jung-uk)
2903    Removed typedef for YY_BUFFER_STATE ?
2904       Fixes an error with earlier versions of Flex.
2905    Removed use of FILE typedef (which is only defined in stdio.h)
2906
2907
29082) iASL Compiler/Disassembler and Tools:
2909
2910Disassembler: fixed a regression introduced in 20170224. A fix for a
2911memory leak related to resource descriptor tags (names) could fault when
2912the disassembler was generated with 64-bit compilers.
2913
2914The ASLTS test suite has been updated to implement a new testing
2915architecture. During generation of the suite from ASL source, both the
2916ASL and ASL+ compilers are now validated, as well as the disassembler
2917itself (Erik Schmauss). The architecture executes as follows:
2918
2919    For every ASL source module:
2920        Compile (legacy ASL compilation)
2921        Disassemble the resulting AML to ASL+ source code
2922        Compile the new ASL+ module
2923        Perform a binary compare on the legacy AML and the new ASL+ AML
2924    The ASLTS suite then executes normally using the AML binaries.
2925
2926----------------------------------------
292724 February 2017. Summary of changes for version 20170224:
2928
2929
29301) ACPICA kernel-resident subsystem:
2931
2932Interpreter: Fixed two issues with the control method return value auto-
2933repair feature, where an attempt to double-delete an internal object
2934could result in an ACPICA warning (for _CID repair and others). No fault
2935occurs, however, because the attempted deletion (actually a release to an
2936internal cache) is detected and ignored via object poisoning.
2937
2938Debugger: Fixed an AML interpreter mutex issue during the single stepping
2939of control methods. If certain debugger commands are executed during
2940stepping, a mutex acquire/release error could occur. Lv Zheng.
2941
2942Fixed some issues generating ACPICA with the Intel C compiler by
2943restoring the original behavior and compiler-specific include file in
2944acenv.h. Lv Zheng.
2945
2946Example Code and Data Size: These are the sizes for the OS-independent
2947acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2948debug version of the code includes the debug output trace mechanism and
2949has a much larger code and data size.
2950
2951  Current Release:
2952    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2953    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2954  Previous Release:
2955    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2956    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2957
2958
29592) iASL Compiler/Disassembler and Tools:
2960
2961iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2962tool has been designed, implemented, and included in this release. The
2963key feature of this utility is that the original comments within the
2964input ASL file are preserved during the conversion process, and included
2965within the converted ASL+ file -- thus creating a transparent conversion
2966of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2967
2968    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2969converted code
2970
2971iASL/Disassembler: Improved the detection and correct disassembly of
2972Switch/Case operators. This feature detects sequences of if/elseif/else
2973operators that originated from ASL Switch/Case/Default operators and
2974emits the original operators. David Box.
2975
2976iASL: Improved the IORT ACPI table support in the following areas. Lv
2977Zheng:
2978    Clear MappingOffset if the MappingCount is zero.
2979    Fix the disassembly of the SMMU GSU interrupt offset.
2980    Update the template file for the IORT table.
2981
2982Disassembler: Enhanced the detection and disassembly of resource
2983template/descriptor within a Buffer object. An EndTag descriptor is now
2984required to have a zero second byte, since all known ASL compilers emit
2985this. This helps eliminate incorrect decisions when a buffer is
2986disassembled (false positives on resource templates).
2987
2988----------------------------------------
298919 January 2017. Summary of changes for version 20170119:
2990
2991
29921) General ACPICA software:
2993
2994Entire source code base: Added the 2017 copyright to all source code
2995legal/licensing module headers and utility/tool signons. This includes
2996the standard Linux dual-license header. This affects virtually every file
2997in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2998the ACPICA test suite.
2999
3000
30012) iASL Compiler/Disassembler and Tools:
3002
3003iASL: Removed/fixed an inadvertent remark when a method argument
3004containing a reference is used as a target operand within the method (and
3005never used as a simple argument), as in the example below. Jeffrey Hugo.
3006
3007    dsdt.asl   1507:    Store(0x1, Arg0)
3008    Remark   2146 -                ^ Method Argument is never used (Arg0)
3009
3010All tools: Removed the bit width of the compiler that generated the tool
3011from the common signon for all user space tools. This proved to be
3012confusing and unnecessary. This includes similar removal of HARDWARE_NAME
3013from the generic makefiles (Thomas Petazzoni). Example below.
3014
3015    Old:
3016    ASL+ Optimizing Compiler version 20170119-32
3017    ASL+ Optimizing Compiler version 20170119-64
3018
3019    New:
3020    ASL+ Optimizing Compiler version 20170119
3021
3022----------------------------------------
302322 December 2016. Summary of changes for version 20161222:
3024
3025
30261) ACPICA kernel-resident subsystem:
3027
3028AML Debugger: Implemented a new mechanism to simplify and enhance
3029debugger integration into all environments, including kernel debuggers
3030and user-space utilities, as well as remote debug services. This
3031mechanism essentially consists of new OSL interfaces to support debugger
3032initialization/termination, as well as wait/notify interfaces to perform
3033the debugger handshake with the host. Lv Zheng.
3034
3035    New OSL interfaces:
3036        AcpiOsInitializeDebugger (void)
3037        AcpiOsTerminateDebugger (void)
3038        AcpiOsWaitCommandReady (void)
3039        AcpiOsNotifyCommandComplete (void)
3040
3041    New OS services layer:
3042        osgendbg.c -- Example implementation, and used for AcpiExec
3043
3044Update for Generic Address Space (GAS) support: Although the AccessWidth
3045and/or BitOffset fields of the GAS are not often used, this change now
3046fully supports these fields. This affects the internal support for FADT
3047registers, registers in other ACPI data tables, and the AcpiRead and
3048AcpiWrite public interfaces. Lv Zheng.
3049
3050Sleep support: In order to simplify integration of ACPI sleep for the
3051various host operating systems, a new OSL interface has been introduced.
3052AcpiOsEnterSleep allows the host to perform any required operations
3053before the final write to the sleep control register(s) is performed by
3054ACPICA. Lv Zheng.
3055
3056    New OSL interface:
3057        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
3058
3059    Called from these internal interfaces:
3060        AcpiHwLegacySleep
3061        AcpiHwExtendedSleep
3062
3063EFI support: Added a very small EFI/ACPICA example application. Provides
3064a simple demo for EFI integration, as well as assisting with resolution
3065of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
3066
3067    source/tools/efihello/efihello.c
3068
3069Local C library: Implemented several new functions to enhance ACPICA
3070portability, for environments where these clib functions are not
3071available (such as EFI). Lv Zheng:
3072    putchar
3073    getchar
3074    strpbrk
3075    strtok
3076    memmove
3077
3078Fixed a regression where occasionally a valid resource descriptor was
3079incorrectly detected as invalid at runtime, and a
3080AE_AML_NO_RESOURCE_END_TAG was returned.
3081
3082Fixed a problem with the recently implemented support that enables
3083control method invocations as Target operands to many ASL operators.
3084Warnings of this form: "Needed type [Reference], found [Processor]" were
3085seen at runtime for some method invocations.
3086
3087Example Code and Data Size: These are the sizes for the OS-independent
3088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3089debug version of the code includes the debug output trace mechanism and
3090has a much larger code and data size.
3091
3092  Current Release:
3093    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
3094    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
3095  Previous Release:
3096    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
3097    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
3098
3099
31002) iASL Compiler/Disassembler and Tools:
3101
3102Disassembler: Enhanced output by adding the capability to detect and
3103disassemble ASL Switch/Case statements back to the original ASL source
3104code instead of if/else blocks. David Box.
3105
3106AcpiHelp: Split a large file into separate files based upon
3107functionality/purpose. New files are:
3108    ahaml.c
3109    ahasl.c
3110
3111----------------------------------------
311217 November 2016. Summary of changes for version 20161117:
3113
3114
31151) ACPICA kernel-resident subsystem:
3116
3117Table Manager: Fixed a regression introduced in 20160729, "FADT support
3118cleanup". This was an attempt to remove all references in the source to
3119the FADT version 2, which never was a legal version number. It was
3120skipped because it was an early version of 64-bit support that was
3121eventually abandoned for the current 64-bit support.
3122
3123Interpreter: Fixed a problem where runtime implicit conversion was
3124incorrectly disabled for the ASL operators below. This brings the
3125behavior into compliance with the ACPI specification:
3126    FromBCD
3127    ToBCD
3128    ToDecimalString
3129    ToHexString
3130    ToInteger
3131    ToBuffer
3132
3133Table Manager: Added a new public interface, AcpiPutTable, used to
3134release and free an ACPI table returned by AcpiGetTable and related
3135interfaces. Lv Zheng.
3136
3137Example Code and Data Size: These are the sizes for the OS-independent
3138acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3139debug version of the code includes the debug output trace mechanism and
3140has a much larger code and data size.
3141
3142  Current Release:
3143    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
3144    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
3145  Previous Release:
3146    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
3147    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
3148
3149
31502) iASL Compiler/Disassembler and Tools:
3151
3152Disassembler: Fixed a regression for disassembly of Resource Template.
3153Detection of templates in the AML stream missed some types of templates.
3154
3155iASL: Fixed a problem where an Access Size error was returned for the PCC
3156address space when the AccessSize of the GAS register is greater than a
3157DWORD. Hoan Tran.
3158
3159iASL: Implemented several grammar changes for the operators below. These
3160changes are slated for the next version of the ACPI specification:
3161    RefOf        - Disallow method invocation as an operand
3162    CondRefOf    - Disallow method invocation as an operand
3163    DerefOf      - Disallow operands that use the result from operators
3164that
3165                   do not return a reference (Changed TermArg to
3166SuperName).
3167
3168iASL: Control method invocations are now allowed for Target operands, as
3169per the ACPI specification. Removed error for using a control method
3170invocation as a Target operand.
3171
3172Disassembler: Improved detection of Resource Templates, Unicode, and
3173Strings within Buffer objects. These subtypes do not contain a specific
3174opcode to indicate the originating ASL code, and they must be detected by
3175other means within the disassembler.
3176
3177iASL: Implemented an optimization improvement for 32-bit ACPI tables
3178(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
3179only after 64-bit to 32-bit truncation. A truncation warning message is
3180still emitted, however.
3181
3182AcpiXtract: Implemented handling for both types of line terminators (LF
3183or CR/LF) so that it can accept AcpiDump output files from any system.
3184Peter Wu.
3185
3186AcpiBin: Added two new options for comparing AML files:
3187    -a: compare and display ALL mismatches
3188    -o: start compare at this offset into the second file
3189
3190----------------------------------------
319130 September 2016. Summary of changes for version 20160930:
3192
3193
31941) ACPICA kernel-resident subsystem:
3195
3196Fixed a regression in the internal AcpiTbFindTable function where a non
3197AE_OK exception could inadvertently be returned even if the function did
3198not fail. This problem affects the following operators:
3199    DataTableRegion
3200    LoadTable
3201
3202Fixed a regression in the LoadTable operator where a load to any
3203namespace location other than the root no longer worked properly.
3204
3205Increased the maximum loop count value that will result in the
3206AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
3207prevent infinite loops within the AML interpreter and thus the host OS
3208kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
32091,048,575).
3210
3211Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
3212acpixf.h file. This allows hosts to easily configure the maximum loop
3213count at runtime.
3214
3215Removed an illegal character in the strtoul64.c file. This character
3216caused errors with some C compilers.
3217
3218Example Code and Data Size: These are the sizes for the OS-independent
3219acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3220debug version of the code includes the debug output trace mechanism and
3221has a much larger code and data size.
3222
3223  Current Release:
3224    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
3225    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
3226  Previous Release:
3227    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
3228    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
3229
3230
32312) iASL Compiler/Disassembler and Tools:
3232
3233Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
3234the simpler ASL ElseIf keyword. During the conversion, a trailing If
3235block could be lost and missing from the disassembled output.
3236
3237iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
3238the missing rule caused a parse error when using the Index operator as an
3239operand to ObjectType. This construct now compiles properly. Example:
3240    ObjectType(PKG1[4]).
3241
3242iASL: Correctly handle unresolved symbols in the hardware map file (-lm
3243option). Previously, unresolved symbols could cause a protection fault.
3244Such symbols are now marked as unresolved in the map file.
3245
3246iASL: Implemented support to allow control method invocations as an
3247operand to the ASL DeRefOf operator. Example:
3248    DeRefOf(MTH1(Local0))
3249
3250Disassembler: Improved support for the ToPLD ASL macro. Detection of a
3251possible _PLD buffer now includes examination of both the normal buffer
3252length (16 or 20) as well as the surrounding AML package length.
3253
3254Disassembler: Fixed a problem with the decoding of complex expressions
3255within the Divide operator for ASL+. For the case where both the quotient
3256and remainder targets are specified, the entire statement cannot be
3257disassembled. Previously, the output incorrectly contained a mix of ASL-
3258and ASL+ operators. This mixed statement causes a syntax error when
3259compiled. Example:
3260    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
3261disassembled to:
3262    Divide (INT1 + 6, 128, RSLT, QUOT)
3263
3264iASL/Tools: Added support to process AML and non-AML ACPI tables
3265consistently. For the disassembler and AcpiExec, allow all types of ACPI
3266tables (AML and data tables). For the iASL -e option, allow only AML
3267tables (DSDT/SSDT).
3268
3269----------------------------------------
327031 August 2016. Summary of changes for version 20160831:
3271
3272
32731) ACPICA kernel-resident subsystem:
3274
3275Improve support for the so-called "module-level code", which is defined
3276to be math, logical and control AML opcodes that appear outside of any
3277control method. This change improves the support by adding more opcodes
3278that can be executed in the manner. Some other issues have been solved,
3279and the ASL grammar changes to support such code under all scope
3280operators (Device, etc.) are complete. Lv Zheng.
3281
3282UEFI support: these OSL functions have been implemented. This is an
3283additional step toward supporting the AcpiExec utility natively (with
3284full hardware access) under UEFI. Marcelo Ferreira.
3285    AcpiOsReadPciConfiguration
3286    AcpiOsWritePciConfiguration
3287
3288Fixed a possible mutex error during control method auto-serialization. Lv
3289Zheng.
3290
3291Updated support for the Generic Address Structure by fully implementing
3292all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
3293Zheng.
3294
3295Updated the return value for the internal _OSI method. Instead of
32960xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
3297for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
3298implementations, and will be reflected and clarified in the next version
3299of the ACPI specification.
3300
3301Implemented two new table events that can be passed to an ACPICA table
3302handler. These events are used to indicate a table installation or
3303uninstallation. These events are used in addition to existed table load
3304and unload events. Lv Zheng.
3305
3306Implemented a cleanup for all internal string-to-integer conversions.
3307Consolidate multiple versions of this functionality and limit possible
3308bases to either 10 or 16 to simplify the code. Adds a new file,
3309utstrtoul64.
3310
3311Cleanup the inclusion order of the various compiler-specific headers.
3312This simplifies build configuration management. The compiler-specific
3313headers are now split out from the host-specific headers. Lv Zheng.
3314
3315Example Code and Data Size: These are the sizes for the OS-independent
3316acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3317debug version of the code includes the debug output trace mechanism and
3318has a much larger code and data size.
3319
3320  Current Release:
3321    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
3322    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
3323
3324
33252) iASL Compiler/Disassembler and Tools:
3326
3327iASL/AcpiExec: Added a command line option to display the build date/time
3328of the tool (-vd). This can be useful to verify that the correct version
3329of the tools are being used.
3330
3331AML Debugger: Implemented a new subcommand ("execute predef") to execute
3332all predefined control methods and names within the current namespace.
3333This can be useful for debugging problems with ACPI tables and the ACPI
3334namespace.
3335
3336----------------------------------------
333729 July 2016. Summary of changes for version 20160729:
3338
3339
33401) ACPICA kernel-resident subsystem:
3341
3342Implemented basic UEFI support for the various ACPICA tools. This
3343includes:
33441) An OSL to implement the various AcpiOs* interfaces on UEFI.
33452) Support to obtain the ACPI tables on UEFI.
33463) Local implementation of required C library functions not available on
3347UEFI.
33484) A front-end (main) function for the tools for UEFI-related
3349initialization.
3350
3351The initial deployment of this support is the AcpiDump utility executing
3352as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
3353Current environments supported are Linux/Unix. MSVC generation is not
3354supported at this time. See the generate/efi/README file for build
3355instructions. Lv Zheng.
3356
3357Future plans include porting the AcpiExec utility to execute natively on
3358the platform with I/O and memory access. This will allow viewing/dump of
3359the platform namespace and native execution of ACPI control methods that
3360access the actual hardware. To fully implement this support, the OSL
3361functions below must be implemented with UEFI interfaces. Any community
3362help in the implementation of these functions would be appreciated:
3363    AcpiOsReadPort
3364    AcpiOsWritePort
3365    AcpiOsReadMemory
3366    AcpiOsWriteMemory
3367    AcpiOsReadPciConfiguration
3368    AcpiOsWritePciConfiguration
3369
3370Restructured and standardized the C library configuration for ACPICA,
3371resulting in the various configuration options below. This includes a
3372global restructuring of the compiler-dependent and platform-dependent
3373include files. These changes may affect the existing platform-dependent
3374configuration files on some hosts. Lv Zheng.
3375
3376The current C library configuration options appear below. For any issues,
3377it may be helpful to examine the existing compiler-dependent and
3378platform-dependent files as examples. Lv Zheng.
3379
33801) Linux kernel:
3381    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3382library.
3383    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
33842) Unix/Windows/BSD applications:
3385    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
3386library.
3387    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
33883) UEFI applications:
3389    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3390library.
3391    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
33924) UEFI applications (EDK2/StdLib):
3393    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
3394    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
3395
3396
3397AML interpreter: "module-level code" support. Allows for execution of so-
3398called "executable" AML code (math/logical operations, etc.) outside of
3399control methods not just at the module level (top level) but also within
3400any scope declared outside of a control method - Scope{}, Device{},
3401Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
3402
3403Simplified the configuration of the "maximum AML loops" global option by
3404adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
3405modified at runtime.
3406
3407
3408Example Code and Data Size: These are the sizes for the OS-independent
3409acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3410debug version of the code includes the debug output trace mechanism and
3411has a much larger code and data size.
3412
3413  Current Release:
3414    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
3415    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
3416
3417
34182) iASL Compiler/Disassembler and Tools:
3419
3420iASL: Add full support for the RASF ACPI table (RAS Features Table).
3421Includes disassembler, data table compiler, and header support.
3422
3423iASL Expand "module-level code" support. Allows for
3424compilation/disassembly of so-called "executable" AML code (math/logical
3425operations, etc.) outside of control methods not just at the module level
3426(top level) but also within any scope declared outside of a control
3427method - Scope{}, Device{}, Processor{}, PowerResource{}, and
3428ThermalZone{}.
3429
3430AcpiDump: Added support for dumping all SSDTs on newer versions of
3431Windows. These tables are now easily available -- SSDTs are not available
3432through the registry on older versions.
3433
3434----------------------------------------
343527 May 2016. Summary of changes for version 20160527:
3436
3437
34381) ACPICA kernel-resident subsystem:
3439
3440Temporarily reverted the new arbitrary bit length/alignment support in
3441AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
3442a number of regressions with the new code that need to be fully resolved
3443and tested before this support can be finally integrated into ACPICA.
3444Apologies for any inconveniences these issues may have caused.
3445
3446The ACPI message macros are not configurable (ACPI_MSG_ERROR,
3447ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
3448and ACPI_MSG_BIOS_WARNING). Lv Zheng.
3449
3450Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
3451option. Adds a new return macro, return_STR. Junk-uk Kim.
3452
3453Example Code and Data Size: These are the sizes for the OS-independent
3454acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3455debug version of the code includes the debug output trace mechanism and
3456has a much larger code and data size.
3457
3458  Current Release:
3459    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
3460    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
3461  Previous Release:
3462    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3463    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
3464
3465----------------------------------------
346622 April 2016. Summary of changes for version 20160422:
3467
34681) ACPICA kernel-resident subsystem:
3469
3470Fixed a regression in the GAS (generic address structure) arbitrary bit
3471support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
3472and incorrect return values. Lv Zheng. ACPICA BZ 1270.
3473
3474ACPI 6.0: Added support for new/renamed resource macros. One new argument
3475was added to each of these macros, and the original name has been
3476deprecated. The AML disassembler will always disassemble to the new
3477names. Support for the new macros was added to iASL, disassembler,
3478resource manager, and the acpihelp utility. ACPICA BZ 1274.
3479
3480    I2cSerialBus  -> I2cSerialBusV2
3481    SpiSerialBus  -> SpiSerialBusV2
3482    UartSerialBus -> UartSerialBusV2
3483
3484ACPI 6.0: Added support for a new integer field that was appended to the
3485package object returned by the _BIX method. This adds iASL compile-time
3486and AML runtime error checking. ACPICA BZ 1273.
3487
3488ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
3489Subspace Type2" (Headers, Disassembler, and data table compiler).
3490
3491Example Code and Data Size: These are the sizes for the OS-independent
3492acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3493debug version of the code includes the debug output trace mechanism and
3494has a much larger code and data size.
3495
3496  Current Release:
3497    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3498    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
3499  Previous Release:
3500    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3501    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
3502
3503
35042) iASL Compiler/Disassembler and Tools:
3505
3506iASL: Implemented an ASL grammar extension to allow/enable executable
3507"module-level code" to be created and executed under the various
3508operators that create new scopes. This type of AML code is already
3509supported in all known AML interpreters, and the grammar change will
3510appear in the next version of the ACPI specification. Simplifies the
3511conditional runtime creation of named objects under these object types:
3512
3513    Device
3514    PowerResource
3515    Processor
3516    Scope
3517    ThermalZone
3518
3519iASL: Implemented a new ASL extension, a "For" loop macro to add greater
3520ease-of-use to the ASL language. The syntax is similar to the
3521corresponding C operator, and is implemented with the existing AML While
3522opcode -- thus requiring no changes to existing AML interpreters.
3523
3524    For (Initialize, Predicate, Update) {TermList}
3525
3526Grammar:
3527    ForTerm :=
3528        For (
3529            Initializer    // Nothing | TermArg => ComputationalData
3530            Predicate      // Nothing | TermArg => ComputationalData
3531            Update         // Nothing | TermArg => ComputationalData
3532        ) {TermList}
3533
3534
3535iASL: The _HID/_ADR detection and validation has been enhanced to search
3536under conditionals in order to allow these objects to be conditionally
3537created at runtime.
3538
3539iASL: Fixed several issues with the constant folding feature. The
3540improvement allows better detection and resolution of statements that can
3541be folded at compile time. ACPICA BZ 1266.
3542
3543iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
3544conversion to the ASL ElseIf operator where incorrect ASL code could be
3545generated.
3546
3547iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
3548sometimes an extra (and extraneous) set of parentheses were emitted for
3549some combinations of operators. Although this did not cause any problems
3550with recompilation of the disassembled code, it made the code more
3551difficult to read. David Box. ACPICA BZ 1231.
3552
3553iASL: Changed to ignore the unreferenced detection for predefined names
3554of resource descriptor elements, when the resource descriptor is
3555created/defined within a control method.
3556
3557iASL: Disassembler: Fix a possible fault with externally declared Buffer
3558objects.
3559
3560----------------------------------------
356118 March 2016. Summary of changes for version 20160318:
3562
35631) ACPICA kernel-resident subsystem:
3564
3565Added support for arbitrary bit lengths and bit offsets for registers
3566defined by the Generic Address Structure. Previously, only aligned bit
3567lengths of 8/16/32/64 were supported. This was sufficient for many years,
3568but recently some machines have been seen that require arbitrary bit-
3569level support. ACPICA BZ 1240. Lv Zheng.
3570
3571Fixed an issue where the \_SB._INI method sometimes must be evaluated
3572before any _REG methods are evaluated. Lv Zheng.
3573
3574Implemented several changes related to ACPI table support
3575(Headers/Disassembler/TableCompiler):
3576NFIT: For ACPI 6.1, updated to add some additional new fields and
3577constants.
3578FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
35796).
3580DMAR: Added new constants per the 10/2014 DMAR spec.
3581IORT: Added new subtable per the 10/2015 IORT spec.
3582HEST: For ACPI 6.1, added new constants and new subtable.
3583DBG2: Added new constants per the 12/2015 DBG2 spec.
3584FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
3585ACPICA BZ 1249.
3586ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
3587
3588Updated header support for the DMAR table to match the current version of
3589the related spec.
3590
3591Added extensions to the ASL Concatenate operator to allow any ACPI object
3592to be passed as an operand. Any object other than Integer/String/Buffer
3593simply returns a string containing the object type. This extends the
3594usefulness of the Printf macros. Previously, Concatenate would abort the
3595control method if a non-data object was encountered.
3596
3597ACPICA source code: Deployed the C "const" keyword across the source code
3598where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
3599
3600Example Code and Data Size: These are the sizes for the OS-independent
3601acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3602debug version of the code includes the debug output trace mechanism and
3603has a much larger code and data size.
3604
3605  Current Release:
3606    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3607    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
3608  Previous Release:
3609    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3610    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3611
3612
36132) iASL Compiler/Disassembler and Tools:
3614
3615iASL/Disassembler: Improved the heuristic used to determine the number of
3616arguments for an externally defined control method (a method in another
3617table). Although this is an improvement, there is no deterministic way to
3618"guess" the number of method arguments. Only the ACPI 6.0 External opcode
3619will completely solve this problem as it is deployed (automatically) in
3620newer BIOS code.
3621
3622iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
3623statements that could cause errors when the disassembled file is
3624compiled. ACPICA BZ 1243. David Box.
3625
3626iASL: Fixed a regression caused by the merger of the two versions of the
3627local strtoul64. Because of a dependency on a global variable, strtoul64
3628could return an error for integers greater than a 32-bit value. ACPICA BZ
36291260.
3630
3631iASL: Fixed a regression where a fault could occur for an ASL Return
3632statement if it invokes a control method that is not resolved. ACPICA BZ
36331264.
3634
3635AcpiXtract: Improved input file validation: detection of binary files and
3636non-acpidump text files.
3637
3638----------------------------------------
363912 February 2016. Summary of changes for version 20160212:
3640
36411) ACPICA kernel-resident subsystem:
3642
3643Implemented full support for the ACPI 6.1 specification (released in
3644January). This version of the specification is available at:
3645http://www.uefi.org/specifications
3646
3647Only a relatively small number of changes were required in ACPICA to
3648support ACPI 6.1, in these areas:
3649- New predefined names
3650- New _HID values
3651- A new subtable for HEST
3652- A few other header changes for new values
3653
3654Ensure \_SB_._INI is executed before any _REG methods are executed. There
3655appears to be existing BIOS code that relies on this behavior. Lv Zheng.
3656
3657Reverted a change made in version 20151218 which enabled method
3658invocations to be targets of various ASL operators (SuperName and Target
3659grammar elements). While the new behavior is supported by the ACPI
3660specification, other AML interpreters do not support this behavior and
3661never will. The ACPI specification will be updated for ACPI 6.2 to remove
3662this support. Therefore, the change was reverted to the original ACPICA
3663behavior.
3664
3665ACPICA now supports the GCC 6 compiler.
3666
3667Current Release: (Note: build changes increased sizes)
3668    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3669    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3670Previous Release:
3671    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3672    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
3673
3674
36752) iASL Compiler/Disassembler and Tools:
3676
3677Completed full support for the ACPI 6.0 External() AML opcode. The
3678compiler emits an external AML opcode for each ASL External statement.
3679This opcode is used by the disassembler to assist with the disassembly of
3680external control methods by specifying the required number of arguments
3681for the method. AML interpreters do not use this opcode. To ensure that
3682interpreters do not even see the opcode, a block of one or more external
3683opcodes is surrounded by an "If(0)" construct. As this feature becomes
3684commonly deployed in BIOS code, the ability of disassemblers to correctly
3685disassemble AML code will be greatly improved. David Box.
3686
3687iASL: Implemented support for an optional cross-reference output file.
3688The -lx option will create a the cross-reference file with the suffix
3689"xrf". Three different types of cross-reference are created in this file:
3690- List of object references made from within each control method
3691- Invocation (caller) list for each user-defined control method
3692- List of references to each non-method object in the namespace
3693
3694iASL: Method invocations as ASL Target operands are now disallowed and
3695flagged as errors in preparation for ACPI 6.2 (see the description of the
3696problem above).
3697
3698----------------------------------------
36998 January 2016. Summary of changes for version 20160108:
3700
37011) ACPICA kernel-resident subsystem:
3702
3703Updated all ACPICA copyrights and signons to 2016: Added the 2016
3704copyright to all source code module headers and utility/tool signons.
3705This includes the standard Linux dual-license header. This affects
3706virtually every file in the ACPICA core subsystem, iASL compiler, all
3707ACPICA utilities, and the ACPICA test suite.
3708
3709Fixed a regression introduced in version 20151218 concerning the
3710execution of so-called module-level ASL/AML code. Namespace objects
3711created under a module-level If() construct were not properly/fully
3712entered into the namespace and could cause an interpreter fault when
3713accessed.
3714
3715Example Code and Data Size: These are the sizes for the OS-independent
3716acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3717debug version of the code includes the debug output trace mechanism and
3718has a much larger code and data size.
3719
3720Current Release:
3721    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3722    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
3723  Previous Release:
3724    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3725    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3726
3727
37282) iASL Compiler/Disassembler and Tools:
3729
3730Fixed a problem with the compilation of the GpioIo and GpioInt resource
3731descriptors. The _PIN field name was incorrectly defined to be an array
3732of 32-bit values, but the _PIN values are in fact 16 bits each. This
3733would cause incorrect bit width warnings when using Word (16-bit) fields
3734to access the descriptors.
3735
3736
3737----------------------------------------
373818 December 2015. Summary of changes for version 20151218:
3739
37401) ACPICA kernel-resident subsystem:
3741
3742Implemented per-AML-table execution of "module-level code" as individual
3743ACPI tables are loaded into the namespace during ACPICA initialization.
3744In other words, any module-level code within an AML table is executed
3745immediately after the table is loaded, instead of batched and executed
3746after all of the tables have been loaded. This provides compatibility
3747with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
3748David Box.
3749
3750To fully support the feature above, the default operation region handlers
3751for the SystemMemory, SystemIO, and PCI_Config address spaces are now
3752installed before any ACPI tables are loaded. This enables module-level
3753code to access these address spaces during the table load and module-
3754level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
3755Box.
3756
3757Implemented several changes to the internal _REG support in conjunction
3758with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
3759utilities for the changes above. Although these tools were changed, host
3760operating systems that simply use the default handlers for SystemMemory,
3761SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
3762
3763For example, in the code below, DEV1 is conditionally added to the
3764namespace by the DSDT via module-level code that accesses an operation
3765region. The SSDT references DEV1 via the Scope operator. DEV1 must be
3766created immediately after the DSDT is loaded in order for the SSDT to
3767successfully reference DEV1. Previously, this code would cause an
3768AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
3769fully supported by ACPICA.
3770
3771    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
3772    {
3773        OperationRegion (OPR1, SystemMemory, 0x400, 32)
3774        Field (OPR1, AnyAcc, NoLock, Preserve)
3775        {
3776            FLD1, 1
3777        }
3778        If (FLD1)
3779        {
3780            Device (\DEV1)
3781            {
3782            }
3783        }
3784    }
3785    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
3786    {
3787        External (\DEV1, DeviceObj)
3788        Scope (\DEV1)
3789        {
3790        }
3791    }
3792
3793Fixed an AML interpreter problem where control method invocations were
3794not handled correctly when the invocation was itself a SuperName argument
3795to another ASL operator. In these cases, the method was not invoked.
3796ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3797argument:
3798    Store
3799    Acquire, Wait
3800    CondRefOf, RefOf
3801    Decrement, Increment
3802    Load, Unload
3803    Notify
3804    Signal, Release, Reset
3805    SizeOf
3806
3807Implemented automatic String-to-ObjectReference conversion support for
3808packages returned by predefined names (such as _DEP). A common BIOS error
3809is to add double quotes around an ObjectReference namepath, which turns
3810the reference into an unexpected string object. This support detects the
3811problem and corrects it before the package is returned to the caller that
3812invoked the method. Lv Zheng.
3813
3814Implemented extensions to the Concatenate operator. Concatenate now
3815accepts any type of object, it is not restricted to simply
3816Integer/String/Buffer. For objects other than these 3 basic data types,
3817the argument is treated as a string containing the name of the object
3818type. This expands the utility of Concatenate and the Printf/Fprintf
3819macros. ACPICA BZ 1222.
3820
3821Cleaned up the output of the ASL Debug object. The timer() value is now
3822optional and no longer emitted by default. Also, the basic data types of
3823Integer/String/Buffer are simply emitted as their values, without a data
3824type string -- since the data type is obvious from the output. ACPICA BZ
38251221.
3826
3827Example Code and Data Size: These are the sizes for the OS-independent
3828acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3829debug version of the code includes the debug output trace mechanism and
3830has a much larger code and data size.
3831
3832  Current Release:
3833    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3834    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3835  Previous Release:
3836    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3837    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3838
3839
38402) iASL Compiler/Disassembler and Tools:
3841
3842iASL: Fixed some issues with the ASL Include() operator. This operator
3843was incorrectly defined in the iASL parser rules, causing a new scope to
3844be opened for the code within the include file. This could lead to
3845several issues, including allowing ASL code that is technically illegal
3846and not supported by AML interpreters. Note, this does not affect the
3847related #include preprocessor operator. ACPICA BZ 1212.
3848
3849iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3850operator is essentially an ASL macro since there is no AML opcode
3851associated with it. The code emitted by the iASL compiler for ElseIf is
3852an Else opcode followed immediately by an If opcode. The disassembler
3853will now emit an ElseIf if it finds an Else immediately followed by an
3854If. This simplifies the decoded ASL, especially for deeply nested
3855If..Else and large Switch constructs. Thus, the disassembled code more
3856closely follows the original source ASL. ACPICA BZ 1211. Example:
3857
3858    Old disassembly:
3859        Else
3860        {
3861            If (Arg0 == 0x02)
3862            {
3863                Local0 = 0x05
3864            }
3865        }
3866
3867    New disassembly:
3868        ElseIf (Arg0 == 0x02)
3869        {
3870            Local0 = 0x05
3871        }
3872
3873AcpiExec: Added support for the new module level code behavior and the
3874early region installation. This required a small change to the
3875initialization, since AcpiExec must install its own operation region
3876handlers.
3877
3878AcpiExec: Added support to make the debug object timer optional. Default
3879is timer disabled. This cleans up the debug object output -- the timer
3880data is rarely used.
3881
3882AcpiExec: Multiple ACPI tables are now loaded in the order that they
3883appear on the command line. This can be important when there are
3884interdependencies/references between the tables.
3885
3886iASL/Templates. Add support to generate template files with multiple
3887SSDTs within a single output file. Also added ommand line support to
3888specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
38891223, 1225.
3890
3891
3892----------------------------------------
389324 November 2015. Summary of changes for version 20151124:
3894
38951) ACPICA kernel-resident subsystem:
3896
3897Fixed a possible regression for a previous update to FADT handling. The
3898FADT no longer has a fixed table ID, causing some issues with code that
3899was hardwired to a specific ID. Lv Zheng.
3900
3901Fixed a problem where the method auto-serialization could interfere with
3902the current SyncLevel. This change makes the auto-serialization support
3903transparent to the SyncLevel support and management.
3904
3905Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3906interface is intended for early access to the namespace during the
3907initial namespace device discovery walk. The _SUB method has been seen to
3908access operation regions in some cases, causing errors because the
3909operation regions are not fully initialized.
3910
3911AML Debugger: Fixed some issues with the terminate/quit/exit commands
3912that can cause faults. Lv Zheng.
3913
3914AML Debugger: Add thread ID support so that single-step mode only applies
3915to the AML Debugger thread. This prevents runtime errors within some
3916kernels. Lv Zheng.
3917
3918Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3919methods that are invoked by this interface are optional, removed warnings
3920emitted for the case where one or more of these methods do not exist.
3921ACPICA BZ 1208, original change by Prarit Bhargava.
3922
3923Made a major pass through the entire ACPICA source code base to
3924standardize formatting that has diverged a bit over time. There are no
3925functional changes, but this will of course cause quite a few code
3926differences from the previous ACPICA release.
3927
3928Example Code and Data Size: These are the sizes for the OS-independent
3929acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3930debug version of the code includes the debug output trace mechanism and
3931has a much larger code and data size.
3932
3933  Current Release:
3934    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3935    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3936  Previous Release:
3937    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3938    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3939
3940
39412) iASL Compiler/Disassembler and Tools:
3942
3943iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3944definition blocks within a single ASL file and the resulting AML file.
3945Support for this type of file was also added to the various tools that
3946use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3947example code below shows two definition blocks within the same file:
3948
3949    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
39500x12345678)
3951    {
3952    }
3953    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3954    {
3955    }
3956
3957iASL: Enhanced typechecking for the Name() operator. All expressions for
3958the value of the named object must be reduced/folded to a single constant
3959at compile time, as per the ACPI specification (the AML definition of
3960Name()).
3961
3962iASL: Fixed some code indentation issues for the -ic and -ia options (C
3963and assembly headers). Now all emitted code correctly begins in column 1.
3964
3965iASL: Added an error message for an attempt to open a Scope() on an
3966object defined in an SSDT. The DSDT is always loaded into the namespace
3967first, so any attempt to open a Scope on an SSDT object will fail at
3968runtime.
3969
3970
3971----------------------------------------
397230 September 2015. Summary of changes for version 20150930:
3973
39741) ACPICA kernel-resident subsystem:
3975
3976Debugger: Implemented several changes and bug fixes to assist support for
3977the in-kernel version of the AML debugger. Lv Zheng.
3978- Fix the "predefined" command for in-kernel debugger.
3979- Do not enter debug command loop for the help and version commands.
3980- Disallow "execute" command during execution/single-step of a method.
3981
3982Interpreter: Updated runtime typechecking for all operators that have
3983target operands. The operand is resolved and validated that it is legal.
3984For example, the target cannot be a non-data object such as a Device,
3985Mutex, ThermalZone, etc., as per the ACPI specification.
3986
3987Debugger: Fixed the double-mutex user I/O handshake to work when local
3988deadlock detection is enabled.
3989
3990Debugger: limited display of method locals and arguments (LocalX and
3991ArgX) to only those that have actually been initialized. This prevents
3992lines of extraneous output.
3993
3994Updated the definition of the NFIT table to correct the bit polarity of
3995one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3996
3997Example Code and Data Size: These are the sizes for the OS-independent
3998acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3999debug version of the code includes the debug output trace mechanism and
4000has a much larger code and data size.
4001
4002  Current Release:
4003    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
4004    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
4005  Previous Release:
4006    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
4007    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
4008
4009
40102) iASL Compiler/Disassembler and Tools:
4011
4012iASL: Improved the compile-time typechecking for operands of many of the
4013ASL operators:
4014
4015-- Added an option to disable compiler operand/operator typechecking (-
4016ot).
4017
4018-- For the following operators, the TermArg operands are now validated
4019when possible to be Integer data objects: BankField, OperationRegion,
4020DataTableRegion, Buffer, and Package.
4021
4022-- Store (Source, Target): Both the source and target operands are
4023resolved and checked that the operands are both legal. For example,
4024neither operand can be a non-data object such as a Device, Mutex,
4025ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
4026operator can be used to store an object to any type of target object.
4027
4028-- Store (Source, Target): If the source is a Package object, the target
4029must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
4030is a Package, the source must also be a Package.
4031
4032-- Store (Source, Target): A warning is issued if the source and target
4033resolve to the identical named object.
4034
4035-- Store (Source, <method invocation>): An error is generated for the
4036target method invocation, as this construct is not supported by the AML
4037interpreter.
4038
4039-- For all ASL math and logic operators, the target operand must be a
4040data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
4041includes the function return value also.
4042
4043-- External declarations are also included in the typechecking where
4044possible. External objects defined using the UnknownObj keyword cannot be
4045typechecked, however.
4046
4047iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
4048operator:
4049- Legacy code: Index(PKG1, 3)
4050- New ASL+ code: PKG1[3]
4051This completes the ACPI 6.0 ASL+ support as it was the only operator not
4052supported.
4053
4054iASL: Fixed the file suffix for the preprocessor output file (.i). Two
4055spaces were inadvertently appended to the filename, causing file access
4056and deletion problems on some systems.
4057
4058ASL Test Suite (ASLTS): Updated the master makefile to generate all
4059possible compiler output files when building the test suite -- thus
4060exercising these features of the compiler. These files are automatically
4061deleted when the test suite exits.
4062
4063
4064----------------------------------------
406518 August 2015. Summary of changes for version 20150818:
4066
40671) ACPICA kernel-resident subsystem:
4068
4069Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
4070Zheng. ACPICA BZ 1186.
4071
4072Completed development to ensure that the ACPICA Disassembler and Debugger
4073are fully standalone components of ACPICA. Removed cross-component
4074dependences. Lv Zheng.
4075
4076The max-number-of-AML-loops is now runtime configurable (previously was
4077compile-time only). This is essentially a loop timeout to force-abort
4078infinite AML loops. ACPCIA BZ 1192.
4079
4080Debugger: Cleanup output to dump ACPI names and namepaths without any
4081trailing underscores. Lv Zheng. ACPICA BZ 1135.
4082
4083Removed unnecessary conditional compilations across the Debugger and
4084Disassembler components where entire modules could be left uncompiled.
4085
4086The aapits test is deprecated and has been removed from the ACPICA git
4087tree. The test has never been completed and has not been maintained, thus
4088becoming rather useless. ACPICA BZ 1015, 794.
4089
4090A batch of small changes to close bugzilla and other reports:
4091- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
4092- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
4093- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
4094- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
4095Moore.
4096- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
4097ACPICA BZ 1184.
4098- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
4099operators.
4100- Debugger: Split debugger initialization/termination interfaces. Lv
4101Zheng.
4102- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
4103identification.
4104- AcpiExec: Add debug message during _REG method phase during table
4105load/init.
4106- AcpiNames: Fix a regression where some output was missing and no longer
4107emitted.
4108- Debugger: General cleanup and simplification. Lv Zheng.
4109- Disassembler: Cleanup use of several global option variables. Lv Zheng.
4110
4111Example Code and Data Size: These are the sizes for the OS-independent
4112acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4113debug version of the code includes the debug output trace mechanism and
4114has a much larger code and data size.
4115
4116  Current Release:
4117    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
4118    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
4119  Previous Release:
4120    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
4121    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
4122
4123
41242) iASL Compiler/Disassembler and Tools:
4125
4126AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
4127were not handled properly and caused load errors. Now, properly invoke
4128and use the ACPICA auto-reallocate mechanism for ACPI table data
4129structures. ACPICA BZ 1188
4130
4131AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
4132BZ 1190.
4133
4134AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
4135AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
4136executed during initialization. ACPICA BZ 1187, 1189.
4137
4138iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
4139that corresponds to each disassembled ASL statement, to simplify
4140debugging. ACPICA BZ 1191.
4141
4142Debugger: Add option to the "objects" command to display a summary of the
4143current namespace objects (Object type and count). This is displayed if
4144the command is entered with no arguments.
4145
4146AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
4147
4148
4149----------------------------------------
415017 July 2015. Summary of changes for version 20150717:
4151
41521) ACPICA kernel-resident subsystem:
4153
4154Improved the partitioning between the Debugger and Disassembler
4155components. This allows the Debugger to be used standalone within kernel
4156code without the Disassembler (which is used for single stepping also).
4157This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
4158
4159Debugger: Implemented a new command to trace the execution of control
4160methods (Trace). This is especially useful for the in-kernel version of
4161the debugger when file I/O may not be available for method trace output.
4162See the ACPICA reference for more information. Lv Zheng.
4163
4164Moved all C library prototypes (used for the local versions of these
4165functions when requested) to a new header, acclib.h
4166Cleaned up the use of non-ANSI C library functions. These functions are
4167implemented locally in ACPICA. Moved all such functions to a common
4168source file, utnonansi.c
4169
4170Debugger: Fixed a problem with the "!!" command (get last command
4171executed) where the debugger could enter an infinite loop and eventually
4172crash.
4173
4174Removed the use of local macros that were used for some of the standard C
4175library functions to automatically cast input parameters. This mostly
4176affected the is* functions where the input parameter is defined to be an
4177int. This required a few modifications to the main ACPICA source code to
4178provide casting for these functions and eliminate possible compiler
4179warnings for these parameters.
4180
4181Across the source code, added additional status/error checking to resolve
4182issues discovered by static source code analysis tools such as Coverity.
4183
4184Example Code and Data Size: These are the sizes for the OS-independent
4185acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4186debug version of the code includes the debug output trace mechanism and
4187has a much larger code and data size.
4188
4189  Current Release:
4190    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
4191    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
4192  Previous Release:
4193    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
4194    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
4195
4196
41972) iASL Compiler/Disassembler and Tools:
4198
4199iASL: Fixed a regression where the device map file feature no longer
4200worked properly when used in conjunction with the disassembler. It only
4201worked properly with the compiler itself.
4202
4203iASL: Implemented a new warning for method LocalX variables that are set
4204but never used (similar to a C compiler such as gcc). This also applies
4205to ArgX variables that are not defined by the parent method, and are
4206instead (legally) used as local variables.
4207
4208iASL/Preprocessor: Finished the pass-through of line numbers from the
4209preprocessor to the compiler. This ensures that compiler errors/warnings
4210have the correct original line numbers and filenames, regardless of any
4211#include files.
4212
4213iASL/Preprocessor: Fixed a couple of issues with comment handling and the
4214pass-through of comments to the preprocessor output file (which becomes
4215the compiler input file). Also fixed a problem with // comments that
4216appear after a math expression.
4217
4218iASL: Added support for the TCPA server table to the table compiler and
4219template generator. (The client table was already previously supported)
4220
4221iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
4222identify the iASL compiler.
4223
4224Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
4225multiple times. The new names are ACPI_SIGN_NEGATIVE and
4226ACPI_SIGN_POSITIVE.
4227
4228AcpiHelp: Update to expand help messages for the iASL preprocessor
4229directives.
4230
4231
4232----------------------------------------
423319 June 2015. Summary of changes for version 20150619:
4234
4235Two regressions in version 20150616 have been addressed:
4236
4237Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
4238etc.) This update changes ACPICA to only use the standard headers for
4239functions, or the prototypes for the local versions of the C library
4240functions. Across the source code, this required some additional casts
4241for some Clib invocations for portability. Moved all local prototypes to
4242a new file, acclib.h
4243
4244Fixes several problems with recent changes to the handling of the FACS
4245table that could cause some systems not to boot.
4246
4247
4248----------------------------------------
424916 June 2015. Summary of changes for version 20150616:
4250
4251
42521) ACPICA kernel-resident subsystem:
4253
4254Across the entire ACPICA source code base, the various macros for the C
4255library functions (such as ACPI_STRLEN, etc.) have been removed and
4256replaced by the standard C library names (strlen, etc.) The original
4257purpose for these macros is no longer applicable. This simplification
4258reduces the number of macros used in the ACPICA source code
4259significantly, improving readability and maintainability.
4260
4261Implemented support for a new ACPI table, the OSDT. This table, the
4262"override" SDT, can be loaded directly by the host OS at boot time. It
4263enables the replacement of existing namespace objects that were installed
4264via the DSDT and/or SSDTs. The primary purpose for this is to replace
4265buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
4266for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
4267Moore.
4268
4269Added support for systems with (improperly) two FACS tables -- a "32-bit"
4270table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
4271X field). This change will support both automatically. There continues to
4272be systems found with this issue. This support requires a change to the
4273AcpiSetFirmwareWakingVector interface. Also, a public global variable has
4274been added to allow the host to select which FACS is desired
4275(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
4276details Lv Zheng.
4277
4278Added a new feature to allow for systems that do not contain an FACS.
4279Although this is already supported on hardware-reduced platforms, the
4280feature has been extended for all platforms. The reasoning is that we do
4281not want to abort the entire ACPICA initialization just because the
4282system is seriously buggy and has no FACS.
4283
4284Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
4285not correctly transcribed from the ACPI specification in ACPICA version
428620150515.
4287
4288Implemented support for the _CLS object in the AcpiGetObjectInfo external
4289interface.
4290
4291Updated the definitions of the TCPA and TPM2 ACPI tables to the more
4292recent TCG ACPI Specification, December 14, 2014. Table disassembler and
4293compiler also updated. Note: The TCPA "server" table is not supported by
4294the disassembler/table-compiler at this time.
4295
4296ACPI 6.0: Added definitions for the new GIC version field in the MADT.
4297
4298Example Code and Data Size: These are the sizes for the OS-independent
4299acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4300debug version of the code includes the debug output trace mechanism and
4301has a much larger code and data size.
4302
4303  Current Release:
4304    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
4305    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
4306  Previous Release:
4307    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
4308    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
4309
4310
43112) iASL Compiler/Disassembler and Tools:
4312
4313Disassembler: Fixed a problem with the new symbolic operator disassembler
4314where incorrect ASL code could be emitted in some cases for the "non-
4315commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
4316ShiftRight. The actual problem cases seem to be rather unusual in common
4317ASL code, however. David Box.
4318
4319Modified the linux version of acpidump to obtain ACPI tables from not
4320just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
4321Zheng.
4322
4323iASL: Fixed a problem where the user preprocessor output file (.i)
4324contained extra data that was not expected. The compiler was using this
4325file as a temporary file and passed through #line directives in order to
4326keep compiler error messages in sync with the input file and line number
4327across multiple include files. The (.i) is no longer a temporary file as
4328the compiler uses a new, different file for the original purpose.
4329
4330iASL: Fixed a problem where comments within the original ASL source code
4331file were not passed through to the preprocessor output file, nor any
4332listing files.
4333
4334iASL: Fixed some issues for the handling of the "#include" preprocessor
4335directive and the similar (but not the same) "Include" ASL operator.
4336
4337iASL: Add support for the new OSDT in both the disassembler and compiler.
4338
4339iASL: Fixed a problem with the constant folding support where a Buffer
4340object could be incorrectly generated (incorrectly formed) during a
4341conversion to a Store() operator.
4342
4343AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
4344description text for the _REV predefined name. _REV now permanently
4345returns 2, as per the ACPI 6.0 specification.
4346
4347Debugger: Enhanced the output of the Debug ASL object for references
4348produced by the Index operator. For Buffers and strings, only output the
4349actual byte pointed to by the index. For packages, only print the single
4350package element decoded by the index. Previously, the entire
4351buffer/string/package was emitted.
4352
4353iASL/Table-compiler: Fixed a regression where the "generic" data types
4354were no longer recognized, causing errors.
4355
4356
4357----------------------------------------
435815 May 2015. Summary of changes for version 20150515:
4359
4360This release implements most of ACPI 6.0 as described below.
4361
43621) ACPICA kernel-resident subsystem:
4363
4364Implemented runtime argument checking and return value checking for all
4365new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
4366_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
4367
4368Example Code and Data Size: These are the sizes for the OS-independent
4369acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4370debug version of the code includes the debug output trace mechanism and
4371has a much larger code and data size.
4372
4373  Current Release:
4374    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
4375    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
4376  Previous Release:
4377    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4378    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4379
4380
43812) iASL Compiler/Disassembler and Tools:
4382
4383iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
4384names (argument count validation and return value typechecking.)
4385
4386iASL disassembler and table compiler: implemented support for all new
4387ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
4388
4389iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
4390tables: FADT, MADT.
4391
4392iASL preprocessor: Added a new directive to enable inclusion of binary
4393blobs into ASL code. The new directive is #includebuffer. It takes a
4394binary file as input and emits a named ascii buffer object into the ASL
4395code.
4396
4397AcpiHelp: Added support for all new ACPI 6.0 predefined names.
4398
4399AcpiHelp: Added a new option, -d, to display all iASL preprocessor
4400directives.
4401
4402AcpiHelp: Added a new option, -t, to display all known/supported ACPI
4403tables.
4404
4405
4406----------------------------------------
440710 April 2015. Summary of changes for version 20150410:
4408
4409Reverted a change introduced in version 20150408 that caused
4410a regression in the disassembler where incorrect operator
4411symbols could be emitted.
4412
4413
4414----------------------------------------
441508 April 2015. Summary of changes for version 20150408:
4416
4417
44181) ACPICA kernel-resident subsystem:
4419
4420Permanently set the return value for the _REV predefined name. It now
4421returns 2 (was 5). This matches other ACPI implementations. _REV will be
4422deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
4423for ACPI 2.0 and later. It should never be used to differentiate or
4424identify operating systems.
4425
4426Added the "Windows 2015" string to the _OSI support. ACPICA will now
4427return TRUE to a query with this string.
4428
4429Fixed several issues with the local version of the printf function.
4430
4431Added the C99 compiler option (-std=c99) to the Unix makefiles.
4432
4433  Current Release:
4434    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
4435    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
4436  Previous Release:
4437    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4438    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4439
4440
44412) iASL Compiler/Disassembler and Tools:
4442
4443iASL: Implemented an enhancement to the constant folding feature to
4444transform the parse tree to a simple Store operation whenever possible:
4445    Add (2, 3, X) ==> is converted to: Store (5, X)
4446    X = 2 + 3     ==> is converted to: Store (5, X)
4447
4448Updated support for the SLIC table (Software Licensing Description Table)
4449in both the Data Table compiler and the disassembler. The SLIC table
4450support now conforms to "Microsoft Software Licensing Tables (SLIC and
4451MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
4452following the ACPI header is now defined to be "Proprietary Data", and as
4453such, can only be entered or displayed as a hex data block.
4454
4455Implemented full support for the MSDM table as described in the document
4456above. Note: The format of MSDM is similar to SLIC. Any MSDM data
4457following the ACPI header is defined to be "Proprietary Data", and can
4458only be entered or displayed as a hex data block.
4459
4460Implemented the -Pn option for the iASL Table Compiler (was only
4461implemented for the ASL compiler). This option disables the iASL
4462preprocessor.
4463
4464Disassembler: For disassembly of Data Tables, added a comment field
4465around the Ascii equivalent data that is emitted as part of the "Raw
4466Table Data" block. This prevents the iASL Preprocessor from possible
4467confusion if/when the table is compiled.
4468
4469Disassembler: Added an option (-df) to force the disassembler to assume
4470that the table being disassembled contains valid AML. This feature is
4471useful for disassembling AML files that contain ACPI signatures other
4472than DSDT or SSDT (such as OEMx or other signatures).
4473
4474Changes for the EFI version of the tools:
44751) Fixed a build error/issue
44762) Fixed a cast warning
4477
4478iASL: Fixed a path issue with the __FILE__ operator by making the
4479directory prefix optional within the internal SplitInputFilename
4480function.
4481
4482Debugger: Removed some unused global variables.
4483
4484Tests: Updated the makefile for proper generation of the AAPITS suite.
4485
4486
4487----------------------------------------
448804 February 2015. Summary of changes for version 20150204:
4489
4490ACPICA kernel-resident subsystem:
4491
4492Updated all ACPICA copyrights and signons to 2014. Added the 2014
4493copyright to all module headers and signons, including the standard Linux
4494header. This affects virtually every file in the ACPICA core subsystem,
4495iASL compiler, all ACPICA utilities, and the test suites.
4496
4497Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
4498A raw gpe handling mechanism was created to allow better handling of GPE
4499storms that aren't easily managed by the normal handler. The raw handler
4500allows disabling/renabling of the GPE so that interrupt storms can be
4501avoided in cases where events cannot be timely serviced. In this
4502scenario, handlers should use the AcpiSetGpe() API to disable/enable the
4503GPE. This API will leave the reference counts undisturbed, thereby
4504preventing unintentional clearing of the GPE when the intent in only to
4505temporarily disable it. Raw handlers allow enabling and disabling of a
4506GPE by removing GPE register locking. As such, raw handlers much provide
4507their own locks while using GPE API's to protect access to GPE data
4508structures.
4509Lv Zheng
4510
4511Events: Always modify GPE registers under the GPE lock.
4512Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
4513values. Reported as bug by joe.liu@apple.com.
4514
4515Unix makefiles: Separate option to disable optimizations and
4516_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
4517NOOPT disable option and creates a separate flag (NOFORTIFY) for this
4518purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
4519errors when building ACPICA. This allows disabling the option without
4520also having to disable optimazations.
4521David Box
4522
4523  Current Release:
4524    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
4525    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
4526
4527--
4528--------------------------------------
452907 November 2014. Summary of changes for version 20141107:
4530
4531This release is available at https://acpica.org/downloads
4532
4533This release introduces and implements language extensions to ASL that
4534provide support for symbolic ("C-style") operators and expressions. These
4535language extensions are known collectively as ASL+.
4536
4537
45381) iASL Compiler/Disassembler and Tools:
4539
4540Disassembler: Fixed a problem with disassembly of the UartSerialBus
4541macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
4542Box.
4543
4544Disassembler: Fixed the Unicode macro support to add escape sequences.
4545All non-printable ASCII values are emitted as escape sequences, as well
4546as the standard escapes for quote and backslash. Ensures that the
4547disassembled macro can be correctly recompiled.
4548
4549iASL: Added Printf/Fprintf macros for formatted output. These macros are
4550translated to existing AML Concatenate and Store operations. Printf
4551writes to the ASL Debug object. Fprintf allows the specification of an
4552ASL name as the target. Only a single format specifier is required, %o,
4553since the AML interpreter dynamically converts objects to the required
4554type. David E. Box.
4555
4556    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4557                 (Concatenate (Concatenate (Concatenate ("", Arg0),
4558                 ": Unexpected value for "), Arg1), ", "), Arg2),
4559                 " at line "), Arg3), Debug)
4560
4561    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
4562                 Arg0, Arg1, Arg2, Arg3)
4563
4564    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4565                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
4566
4567    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
4568
4569iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
4570ASL parse tree before the AML code is generated. This allows blocks of
4571ASL code to be removed in order to help locate and identify problem
4572devices and/or code. David E. Box.
4573
4574AcpiExec: Added support (-fi) for an optional namespace object
4575initialization file. This file specifies initial values for namespace
4576objects as necessary for debugging and testing different ASL code paths
4577that may be taken as a result of BIOS options.
4578
4579
45802) Overview of symbolic operator support for ASL (ASL+)
4581-------------------------------------------------------
4582
4583As an extension to the ASL language, iASL implements support for symbolic
4584(C-style) operators for math and logical expressions. This can greatly
4585simplify ASL code as well as improve both readability and
4586maintainability. These language extensions can exist concurrently with
4587all legacy ASL code and expressions.
4588
4589The symbolic extensions are 100% compatible with existing AML
4590interpreters, since no new AML opcodes are created. To implement the
4591extensions, the iASL compiler transforms the symbolic expressions into
4592the legacy ASL/AML equivalents at compile time.
4593
4594Full symbolic expressions are supported, along with the standard C
4595precedence and associativity rules.
4596
4597Full disassembler support for the symbolic expressions is provided, and
4598creates an automatic migration path for existing ASL code to ASL+ code
4599via the disassembly process. By default, the disassembler now emits ASL+
4600code with symbolic expressions. An option (-dl) is provided to force the
4601disassembler to emit legacy ASL code if desired.
4602
4603Below is the complete list of the currently supported symbolic operators
4604with examples. See the iASL User Guide for additional information.
4605
4606
4607ASL+ Syntax      Legacy ASL Equivalent
4608-----------      ---------------------
4609
4610    // Math operators
4611
4612Z = X + Y        Add (X, Y, Z)
4613Z = X - Y        Subtract (X, Y, Z)
4614Z = X * Y        Multiply (X, Y, Z)
4615Z = X / Y        Divide (X, Y, , Z)
4616Z = X % Y        Mod (X, Y, Z)
4617Z = X << Y       ShiftLeft (X, Y, Z)
4618Z = X >> Y       ShiftRight (X, Y, Z)
4619Z = X & Y        And (X, Y, Z)
4620Z = X | Y        Or (X, Y, Z)
4621Z = X ^ Y        Xor (X, Y, Z)
4622Z = ~X           Not (X, Z)
4623X++              Increment (X)
4624X--              Decrement (X)
4625
4626    // Logical operators
4627
4628(X == Y)         LEqual (X, Y)
4629(X != Y)         LNotEqual (X, Y)
4630(X < Y)          LLess (X, Y)
4631(X > Y)          LGreater (X, Y)
4632(X <= Y)         LLessEqual (X, Y)
4633(X >= Y)         LGreaterEqual (X, Y)
4634(X && Y)         LAnd (X, Y)
4635(X || Y)         LOr (X, Y)
4636(!X)             LNot (X)
4637
4638    // Assignment and compound assignment operations
4639
4640X = Y           Store (Y, X)
4641X += Y          Add (X, Y, X)
4642X -= Y          Subtract (X, Y, X)
4643X *= Y          Multiply (X, Y, X)
4644X /= Y          Divide (X, Y, , X)
4645X %= Y          Mod (X, Y, X)
4646X <<= Y         ShiftLeft (X, Y, X)
4647X >>= Y         ShiftRight (X, Y, X)
4648X &= Y          And (X, Y, X)
4649X |= Y          Or (X, Y, X)
4650X ^= Y          Xor (X, Y, X)
4651
4652
46533) ASL+ Examples:
4654-----------------
4655
4656Legacy ASL:
4657        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
4658            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
46590x03FB),
4660            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
4661        {
4662            And (MEMB, 0xFFFFFFF0, SRMB)
4663            Store (MEMB, Local2)
4664            Store (PDBM, Local1)
4665            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
4666            Store (SRMB, MEMB)
4667            Or (PDBM, 0x02, PDBM)
4668        }
4669
4670ASL+ version:
4671        If (((R510 & 0x03FB) == 0x02E0) ||
4672            ((R520 & 0x03FB) == 0x02E0) ||
4673            ((R530 & 0x03FB) == 0x02E0) ||
4674            ((R540 & 0x03FB) == 0x02E0))
4675        {
4676            SRMB = (MEMB & 0xFFFFFFF0)
4677            Local2 = MEMB
4678            Local1 = PDBM
4679            PDBM &= 0xFFFFFFFFFFFFFFF9
4680            MEMB = SRMB
4681            PDBM |= 0x02
4682        }
4683
4684Legacy ASL:
4685        Store (0x1234, Local1)
4686        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
4687        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
4688        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
4689        Store (Index (PKG1, 0x03), Local6)
4690        Store (Add (Local3, Local2), Debug)
4691        Add (Local1, 0x0F, Local2)
4692        Add (Local1, Multiply (Local2, Local3), Local2)
4693        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
4694
4695ASL+ version:
4696        Local1 = 0x1234
4697        Local3 = (((Local1 + TEST) + 0x20) * Local2)
4698        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
4699        Local3 = (Local1 + (TEST + (0x20 * Local2)))
4700        Local6 = Index (PKG1, 0x03)
4701        Debug = (Local3 + Local2)
4702        Local2 = (Local1 + 0x0F)
4703        Local2 = (Local1 + (Local2 * Local3))
4704        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
4705
4706
4707----------------------------------------
470826 September 2014. Summary of changes for version 20140926:
4709
47101) ACPICA kernel-resident subsystem:
4711
4712Updated the GPIO operation region handler interface (GeneralPurposeIo).
4713In order to support GPIO Connection objects with multiple pins, along
4714with the related Field objects, the following changes to the interface
4715have been made: The Address is now defined to be the offset in bits of
4716the field unit from the previous invocation of a Connection. It can be
4717viewed as a "Pin Number Index" into the connection resource descriptor.
4718The BitWidth is the exact bit width of the field. It is usually one bit,
4719but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
4720additional information and examples.
4721
4722GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
4723corresponding _Lxx/_Exx methods are disabled (they may have been enabled
4724by the firmware), so that they cannot fire until they are enabled via
4725AcpiUpdateAllGpes. Rafael J. Wysocki.
4726
4727Added a new return flag for the Event/GPE status interfaces --
4728AcpiGetEventStatus and AcpiGetGpeStatus. The new
4729ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
4730GPE currently has a handler associated with it, and can thus actually
4731affect the system. Lv Zheng.
4732
4733Example Code and Data Size: These are the sizes for the OS-independent
4734acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4735debug version of the code includes the debug output trace mechanism and
4736has a much larger code and data size.
4737
4738  Current Release:
4739    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4740    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4741  Previous Release:
4742    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4743    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4744
47452) iASL Compiler/Disassembler and Tools:
4746
4747iASL: Fixed a memory allocation/free regression introduced in 20140828
4748that could cause the compiler to crash. This was introduced inadvertently
4749during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
47501113.
4751
4752iASL: Removed two error messages that have been found to create false
4753positives, until they can be fixed and fully validated (ACPICA BZ 1112):
47541) Illegal forward reference within a method
47552) Illegal reference across two methods
4756
4757iASL: Implemented a new option (-lm) to create a hardware mapping file
4758that summarizes all GPIO, I2C, SPI, and UART connections. This option
4759works for both the compiler and disassembler. See the iASL compiler user
4760guide for additional information and examples (section 6.4.6).
4761
4762AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
4763version 2. This corrects the AE_BAD_HEADER exception seen on systems with
4764a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
4765
4766AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
4767unless STDIN is actually a terminal. Assists with batch-mode processing.
4768ACPICA BZ 1114.
4769
4770Disassembler/AcpiHelp: Added another large group of recognized _HID
4771values.
4772
4773
4774----------------------------------------
477528 August 2014. Summary of changes for version 20140828:
4776
47771) ACPICA kernel-resident subsystem:
4778
4779Fixed a problem related to the internal use of the Timer() operator where
4780a 64-bit divide could cause an attempted link to a double-precision math
4781library. This divide is not actually necessary, so the code was
4782restructured to eliminate it. Lv Zheng.
4783
4784ACPI 5.1: Added support for the runtime validation of the _DSD package
4785(similar to the iASL support).
4786
4787ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
4788SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
4789
4790Example Code and Data Size: These are the sizes for the OS-independent
4791acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4792debug version of the code includes the debug output trace mechanism and
4793has a much larger code and data size.
4794
4795  Current Release:
4796    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4797    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4798  Previous Release:
4799    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
4800    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4801
48022) iASL Compiler/Disassembler and Tools:
4803
4804AcpiExec: Fixed a problem on unix systems where the original terminal
4805state was not always properly restored upon exit. Seen when using the -v
4806option. ACPICA BZ 1104.
4807
4808iASL: Fixed a problem with the validation of the ranges/length within the
4809Memory24 resource descriptor. There was a boundary condition when the
4810range was equal to the (length -1) caused by the fact that these values
4811are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4812
4813Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4814polarity
4815flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4816is
4817now supported properly.
4818
4819ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4820in the disassembler, data table compiler, and table template generator.
4821
4822iASL: Added a requirement for Device() objects that one of either a _HID
4823or _ADR must exist within the scope of a Device, as per the ACPI
4824specification. Remove a similar requirement that was incorrectly in place
4825for the _DSD object.
4826
4827iASL: Added error detection for illegal named references within control
4828methods that would cause runtime failures. Now trapped as errors are: 1)
4829References to objects within a non-parent control method. 2) Forward
4830references (within a method) -- for control methods, AML interpreters use
4831a one-pass parse of control methods. ACPICA BZ 1008.
4832
4833iASL: Added error checking for dependencies related to the _PSx power
4834methods. ACPICA BZ 1029.
48351) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4836_PS3.
48372) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4838scope.
4839
4840iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4841deploying the existing object and string caches and adding new caches for
4842the table compiler.
4843
4844iASL: Split the huge parser source file into multiple subfiles to improve
4845manageability. Generation now requires the M4 macro preprocessor, which
4846is part of the Bison distribution on both unix and windows platforms.
4847
4848AcpiSrc: Fixed and removed all extraneous warnings generated during
4849entire ACPICA source code scan and/or conversion.
4850
4851
4852----------------------------------------
4853
485424 July 2014. Summary of changes for version 20140724:
4855
4856The ACPI 5.1 specification has been released and is available at:
4857http://uefi.org/specs/access
4858
4859
48600) ACPI 5.1 support in ACPICA:
4861
4862ACPI 5.1 is fully supported in ACPICA as of this release.
4863
4864New predefined names. Support includes iASL and runtime ACPICA
4865validation.
4866    _CCA (Cache Coherency Attribute).
4867    _DSD (Device-Specific Data). David Box.
4868
4869Modifications to existing ACPI tables. Support includes headers, iASL
4870Data Table compiler, disassembler, and the template generator.
4871    FADT - New fields and flags. Graeme Gregory.
4872    GTDT - One new subtable and new fields. Tomasz Nowicki.
4873    MADT - Two new subtables. Tomasz Nowicki.
4874    PCCT - One new subtable.
4875
4876Miscellaneous.
4877    New notification type for System Resource Affinity change events.
4878
4879
48801) ACPICA kernel-resident subsystem:
4881
4882Fixed a regression introduced in 20140627 where a fault can happen during
4883the deletion of Alias AML namespace objects. The problem affected both
4884the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4885
4886Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4887simple mechanism to enable wake GPEs that have no associated handler or
4888control method. Rafael Wysocki.
4889
4890Updated the AcpiEnableGpe interface to disallow the enable if there is no
4891handler or control method associated with the particular GPE. This will
4892help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4893
4894Updated GPE handling and dispatch by disabling the GPE before clearing
4895the status bit for edge-triggered GPEs. Lv Zheng.
4896
4897Added Timer() support to the AML Debug object. The current timer value is
4898now displayed with each invocation of (Store to) the debug object to
4899enable simple generation of execution times for AML code (method
4900execution for example.) ACPICA BZ 1093.
4901
4902Example Code and Data Size: These are the sizes for the OS-independent
4903acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4904debug version of the code includes the debug output trace mechanism and
4905has a much larger code and data size.
4906
4907  Current Release:
4908    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
4909    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4910  Previous Release:
4911    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4912    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4913
4914
49152) iASL Compiler/Disassembler and Tools:
4916
4917Fixed an issue with the recently added local printf implementation,
4918concerning width/precision specifiers that could cause incorrect output.
4919Lv Zheng. ACPICA BZ 1094.
4920
4921Disassembler: Added support to detect buffers that contain UUIDs and
4922disassemble them to an invocation of the ToUUID operator. Also emit
4923commented descriptions of known ACPI-related UUIDs.
4924
4925AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4926-u. Adds three new files.
4927
4928iASL: Update table compiler and disassembler for DMAR table changes that
4929were introduced in September 2013. With assistance by David Woodhouse.
4930
4931----------------------------------------
493227 June 2014. Summary of changes for version 20140627:
4933
49341) ACPICA kernel-resident subsystem:
4935
4936Formatted Output: Implemented local versions of standard formatted output
4937utilities such as printf, etc. Over time, it has been discovered that
4938there are in fact many portability issues with printf, and the addition
4939of this feature will fix/prevent these issues once and for all. Some
4940known issues are summarized below:
4941
49421) Output of 64-bit values is not portable. For example, UINT64 is %ull
4943for the Linux kernel and is %uI64 for some MSVC versions.
49442) Invoking printf consistently in a manner that is portable across both
494532-bit and 64-bit platforms is difficult at best in many situations.
49463) The output format for pointers varies from system to system (leading
4947zeros especially), and leads to inconsistent output from ACPICA across
4948platforms.
49494) Certain platform-specific printf formats may conflict with ACPICA use.
49505) If there is no local C library available, ACPICA now has local support
4951for printf.
4952
4953-- To address these printf issues in a complete manner, ACPICA now
4954directly implements a small subset of printf format specifiers, only
4955those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4956
4957Implemented support for ACPICA generation within the EFI environment.
4958Initially, the AcpiDump utility is supported in the UEFI shell
4959environment. Lv Zheng.
4960
4961Added a new external interface, AcpiLogError, to improve ACPICA
4962portability. This allows the host to redirect error messages from the
4963ACPICA utilities. Lv Zheng.
4964
4965Added and deployed new OSL file I/O interfaces to improve ACPICA
4966portability:
4967  AcpiOsOpenFile
4968  AcpiOsCloseFile
4969  AcpiOsReadFile
4970  AcpiOsWriteFile
4971  AcpiOsGetFileOffset
4972  AcpiOsSetFileOffset
4973There are C library implementations of these functions in the new file
4974service_layers/oslibcfs.c -- however, the functions can be implemented by
4975the local host in any way necessary. Lv Zheng.
4976
4977Implemented a mechanism to disable/enable ACPI table checksum validation
4978at runtime. This can be useful when loading tables very early during OS
4979initialization when it may not be possible to map the entire table in
4980order to compute the checksum. Lv Zheng.
4981
4982Fixed a buffer allocation issue for the Generic Serial Bus support.
4983Originally, a fixed buffer length was used. This change allows for
4984variable-length buffers based upon the protocol indicated by the field
4985access attributes. Reported by Lan Tianyu. Lv Zheng.
4986
4987Fixed a problem where an object detached from a namespace node was not
4988properly terminated/cleared and could cause a circular list problem if
4989reattached. ACPICA BZ 1063. David Box.
4990
4991Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4992
4993Fixed a possible memory leak in an error return path within the function
4994AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4995
4996Example Code and Data Size: These are the sizes for the OS-independent
4997acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4998debug version of the code includes the debug output trace mechanism and
4999has a much larger code and data size.
5000
5001  Current Release:
5002    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
5003    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
5004  Previous Release:
5005    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
5006    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
5007
5008
50092) iASL Compiler/Disassembler and Tools:
5010
5011Disassembler: Add dump of ASCII equivalent text within a comment at the
5012end of each line of the output for the Buffer() ASL operator.
5013
5014AcpiDump: Miscellaneous changes:
5015  Fixed repetitive table dump in -n mode.
5016  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
5017the ACPI 2.0 GUID fails.
5018
5019iASL: Fixed a problem where the compiler could fault if incorrectly given
5020an acpidump output file as input. ACPICA BZ 1088. David Box.
5021
5022AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
5023they are invoked without any arguments.
5024
5025Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
50261086. Colin Ian King.
5027
5028Disassembler: Cleaned up a block of code that extracts a parent Op
5029object. Added a comment that explains that the parent is guaranteed to be
5030valid in this case. ACPICA BZ 1069.
5031
5032
5033----------------------------------------
503424 April 2014. Summary of changes for version 20140424:
5035
50361) ACPICA kernel-resident subsystem:
5037
5038Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
5039Some of these tables are known to contain a trailing NULL entry. Lv
5040Zheng.
5041
5042Removed an extraneous error message for the case where there are a large
5043number of system GPEs (> 124). This was the "32-bit FADT register is too
5044long to convert to GAS struct" message, which is irrelevant for GPEs
5045since the GPEx_BLK_LEN fields of the FADT are always used instead of the
5046(limited capacity) GAS bit length. Also, several changes to ensure proper
5047support for GPE numbers > 255, where some "GPE number" fields were 8-bits
5048internally.
5049
5050Implemented and deployed additional configuration support for the public
5051ACPICA external interfaces. Entire classes of interfaces can now be
5052easily modified or configured out, replaced by stubbed inline functions
5053by default. Lv Zheng.
5054
5055Moved all public ACPICA runtime configuration globals to the public
5056ACPICA external interface file for convenience. Also, removed some
5057obsolete/unused globals. See the file acpixf.h. Lv Zheng.
5058
5059Documentation: Added a new section to the ACPICA reference describing the
5060maximum number of GPEs that can be supported by the FADT-defined GPEs in
5061block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
5062reference.
5063
5064Example Code and Data Size: These are the sizes for the OS-independent
5065acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5066debug version of the code includes the debug output trace mechanism and
5067has a much larger code and data size.
5068
5069  Current Release:
5070    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
5071    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
5072  Previous Release:
5073    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
5074    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
5075
5076
50772) iASL Compiler/Disassembler and Tools:
5078
5079iASL and disassembler: Add full support for the LPIT table (Low Power
5080Idle Table). Includes support in the disassembler, data table compiler,
5081and template generator.
5082
5083AcpiDump utility:
50841) Add option to force the use of the RSDT (over the XSDT).
50852) Improve validation of the RSDP signature (use 8 chars instead of 4).
5086
5087iASL: Add check for predefined packages that are too large.  For
5088predefined names that contain subpackages, check if each subpackage is
5089too large. (Check for too small already exists.)
5090
5091Debugger: Updated the GPE command (which simulates a GPE by executing the
5092GPE code paths in ACPICA). The GPE device is now optional, and defaults
5093to the GPE 0/1 FADT-defined blocks.
5094
5095Unix application OSL: Update line-editing support. Add additional error
5096checking and take care not to reset terminal attributes on exit if they
5097were never set. This should help guarantee that the terminal is always
5098left in the previous state on program exit.
5099
5100
5101----------------------------------------
510225 March 2014. Summary of changes for version 20140325:
5103
51041) ACPICA kernel-resident subsystem:
5105
5106Updated the auto-serialize feature for control methods. This feature
5107automatically serializes all methods that create named objects in order
5108to prevent runtime errors. The update adds support to ignore the
5109currently executing AML SyncLevel when invoking such a method, in order
5110to prevent disruption of any existing SyncLevel priorities that may exist
5111in the AML code. Although the use of SyncLevels is relatively rare, this
5112change fixes a regression where an AE_AML_MUTEX_ORDER exception can
5113appear on some machines starting with the 20140214 release.
5114
5115Added a new external interface to allow the host to install ACPI tables
5116very early, before the namespace is even created. AcpiInstallTable gives
5117the host additional flexibility for ACPI table management. Tables can be
5118installed directly by the host as if they had originally appeared in the
5119XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
5120(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
5121with additional internal restructuring and cleanup. See the ACPICA
5122Reference for interface details. Lv Zheng.
5123
5124Added validation of the checksum for all incoming dynamically loaded
5125tables (via external interfaces or via AML Load/LoadTable operators). Lv
5126Zheng.
5127
5128Updated the use of the AcpiOsWaitEventsComplete interface during Notify
5129and GPE handler removal. Restructured calls to eliminate possible race
5130conditions. Lv Zheng.
5131
5132Added a warning for the use/execution of the ASL/AML Unload (table)
5133operator. This will help detect and identify machines that use this
5134operator if and when it is ever used. This operator has never been seen
5135in the field and the usage model and possible side-effects of the drastic
5136runtime action of a full table removal are unknown.
5137
5138Reverted the use of #pragma push/pop which was introduced in the 20140214
5139release. It appears that push and pop are not implemented by enough
5140compilers to make the use of this feature feasible for ACPICA at this
5141time. However, these operators may be deployed in a future ACPICA
5142release.
5143
5144Added the missing EXPORT_SYMBOL macros for the install and remove SCI
5145handler interfaces.
5146
5147Source code generation:
51481) Disabled the use of the "strchr" macro for the gcc-specific
5149generation. For some versions of gcc, this macro can periodically expose
5150a compiler bug which in turn causes compile-time error(s).
51512) Added support for PPC64 compilation. Colin Ian King.
5152
5153Example Code and Data Size: These are the sizes for the OS-independent
5154acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5155debug version of the code includes the debug output trace mechanism and
5156has a much larger code and data size.
5157
5158  Current Release:
5159    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
5160    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
5161  Previous Release:
5162    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
5163    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
5164
5165
51662) iASL Compiler/Disassembler and Tools:
5167
5168Disassembler: Added several new features to improve the readability of
5169the resulting ASL code. Extra information is emitted within comment
5170fields in the ASL code:
51711) Known _HID/_CID values are decoded to descriptive text.
51722) Standard values for the Notify() operator are decoded to descriptive
5173text.
51743) Target operands are expanded to full pathnames (in a comment) when
5175possible.
5176
5177Disassembler: Miscellaneous updates for extern() handling:
51781) Abort compiler if file specified by -fe option does not exist.
51792) Silence unnecessary warnings about argument count mismatches.
51803) Update warning messages concerning unresolved method externals.
51814) Emit "UnknownObj" keyword for externals whose type cannot be
5182determined.
5183
5184AcpiHelp utility:
51851) Added the -a option to display both the ASL syntax and the AML
5186encoding for an input ASL operator. This effectively displays all known
5187information about an ASL operator with one AcpiHelp invocation.
51882) Added substring match support (similar to a wildcard) for the -i
5189(_HID/PNP IDs) option.
5190
5191iASL/Disassembler: Since this tool does not yet support execution on big-
5192endian machines, added detection of endianness and an error message if
5193execution is attempted on big-endian. Support for big-endian within iASL
5194is a feature that is on the ACPICA to-be-done list.
5195
5196AcpiBin utility:
51971) Remove option to extract binary files from an acpidump; this function
5198is made obsolete by the AcpiXtract utility.
51992) General cleanup of open files and allocated buffers.
5200
5201
5202----------------------------------------
520314 February 2014. Summary of changes for version 20140214:
5204
52051) ACPICA kernel-resident subsystem:
5206
5207Implemented a new mechanism to proactively prevent problems with ill-
5208behaved reentrant control methods that create named ACPI objects. This
5209behavior is illegal as per the ACPI specification, but is nonetheless
5210frequently seen in the field. Previously, this could lead to an
5211AE_ALREADY_EXISTS exception if the method was actually entered by more
5212than one thread. This new mechanism detects such methods at table load
5213time and marks them "serialized" to prevent reentrancy. A new global
5214option, AcpiGbl_AutoSerializeMethods, has been added to disable this
5215feature if desired. This mechanism and global option obsoletes and
5216supersedes the previous AcpiGbl_SerializeAllMethods option.
5217
5218Added the "Windows 2013" string to the _OSI support. ACPICA will now
5219respond TRUE to _OSI queries with this string. It is the stated policy of
5220ACPICA to add new strings to the _OSI support as soon as possible after
5221they are defined. See the full ACPICA _OSI policy which has been added to
5222the utilities/utosi.c file.
5223
5224Hardened/updated the _PRT return value auto-repair code:
52251) Do not abort the repair on a single subpackage failure, continue to
5226check all subpackages.
52272) Add check for the minimum subpackage length (4).
52283) Properly handle extraneous NULL package elements.
5229
5230Added support to avoid the possibility of infinite loops when traversing
5231object linked lists. Never allow an infinite loop, even in the face of
5232corrupted object lists.
5233
5234ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
5235pack(pop) directives to ensure that the ACPICA headers are independent of
5236compiler settings or other host headers.
5237
5238Example Code and Data Size: These are the sizes for the OS-independent
5239acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5240debug version of the code includes the debug output trace mechanism and
5241has a much larger code and data size.
5242
5243  Current Release:
5244    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
5245    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
5246  Previous Release:
5247    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
5248    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
5249
5250
52512) iASL Compiler/Disassembler and Tools:
5252
5253iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
5254first reserved field was incorrectly forced to have a value of zero. This
5255change correctly forces the field to have a value of one. ACPICA BZ 1081.
5256
5257Debugger: Added missing support for the "Extra" and "Data" subobjects
5258when displaying object data.
5259
5260Debugger: Added support to display entire object linked lists when
5261displaying object data.
5262
5263iASL: Removed the obsolete -g option to obtain ACPI tables from the
5264Windows registry. This feature has been superseded by the acpidump
5265utility.
5266
5267
5268----------------------------------------
526914 January 2014. Summary of changes for version 20140114:
5270
52711) ACPICA kernel-resident subsystem:
5272
5273Updated all ACPICA copyrights and signons to 2014. Added the 2014
5274copyright to all module headers and signons, including the standard Linux
5275header. This affects virtually every file in the ACPICA core subsystem,
5276iASL compiler, all ACPICA utilities, and the test suites.
5277
5278Improved parameter validation for AcpiInstallGpeBlock. Added the
5279following checks:
52801) The incoming device handle refers to type ACPI_TYPE_DEVICE.
52812) There is not already a GPE block attached to the device.
5282Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
5283device.
5284
5285Correctly support "references" in the ACPI_OBJECT. This change fixes the
5286support to allow references (namespace nodes) to be passed as arguments
5287to control methods via the evaluate object interface. This is probably
5288most useful for testing purposes, however.
5289
5290Improved support for 32/64 bit physical addresses in printf()-like
5291output. This change improves the support for physical addresses in printf
5292debug statements and other output on both 32-bit and 64-bit hosts. It
5293consistently outputs the appropriate number of bytes for each host. The
5294%p specifier is unsatisfactory since it does not emit uniform output on
5295all hosts/clib implementations (on some, leading zeros are not supported,
5296leading to difficult-to-read output).
5297
5298Example Code and Data Size: These are the sizes for the OS-independent
5299acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5300debug version of the code includes the debug output trace mechanism and
5301has a much larger code and data size.
5302
5303  Current Release:
5304    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
5305    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
5306  Previous Release:
5307    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
5308    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
5309
5310
53112) iASL Compiler/Disassembler and Tools:
5312
5313iASL: Fix a possible fault when using the Connection() operator. Fixes a
5314problem if the parent Field definition for the Connection operator refers
5315to an operation region that does not exist. ACPICA BZ 1064.
5316
5317AcpiExec: Load of local test tables is now optional. The utility has the
5318capability to load some various tables to test features of ACPICA.
5319However, there are enough of them that the output of the utility became
5320confusing. With this change, only the required local tables are displayed
5321(RSDP, XSDT, etc.) along with the actual tables loaded via the command
5322line specification. This makes the default output simler and easier to
5323understand. The -el command line option restores the original behavior
5324for testing purposes.
5325
5326AcpiExec: Added support for overlapping operation regions. This change
5327expands the simulation of operation regions by supporting regions that
5328overlap within the given address space. Supports SystemMemory and
5329SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
5330
5331AcpiExec: Added region handler support for PCI_Config and EC spaces. This
5332allows AcpiExec to simulate these address spaces, similar to the current
5333support for SystemMemory and SystemIO.
5334
5335Debugger: Added new command to read/write/compare all namespace objects.
5336The command "test objects" will exercise the entire namespace by writing
5337new values to each data object, and ensuring that the write was
5338successful. The original value is then restored and verified.
5339
5340Debugger: Added the "test predefined" command. This change makes this
5341test public and puts it under the new "test" command. The test executes
5342each and every predefined name within the current namespace.
5343
5344
5345----------------------------------------
534618 December 2013. Summary of changes for version 20131218:
5347
5348Global note: The ACPI 5.0A specification was released this month. There
5349are no changes needed for ACPICA since this release of ACPI is an
5350errata/clarification release. The specification is available at
5351acpi.info.
5352
5353
53541) ACPICA kernel-resident subsystem:
5355
5356Added validation of the XSDT root table if it is present. Some older
5357platforms contain an XSDT that is ill-formed or otherwise invalid (such
5358as containing some or all entries that are NULL pointers). This change
5359adds a new function to validate the XSDT before actually using it. If the
5360XSDT is found to be invalid, ACPICA will now automatically fall back to
5361using the RSDT instead. Original implementation by Zhao Yakui. Ported to
5362ACPICA and enhanced by Lv Zheng and Bob Moore.
5363
5364Added a runtime option to ignore the XSDT and force the use of the RSDT.
5365This change adds a runtime option that will force ACPICA to use the RSDT
5366instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
5367requires that an XSDT be used instead of the RSDT, the XSDT has been
5368found to be corrupt or ill-formed on some machines. Lv Zheng.
5369
5370Added a runtime option to favor 32-bit FADT register addresses over the
537164-bit addresses. This change adds an option to favor 32-bit FADT
5372addresses when there is a conflict between the 32-bit and 64-bit versions
5373of the same register. The default behavior is to use the 64-bit version
5374in accordance with the ACPI specification. This can now be overridden via
5375the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
5376
5377During the change above, the internal "Convert FADT" and "Verify FADT"
5378functions have been merged to simplify the code, making it easier to
5379understand and maintain. ACPICA BZ 933.
5380
5381Improve exception reporting and handling for GPE block installation.
5382Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
5383status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
5384
5385Added helper macros to extract bus/segment numbers from the HEST table.
5386This change adds two macros to extract the encoded bus and segment
5387numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
5388Betty Dall <betty.dall@hp.com>
5389
5390Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
5391by ACPICA. It is not a public macro, so it should have no effect on
5392existing OSV code. Lv Zheng.
5393
5394Example Code and Data Size: These are the sizes for the OS-independent
5395acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5396debug version of the code includes the debug output trace mechanism and
5397has a much larger code and data size.
5398
5399  Current Release:
5400    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
5401    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
5402  Previous Release:
5403    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
5404    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
5405
5406
54072) iASL Compiler/Disassembler and Tools:
5408
5409Disassembler: Improved pathname support for emitted External()
5410statements. This change adds full pathname support for external names
5411that have been resolved internally by the inclusion of additional ACPI
5412tables (via the iASL -e option). Without this change, the disassembler
5413can emit multiple externals for the same object, or it become confused
5414when the Scope() operator is used on an external object. Overall, greatly
5415improves the ability to actually recompile the emitted ASL code when
5416objects a referenced across multiple ACPI tables. Reported by Michael
5417Tsirkin (mst@redhat.com).
5418
5419Tests/ASLTS: Updated functional control suite to execute with no errors.
5420David Box. Fixed several errors related to the testing of the interpreter
5421slack mode. Lv Zheng.
5422
5423iASL: Added support to detect names that are declared within a control
5424method, but are unused (these are temporary names that are only valid
5425during the time the method is executing). A remark is issued for these
5426cases. ACPICA BZ 1022.
5427
5428iASL: Added full support for the DBG2 table. Adds full disassembler,
5429table compiler, and template generator support for the DBG2 table (Debug
5430Port 2 table).
5431
5432iASL: Added full support for the PCCT table, update the table definition.
5433Updates the PCCT table definition in the actbl3.h header and adds table
5434compiler and template generator support.
5435
5436iASL: Added an option to emit only error messages (no warnings/remarks).
5437The -ve option will enable only error messages, warnings and remarks are
5438suppressed. This can simplify debugging when only the errors are
5439important, such as when an ACPI table is disassembled and there are many
5440warnings and remarks -- but only the actual errors are of real interest.
5441
5442Example ACPICA code (source/tools/examples): Updated the example code so
5443that it builds to an actual working program, not just example code. Added
5444ACPI tables and execution of an example control method in the DSDT. Added
5445makefile support for Unix generation.
5446
5447
5448----------------------------------------
544915 November 2013. Summary of changes for version 20131115:
5450
5451This release is available at https://acpica.org/downloads
5452
5453
54541) ACPICA kernel-resident subsystem:
5455
5456Resource Manager: Fixed loop termination for the "get AML length"
5457function. The loop previously had an error termination on a NULL resource
5458pointer, which can never happen since the loop simply increments a valid
5459resource pointer. This fix changes the loop to terminate with an error on
5460an invalid end-of-buffer condition. The problem can be seen as an
5461infinite loop by callers to AcpiSetCurrentResources with an invalid or
5462corrupted resource descriptor, or a resource descriptor that is missing
5463an END_TAG descriptor. Reported by Dan Carpenter
5464<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
5465
5466Table unload and ACPICA termination: Delete all attached data objects
5467during namespace node deletion. This fix updates namespace node deletion
5468to delete the entire list of attached objects (attached via
5469AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
54701024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
5471
5472ACPICA termination: Added support to delete all objects attached to the
5473root namespace node. This fix deletes any and all objects that have been
5474attached to the root node via AcpiAttachData. Previously, none of these
5475objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
5476
5477Debug output: Do not emit the function nesting level for the in-kernel
5478build. The nesting level is really only useful during a single-thread
5479execution. Therefore, only enable this output for the AcpiExec utility.
5480Also, only emit the thread ID when executing under AcpiExec (Context
5481switches are still always detected and a message is emitted). ACPICA BZ
5482972.
5483
5484Example Code and Data Size: These are the sizes for the OS-independent
5485acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5486debug version of the code includes the debug output trace mechanism and
5487has a much larger code and data size.
5488
5489  Current Release:
5490    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
5491    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
5492  Previous Release:
5493    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
5494    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
5495
5496
54972) iASL Compiler/Disassembler and Tools:
5498
5499AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
5500correct portable POSIX header for terminal control functions.
5501
5502Disassembler: Fixed control method invocation issues related to the use
5503of the CondRefOf() operator. The problem is seen in the disassembly where
5504control method invocations may not be disassembled properly if the
5505control method name has been used previously as an argument to CondRefOf.
5506The solution is to not attempt to emit an external declaration for the
5507CondRefOf target (it is not necessary in the first place). This prevents
5508disassembler object type confusion. ACPICA BZ 988.
5509
5510Unix Makefiles: Added an option to disable compiler optimizations and the
5511_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
5512with optimizations (reportedly, gcc 4.4 for example). This change adds a
5513command line option for make (NOOPT) that disables all compiler
5514optimizations and the _FORTIFY_SOURCE compiler flag. The default
5515optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
55161034. Lv Zheng, Bob Moore.
5517
5518Tests/ASLTS: Added options to specify individual test cases and modes.
5519This allows testers running aslts.sh to optionally specify individual
5520test modes and test cases. Also added an option to disable the forced
5521generation of the ACPICA tools from source if desired. Lv Zheng.
5522
5523----------------------------------------
552427 September 2013. Summary of changes for version 20130927:
5525
5526This release is available at https://acpica.org/downloads
5527
5528
55291) ACPICA kernel-resident subsystem:
5530
5531Fixed a problem with store operations to reference objects. This change
5532fixes a problem where a Store operation to an ArgX object that contained
5533a
5534reference to a field object did not complete the automatic dereference
5535and
5536then write to the actual field object. Instead, the object type of the
5537field object was inadvertently changed to match the type of the source
5538operand. The new behavior will actually write to the field object (buffer
5539field or field unit), thus matching the correct ACPI-defined behavior.
5540
5541Implemented support to allow the host to redefine individual OSL
5542prototypes. This change enables the host to redefine OSL prototypes found
5543in the acpiosxf.h file. This allows the host to implement OSL interfaces
5544with a macro or inlined function. Further, it allows the host to add any
5545additional required modifiers such as __iomem, __init, __exit, etc., as
5546necessary on a per-interface basis. Enables maximum flexibility for the
5547OSL interfaces. Lv Zheng.
5548
5549Hardcoded the access width for the FADT-defined reset register. The ACPI
5550specification requires the reset register width to be 8 bits. ACPICA now
5551hardcodes the width to 8 and ignores the FADT width value. This provides
5552compatibility with other ACPI implementations that have allowed BIOS code
5553with bad register width values to go unnoticed. Matthew Garett, Bob
5554Moore,
5555Lv Zheng.
5556
5557Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
5558used
5559in the OSL header (acpiosxf). The change modifies the position of this
5560macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
5561build issues if the OSL defines the implementation of the interface to be
5562an inline stub function. Lv Zheng.
5563
5564Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
5565initialization interfaces. This change adds a new macro for the main init
5566and terminate external interfaces in order to support hosts that require
5567additional or different processing for these functions. Changed from
5568ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
5569Zheng, Bob Moore.
5570
5571Cleaned up the memory allocation macros for configurability. In the
5572common
5573case, the ACPI_ALLOCATE and related macros now resolve directly to their
5574respective AcpiOs* OSL interfaces. Two options:
55751) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
5576default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
55772) For AcpiExec (and for debugging), the macros can optionally be
5578resolved
5579to the local ACPICA interfaces that track each allocation (local tracking
5580is used to immediately detect memory leaks).
5581Lv Zheng.
5582
5583Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
5584to predefine this macro to either TRUE or FALSE during the system build.
5585
5586Replaced __FUNCTION_ with __func__ in the gcc-specific header.
5587
5588Example Code and Data Size: These are the sizes for the OS-independent
5589acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5590debug version of the code includes the debug output trace mechanism and
5591has a much larger code and data size.
5592
5593  Current Release:
5594    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
5595    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
5596  Previous Release:
5597    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5598    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5599
5600
56012) iASL Compiler/Disassembler and Tools:
5602
5603iASL: Implemented wildcard support for the -e option. This simplifies use
5604when there are many SSDTs that must be included to resolve external
5605method
5606declarations. ACPICA BZ 1041. Example:
5607    iasl -e ssdt*.dat -d dsdt.dat
5608
5609AcpiExec: Add history/line-editing for Unix/Linux systems. This change
5610adds a portable module that implements full history and limited line
5611editing for Unix and Linux systems. It does not use readline() due to
5612portability issues. Instead it uses the POSIX termio interface to put the
5613terminal in raw input mode so that the various special keys can be
5614trapped
5615(such as up/down-arrow for history support and left/right-arrow for line
5616editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
5617
5618AcpiXtract: Add support to handle (ignore) "empty" lines containing only
5619one or more spaces. This provides compatible with early or different
5620versions of the AcpiDump utility. ACPICA BZ 1044.
5621
5622AcpiDump: Do not ignore tables that contain only an ACPI table header.
5623Apparently, some BIOSs create SSDTs that contain an ACPI table header but
5624no other data. This change adds support to dump these tables. Any tables
5625shorter than the length of an ACPI table header remain in error (an error
5626message is emitted). Reported by Yi Li.
5627
5628Debugger: Echo actual command along with the "unknown command" message.
5629
5630----------------------------------------
563123 August 2013. Summary of changes for version 20130823:
5632
56331) ACPICA kernel-resident subsystem:
5634
5635Implemented support for host-installed System Control Interrupt (SCI)
5636handlers. Certain ACPI functionality requires the host to handle raw
5637SCIs. For example, the "SCI Doorbell" that is defined for memory power
5638state support requires the host device driver to handle SCIs to examine
5639if the doorbell has been activated. Multiple SCI handlers can be
5640installed to allow for future expansion. New external interfaces are
5641AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
5642details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
5643
5644Operation region support: Never locally free the handler "context"
5645pointer. This change removes some dangerous code that attempts to free
5646the handler context pointer in some (rare) circumstances. The owner of
5647the handler owns this pointer and the ACPICA code should never touch it.
5648Although not seen to be an issue in any kernel, it did show up as a
5649problem (fault) under AcpiExec. Also, set the internal storage field for
5650the context pointer to zero when the region is deactivated, simply for
5651sanity. David Box. ACPICA BZ 1039.
5652
5653AcpiRead: On error, do not modify the return value target location. If an
5654error happens in the middle of a split 32/32 64-bit I/O operation, do not
5655modify the target of the return value pointer. Makes the code consistent
5656with the rest of ACPICA. Bjorn Helgaas.
5657
5658Example Code and Data Size: These are the sizes for the OS-independent
5659acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5660debug version of the code includes the debug output trace mechanism and
5661has a much larger code and data size.
5662
5663  Current Release:
5664    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5665    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5666  Previous Release:
5667    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5668    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
5669
5670
56712) iASL Compiler/Disassembler and Tools:
5672
5673AcpiDump: Implemented several new features and fixed some problems:
56741) Added support to dump the RSDP, RSDT, and XSDT tables.
56752) Added support for multiple table instances (SSDT, UEFI).
56763) Added option to dump "customized" (overridden) tables (-c).
56774) Fixed a problem where some table filenames were improperly
5678constructed.
56795) Improved some error messages, removed some unnecessary messages.
5680
5681iASL: Implemented additional support for disassembly of ACPI tables that
5682contain invocations of external control methods. The -fe<file> option
5683allows the import of a file that specifies the external methods along
5684with the required number of arguments for each -- allowing for the
5685correct disassembly of the table. This is a workaround for a limitation
5686of AML code where the disassembler often cannot determine the number of
5687arguments required for an external control method and generates incorrect
5688ASL code. See the iASL reference for details. ACPICA BZ 1030.
5689
5690Debugger: Implemented a new command (paths) that displays the full
5691pathnames (namepaths) and object types of all objects in the namespace.
5692This is an alternative to the namespace command.
5693
5694Debugger: Implemented a new command (sci) that invokes the SCI dispatch
5695mechanism and any installed handlers.
5696
5697iASL: Fixed a possible segfault for "too many parent prefixes" condition.
5698This can occur if there are too many parent prefixes in a namepath (for
5699example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
5700
5701Application OSLs: Set the return value for the PCI read functions. These
5702functions simply return AE_OK, but should set the return value to zero
5703also. This change implements this. ACPICA BZ 1038.
5704
5705Debugger: Prevent possible command line buffer overflow. Increase the
5706size of a couple of the debugger line buffers, and ensure that overflow
5707cannot happen. ACPICA BZ 1037.
5708
5709iASL: Changed to abort immediately on serious errors during the parsing
5710phase. Due to the nature of ASL, there is no point in attempting to
5711compile these types of errors, and they typically end up causing a
5712cascade of hundreds of errors which obscure the original problem.
5713
5714----------------------------------------
571525 July 2013. Summary of changes for version 20130725:
5716
57171) ACPICA kernel-resident subsystem:
5718
5719Fixed a problem with the DerefOf operator where references to FieldUnits
5720and BufferFields incorrectly returned the parent object, not the actual
5721value of the object. After this change, a dereference of a FieldUnit
5722reference results in a read operation on the field to get the value, and
5723likewise, the appropriate BufferField value is extracted from the target
5724buffer.
5725
5726Fixed a problem where the _WAK method could cause a fault under these
5727circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
5728method returned no value. The problem is rarely seen because most kernels
5729run ACPICA in slack mode.
5730
5731For the DerefOf operator, a fatal error now results if an attempt is made
5732to dereference a reference (created by the Index operator) to a NULL
5733package element. Provides compatibility with other ACPI implementations,
5734and this behavior will be added to a future version of the ACPI
5735specification.
5736
5737The ACPI Power Management Timer (defined in the FADT) is now optional.
5738This provides compatibility with other ACPI implementations and will
5739appear in the next version of the ACPI specification. If there is no PM
5740Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
5741zero in the FADT indicates no PM timer.
5742
5743Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
5744allows the host to globally enable/disable all vendor strings, all
5745feature strings, or both. Intended to be primarily used for debugging
5746purposes only. Lv Zheng.
5747
5748Expose the collected _OSI data to the host via a global variable. This
5749data tracks the highest level vendor ID that has been invoked by the BIOS
5750so that the host (and potentially ACPICA itself) can change behaviors
5751based upon the age of the BIOS.
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 version of the code includes the debug output trace mechanism and
5756has a much larger code and data size.
5757
5758  Current Release:
5759    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5760    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5761  Previous Release:
5762    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5763    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5764
5765
57662) iASL Compiler/Disassembler and Tools:
5767
5768iASL: Created the following enhancements for the -so option (create
5769offset table):
57701)Add offsets for the last nameseg in each namepath for every supported
5771object type
57722)Add support for Processor, Device, Thermal Zone, and Scope objects
57733)Add the actual AML opcode for the parent object of every supported
5774object type
57754)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
5776
5777Disassembler: Emit all unresolved external symbols in a single block.
5778These are external references to control methods that could not be
5779resolved, and thus, the disassembler had to make a guess at the number of
5780arguments to parse.
5781
5782iASL: The argument to the -T option (create table template) is now
5783optional. If not specified, the default table is a DSDT, typically the
5784most common case.
5785
5786----------------------------------------
578726 June 2013. Summary of changes for version 20130626:
5788
57891) ACPICA kernel-resident subsystem:
5790
5791Fixed an issue with runtime repair of the _CST object. Null or invalid
5792elements were not always removed properly. Lv Zheng.
5793
5794Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5795FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5796the maximum number of GPEs is 1016. Use of multiple GPE block devices
5797makes the system-wide number of GPEs essentially unlimited.
5798
5799Example Code and Data Size: These are the sizes for the OS-independent
5800acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5801debug version of the code includes the debug output trace mechanism and
5802has a much larger code and data size.
5803
5804  Current Release:
5805    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5806    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5807  Previous Release:
5808    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5809    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5810
5811
58122) iASL Compiler/Disassembler and Tools:
5813
5814Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5815hosts. Now supports Linux, FreeBSD, and Windows.
5816
5817Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5818Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5819
5820iASL/Preprocessor: Implemented full support for nested
5821#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5822
5823Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5824max. The original purpose of this constraint was to limit the amount of
5825debug output. However, the string function in question (UtPrintString) is
5826now used for the disassembler also, where 256 bytes is insufficient.
5827Reported by RehabMan@GitHub.
5828
5829iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5830tables. ACPICA BZ 999. Lv Zheng.
5831
5832iASL: Fixed a couple of error exit issues that could result in a "Could
5833not delete <file>" message during ASL compilation.
5834
5835AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5836the actual signatures for these tables are "FACP" and "APIC",
5837respectively.
5838
5839AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5840tables are allowed to have multiple instances.
5841
5842----------------------------------------
584317 May 2013. Summary of changes for version 20130517:
5844
58451) ACPICA kernel-resident subsystem:
5846
5847Fixed a regression introduced in version 20130328 for _INI methods. This
5848change fixes a problem introduced in 20130328 where _INI methods are no
5849longer executed properly because of a memory block that was not
5850initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5851<tomasz.nowicki@linaro.org>.
5852
5853Fixed a possible problem with the new extended sleep registers in the
5854ACPI
58555.0 FADT. Do not use these registers (even if populated) unless the HW-
5856reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
58571020. Lv Zheng.
5858
5859Implemented return value repair code for _CST predefined objects: Sort
5860the
5861list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5862
5863Implemented a debug-only option to disable loading of SSDTs from the
5864RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5865ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5866acglobal.h - ACPICA BZ 1005. Lv Zheng.
5867
5868Fixed some issues in the ACPICA initialization and termination code:
5869Tomasz Nowicki <tomasz.nowicki@linaro.org>
58701) Clear events initialized flag upon event component termination. ACPICA
5871BZ 1013.
58722) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
58733) Delete global lock pending lock during termination. ACPICA BZ 1012.
58744) Clear debug buffer global on termination to prevent possible multiple
5875delete. ACPICA BZ 1010.
5876
5877Standardized all switch() blocks across the entire source base. After
5878many
5879years, different formatting for switch() had crept in. This change makes
5880the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5881
5882Split some files to enhance ACPICA modularity and configurability:
58831) Split buffer dump routines into utilities/utbuffer.c
58842) Split internal error message routines into utilities/uterror.c
58853) Split table print utilities into tables/tbprint.c
58864) Split iASL command-line option processing into asloptions.c
5887
5888Makefile enhancements:
58891) Support for all new files above.
58902) Abort make on errors from any subcomponent. Chao Guan.
58913) Add build support for Apple Mac OS X. Liang Qi.
5892
5893Example Code and Data Size: These are the sizes for the OS-independent
5894acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5895debug version of the code includes the debug output trace mechanism and
5896has a much larger code and data size.
5897
5898  Current Release:
5899    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5900    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5901  Previous Release:
5902    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5903    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5904
5905
59062) iASL Compiler/Disassembler and Tools:
5907
5908New utility: Implemented an easily portable version of the acpidump
5909utility to extract ACPI tables from the system (or a file) in an ASCII
5910hex
5911dump format. The top-level code implements the various command line
5912options, file I/O, and table dump routines. To port to a new host, only
5913three functions need to be implemented to get tables -- since this
5914functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5915the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
59161) The Windows version obtains the ACPI tables from the Registry.
59172) The Linux version is under development.
59183) Other hosts - If an OS-dependent module is submitted, it will be
5919distributed with ACPICA.
5920
5921iASL: Fixed a regression for -D preprocessor option (define symbol). A
5922restructuring/change to the initialization sequence caused this option to
5923no longer work properly.
5924
5925iASL: Implemented a mechanism to disable specific warnings and remarks.
5926Adds a new command line option, "-vw <messageid> as well as "#pragma
5927disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5928
5929iASL: Fix for too-strict package object validation. The package object
5930validation for return values from the predefined names is a bit too
5931strict, it does not allow names references within the package (which will
5932be resolved at runtime.) These types of references cannot be validated at
5933compile time. This change ignores named references within package objects
5934for names that return or define static packages.
5935
5936Debugger: Fixed the 80-character command line limitation for the History
5937command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5938
5939iASL: Added control method and package support for the -so option
5940(generates AML offset table for BIOS support.)
5941
5942iASL: issue a remark if a non-serialized method creates named objects. If
5943a thread blocks within the method for any reason, and another thread
5944enters the method, the method will fail because an attempt will be made
5945to
5946create the same (named) object twice. In this case, issue a remark that
5947the method should be marked serialized. NOTE: may become a warning later.
5948ACPICA BZ 909.
5949
5950----------------------------------------
595118 April 2013. Summary of changes for version 20130418:
5952
59531) ACPICA kernel-resident subsystem:
5954
5955Fixed a possible buffer overrun during some rare but specific field unit
5956read operations. This overrun can only happen if the DSDT version is 1 --
5957meaning that all AML integers are 32 bits -- and the field length is
5958between 33 and 55 bits long. During the read, an internal buffer object
5959is
5960created for the field unit because the field is larger than an integer
5961(32
5962bits). However, in this case, the buffer will be incorrectly written
5963beyond the end because the buffer length is less than the internal
5964minimum
5965of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5966long, but a full 8 bytes will be written.
5967
5968Updated the Embedded Controller "orphan" _REG method support. This refers
5969to _REG methods under the EC device that have no corresponding operation
5970region. This is allowed by the ACPI specification. This update removes a
5971dependency on the existence an ECDT table. It will execute an orphan _REG
5972method as long as the operation region handler for the EC is installed at
5973the EC device node and not the namespace root. Rui Zhang (original
5974update), Bob Moore (update/integrate).
5975
5976Implemented run-time argument typechecking for all predefined ACPI names
5977(_STA, _BIF, etc.) This change performs object typechecking on all
5978incoming arguments for all predefined names executed via
5979AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5980passing correct object types as well as the correct number of arguments
5981(therefore identifying any issues immediately). Also, the ASL/namespace
5982definition of the predefined name is checked against the ACPI
5983specification for the proper argument count. Adds one new file,
5984nsarguments.c
5985
5986Changed an exception code for the ASL UnLoad() operator. Changed the
5987exception code for the case where the input DdbHandle is invalid, from
5988AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5989
5990Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5991global makefile. The use of this flag causes compiler errors on earlier
5992versions of GCC, so it has been removed for compatibility.
5993
5994Miscellaneous cleanup:
59951) Removed some unused/obsolete macros
59962) Fixed a possible memory leak in the _OSI support
59973) Removed an unused variable in the predefined name support
59984) Windows OSL: remove obsolete reference to a memory list field
5999
6000Example Code and Data Size: These are the sizes for the OS-independent
6001acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6002debug version of the code includes the debug output trace mechanism and
6003has a much larger code and data size.
6004
6005  Current Release:
6006    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
6007    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
6008  Previous Release:
6009    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
6010    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
6011
6012
60132) iASL Compiler/Disassembler and Tools:
6014
6015AcpiExec: Added installation of a handler for the SystemCMOS address
6016space. This prevents control method abort if a method accesses this
6017space.
6018
6019AcpiExec: Added support for multiple EC devices, and now install EC
6020operation region handler(s) at the actual EC device instead of the
6021namespace root. This reflects the typical behavior of host operating
6022systems.
6023
6024AcpiExec: Updated to ensure that all operation region handlers are
6025installed before the _REG methods are executed. This prevents a _REG
6026method from aborting if it accesses an address space has no handler.
6027AcpiExec installs a handler for every possible address space.
6028
6029Debugger: Enhanced the "handlers" command to display non-root handlers.
6030This change enhances the handlers command to display handlers associated
6031with individual devices throughout the namespace, in addition to the
6032currently supported display of handlers associated with the root
6033namespace
6034node.
6035
6036ASL Test Suite: Several test suite errors have been identified and
6037resolved, reducing the total error count during execution. Chao Guan.
6038
6039----------------------------------------
604028 March 2013. Summary of changes for version 20130328:
6041
60421) ACPICA kernel-resident subsystem:
6043
6044Fixed several possible race conditions with the internal object reference
6045counting mechanism. Some of the external ACPICA interfaces update object
6046reference counts without holding the interpreter or namespace lock. This
6047change adds a spinlock to protect reference count updates on the internal
6048ACPICA objects. Reported by and with assistance from Andriy Gapon
6049(avg@FreeBSD.org).
6050
6051FADT support: Removed an extraneous warning for very large GPE register
6052sets. This change removes a size mismatch warning if the legacy length
6053field for a GPE register set is larger than the 64-bit GAS structure can
6054accommodate. GPE register sets can be larger than the 255-bit width
6055limitation of the GAS structure. Linn Crosetto (linn@hp.com).
6056
6057_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
6058return from this interface. Handles a possible timeout case if
6059ACPI_WAIT_FOREVER is modified by the host to be a value less than
6060"forever". Jung-uk Kim.
6061
6062Predefined name support: Add allowed/required argument type information
6063to
6064the master predefined info table. This change adds the infrastructure to
6065enable typechecking on incoming arguments for all predefined
6066methods/objects. It does not actually contain the code that will fully
6067utilize this information, this is still under development. Also condenses
6068some duplicate code for the predefined names into a new module,
6069utilities/utpredef.c
6070
6071Example Code and Data Size: These are the sizes for the OS-independent
6072acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6073debug version of the code includes the debug output trace mechanism and
6074has a much larger code and data size.
6075
6076  Previous Release:
6077    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
6078    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
6079  Current Release:
6080    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
6081    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
6082
6083
60842) iASL Compiler/Disassembler and Tools:
6085
6086iASL: Implemented a new option to simplify the development of ACPI-
6087related
6088BIOS code. Adds support for a new "offset table" output file. The -so
6089option will create a C table containing the AML table offsets of various
6090named objects in the namespace so that BIOS code can modify them easily
6091at
6092boot time. This can simplify BIOS runtime code by eliminating expensive
6093searches for "magic values", enhancing boot times and adding greater
6094reliability. With assistance from Lee Hamel.
6095
6096iASL: Allow additional predefined names to return zero-length packages.
6097Now, all predefined names that are defined by the ACPI specification to
6098return a "variable-length package of packages" are allowed to return a
6099zero length top-level package. This allows the BIOS to tell the host that
6100the requested feature is not supported, and supports existing BIOS/ASL
6101code and practices.
6102
6103iASL: Changed the "result not used" warning to an error. This is the case
6104where an ASL operator is effectively a NOOP because the result of the
6105operation is not stored anywhere. For example:
6106    Add (4, Local0)
6107There is no target (missing 3rd argument), nor is the function return
6108value used. This is potentially a very serious problem -- since the code
6109was probably intended to do something, but for whatever reason, the value
6110was not stored. Therefore, this issue has been upgraded from a warning to
6111an error.
6112
6113AcpiHelp: Added allowable/required argument types to the predefined names
6114info display. This feature utilizes the recent update to the predefined
6115names table (above).
6116
6117----------------------------------------
611814 February 2013. Summary of changes for version 20130214:
6119
61201) ACPICA Kernel-resident Subsystem:
6121
6122Fixed a possible regression on some hosts: Reinstated the safe return
6123macros (return_ACPI_STATUS, etc.) that ensure that the argument is
6124evaluated only once. Although these macros are not needed for the ACPICA
6125code itself, they are often used by ACPI-related host device drivers
6126where
6127the safe feature may be necessary.
6128
6129Fixed several issues related to the ACPI 5.0 reduced hardware support
6130(SOC): Now ensure that if the platform declares itself as hardware-
6131reduced
6132via the FADT, the following functions become NOOPs (and always return
6133AE_OK) because ACPI is always enabled by definition on these machines:
6134  AcpiEnable
6135  AcpiDisable
6136  AcpiHwGetMode
6137  AcpiHwSetMode
6138
6139Dynamic Object Repair: Implemented additional runtime repairs for
6140predefined name return values. Both of these repairs can simplify code in
6141the related device drivers that invoke these methods:
61421) For the _STR and _MLS names, automatically repair/convert an ASCII
6143string to a Unicode buffer.
61442) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
6145a
6146lone end tag descriptor in the following cases: A Return(0) was executed,
6147a null buffer was returned, or no object at all was returned (non-slack
6148mode only). Adds a new file, nsconvert.c
6149ACPICA BZ 998. Bob Moore, Lv Zheng.
6150
6151Resource Manager: Added additional code to prevent possible infinite
6152loops
6153while traversing corrupted or ill-formed resource template buffers. Check
6154for zero-length resource descriptors in all code that loops through
6155resource templates (the length field is used to index through the
6156template). This change also hardens the external AcpiWalkResources and
6157AcpiWalkResourceBuffer interfaces.
6158
6159Local Cache Manager: Enhanced the main data structure to eliminate an
6160unnecessary mechanism to access the next object in the list. Actually
6161provides a small performance enhancement for hosts that use the local
6162ACPICA cache manager. Jung-uk Kim.
6163
6164Example Code and Data Size: These are the sizes for the OS-independent
6165acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6166debug version of the code includes the debug output trace mechanism and
6167has a much larger code and data size.
6168
6169  Previous Release:
6170    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
6171    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
6172  Current Release:
6173    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
6174    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
6175
6176
61772) iASL Compiler/Disassembler and Tools:
6178
6179iASL/Disassembler: Fixed several issues with the definition of the ACPI
61805.0 RASF table (RAS Feature Table). This change incorporates late changes
6181that were made to the ACPI 5.0 specification.
6182
6183iASL/Disassembler: Added full support for the following new ACPI tables:
6184  1) The MTMR table (MID Timer Table)
6185  2) The VRTC table (Virtual Real Time Clock Table).
6186Includes header file, disassembler, table compiler, and template support
6187for both tables.
6188
6189iASL: Implemented compile-time validation of package objects returned by
6190predefined names. This new feature validates static package objects
6191returned by the various predefined names defined to return packages. Both
6192object types and package lengths are validated, for both parent packages
6193and sub-packages, if any. The code is similar in structure and behavior
6194to
6195the runtime repair mechanism within the AML interpreter and uses the
6196existing predefined name information table. Adds a new file, aslprepkg.c.
6197ACPICA BZ 938.
6198
6199iASL: Implemented auto-detection of binary ACPI tables for disassembly.
6200This feature detects a binary file with a valid ACPI table header and
6201invokes the disassembler automatically. Eliminates the need to
6202specifically invoke the disassembler with the -d option. ACPICA BZ 862.
6203
6204iASL/Disassembler: Added several warnings for the case where there are
6205unresolved control methods during the disassembly. This can potentially
6206cause errors when the output file is compiled, because the disassembler
6207assumes zero method arguments in these cases (it cannot determine the
6208actual number of arguments without resolution/definition of the method).
6209
6210Debugger: Added support to display all resources with a single command.
6211Invocation of the resources command with no arguments will now display
6212all
6213resources within the current namespace.
6214
6215AcpiHelp: Added descriptive text for each ACPICA exception code displayed
6216via the -e option.
6217
6218----------------------------------------
621917 January 2013. Summary of changes for version 20130117:
6220
62211) ACPICA Kernel-resident Subsystem:
6222
6223Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
6224return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
6225objects to return a package containing one integer, most BIOS code
6226returns
6227two integers and the previous code reflects that. However, we also need
6228to
6229support BIOS code that actually implements to the ACPI spec, and this
6230change reflects this.
6231
6232Fixed two issues with the ACPI_DEBUG_PRINT macros:
62331) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
6234C compilers that require this support.
62352) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
6236ACPI_DEBUG is already used by many of the various hosts.
6237
6238Updated all ACPICA copyrights and signons to 2013. Added the 2013
6239copyright to all module headers and signons, including the standard Linux
6240header. This affects virtually every file in the ACPICA core subsystem,
6241iASL compiler, all ACPICA utilities, and the test suites.
6242
6243Example Code and Data Size: These are the sizes for the OS-independent
6244acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6245debug version of the code includes the debug output trace mechanism and
6246has a much larger code and data size.
6247
6248  Previous Release:
6249    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
6250    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
6251  Current Release:
6252    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
6253    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
6254
6255
62562) iASL Compiler/Disassembler and Tools:
6257
6258Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
6259prevent a possible fault on some hosts. Some C libraries modify the arg
6260pointer parameter to vfprintf making it difficult to call it twice in the
6261AcpiOsVprintf function. Use a local buffer to workaround this issue. This
6262does not affect the Windows OSL since the Win C library does not modify
6263the arg pointer. Chao Guan, Bob Moore.
6264
6265iASL: Fixed a possible infinite loop when the maximum error count is
6266reached. If an output file other than the .AML file is specified (such as
6267a listing file), and the maximum number of errors is reached, do not
6268attempt to flush data to the output file(s) as the compiler is aborting.
6269This can cause an infinite loop as the max error count code essentially
6270keeps calling itself.
6271
6272iASL/Disassembler: Added an option (-in) to ignore NOOP
6273opcodes/operators.
6274Implemented for both the compiler and the disassembler. Often, the NOOP
6275opcode is used as padding for packages that are changed dynamically by
6276the
6277BIOS. When disassembled and recompiled, these NOOPs will cause syntax
6278errors. This option causes the disassembler to ignore all NOOP opcodes
6279(0xA3), and it also causes the compiler to ignore all ASL source code
6280NOOP
6281statements as well.
6282
6283Debugger: Enhanced the Sleep command to execute all sleep states. This
6284change allows Sleep to be invoked with no arguments and causes the
6285debugger to execute all of the sleep states, 0-5, automatically.
6286
6287----------------------------------------
628820 December 2012. Summary of changes for version 20121220:
6289
62901) ACPICA Kernel-resident Subsystem:
6291
6292Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
6293alternate entry point for AcpiWalkResources and improves the usability of
6294the resource manager by accepting as input a buffer containing the output
6295of either a _CRS, _PRS, or _AEI method. The key functionality is that the
6296input buffer is not deleted by this interface so that it can be used by
6297the host later. See the ACPICA reference for details.
6298
6299Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
6300(DSDT version < 2). The constant will be truncated and this warning
6301reflects that behavior.
6302
6303Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
6304ExtendedInterrupt, and GpioInt descriptors. This change adds support to
6305both get and set the new wake bit in these descriptors, separately from
6306the existing share bit. Reported by Aaron Lu.
6307
6308Interpreter: Fix Store() when an implicit conversion is not possible. For
6309example, in the cases such as a store of a string to an existing package
6310object, implement the store as a CopyObject(). This is a small departure
6311from the ACPI specification which states that the control method should
6312be
6313aborted in this case. However, the ASLTS suite depends on this behavior.
6314
6315Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
6316macros: check if debug output is currently enabled as soon as possible to
6317minimize performance impact if debug is in fact not enabled.
6318
6319Source code restructuring: Cleanup to improve modularity. The following
6320new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
6321psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
6322Associated makefiles and project files have been updated.
6323
6324Changed an exception code for LoadTable operator. For the case where one
6325of the input strings is too long, change the returned exception code from
6326AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
6327
6328Fixed a possible memory leak in dispatcher error path. On error, delete
6329the mutex object created during method mutex creation. Reported by
6330tim.gardner@canonical.com.
6331
6332Example Code and Data Size: These are the sizes for the OS-independent
6333acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6334debug version of the code includes the debug output trace mechanism and
6335has a much larger code and data size.
6336
6337  Previous Release:
6338    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
6339    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6340  Current Release:
6341    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
6342    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
6343
6344
63452) iASL Compiler/Disassembler and Tools:
6346
6347iASL: Disallow a method call as argument to the ObjectType ASL operator.
6348This change tracks an errata to the ACPI 5.0 document. The AML grammar
6349will not allow the interpreter to differentiate between a method and a
6350method invocation when these are used as an argument to the ObjectType
6351operator. The ACPI specification change is to disallow a method
6352invocation
6353(UserTerm) for the ObjectType operator.
6354
6355Finish support for the TPM2 and CSRT tables in the headers, table
6356compiler, and disassembler.
6357
6358Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
6359always expires immediately if the semaphore is not available. The
6360original
6361code was using a relative-time timeout, but sem_timedwait requires the
6362use
6363of an absolute time.
6364
6365iASL: Added a remark if the Timer() operator is used within a 32-bit
6366table. This operator returns a 64-bit time value that will be truncated
6367within a 32-bit table.
6368
6369iASL Source code restructuring: Cleanup to improve modularity. The
6370following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
6371aslmethod.c, and aslfileio.c. Associated makefiles and project files have
6372been updated.
6373
6374
6375----------------------------------------
637614 November 2012. Summary of changes for version 20121114:
6377
63781) ACPICA Kernel-resident Subsystem:
6379
6380Implemented a performance enhancement for ACPI/AML Package objects. This
6381change greatly increases the performance of Package objects within the
6382interpreter. It changes the processing of reference counts for packages
6383by
6384optimizing for the most common case where the package sub-objects are
6385either Integers, Strings, or Buffers. Increases the overall performance
6386of
6387the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
63882X.)
6389Chao Guan. ACPICA BZ 943.
6390
6391Implemented and deployed common macros to extract flag bits from resource
6392descriptors. Improves readability and maintainability of the code. Fixes
6393a
6394problem with the UART serial bus descriptor for the number of data bits
6395flags (was incorrectly 2 bits, should be 3).
6396
6397Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
6398of the macros and changed the SETx macros to the style of (destination,
6399source). Also added ACPI_CASTx companion macros. Lv Zheng.
6400
6401Example Code and Data Size: These are the sizes for the OS-independent
6402acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6403debug version of the code includes the debug output trace mechanism and
6404has a much larger code and data size.
6405
6406  Previous Release:
6407    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
6408    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6409  Current Release:
6410    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
6411    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6412
6413
64142) iASL Compiler/Disassembler and Tools:
6415
6416Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
6417adds the ShareAndWake and ExclusiveAndWake flags which were added to the
6418Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
6419
6420Disassembler: Fixed a problem with external declaration generation. Fixes
6421a problem where an incorrect pathname could be generated for an external
6422declaration if the original reference to the object includes leading
6423carats (^). ACPICA BZ 984.
6424
6425Debugger: Completed a major update for the Disassemble<method> command.
6426This command was out-of-date and did not properly disassemble control
6427methods that had any reasonable complexity. This fix brings the command
6428up
6429to the same level as the rest of the disassembler. Adds one new file,
6430dmdeferred.c, which is existing code that is now common with the main
6431disassembler and the debugger disassemble command. ACPICA MZ 978.
6432
6433iASL: Moved the parser entry prototype to avoid a duplicate declaration.
6434Newer versions of Bison emit this prototype, so moved the prototype out
6435of
6436the iASL header to where it is actually used in order to avoid a
6437duplicate
6438declaration.
6439
6440iASL/Tools: Standardized use of the stream I/O functions:
6441  1) Ensure check for I/O error after every fopen/fread/fwrite
6442  2) Ensure proper order of size/count arguments for fread/fwrite
6443  3) Use test of (Actual != Requested) after all fwrite, and most fread
6444  4) Standardize I/O error messages
6445Improves reliability and maintainability of the code. Bob Moore, Lv
6446Zheng.
6447ACPICA BZ 981.
6448
6449Disassembler: Prevent duplicate External() statements. During generation
6450of external statements, detect similar pathnames that are actually
6451duplicates such as these:
6452  External (\ABCD)
6453  External (ABCD)
6454Remove all leading '\' characters from pathnames during the external
6455statement generation so that duplicates will be detected and tossed.
6456ACPICA BZ 985.
6457
6458Tools: Replace low-level I/O with stream I/O functions. Replace
6459open/read/write/close with the stream I/O equivalents
6460fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
6461Moore.
6462
6463AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
6464name header so that AcpiXtract recognizes the output file/table.
6465
6466iASL: Remove obsolete -2 option flag. Originally intended to force the
6467compiler/disassembler into an ACPI 2.0 mode, this was never implemented
6468and the entire concept is now obsolete.
6469
6470----------------------------------------
647118 October 2012. Summary of changes for version 20121018:
6472
6473
64741) ACPICA Kernel-resident Subsystem:
6475
6476Updated support for the ACPI 5.0 MPST table. Fixes some problems
6477introduced by late changes to the table as it was added to the ACPI 5.0
6478specification. Includes header, disassembler, and data table compiler
6479support as well as a new version of the MPST template.
6480
6481AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
64825.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
6483methods: _HID, _CID, and _UID.
6484
6485Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
6486ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
6487name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
6488names for their various drivers. Affects the AcpiGetObjectInfo external
6489interface, and other internal interfaces as well.
6490
6491Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
6492This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
6493on machines that support non-aligned transfers. Optimizes for this case
6494rather than using a strncpy. With assistance from Zheng Lv.
6495
6496Resource Manager: Small fix for buffer size calculation. Fixed a one byte
6497error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
6498
6499Added a new debug print message for AML mutex objects that are force-
6500released. At control method termination, any currently acquired mutex
6501objects are force-released. Adds a new debug-only message for each one
6502that is released.
6503
6504Audited/updated all ACPICA return macros and the function debug depth
6505counter: 1) Ensure that all functions that use the various TRACE macros
6506also use the appropriate ACPICA return macros. 2) Ensure that all normal
6507return statements surround the return expression (value) with parens to
6508ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
6509Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
6510
6511Global source code changes/maintenance: All extra lines at the start and
6512end of each source file have been removed for consistency. Also, within
6513comments, all new sentences start with a single space instead of a double
6514space, again for consistency across the code base.
6515
6516Example Code and Data Size: These are the sizes for the OS-independent
6517acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6518debug version of the code includes the debug output trace mechanism and
6519has a much larger code and data size.
6520
6521  Previous Release:
6522    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6523    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6524  Current Release:
6525    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
6526    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6527
6528
65292) iASL Compiler/Disassembler and Tools:
6530
6531AcpiExec: Improved the algorithm used for memory leak/corruption
6532detection. Added some intelligence to the code that maintains the global
6533list of allocated memory. The list is now ordered by allocated memory
6534address, significantly improving performance. When running AcpiExec on
6535the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
6536on the platform and/or the environment. Note, this performance
6537enhancement affects the AcpiExec utility only, not the kernel-resident
6538ACPICA code.
6539
6540Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
6541the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
6542incorrect table offset reported for invalid opcodes. Report the original
654332-bit value for bad ACPI_NAMEs (as well as the repaired name.)
6544
6545Disassembler: Enhanced the -vt option to emit the binary table data in
6546hex format to assist with debugging.
6547
6548Fixed a potential filename buffer overflow in osunixdir.c. Increased the
6549size of file structure. Colin Ian King.
6550
6551----------------------------------------
655213 September 2012. Summary of changes for version 20120913:
6553
6554
65551) ACPICA Kernel-resident Subsystem:
6556
6557ACPI 5.0: Added two new notify types for the Hardware Error Notification
6558Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
6559and
6560MCE(6).
6561
6562Table Manager: Merged/removed duplicate code in the root table resize
6563functions. One function is external, the other is internal. Lv Zheng,
6564ACPICA
6565BZ 846.
6566
6567Makefiles: Completely removed the obsolete "Linux" makefiles under
6568acpica/generate/linux. These makefiles are obsolete and have been
6569replaced
6570by
6571the generic unix makefiles under acpica/generate/unix.
6572
6573Makefiles: Ensure that binary files always copied properly. Minor rule
6574change
6575to ensure that the final binary output files are always copied up to the
6576appropriate binary directory (bin32 or bin64.)
6577
6578Example Code and Data Size: These are the sizes for the OS-independent
6579acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6580debug
6581version of the code includes the debug output trace mechanism and has a
6582much
6583larger code and data size.
6584
6585  Previous Release:
6586    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6587    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6588  Current Release:
6589    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6590    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6591
6592
65932) iASL Compiler/Disassembler and Tools:
6594
6595Disassembler: Fixed a possible fault during the disassembly of resource
6596descriptors when a second parse is required because of the invocation of
6597external control methods within the table. With assistance from
6598adq@lidskialf.net. ACPICA BZ 976.
6599
6600iASL: Fixed a namepath optimization problem. An error can occur if the
6601parse
6602node that contains the namepath to be optimized does not have a parent
6603node
6604that is a named object. This change fixes the problem.
6605
6606iASL: Fixed a regression where the AML file is not deleted on errors. The
6607AML
6608output file should be deleted if there are any errors during the
6609compiler.
6610The
6611only exception is if the -f (force output) option is used. ACPICA BZ 974.
6612
6613iASL: Added a feature to automatically increase internal line buffer
6614sizes.
6615Via realloc(), automatically increase the internal line buffer sizes as
6616necessary to support very long source code lines. The current version of
6617the
6618preprocessor requires a buffer long enough to contain full source code
6619lines.
6620This change increases the line buffer(s) if the input lines go beyond the
6621current buffer size. This eliminates errors that occurred when a source
6622code
6623line was longer than the buffer.
6624
6625iASL: Fixed a problem with constant folding in method declarations. The
6626SyncLevel term is a ByteConstExpr, and incorrect code would be generated
6627if a
6628Type3 opcode was used.
6629
6630Debugger: Improved command help support. For incorrect argument count,
6631display
6632full help for the command. For help command itself, allow an argument to
6633specify a command.
6634
6635Test Suites: Several bug fixes for the ASLTS suite reduces the number of
6636errors during execution of the suite. Guan Chao.
6637
6638----------------------------------------
663916 August 2012. Summary of changes for version 20120816:
6640
6641
66421) ACPICA Kernel-resident Subsystem:
6643
6644Removed all use of the deprecated _GTS and _BFS predefined methods. The
6645_GTS
6646(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
6647deprecated and will probably be removed from the ACPI specification.
6648Windows
6649does not invoke them, and reportedly never will. The final nail in the
6650coffin
6651is that the ACPI specification states that these methods must be run with
6652interrupts off, which is not going to happen in a kernel interpreter.
6653Note:
6654Linux has removed all use of the methods also. It was discovered that
6655invoking these functions caused failures on some machines, probably
6656because
6657they were never tested since Windows does not call them. Affects two
6658external
6659interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
6660ACPICA BZ 969.
6661
6662Implemented support for complex bit-packed buffers returned from the _PLD
6663(Physical Location of Device) predefined method. Adds a new external
6664interface, AcpiDecodePldBuffer that parses the buffer into a more usable
6665C
6666structure. Note: C Bitfields cannot be used for this type of predefined
6667structure since the memory layout of individual bitfields is not defined
6668by
6669the C language. In addition, there are endian concerns where a compiler
6670will
6671change the bitfield ordering based on the machine type. The new ACPICA
6672interface eliminates these issues, and should be called after _PLD is
6673executed. ACPICA BZ 954.
6674
6675Implemented a change to allow a scope change to root (via "Scope (\)")
6676during
6677execution of module-level ASL code (code that is executed at table load
6678time.) Lin Ming.
6679
6680Added the Windows8/Server2012 string for the _OSI method. This change
6681adds
6682a
6683new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
66842012.
6685
6686Added header support for the new ACPI tables DBG2 (Debug Port Table Type
66872)
6688and CSRT (Core System Resource Table).
6689
6690Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
6691names. This simplifies access to the buffers returned by these predefined
6692names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
6693
6694GPE support: Removed an extraneous parameter from the various low-level
6695internal GPE functions. Tang Feng.
6696
6697Removed the linux makefiles from the unix packages. The generate/linux
6698makefiles are obsolete and have been removed from the unix tarball
6699release
6700packages. The replacement makefiles are under generate/unix, and there is
6701a
6702top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
6703
6704Updates for Unix makefiles:
67051) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
67062) Update linker flags (move to end of command line) for AcpiExec
6707utility.
6708Guan Chao.
6709
6710Split ACPICA initialization functions to new file, utxfinit.c. Split from
6711utxface.c to improve modularity and reduce file size.
6712
6713Example Code and Data Size: These are the sizes for the OS-independent
6714acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6715debug version of the code includes the debug output trace mechanism and
6716has a
6717much larger code and data size.
6718
6719  Previous Release:
6720    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6721    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6722  Current Release:
6723    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6724    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6725
6726
67272) iASL Compiler/Disassembler and Tools:
6728
6729iASL: Fixed a problem with constant folding for fixed-length constant
6730expressions. The constant-folding code was not being invoked for constant
6731expressions that allow the use of type 3/4/5 opcodes to generate
6732constants
6733for expressions such as ByteConstExpr, WordConstExpr, etc. This could
6734result
6735in the generation of invalid AML bytecode. ACPICA BZ 970.
6736
6737iASL: Fixed a generation issue on newer versions of Bison. Newer versions
6738apparently automatically emit some of the necessary externals. This
6739change
6740handles these versions in order to eliminate generation warnings.
6741
6742Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
6743
6744Disassembler: Add support to decode _PLD buffers. The decoded buffer
6745appears
6746within comments in the output file.
6747
6748Debugger: Fixed a regression with the "Threads" command where
6749AE_BAD_PARAMETER was always returned.
6750
6751----------------------------------------
675211 July 2012. Summary of changes for version 20120711:
6753
67541) ACPICA Kernel-resident Subsystem:
6755
6756Fixed a possible fault in the return package object repair code. Fixes a
6757problem that can occur when a lone package object is wrapped with an
6758outer
6759package object in order to force conformance to the ACPI specification.
6760Can
6761affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
6762_DLM,
6763_CSD, _PSD, _TSD.
6764
6765Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
6766PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
6767ARB_DIS bit must be implemented in the host-dependent C3 processor power
6768state
6769support. Note, ARB_DIS is obsolete and only applies to older chipsets,
6770both
6771Intel and other vendors. (for Intel: ICH4-M and earlier)
6772
6773This change removes the code to disable/enable bus master arbitration
6774during
6775suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
6776causes
6777resume problems on some machines. The change has been in use for over
6778seven
6779years within Linux.
6780
6781Implemented two new external interfaces to support host-directed dynamic
6782ACPI
6783table load and unload. They are intended to simplify the host
6784implementation
6785of hot-plug support:
6786  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
6787  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
6788table.
6789See the ACPICA reference for additional details. Adds one new file,
6790components/tables/tbxfload.c
6791
6792Implemented and deployed two new interfaces for errors and warnings that
6793are
6794known to be caused by BIOS/firmware issues:
6795  AcpiBiosError: Prints "ACPI Firmware Error" message.
6796  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6797Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6798table
6799and FADT errors. Additional deployment to be completed as appropriate in
6800the
6801future. The associated conditional macros are ACPI_BIOS_ERROR and
6802ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6803ACPICA
6804BZ
6805843.
6806
6807Implicit notify support: ensure that no memory allocation occurs within a
6808critical region. This fix moves a memory allocation outside of the time
6809that a
6810spinlock is held. Fixes issues on systems that do not allow this
6811behavior.
6812Jung-uk Kim.
6813
6814Split exception code utilities and tables into a new file,
6815utilities/utexcep.c
6816
6817Example Code and Data Size: These are the sizes for the OS-independent
6818acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6819debug
6820version of the code includes the debug output trace mechanism and has a
6821much
6822larger code and data size.
6823
6824  Previous Release:
6825    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6826    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6827  Current Release:
6828    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6829    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6830
6831
68322) iASL Compiler/Disassembler and Tools:
6833
6834iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6835of
68360. Jung-uk Kim.
6837
6838Debugger: Enhanced the "tables" command to emit additional information
6839about
6840the current set of ACPI tables, including the owner ID and flags decode.
6841
6842Debugger: Reimplemented the "unload" command to use the new
6843AcpiUnloadParentTable external interface. This command was disable
6844previously
6845due to need for an unload interface.
6846
6847AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6848option
6849will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6850
6851----------------------------------------
685220 June 2012. Summary of changes for version 20120620:
6853
6854
68551) ACPICA Kernel-resident Subsystem:
6856
6857Implemented support to expand the "implicit notify" feature to allow
6858multiple
6859devices to be notified by a single GPE. This feature automatically
6860generates a
6861runtime device notification in the absence of a BIOS-provided GPE control
6862method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6863notify is
6864provided by ACPICA for Windows compatibility, and is a workaround for
6865BIOS
6866AML
6867code errors. See the description of the AcpiSetupGpeForWake interface in
6868the
6869APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6870
6871Changed some comments and internal function names to simplify and ensure
6872correctness of the Linux code translation. No functional changes.
6873
6874Example Code and Data Size: These are the sizes for the OS-independent
6875acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6876debug
6877version of the code includes the debug output trace mechanism and has a
6878much
6879larger code and data size.
6880
6881  Previous Release:
6882    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6883    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6884  Current Release:
6885    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6886    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6887
6888
68892) iASL Compiler/Disassembler and Tools:
6890
6891Disassembler: Added support to emit short, commented descriptions for the
6892ACPI
6893predefined names in order to improve the readability of the disassembled
6894output. ACPICA BZ 959. Changes include:
6895  1) Emit descriptions for all standard predefined names (_INI, _STA,
6896_PRW,
6897etc.)
6898  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6899  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6900etc.)
6901
6902AcpiSrc: Fixed several long-standing Linux code translation issues.
6903Argument
6904descriptions in function headers are now translated properly to lower
6905case
6906and
6907underscores. ACPICA BZ 961. Also fixes translation problems such as
6908these:
6909(old -> new)
6910  i_aSL -> iASL
6911  00-7_f -> 00-7F
6912  16_k -> 16K
6913  local_fADT -> local_FADT
6914  execute_oSI -> execute_OSI
6915
6916iASL: Fixed a problem where null bytes were inadvertently emitted into
6917some
6918listing files.
6919
6920iASL: Added the existing debug options to the standard help screen. There
6921are
6922no longer two different help screens. ACPICA BZ 957.
6923
6924AcpiHelp: Fixed some typos in the various predefined name descriptions.
6925Also
6926expand some of the descriptions where appropriate.
6927
6928iASL: Fixed the -ot option (display compile times/statistics). Was not
6929working
6930properly for standard output; only worked for the debug file case.
6931
6932----------------------------------------
693318 May 2012. Summary of changes for version 20120518:
6934
6935
69361) ACPICA Core Subsystem:
6937
6938Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6939defined
6940to block until asynchronous events such as notifies and GPEs have
6941completed.
6942Within ACPICA, it is only called before a notify or GPE handler is
6943removed/uninstalled. It also may be useful for the host OS within related
6944drivers such as the Embedded Controller driver. See the ACPICA reference
6945for
6946additional information. ACPICA BZ 868.
6947
6948ACPI Tables: Added a new error message for a possible overflow failure
6949during
6950the conversion of FADT 32-bit legacy register addresses to internal
6951common
695264-
6953bit GAS structure representation. The GAS has a one-byte "bit length"
6954field,
6955thus limiting the register length to 255 bits. ACPICA BZ 953.
6956
6957Example Code and Data Size: These are the sizes for the OS-independent
6958acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6959debug
6960version of the code includes the debug output trace mechanism and has a
6961much
6962larger code and data size.
6963
6964  Previous Release:
6965    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6966    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6967  Current Release:
6968    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6969    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6970
6971
69722) iASL Compiler/Disassembler and Tools:
6973
6974iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6975macro.
6976This keyword was added late in the ACPI 5.0 release cycle and was not
6977implemented until now.
6978
6979Disassembler: Added support for Operation Region externals. Adds missing
6980support for operation regions that are defined in another table, and
6981referenced locally via a Field or BankField ASL operator. Now generates
6982the
6983correct External statement.
6984
6985Disassembler: Several additional fixes for the External() statement
6986generation
6987related to some ASL operators. Also, order the External() statements
6988alphabetically in the disassembler output. Fixes the External()
6989generation
6990for
6991the Create* field, Alias, and Scope operators:
6992 1) Create* buffer field operators - fix type mismatch warning on
6993disassembly
6994 2) Alias - implement missing External support
6995 3) Scope - fix to make sure all necessary externals are emitted.
6996
6997iASL: Improved pathname support. For include files, merge the prefix
6998pathname
6999with the file pathname and eliminate unnecessary components. Convert
7000backslashes in all pathnames to forward slashes, for readability. Include
7001file
7002pathname changes affect both #include and Include() type operators.
7003
7004iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
7005end
7006of a valid line by inserting a newline and then returning the EOF during
7007the
7008next call to GetNextLine. Prevents the line from being ignored due to EOF
7009condition.
7010
7011iASL: Implemented some changes to enhance the IDE support (-vi option.)
7012Error
7013and Warning messages are now correctly recognized for both the source
7014code
7015browser and the global error and warning counts.
7016
7017----------------------------------------
701820 April 2012. Summary of changes for version 20120420:
7019
7020
70211) ACPICA Core Subsystem:
7022
7023Implemented support for multiple notify handlers. This change adds
7024support
7025to
7026allow multiple system and device notify handlers on Device, Thermal Zone,
7027and
7028Processor objects. This can simplify the host OS notification
7029implementation.
7030Also re-worked and restructured the entire notify support code to
7031simplify
7032handler installation, handler removal, notify event queuing, and notify
7033dispatch to handler(s). Note: there can still only be two global notify
7034handlers - one for system notifies and one for device notifies. There are
7035no
7036changes to the existing handler install/remove interfaces. Lin Ming, Bob
7037Moore, Rafael Wysocki.
7038
7039Fixed a regression in the package repair code where the object reference
7040count was calculated incorrectly. Regression was introduced in the commit
7041"Support to add Package wrappers".
7042
7043Fixed a couple possible memory leaks in the AML parser, in the error
7044recovery
7045path. Jesper Juhl, Lin Ming.
7046
7047Example Code and Data Size: These are the sizes for the OS-independent
7048acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7049debug version of the code includes the debug output trace mechanism and
7050has a
7051much larger code and data size.
7052
7053  Previous Release:
7054    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
7055    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7056  Current Release:
7057    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
7058    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
7059
7060
70612) iASL Compiler/Disassembler and Tools:
7062
7063iASL: Fixed a problem with the resource descriptor support where the
7064length
7065of the StartDependentFn and StartDependentFnNoPrio descriptors were not
7066included in cumulative descriptor offset, resulting in incorrect values
7067for
7068resource tags within resource descriptors appearing after a
7069StartDependent*
7070descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
7071
7072iASL and Preprocessor: Implemented full support for the #line directive
7073to
7074correctly track original source file line numbers through the .i
7075preprocessor
7076output file - for error and warning messages.
7077
7078iASL: Expand the allowable byte constants for address space IDs.
7079Previously,
7080the allowable range was 0x80-0xFF (user-defined spaces), now the range is
70810x0A-0xFF to allow for custom and new IDs without changing the compiler.
7082
7083iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
7084
7085iASL: Add option to completely disable the preprocessor (-Pn).
7086
7087iASL: Now emit all error/warning messages to standard error (stderr) by
7088default (instead of the previous stdout).
7089
7090ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
7091Update
7092for resource descriptor offset fix above. Update/cleanup error output
7093routines. Enable and send iASL errors/warnings to an error logfile
7094(error.txt). Send all other iASL output to a logfile (compiler.txt).
7095Fixed
7096several extraneous "unrecognized operator" messages.
7097
7098----------------------------------------
709920 March 2012. Summary of changes for version 20120320:
7100
7101
71021) ACPICA Core Subsystem:
7103
7104Enhanced the sleep/wake interfaces to optionally execute the _GTS method
7105(Going To Sleep) and the _BFS method (Back From Sleep). Windows
7106apparently
7107does not execute these methods, and therefore these methods are often
7108untested. It has been seen on some systems where the execution of these
7109methods causes errors and also prevents the machine from entering S5. It
7110is
7111therefore suggested that host operating systems do not execute these
7112methods
7113by default. In the future, perhaps these methods can be optionally
7114executed
7115based on the age of the system and/or what is the newest version of
7116Windows
7117that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
7118and
7119AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
7120Ming.
7121
7122Fixed a problem where the length of the local/common FADT was set too
7123early.
7124The local FADT table length cannot be set to the common length until the
7125original length has been examined. There is code that checks the table
7126length
7127and sets various fields appropriately. This can affect older machines
7128with
7129early FADT versions. For example, this can cause inadvertent writes to
7130the
7131CST_CNT register. Julian Anastasov.
7132
7133Fixed a mapping issue related to a physical table override. Use the
7134deferred
7135mapping mechanism for tables loaded via the physical override OSL
7136interface.
7137This allows for early mapping before the virtual memory manager is
7138available.
7139Thomas Renninger, Bob Moore.
7140
7141Enhanced the automatic return-object repair code: Repair a common problem
7142with
7143predefined methods that are defined to return a variable-length Package
7144of
7145sub-objects. If there is only one sub-object, some BIOS ASL code
7146mistakenly
7147simply returns the single object instead of a Package with one sub-
7148object.
7149This new support will repair this error by wrapping a Package object
7150around
7151the original object, creating the correct and expected Package with one
7152sub-
7153object. Names that can be repaired in this manner include: _ALR, _CSD,
7154_HPX,
7155_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
7156939.
7157
7158Changed the exception code returned for invalid ACPI paths passed as
7159parameters to external interfaces such as AcpiEvaluateObject. Was
7160AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
7161
7162Example Code and Data Size: These are the sizes for the OS-independent
7163acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7164debug
7165version of the code includes the debug output trace mechanism and has a
7166much
7167larger code and data size.
7168
7169  Previous Release:
7170    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
7171    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7172  Current Release:
7173    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
7174    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7175
7176
71772) iASL Compiler/Disassembler and Tools:
7178
7179iASL: Added the infrastructure and initial implementation of a integrated
7180C-
7181like preprocessor. This will simplify BIOS development process by
7182eliminating
7183the need for a separate preprocessing step during builds. On Windows, it
7184also
7185eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
7186features including full #define() macro support are still under
7187development.
7188These preprocessor directives are supported:
7189    #define
7190    #elif
7191    #else
7192    #endif
7193    #error
7194    #if
7195    #ifdef
7196    #ifndef
7197    #include
7198    #pragma message
7199    #undef
7200    #warning
7201In addition, these new command line options are supported:
7202    -D <symbol> Define symbol for preprocessor use
7203    -li         Create preprocessed output file (*.i)
7204    -P          Preprocess only and create preprocessor output file (*.i)
7205
7206Table Compiler: Fixed a problem where the equals operator within an
7207expression
7208did not work properly.
7209
7210Updated iASL to use the current versions of Bison/Flex. Updated the
7211Windows
7212project file to invoke these tools from the standard location. ACPICA BZ
7213904.
7214Versions supported:
7215    Flex for Windows:  V2.5.4
7216    Bison for Windows: V2.4.1
7217
7218----------------------------------------
721915 February 2012. Summary of changes for version 20120215:
7220
7221
72221) ACPICA Core Subsystem:
7223
7224There have been some major changes to the sleep/wake support code, as
7225described below (a - e).
7226
7227a) The AcpiLeaveSleepState has been split into two interfaces, similar to
7228AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
7229AcpiLeaveSleepStatePrep. This allows the host to perform actions between
7230the
7231time the _BFS method is called and the _WAK method is called. NOTE: all
7232hosts
7233must update their wake/resume code or else sleep/wake will not work
7234properly.
7235Rafael Wysocki.
7236
7237b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
7238_WAK
7239method. Some machines require that the GPEs are enabled before the _WAK
7240method
7241is executed. Thomas Renninger.
7242
7243c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
7244bit.
7245Some BIOS code assumes that WAK_STS will be cleared on resume and use it
7246to
7247determine whether the system is rebooting or resuming. Matthew Garrett.
7248
7249d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
7250Sleep) to
7251match the ACPI specification requirement. Rafael Wysocki.
7252
7253e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
7254registers within the V5 FADT. This support adds two new files:
7255hardware/hwesleep.c implements the support for the new registers. Moved
7256all
7257sleep/wake external interfaces to hardware/hwxfsleep.c.
7258
7259
7260Added a new OSL interface for ACPI table overrides,
7261AcpiOsPhysicalTableOverride. This interface allows the host to override a
7262table via a physical address, instead of the logical address required by
7263AcpiOsTableOverride. This simplifies the host implementation. Initial
7264implementation by Thomas Renninger. The ACPICA implementation creates a
7265single
7266shared function for table overrides that attempts both a logical and a
7267physical override.
7268
7269Expanded the OSL memory read/write interfaces to 64-bit data
7270(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
7271transfer support for GAS register structures passed to AcpiRead and
7272AcpiWrite.
7273
7274Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
7275custom
7276build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
7277model.
7278See the ACPICA reference for details. ACPICA BZ 942. This option removes
7279about
728010% of the code and 5% of the static data, and the following hardware
7281ACPI
7282features become unavailable:
7283    PM Event and Control registers
7284    SCI interrupt (and handler)
7285    Fixed Events
7286    General Purpose Events (GPEs)
7287    Global Lock
7288    ACPI PM timer
7289
7290Updated the unix tarball directory structure to match the ACPICA git
7291source
7292tree. This ensures that the generic unix makefiles work properly (in
7293generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
7294867.
7295
7296Updated the return value of the _REV predefined method to integer value 5
7297to
7298reflect ACPI 5.0 support.
7299
7300Moved the external ACPI PM timer interface prototypes to the public
7301acpixf.h
7302file where they belong.
7303
7304Example Code and Data Size: These are the sizes for the OS-independent
7305acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7306debug
7307version of the code includes the debug output trace mechanism and has a
7308much
7309larger code and data size.
7310
7311  Previous Release:
7312    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
7313    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
7314  Current Release:
7315    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
7316    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7317
7318
73192) iASL Compiler/Disassembler and Tools:
7320
7321Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
7322descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
7323incorrectly displayed.
7324
7325AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
7326specification.
7327
7328----------------------------------------
732911 January 2012. Summary of changes for version 20120111:
7330
7331
73321) ACPICA Core Subsystem:
7333
7334Implemented a new mechanism to allow host device drivers to check for
7335address
7336range conflicts with ACPI Operation Regions. Both SystemMemory and
7337SystemIO
7338address spaces are supported. A new external interface,
7339AcpiCheckAddressRange,
7340allows drivers to check an address range against the ACPI namespace. See
7341the
7342ACPICA reference for additional details. Adds one new file,
7343utilities/utaddress.c. Lin Ming, Bob Moore.
7344
7345Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
7346Control
7347and
7348Status registers, update the ACPI 5.0 flags, and update internal data
7349structures to handle an FADT larger than 256 bytes. The size of the ACPI
73505.0
7351FADT is 268 bytes.
7352
7353Updated all ACPICA copyrights and signons to 2012. Added the 2012
7354copyright to
7355all module headers and signons, including the standard Linux header. This
7356affects virtually every file in the ACPICA core subsystem, iASL compiler,
7357and
7358all ACPICA utilities.
7359
7360Example Code and Data Size: These are the sizes for the OS-independent
7361acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7362debug
7363version of the code includes the debug output trace mechanism and has a
7364much
7365larger code and data size.
7366
7367  Previous Release:
7368    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
7369    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
7370  Current Release:
7371    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
7372    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
7373
7374
73752) iASL Compiler/Disassembler and Tools:
7376
7377Disassembler: fixed a problem with the automatic resource tag generation
7378support. Fixes a problem where the resource tags are inadvertently not
7379constructed if the table being disassembled contains external references
7380to
7381control methods. Moved the actual construction of the tags to after the
7382final
7383namespace is constructed (after 2nd parse is invoked due to external
7384control
7385method references.) ACPICA BZ 941.
7386
7387Table Compiler: Make all "generic" operators caseless. These are the
7388operators
7389like UINT8, String, etc. Making these caseless improves ease-of-use.
7390ACPICA BZ
7391934.
7392
7393----------------------------------------
739423 November 2011. Summary of changes for version 20111123:
7395
73960) ACPI 5.0 Support:
7397
7398This release contains full support for the ACPI 5.0 specification, as
7399summarized below.
7400
7401Reduced Hardware Support:
7402-------------------------
7403
7404This support allows for ACPI systems without the usual ACPI hardware.
7405This
7406support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
7407will
7408not attempt to initialize or use any of the usual ACPI hardware. Note,
7409when
7410this flag is set, all of the following ACPI hardware is assumed to be not
7411present and is not initialized or accessed:
7412
7413    General Purpose Events (GPEs)
7414    Fixed Events (PM1a/PM1b and PM Control)
7415    Power Management Timer and Console Buttons (power/sleep)
7416    Real-time Clock Alarm
7417    Global Lock
7418    System Control Interrupt (SCI)
7419    The FACS is assumed to be non-existent
7420
7421ACPI Tables:
7422------------
7423
7424All new tables and updates to existing tables are fully supported in the
7425ACPICA headers (for use by device drivers), the disassembler, and the
7426iASL
7427Data Table Compiler. ACPI 5.0 defines these new tables:
7428
7429    BGRT        /* Boot Graphics Resource Table */
7430    DRTM        /* Dynamic Root of Trust for Measurement table */
7431    FPDT        /* Firmware Performance Data Table */
7432    GTDT        /* Generic Timer Description Table */
7433    MPST        /* Memory Power State Table */
7434    PCCT        /* Platform Communications Channel Table */
7435    PMTT        /* Platform Memory Topology Table */
7436    RASF        /* RAS Feature table */
7437
7438Operation Regions/SpaceIDs:
7439---------------------------
7440
7441All new operation regions are fully supported by the iASL compiler, the
7442disassembler, and the ACPICA runtime code (for dispatch to region
7443handlers.)
7444The new operation region Space IDs are:
7445
7446    GeneralPurposeIo
7447    GenericSerialBus
7448
7449Resource Descriptors:
7450---------------------
7451
7452All new ASL resource descriptors are fully supported by the iASL
7453compiler,
7454the
7455ASL/AML disassembler, and the ACPICA runtime Resource Manager code
7456(including
7457all new predefined resource tags). New descriptors are:
7458
7459    FixedDma
7460    GpioIo
7461    GpioInt
7462    I2cSerialBus
7463    SpiSerialBus
7464    UartSerialBus
7465
7466ASL/AML Operators, New and Modified:
7467------------------------------------
7468
7469One new operator is added, the Connection operator, which is used to
7470associate
7471a GeneralPurposeIo or GenericSerialBus resource descriptor with
7472individual
7473field objects within an operation region. Several new protocols are
7474associated
7475with the AccessAs operator. All are fully supported by the iASL compiler,
7476disassembler, and runtime ACPICA AML interpreter:
7477
7478    Connection                      // Declare Field Connection
7479attributes
7480    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
7481    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
7482Protocol
7483    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
7484    RawDataBuffer                       // Data type for Vendor Data
7485fields
7486
7487Predefined ASL/AML Objects:
7488---------------------------
7489
7490All new predefined objects/control-methods are supported by the iASL
7491compiler
7492and the ACPICA runtime validation/repair (arguments and return values.)
7493New
7494predefined names include the following:
7495
7496Standard Predefined Names (Objects or Control Methods):
7497    _AEI, _CLS, _CPC, _CWS, _DEP,
7498    _DLM, _EVT, _GCP, _CRT, _GWS,
7499    _HRV, _PRE, _PSE, _SRT, _SUB.
7500
7501Resource Tags (Names used to access individual fields within resource
7502descriptors):
7503    _DBT, _DPL, _DRS, _END, _FLC,
7504    _IOR, _LIN, _MOD, _PAR, _PHA,
7505    _PIN, _PPI, _POL, _RXL, _SLV,
7506    _SPE, _STB, _TXL, _VEN.
7507
7508ACPICA External Interfaces:
7509---------------------------
7510
7511Several new interfaces have been defined for use by ACPI-related device
7512drivers and other host OS services:
7513
7514AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
7515to
7516acquire and release AML mutexes that are defined in the DSDT/SSDT tables
7517provided by the BIOS. They are intended to be used in conjunction with
7518the
7519ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
7520mutual exclusion with the AML code/interpreter.
7521
7522AcpiGetEventResources: Returns the (formatted) resource descriptors as
7523defined
7524by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
7525provides
7526resource descriptors associated with hardware-reduced platform events,
7527similar
7528to the AcpiGetCurrentResources interface.
7529
7530Operation Region Handlers: For General Purpose IO and Generic Serial Bus
7531operation regions, information about the Connection() object and any
7532optional
7533length information is passed to the region handler within the Context
7534parameter.
7535
7536AcpiBufferToResource: This interface converts a raw AML buffer containing
7537a
7538resource template or resource descriptor to the ACPI_RESOURCE internal
7539format
7540suitable for use by device drivers. Can be used by an operation region
7541handler
7542to convert the Connection() buffer object into a ACPI_RESOURCE.
7543
7544Miscellaneous/Tools/TestSuites:
7545-------------------------------
7546
7547Support for extended _HID names (Four alpha characters instead of three).
7548Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
7549Support for ACPI 5.0 features in the ASLTS test suite.
7550Fully updated documentation (ACPICA and iASL reference documents.)
7551
7552ACPI Table Definition Language:
7553-------------------------------
7554
7555Support for this language was implemented and released as a subsystem of
7556the
7557iASL compiler in 2010. (See the iASL compiler User Guide.)
7558
7559
7560Non-ACPI 5.0 changes for this release:
7561--------------------------------------
7562
75631) ACPICA Core Subsystem:
7564
7565Fix a problem with operation region declarations where a failure can
7566occur
7567if
7568the region name and an argument that evaluates to an object (such as the
7569region address) are in different namespace scopes. Lin Ming, ACPICA BZ
7570937.
7571
7572Do not abort an ACPI table load if an invalid space ID is found within.
7573This
7574will be caught later if the offending method is executed. ACPICA BZ 925.
7575
7576Fixed an issue with the FFixedHW space ID where the ID was not always
7577recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
7578
7579Fixed a problem with the 32-bit generation of the unix-specific OSL
7580(osunixxf.c). Lin Ming, ACPICA BZ 936.
7581
7582Several changes made to enable generation with the GCC 4.6 compiler.
7583ACPICA BZ
7584935.
7585
7586New error messages: Unsupported I/O requests (not 8/16/32 bit), and
7587Index/Bank
7588field registers out-of-range.
7589
75902) iASL Compiler/Disassembler and Tools:
7591
7592iASL: Implemented the __PATH__ operator, which returns the full pathname
7593of
7594the current source file.
7595
7596AcpiHelp: Automatically display expanded keyword information for all ASL
7597operators.
7598
7599Debugger: Add "Template" command to disassemble/dump resource template
7600buffers.
7601
7602Added a new master script to generate and execute the ASLTS test suite.
7603Automatically handles 32- and 64-bit generation. See tests/aslts.sh
7604
7605iASL: Fix problem with listing generation during processing of the
7606Switch()
7607operator where AML listing was disabled until the entire Switch block was
7608completed.
7609
7610iASL: Improve support for semicolon statement terminators. Fix "invalid
7611character" message for some cases when the semicolon is used. Semicolons
7612are
7613now allowed after every <Term> grammar element. ACPICA BZ 927.
7614
7615iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
7616923.
7617
7618Disassembler: Fix problem with disassembly of the DataTableRegion
7619operator
7620where an inadvertent "Unhandled deferred opcode" message could be
7621generated.
7622
76233) Example Code and Data Size
7624
7625These are the sizes for the OS-independent acpica.lib produced by the
7626Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7627includes the debug output trace mechanism and has a much larger code and
7628data
7629size.
7630
7631  Previous Release:
7632    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7633    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7634  Current Release:
7635    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
7636    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
7637
7638----------------------------------------
763922 September 2011. Summary of changes for version 20110922:
7640
76410) ACPI 5.0 News:
7642
7643Support for ACPI 5.0 in ACPICA has been underway for several months and
7644will
7645be released at the same time that ACPI 5.0 is officially released.
7646
7647The ACPI 5.0 specification is on track for release in the next few
7648months.
7649
76501) ACPICA Core Subsystem:
7651
7652Fixed a problem where the maximum sleep time for the Sleep() operator was
7653intended to be limited to two seconds, but was inadvertently limited to
765420
7655seconds instead.
7656
7657Linux and Unix makefiles: Added header file dependencies to ensure
7658correct
7659generation of ACPICA core code and utilities. Also simplified the
7660makefiles
7661considerably through the use of the vpath variable to specify search
7662paths.
7663ACPICA BZ 924.
7664
76652) iASL Compiler/Disassembler and Tools:
7666
7667iASL: Implemented support to check the access length for all fields
7668created to
7669access named Resource Descriptor fields. For example, if a resource field
7670is
7671defined to be two bits, a warning is issued if a CreateXxxxField() is
7672used
7673with an incorrect bit length. This is implemented for all current
7674resource
7675descriptor names. ACPICA BZ 930.
7676
7677Disassembler: Fixed a byte ordering problem with the output of 24-bit and
767856-
7679bit integers.
7680
7681iASL: Fixed a couple of issues associated with variable-length package
7682objects. 1) properly handle constants like One, Ones, Zero -- do not make
7683a
7684VAR_PACKAGE when these are used as a package length. 2) Allow the
7685VAR_PACKAGE
7686opcode (in addition to PACKAGE) when validating object types for
7687predefined
7688names.
7689
7690iASL: Emit statistics for all output files (instead of just the ASL input
7691and
7692AML output). Includes listings, hex files, etc.
7693
7694iASL: Added -G option to the table compiler to allow the compilation of
7695custom
7696ACPI tables. The only part of a table that is required is the standard
769736-
7698byte
7699ACPI header.
7700
7701AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
7702headers),
7703which also adds correct 64-bit support. Also, now all output filenames
7704are
7705completely lower case.
7706
7707AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
7708loading table files. A warning is issued for any such tables. The only
7709exception is an FADT. This also fixes a possible fault when attempting to
7710load
7711non-AML tables. ACPICA BZ 932.
7712
7713AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
7714a
7715missing table terminator could cause a fault when using the -p option.
7716
7717AcpiSrc: Fixed a possible divide-by-zero fault when generating file
7718statistics.
7719
77203) Example Code and Data Size
7721
7722These are the sizes for the OS-independent acpica.lib produced by the
7723Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7724includes the debug output trace mechanism and has a much larger code and
7725data
7726size.
7727
7728  Previous Release (VC 9.0):
7729    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7730    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7731  Current Release (VC 9.0):
7732    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7733    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7734
7735
7736----------------------------------------
773723 June 2011. Summary of changes for version 20110623:
7738
77391) ACPI CA Core Subsystem:
7740
7741Updated the predefined name repair mechanism to not attempt repair of a
7742_TSS
7743return object if a _PSS object is present. We can only sort the _TSS
7744return
7745package if there is no _PSS within the same scope. This is because if
7746_PSS
7747is
7748present, the ACPI specification dictates that the _TSS Power Dissipation
7749field
7750is to be ignored, and therefore some BIOSs leave garbage values in the
7751_TSS
7752Power field(s). In this case, it is best to just return the _TSS package
7753as-
7754is. Reported by, and fixed with assistance from Fenghua Yu.
7755
7756Added an option to globally disable the control method return value
7757validation
7758and repair. This runtime option can be used to disable return value
7759repair
7760if
7761this is causing a problem on a particular machine. Also added an option
7762to
7763AcpiExec (-dr) to set this disable flag.
7764
7765All makefiles and project files: Major changes to improve generation of
7766ACPICA
7767tools. ACPICA BZ 912:
7768    Reduce default optimization levels to improve compatibility
7769    For Linux, add strict-aliasing=0 for gcc 4
7770    Cleanup and simplify use of command line defines
7771    Cleanup multithread library support
7772    Improve usage messages
7773
7774Linux-specific header: update handling of THREAD_ID and pthread. For the
777532-
7776bit case, improve casting to eliminate possible warnings, especially with
7777the
7778acpica tools.
7779
7780Example Code and Data Size: These are the sizes for the OS-independent
7781acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7782debug
7783version of the code includes the debug output trace mechanism and has a
7784much
7785larger code and data size.
7786
7787  Previous Release (VC 9.0):
7788    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7789    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7790  Current Release (VC 9.0):
7791    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7792    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7793
77942) iASL Compiler/Disassembler and Tools:
7795
7796With this release, a new utility named "acpihelp" has been added to the
7797ACPICA
7798package. This utility summarizes the ACPI specification chapters for the
7799ASL
7800and AML languages. It generates under Linux/Unix as well as Windows, and
7801provides the following functionality:
7802    Find/display ASL operator(s) -- with description and syntax.
7803    Find/display ASL keyword(s) -- with exact spelling and descriptions.
7804    Find/display ACPI predefined name(s) -- with description, number
7805        of arguments, and the return value data type.
7806    Find/display AML opcode name(s) -- with opcode, arguments, and
7807grammar.
7808    Decode/display AML opcode -- with opcode name, arguments, and
7809grammar.
7810
7811Service Layers: Make multi-thread support configurable. Conditionally
7812compile
7813the multi-thread support so that threading libraries will not be linked
7814if
7815not
7816necessary. The only tool that requires multi-thread support is AcpiExec.
7817
7818iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7819of
7820Bison appear to want the interface to yyerror to be a const char * (or at
7821least this is a problem when generating iASL on some systems.) ACPICA BZ
7822923
7823Pierre Lejeune.
7824
7825Tools: Fix for systems where O_BINARY is not defined. Only used for
7826Windows
7827versions of the tools.
7828
7829----------------------------------------
783027 May 2011. Summary of changes for version 20110527:
7831
78321) ACPI CA Core Subsystem:
7833
7834ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7835table
7836signature. Now, only allow SSDT, OEMx, and a null signature. History:
7837    1) Originally, we checked the table signature for "SSDT" or "PSDT".
7838       (PSDT is now obsolete.)
7839    2) We added support for OEMx tables, signature "OEM" plus a fourth
7840       "don't care" character.
7841    3) Valid tables were encountered with a null signature, so we just
7842       gave up on validating the signature, (05/2008).
7843    4) We encountered non-AML tables such as the MADT, which caused
7844       interpreter errors and kernel faults. So now, we once again allow
7845       only SSDT, OEMx, and now, also a null signature. (05/2011).
7846
7847Added the missing _TDL predefined name to the global name list in order
7848to
7849enable validation. Affects both the core ACPICA code and the iASL
7850compiler.
7851
7852Example Code and Data Size: These are the sizes for the OS-independent
7853acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7854debug
7855version of the code includes the debug output trace mechanism and has a
7856much
7857larger code and data size.
7858
7859  Previous Release (VC 9.0):
7860    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7861    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7862  Current Release (VC 9.0):
7863    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7864    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7865
78662) iASL Compiler/Disassembler and Tools:
7867
7868Debugger/AcpiExec: Implemented support for "complex" method arguments on
7869the
7870debugger command line. This adds support beyond simple integers --
7871including
7872Strings, Buffers, and Packages. Includes support for nested packages.
7873Increased the default command line buffer size to accommodate these
7874arguments.
7875See the ACPICA reference for details and syntax. ACPICA BZ 917.
7876
7877Debugger/AcpiExec: Implemented support for "default" method arguments for
7878the
7879Execute/Debug command. Now, the debugger will always invoke a control
7880method
7881with the required number of arguments -- even if the command line
7882specifies
7883none or insufficient arguments. It uses default integer values for any
7884missing
7885arguments. Also fixes a bug where only six method arguments maximum were
7886supported instead of the required seven.
7887
7888Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7889and
7890also return status in order to prevent buffer overruns. See the ACPICA
7891reference for details and syntax. ACPICA BZ 921
7892
7893iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7894makefiles to simplify support for the two different but similar parser
7895generators, bison and yacc.
7896
7897Updated the generic unix makefile for gcc 4. The default gcc version is
7898now
7899expected to be 4 or greater, since options specific to gcc 4 are used.
7900
7901----------------------------------------
790213 April 2011. Summary of changes for version 20110413:
7903
79041) ACPI CA Core Subsystem:
7905
7906Implemented support to execute a so-called "orphan" _REG method under the
7907EC
7908device. This change will force the execution of a _REG method underneath
7909the
7910EC
7911device even if there is no corresponding operation region of type
7912EmbeddedControl. Fixes a problem seen on some machines and apparently is
7913compatible with Windows behavior. ACPICA BZ 875.
7914
7915Added more predefined methods that are eligible for automatic NULL
7916package
7917element removal. This change adds another group of predefined names to
7918the
7919list
7920of names that can be repaired by having NULL package elements dynamically
7921removed. This group are those methods that return a single variable-
7922length
7923package containing simple data types such as integers, buffers, strings.
7924This
7925includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7926_PSL,
7927_Sx,
7928and _TZD. ACPICA BZ 914.
7929
7930Split and segregated all internal global lock functions to a new file,
7931evglock.c.
7932
7933Updated internal address SpaceID for DataTable regions. Moved this
7934internal
7935space
7936id in preparation for ACPI 5.0 changes that will include some new space
7937IDs.
7938This
7939change should not affect user/host code.
7940
7941Example Code and Data Size: These are the sizes for the OS-independent
7942acpica.lib
7943produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7944version of
7945the code includes the debug output trace mechanism and has a much larger
7946code
7947and
7948data size.
7949
7950  Previous Release (VC 9.0):
7951    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7952    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7953  Current Release (VC 9.0):
7954    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7955    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7956
79572) iASL Compiler/Disassembler and Tools:
7958
7959iASL/DTC: Major update for new grammar features. Allow generic data types
7960in
7961custom ACPI tables. Field names are now optional. Any line can be split
7962to
7963multiple lines using the continuation char (\). Large buffers now use
7964line-
7965continuation character(s) and no colon on the continuation lines. See the
7966grammar
7967update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7968Moore.
7969
7970iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7971statements.
7972Since the parser stuffs a "zero" as the return value for these statements
7973(due
7974to
7975the underlying AML grammar), they were seen as "return with value" by the
7976iASL
7977semantic checking. They are now seen correctly as "null" return
7978statements.
7979
7980iASL: Check if a_REG declaration has a corresponding Operation Region.
7981Adds a
7982check for each _REG to ensure that there is in fact a corresponding
7983operation
7984region declaration in the same scope. If not, the _REG method is not very
7985useful
7986since it probably won't be executed. ACPICA BZ 915.
7987
7988iASL/DTC: Finish support for expression evaluation. Added a new
7989expression
7990parser
7991that implements c-style operator precedence and parenthesization. ACPICA
7992bugzilla
7993908.
7994
7995Disassembler/DTC: Remove support for () and <> style comments in data
7996tables.
7997Now
7998that DTC has full expression support, we don't want to have comment
7999strings
8000that
8001start with a parentheses or a less-than symbol. Now, only the standard /*
8002and
8003//
8004comments are supported, as well as the bracket [] comments.
8005
8006AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
8007"unusual"
8008headers in the acpidump file. Update the header validation to support
8009these
8010tables. Problem introduced in previous AcpiXtract version in the change
8011to
8012support "wrong checksum" error messages emitted by acpidump utility.
8013
8014iASL: Add a * option to generate all template files (as a synonym for
8015ALL)
8016as
8017in
8018"iasl -T *" or "iasl -T ALL".
8019
8020iASL/DTC: Do not abort compiler on fatal errors. We do not want to
8021completely
8022abort the compiler on "fatal" errors, simply should abort the current
8023compile.
8024This allows multiple compiles with a single (possibly wildcard) compiler
8025invocation.
8026
8027----------------------------------------
802816 March 2011. Summary of changes for version 20110316:
8029
80301) ACPI CA Core Subsystem:
8031
8032Fixed a problem caused by a _PRW method appearing at the namespace root
8033scope
8034during the setup of wake GPEs. A fault could occur if a _PRW directly
8035under
8036the
8037root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
8038
8039Implemented support for "spurious" Global Lock interrupts. On some
8040systems, a
8041global lock interrupt can occur without the pending flag being set. Upon
8042a
8043GL
8044interrupt, we now ensure that a thread is actually waiting for the lock
8045before
8046signaling GL availability. Rafael Wysocki, Bob Moore.
8047
8048Example Code and Data Size: These are the sizes for the OS-independent
8049acpica.lib
8050produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
8051version of
8052the code includes the debug output trace mechanism and has a much larger
8053code
8054and
8055data size.
8056
8057  Previous Release (VC 9.0):
8058    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8059    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8060  Current Release (VC 9.0):
8061    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
8062    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
8063
80642) iASL Compiler/Disassembler and Tools:
8065
8066Implemented full support for the "SLIC" ACPI table. Includes support in
8067the
8068header files, disassembler, table compiler, and template generator. Bob
8069Moore,
8070Lin Ming.
8071
8072AcpiXtract: Correctly handle embedded comments and messages from
8073AcpiDump.
8074Apparently some or all versions of acpidump will occasionally emit a
8075comment
8076like
8077"Wrong checksum", etc., into the dump file. This was causing problems for
8078AcpiXtract. ACPICA BZ 905.
8079
8080iASL: Fix the Linux makefile by removing an inadvertent double file
8081inclusion.
8082ACPICA BZ 913.
8083
8084AcpiExec: Update installation of operation region handlers. Install one
8085handler
8086for a user-defined address space. This is used by the ASL test suite
8087(ASLTS).
8088
8089----------------------------------------
809011 February 2011. Summary of changes for version 20110211:
8091
80921) ACPI CA Core Subsystem:
8093
8094Added a mechanism to defer _REG methods for some early-installed
8095handlers.
8096Most user handlers should be installed before call to
8097AcpiEnableSubsystem.
8098However, Event handlers and region handlers should be installed after
8099AcpiInitializeObjects. Override handlers for the "default" regions should
8100be
8101installed early, however. This change executes all _REG methods for the
8102default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
8103chicken/egg issues between them. ACPICA BZ 848.
8104
8105Implemented an optimization for GPE detection. This optimization will
8106simply
8107ignore GPE registers that contain no enabled GPEs -- there is no need to
8108read the register since this information is available internally. This
8109becomes more important on machines with a large GPE space. ACPICA
8110bugzilla
8111884. Lin Ming. Suggestion from Joe Liu.
8112
8113Removed all use of the highly unreliable FADT revision field. The
8114revision
8115number in the FADT has been found to be completely unreliable and cannot
8116be
8117trusted. Only the actual table length can be used to infer the version.
8118This
8119change updates the ACPICA core and the disassembler so that both no
8120longer
8121even look at the FADT version and instead depend solely upon the FADT
8122length.
8123
8124Fix an unresolved name issue for the no-debug and no-error-message source
8125generation cases. The _AcpiModuleName was left undefined in these cases,
8126but
8127it is actually needed as a parameter to some interfaces. Define
8128_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
8129
8130Split several large files (makefiles and project files updated)
8131  utglobal.c   -> utdecode.c
8132  dbcomds.c    -> dbmethod.c dbnames.c
8133  dsopcode.c   -> dsargs.c dscontrol.c
8134  dsload.c     -> dsload2.c
8135  aslanalyze.c -> aslbtypes.c aslwalks.c
8136
8137Example Code and Data Size: These are the sizes for the OS-independent
8138acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8139debug version of the code includes the debug output trace mechanism and
8140has
8141a much larger code and data size.
8142
8143  Previous Release (VC 9.0):
8144    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8145    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8146  Current Release (VC 9.0):
8147    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8148    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8149
81502) iASL Compiler/Disassembler and Tools:
8151
8152iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
8153These are useful C-style macros with the standard definitions. ACPICA
8154bugzilla 898.
8155
8156iASL/DTC: Added support for integer expressions and labels. Support for
8157full
8158expressions for all integer fields in all ACPI tables. Support for labels
8159in
8160"generic" portions of tables such as UEFI. See the iASL reference manual.
8161
8162Debugger: Added a command to display the status of global handlers. The
8163"handlers" command will display op region, fixed event, and miscellaneous
8164global handlers. installation status -- and for op regions, whether
8165default
8166or user-installed handler will be used.
8167
8168iASL: Warn if reserved method incorrectly returns a value. Many
8169predefined
8170names are defined such that they do not return a value. If implemented as
8171a
8172method, issue a warning if such a name explicitly returns a value. ACPICA
8173Bugzilla 855.
8174
8175iASL: Added detection of GPE method name conflicts. Detects a conflict
8176where
8177there are two GPE methods of the form _Lxy and _Exy in the same scope.
8178(For
8179example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
8180
8181iASL/DTC: Fixed a couple input scanner issues with comments and line
8182numbers. Comment remover could get confused and miss a comment ending.
8183Fixed
8184a problem with line counter maintenance.
8185
8186iASL/DTC: Reduced the severity of some errors from fatal to error. There
8187is
8188no need to abort on simple errors within a field definition.
8189
8190Debugger: Simplified the output of the help command. All help output now
8191in
8192a single screen, instead of help subcommands. ACPICA Bugzilla 897.
8193
8194----------------------------------------
819512 January 2011. Summary of changes for version 20110112:
8196
81971) ACPI CA Core Subsystem:
8198
8199Fixed a race condition between method execution and namespace walks that
8200can
8201possibly cause a fault. The problem was apparently introduced in version
820220100528 as a result of a performance optimization that reduces the
8203number
8204of
8205namespace walks upon method exit by using the delete_namespace_subtree
8206function instead of the delete_namespace_by_owner function used
8207previously.
8208Bug is a missing namespace lock in the delete_namespace_subtree function.
8209dana.myers@oracle.com
8210
8211Fixed several issues and a possible fault with the automatic "serialized"
8212method support. History: This support changes a method to "serialized" on
8213the
8214fly if the method generates an AE_ALREADY_EXISTS error, indicating the
8215possibility that it cannot handle reentrancy. This fix repairs a couple
8216of
8217issues seen in the field, especially on machines with many cores:
8218
8219    1) Delete method children only upon the exit of the last thread,
8220       so as to not delete objects out from under other running threads
8221      (and possibly causing a fault.)
8222    2) Set the "serialized" bit for the method only upon the exit of the
8223       Last thread, so as to not cause deadlock when running threads
8224       attempt to exit.
8225    3) Cleanup the use of the AML "MethodFlags" and internal method flags
8226       so that there is no longer any confusion between the two.
8227
8228    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
8229
8230Debugger: Now lock the namespace for duration of a namespace dump.
8231Prevents
8232issues if the namespace is changing dynamically underneath the debugger.
8233Especially affects temporary namespace nodes, since the debugger displays
8234these also.
8235
8236Updated the ordering of include files. The ACPICA headers should appear
8237before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
8238set
8239any necessary compiler-specific defines, etc. Affects the ACPI-related
8240tools
8241and utilities.
8242
8243Updated all ACPICA copyrights and signons to 2011. Added the 2011
8244copyright
8245to all module headers and signons, including the Linux header. This
8246affects
8247virtually every file in the ACPICA core subsystem, iASL compiler, and all
8248utilities.
8249
8250Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
8251project files for VC++ 6.0 are now obsolete. New project files can be
8252found
8253under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
8254details.
8255
8256Example Code and Data Size: These are the sizes for the OS-independent
8257acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8258debug version of the code includes the debug output trace mechanism and
8259has a
8260much larger code and data size.
8261
8262  Previous Release (VC 6.0):
8263    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
8264    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
8265  Current Release (VC 9.0):
8266    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8267    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8268
82692) iASL Compiler/Disassembler and Tools:
8270
8271iASL: Added generic data types to the Data Table compiler. Add "generic"
8272data
8273types such as UINT32, String, Unicode, etc., to simplify the generation
8274of
8275platform-defined tables such as UEFI. Lin Ming.
8276
8277iASL: Added listing support for the Data Table Compiler. Adds listing
8278support
8279(-l) to display actual binary output for each line of input code.
8280
8281----------------------------------------
828209 December 2010. Summary of changes for version 20101209:
8283
82841) ACPI CA Core Subsystem:
8285
8286Completed the major overhaul of the GPE support code that was begun in
8287July
82882010. Major features include: removal of _PRW execution in ACPICA (host
8289executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
8290changes to existing interfaces, simplification of GPE handler operation,
8291and
8292a handful of new interfaces:
8293
8294    AcpiUpdateAllGpes
8295    AcpiFinishGpe
8296    AcpiSetupGpeForWake
8297    AcpiSetGpeWakeMask
8298    One new file, evxfgpe.c to consolidate all external GPE interfaces.
8299
8300See the ACPICA Programmer Reference for full details and programming
8301information. See the new section 4.4 "General Purpose Event (GPE)
8302Support"
8303for a full overview, and section 8.7 "ACPI General Purpose Event
8304Management"
8305for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
8306Ming,
8307Bob Moore, Rafael Wysocki.
8308
8309Implemented a new GPE feature for Windows compatibility, the "Implicit
8310Wake
8311GPE Notify". This feature will automatically issue a Notify(2) on a
8312device
8313when a Wake GPE is received if there is no corresponding GPE method or
8314handler. ACPICA BZ 870.
8315
8316Fixed a problem with the Scope() operator during table parse and load
8317phase.
8318During load phase (table load or method execution), the scope operator
8319should
8320not enter the target into the namespace. Instead, it should open a new
8321scope
8322at the target location. Linux BZ 19462, ACPICA BZ 882.
8323
8324Example Code and Data Size: These are the sizes for the OS-independent
8325acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8326debug version of the code includes the debug output trace mechanism and
8327has a
8328much larger code and data size.
8329
8330  Previous Release:
8331    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
8332    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
8333  Current Release:
8334    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8335    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8336
83372) iASL Compiler/Disassembler and Tools:
8338
8339iASL: Relax the alphanumeric restriction on _CID strings. These strings
8340are
8341"bus-specific" per the ACPI specification, and therefore any characters
8342are
8343acceptable. The only checks that can be performed are for a null string
8344and
8345perhaps for a leading asterisk. ACPICA BZ 886.
8346
8347iASL: Fixed a problem where a syntax error that caused a premature EOF
8348condition on the source file emitted a very confusing error message. The
8349premature EOF is now detected correctly. ACPICA BZ 891.
8350
8351Disassembler: Decode the AccessSize within a Generic Address Structure
8352(byte
8353access, word access, etc.) Note, this field does not allow arbitrary bit
8354access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
8355
8356New: AcpiNames utility - Example namespace dump utility. Shows an example
8357of
8358ACPICA configuration for a minimal namespace dump utility. Uses table and
8359namespace managers, but no AML interpreter. Does not add any
8360functionality
8361over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
8362partition and configure ACPICA. ACPICA BZ 883.
8363
8364AML Debugger: Increased the debugger buffer size for method return
8365objects.
8366Was 4K, increased to 16K. Also enhanced error messages for debugger
8367method
8368execution, including the buffer overflow case.
8369
8370----------------------------------------
837113 October 2010. Summary of changes for version 20101013:
8372
83731) ACPI CA Core Subsystem:
8374
8375Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
8376now
8377clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
8378HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
8379
8380Changed the type of the predefined namespace object _TZ from ThermalZone
8381to
8382Device. This was found to be confusing to the host software that
8383processes
8384the various thermal zones, since _TZ is not really a ThermalZone.
8385However,
8386a
8387Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
8388Zhang.
8389
8390Added Windows Vista SP2 to the list of supported _OSI strings. The actual
8391string is "Windows 2006 SP2".
8392
8393Eliminated duplicate code in AcpiUtExecute* functions. Now that the
8394nsrepair
8395code automatically repairs _HID-related strings, this type of code is no
8396longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
8397878.
8398
8399Example Code and Data Size: These are the sizes for the OS-independent
8400acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8401debug version of the code includes the debug output trace mechanism and
8402has a
8403much larger code and data size.
8404
8405  Previous Release:
8406    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8407    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8408  Current Release:
8409    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8410    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8411
84122) iASL Compiler/Disassembler and Tools:
8413
8414iASL: Implemented additional compile-time validation for _HID strings.
8415The
8416non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
8417length
8418of
8419the string must be exactly seven or eight characters. For both _HID and
8420_CID
8421strings, all characters must be alphanumeric. ACPICA BZ 874.
8422
8423iASL: Allow certain "null" resource descriptors. Some BIOS code creates
8424descriptors that are mostly or all zeros, with the expectation that they
8425will
8426be filled in at runtime. iASL now allows this as long as there is a
8427"resource
8428tag" (name) associated with the descriptor, which gives the ASL a handle
8429needed to modify the descriptor. ACPICA BZ 873.
8430
8431Added single-thread support to the generic Unix application OSL.
8432Primarily
8433for iASL support, this change removes the use of semaphores in the
8434single-
8435threaded ACPICA tools/applications - increasing performance. The
8436_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
8437option. ACPICA BZ 879.
8438
8439AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
8440support
8441for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
8442
8443iASL: Moved all compiler messages to a new file, aslmessages.h.
8444
8445----------------------------------------
844615 September 2010. Summary of changes for version 20100915:
8447
84481) ACPI CA Core Subsystem:
8449
8450Removed the AcpiOsDerivePciId OSL interface. The various host
8451implementations
8452of this function were not OS-dependent and are now obsolete and can be
8453removed from all host OSLs. This function has been replaced by
8454AcpiHwDerivePciId, which is now part of the ACPICA core code.
8455AcpiHwDerivePciId has been implemented without recursion. Adds one new
8456module, hwpci.c. ACPICA BZ 857.
8457
8458Implemented a dynamic repair for _HID and _CID strings. The following
8459problems are now repaired at runtime: 1) Remove a leading asterisk in the
8460string, and 2) the entire string is uppercased. Both repairs are in
8461accordance with the ACPI specification and will simplify host driver
8462code.
8463ACPICA BZ 871.
8464
8465The ACPI_THREAD_ID type is no longer configurable, internally it is now
8466always UINT64. This simplifies the ACPICA code, especially any printf
8467output.
8468UINT64 is the only common data type for all thread_id types across all
8469operating systems. It is now up to the host OSL to cast the native
8470thread_id
8471type to UINT64 before returning the value to ACPICA (via
8472AcpiOsGetThreadId).
8473Lin Ming, Bob Moore.
8474
8475Added the ACPI_INLINE type to enhance the ACPICA configuration. The
8476"inline"
8477keyword is not standard across compilers, and this type allows inline to
8478be
8479configured on a per-compiler basis. Lin Ming.
8480
8481Made the system global AcpiGbl_SystemAwakeAndRunning publicly
8482available.
8483Added an extern for this boolean in acpixf.h. Some hosts utilize this
8484value
8485during suspend/restore operations. ACPICA BZ 869.
8486
8487All code that implements error/warning messages with the "ACPI:" prefix
8488has
8489been moved to a new module, utxferror.c.
8490
8491The UINT64_OVERLAY was moved to utmath.c, which is the only module where
8492it
8493is used. ACPICA BZ 829. Lin Ming, Bob Moore.
8494
8495Example Code and Data Size: These are the sizes for the OS-independent
8496acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8497debug version of the code includes the debug output trace mechanism and
8498has a
8499much larger code and data size.
8500
8501  Previous Release:
8502    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
8503    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
8504  Current Release:
8505    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8506    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8507
85082) iASL Compiler/Disassembler and Tools:
8509
8510iASL/Disassembler: Write ACPI errors to stderr instead of the output
8511file.
8512This keeps the output files free of random error messages that may
8513originate
8514from within the namespace/interpreter code. Used this opportunity to
8515merge
8516all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
8517866. Lin Ming, Bob Moore.
8518
8519Tools: update some printfs for ansi warnings on size_t. Handle width
8520change
8521of size_t on 32-bit versus 64-bit generations. Lin Ming.
8522
8523----------------------------------------
852406 August 2010. Summary of changes for version 20100806:
8525
85261) ACPI CA Core Subsystem:
8527
8528Designed and implemented a new host interface to the _OSI support code.
8529This
8530will allow the host to dynamically add or remove multiple _OSI strings,
8531as
8532well as install an optional handler that is called for each _OSI
8533invocation.
8534Also added a new AML debugger command, 'osi' to display and modify the
8535global
8536_OSI string table, and test support in the AcpiExec utility. See the
8537ACPICA
8538reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
8539New Functions:
8540    AcpiInstallInterface - Add an _OSI string.
8541    AcpiRemoveInterface - Delete an _OSI string.
8542    AcpiInstallInterfaceHandler - Install optional _OSI handler.
8543Obsolete Functions:
8544    AcpiOsValidateInterface - no longer used.
8545New Files:
8546    source/components/utilities/utosi.c
8547
8548Re-introduced the support to enable multi-byte transfers for Embedded
8549Controller (EC) operation regions. A reported problem was found to be a
8550bug
8551in the host OS, not in the multi-byte support. Previously, the maximum
8552data
8553size passed to the EC operation region handler was a single byte. There
8554are
8555often EC Fields larger than one byte that need to be transferred, and it
8556is
8557useful for the EC driver to lock these as a single transaction. This
8558change
8559enables single transfers larger than 8 bits. This effectively changes the
8560access to the EC space from ByteAcc to AnyAcc, and will probably require
8561changes to the host OS Embedded Controller driver to enable 16/32/64/256-
8562bit
8563transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
8564
8565Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
8566prototype in acpiosxf.h had the output value pointer as a (void *).
8567It should be a (UINT64 *). This may affect some host OSL code.
8568
8569Fixed a couple problems with the recently modified Linux makefiles for
8570iASL
8571and AcpiExec. These new makefiles place the generated object files in the
8572local directory so that there can be no collisions between the files that
8573are
8574shared between them that are compiled with different options.
8575
8576Example Code and Data Size: These are the sizes for the OS-independent
8577acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8578debug version of the code includes the debug output trace mechanism and
8579has a
8580much larger code and data size.
8581
8582  Previous Release:
8583    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8584    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8585  Current Release:
8586    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
8587    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
8588
85892) iASL Compiler/Disassembler and Tools:
8590
8591iASL/Disassembler: Added a new option (-da, "disassemble all") to load
8592the
8593namespace from and disassemble an entire group of AML files. Useful for
8594loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
8595and
8596disassembling with one simple command. ACPICA BZ 865. Lin Ming.
8597
8598iASL: Allow multiple invocations of -e option. This change allows
8599multiple
8600uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
8601834.
8602Lin Ming.
8603
8604----------------------------------------
860502 July 2010. Summary of changes for version 20100702:
8606
86071) ACPI CA Core Subsystem:
8608
8609Implemented several updates to the recently added GPE reference count
8610support. The model for "wake" GPEs is changing to give the host OS
8611complete
8612control of these GPEs. Eventually, the ACPICA core will not execute any
8613_PRW
8614methods, since the host already must execute them. Also, additional
8615changes
8616were made to help ensure that the reference counts are kept in proper
8617synchronization with reality. Rafael J. Wysocki.
8618
86191) Ensure that GPEs are not enabled twice during initialization.
86202) Ensure that GPE enable masks stay in sync with the reference count.
86213) Do not inadvertently enable GPEs when writing GPE registers.
86224) Remove the internal wake reference counter and add new AcpiGpeWakeup
8623interface. This interface will set or clear individual GPEs for wakeup.
86245) Remove GpeType argument from AcpiEnable and AcpiDisable. These
8625interfaces
8626are now used for "runtime" GPEs only.
8627
8628Changed the behavior of the GPE install/remove handler interfaces. The
8629GPE
8630is
8631no longer disabled during this process, as it was found to cause problems
8632on
8633some machines. Rafael J. Wysocki.
8634
8635Reverted a change introduced in version 20100528 to enable Embedded
8636Controller multi-byte transfers. This change was found to cause problems
8637with
8638Index Fields and possibly Bank Fields. It will be reintroduced when these
8639problems have been resolved.
8640
8641Fixed a problem with references to Alias objects within Package Objects.
8642A
8643reference to an Alias within the definition of a Package was not always
8644resolved properly. Aliases to objects like Processors, Thermal zones,
8645etc.
8646were resolved to the actual object instead of a reference to the object
8647as
8648it
8649should be. Package objects are only allowed to contain integer, string,
8650buffer, package, and reference objects. Redhat bugzilla 608648.
8651
8652Example Code and Data Size: These are the sizes for the OS-independent
8653acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8654debug version of the code includes the debug output trace mechanism and
8655has a
8656much larger code and data size.
8657
8658  Previous Release:
8659    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8660    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8661  Current Release:
8662    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8663    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8664
86652) iASL Compiler/Disassembler and Tools:
8666
8667iASL: Implemented a new compiler subsystem to allow definition and
8668compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
8669These
8670are called "ACPI Data Tables", and the new compiler is the "Data Table
8671Compiler". This compiler is intended to simplify the existing error-prone
8672process of creating these tables for the BIOS, as well as allowing the
8673disassembly, modification, recompilation, and override of existing ACPI
8674data
8675tables. See the iASL User Guide for detailed information.
8676
8677iASL: Implemented a new Template Generator option in support of the new
8678Data
8679Table Compiler. This option will create examples of all known ACPI tables
8680that can be used as the basis for table development. See the iASL
8681documentation and the -T option.
8682
8683Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
8684Descriptor Table).
8685
8686Updated the Linux makefiles for iASL and AcpiExec to place the generated
8687object files in the local directory so that there can be no collisions
8688between the shared files between them that are generated with different
8689options.
8690
8691Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
8692Use
8693the #define __APPLE__ to enable this support.
8694
8695----------------------------------------
869628 May 2010. Summary of changes for version 20100528:
8697
8698Note: The ACPI 4.0a specification was released on April 5, 2010 and is
8699available at www.acpi.info. This is primarily an errata release.
8700
87011) ACPI CA Core Subsystem:
8702
8703Undefined ACPI tables: We are looking for the definitions for the
8704following
8705ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
8706
8707Implemented support to enable multi-byte transfers for Embedded
8708Controller
8709(EC) operation regions. Previously, the maximum data size passed to the
8710EC
8711operation region handler was a single byte. There are often EC Fields
8712larger
8713than one byte that need to be transferred, and it is useful for the EC
8714driver
8715to lock these as a single transaction. This change enables single
8716transfers
8717larger than 8 bits. This effectively changes the access to the EC space
8718from
8719ByteAcc to AnyAcc, and will probably require changes to the host OS
8720Embedded
8721Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
8722bit
8723transfers. Alexey Starikovskiy, Lin Ming
8724
8725Implemented a performance enhancement for namespace search and access.
8726This
8727change enhances the performance of namespace searches and walks by adding
8728a
8729backpointer to the parent in each namespace node. On large namespaces,
8730this
8731change can improve overall ACPI performance by up to 9X. Adding a pointer
8732to
8733each namespace node increases the overall size of the internal namespace
8734by
8735about 5%, since each namespace entry usually consists of both a namespace
8736node and an ACPI operand object. However, this is the first growth of the
8737namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
8738
8739Implemented a performance optimization that reduces the number of
8740namespace
8741walks. On control method exit, only walk the namespace if the method is
8742known
8743to have created namespace objects outside of its local scope. Previously,
8744the
8745entire namespace was traversed on each control method exit. This change
8746can
8747improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
8748Moore.
8749
8750Added support to truncate I/O addresses to 16 bits for Windows
8751compatibility.
8752Some ASL code has been seen in the field that inadvertently has bits set
8753above bit 15. This feature is optional and is enabled if the BIOS
8754requests
8755any Windows OSI strings. It can also be enabled by the host OS. Matthew
8756Garrett, Bob Moore.
8757
8758Added support to limit the maximum time for the ASL Sleep() operator. To
8759prevent accidental deep sleeps, limit the maximum time that Sleep() will
8760actually sleep. Configurable, the default maximum is two seconds. ACPICA
8761bugzilla 854.
8762
8763Added run-time validation support for the _WDG and_WED Microsoft
8764predefined
8765methods. These objects are defined by "Windows Instrumentation", and are
8766not
8767part of the ACPI spec. ACPICA BZ 860.
8768
8769Expanded all statistic counters used during namespace and device
8770initialization from 16 to 32 bits in order to support very large
8771namespaces.
8772
8773Replaced all instances of %d in printf format specifiers with %u since
8774nearly
8775all integers in ACPICA are unsigned.
8776
8777Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
8778returned
8779as AE_NO_HANDLER.
8780
8781Example Code and Data Size: These are the sizes for the OS-independent
8782acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8783debug version of the code includes the debug output trace mechanism and
8784has a
8785much larger code and data size.
8786
8787  Previous Release:
8788    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8789    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8790  Current Release:
8791    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8792    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8793
87942) iASL Compiler/Disassembler and Tools:
8795
8796iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8797methods. These objects are defined by "Windows Instrumentation", and are
8798not
8799part of the ACPI spec. ACPICA BZ 860.
8800
8801AcpiExec: added option to disable the memory tracking mechanism. The -dt
8802option will disable the tracking mechanism, which improves performance
8803considerably.
8804
8805AcpiExec: Restructured the command line options into -d (disable) and -e
8806(enable) options.
8807
8808----------------------------------------
880928 April 2010. Summary of changes for version 20100428:
8810
88111) ACPI CA Core Subsystem:
8812
8813Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8814including FADT-based and GPE Block Devices, execute any _PRW methods in
8815the
8816new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8817runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8818immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8819Devices. Provides compatibility with other ACPI implementations. Two new
8820files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8821Moore.
8822
8823Fixed a regression introduced in version 20100331 within the table
8824manager
8825where initial table loading could fail. This was introduced in the fix
8826for
8827AcpiReallocateRootTable. Also, renamed some of fields in the table
8828manager
8829data structures to clarify their meaning and use.
8830
8831Fixed a possible allocation overrun during internal object copy in
8832AcpiUtCopySimpleObject. The original code did not correctly handle the
8833case
8834where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8835847.
8836
8837Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8838possible access beyond end-of-allocation. Also, now fully validate
8839descriptor
8840(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8841
8842Example Code and Data Size: These are the sizes for the OS-independent
8843acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8844debug version of the code includes the debug output trace mechanism and
8845has a
8846much larger code and data size.
8847
8848  Previous Release:
8849    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8850    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8851  Current Release:
8852    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8853    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8854
88552) iASL Compiler/Disassembler and Tools:
8856
8857iASL: Implemented Min/Max/Len/Gran validation for address resource
8858descriptors. This change implements validation for the address fields
8859that
8860are common to all address-type resource descriptors. These checks are
8861implemented: Checks for valid Min/Max, length within the Min/Max window,
8862valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8863per
8864table 6-40 in the ACPI 4.0a specification. Also split the large
8865aslrestype1.c
8866and aslrestype2.c files into five new files. ACPICA BZ 840.
8867
8868iASL: Added support for the _Wxx predefined names. This support was
8869missing
8870and these names were not recognized by the compiler as valid predefined
8871names. ACPICA BZ 851.
8872
8873iASL: Added an error for all predefined names that are defined to return
8874no
8875value and thus must be implemented as Control Methods. These include all
8876of
8877the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8878names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8879
8880iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8881an
8882ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8883be
8884dynamically loaded via the Load() operator. Also cleaned up output for
8885the
8886-
8887ta and -tc options. ACPICA BZ 853.
8888
8889Tests: Added a new file with examples of extended iASL error checking.
8890Demonstrates the advanced error checking ability of the iASL compiler.
8891Available at tests/misc/badcode.asl.
8892
8893----------------------------------------
889431 March 2010. Summary of changes for version 20100331:
8895
88961) ACPI CA Core Subsystem:
8897
8898Completed a major update for the GPE support in order to improve support
8899for
8900shared GPEs and to simplify both host OS and ACPICA code. Added a
8901reference
8902count mechanism to support shared GPEs that require multiple device
8903drivers.
8904Several external interfaces have changed. One external interface has been
8905removed. One new external interface was added. Most of the GPE external
8906interfaces now use the GPE spinlock instead of the events mutex (and the
8907Flags parameter for many GPE interfaces has been removed.) See the
8908updated
8909ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8910Rafael
8911Wysocki. ACPICA BZ 831.
8912
8913Changed:
8914    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8915Removed:
8916    AcpiSetGpeType
8917New:
8918    AcpiSetGpe
8919
8920Implemented write support for DataTable operation regions. These regions
8921are
8922defined via the DataTableRegion() operator. Previously, only read support
8923was
8924implemented. The ACPI specification allows DataTableRegions to be
8925read/write,
8926however.
8927
8928Implemented a new subsystem option to force a copy of the DSDT to local
8929memory. Optionally copy the entire DSDT to local memory (instead of
8930simply
8931mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8932replace
8933the original DSDT, creating the need for this option. Default is FALSE,
8934do
8935not copy the DSDT.
8936
8937Implemented detection of a corrupted or replaced DSDT. This change adds
8938support to detect a DSDT that has been corrupted and/or replaced from
8939outside
8940the OS (by firmware). This is typically catastrophic for the system, but
8941has
8942been seen on some machines. Once this problem has been detected, the DSDT
8943copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8944
8945Fixed two problems with AcpiReallocateRootTable during the root table
8946copy.
8947When copying the root table to the new allocation, the length used was
8948incorrect. The new size was used instead of the current table size,
8949meaning
8950too much data was copied. Also, the count of available slots for ACPI
8951tables
8952was not set correctly. Alexey Starikovskiy, Bob Moore.
8953
8954Example Code and Data Size: These are the sizes for the OS-independent
8955acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8956debug version of the code includes the debug output trace mechanism and
8957has a
8958much larger code and data size.
8959
8960  Previous Release:
8961    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8962    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8963  Current Release:
8964    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8965    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8966
89672) iASL Compiler/Disassembler and Tools:
8968
8969iASL: Implement limited typechecking for values returned from predefined
8970control methods. The type of any returned static (unnamed) object is now
8971validated. For example, Return(1). ACPICA BZ 786.
8972
8973iASL: Fixed a predefined name object verification regression. Fixes a
8974problem
8975introduced in version 20100304. An error is incorrectly generated if a
8976predefined name is declared as a static named object with a value defined
8977using the keywords "Zero", "One", or "Ones". Lin Ming.
8978
8979iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8980by
8981reducing the requested registry access rights. ACPICA BZ 842.
8982
8983Disassembler: fixed a possible fault when generating External()
8984statements.
8985Introduced in commit ae7d6fd: Properly handle externals with parent-
8986prefix
8987(carat). Fixes a string length allocation calculation. Lin Ming.
8988
8989----------------------------------------
899004 March 2010. Summary of changes for version 20100304:
8991
89921) ACPI CA Core Subsystem:
8993
8994Fixed a possible problem with the AML Mutex handling function
8995AcpiExReleaseMutex where the function could fault under the very rare
8996condition when the interpreter has blocked, the interpreter lock is
8997released,
8998the interpreter is then reentered via the same thread, and attempts to
8999acquire an AML mutex that was previously acquired. FreeBSD report 140979.
9000Lin
9001Ming.
9002
9003Implemented additional configuration support for the AML "Debug Object".
9004Output from the debug object can now be enabled via a global variable,
9005AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
9006debugging.
9007This debug output is now available in the release version of ACPICA
9008instead
9009of just the debug version. Also, the entire debug output module can now
9010be
9011configured out of the ACPICA build if desired. One new file added,
9012executer/exdebug.c. Lin Ming, Bob Moore.
9013
9014Added header support for the ACPI MCHI table (Management Controller Host
9015Interface Table). This table was added in ACPI 4.0, but the defining
9016document
9017has only recently become available.
9018
9019Standardized output of integer values for ACPICA warnings/errors. Always
9020use
90210x prefix for hex output, always use %u for unsigned integer decimal
9022output.
9023Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
9024400
9025invocations.) These invocations were converted from the original
9026ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
9027
9028Example Code and Data Size: These are the sizes for the OS-independent
9029acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9030debug version of the code includes the debug output trace mechanism and
9031has a
9032much larger code and data size.
9033
9034  Previous Release:
9035    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
9036    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
9037  Current Release:
9038    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
9039    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
9040
90412) iASL Compiler/Disassembler and Tools:
9042
9043iASL: Implemented typechecking support for static (non-control method)
9044predefined named objects that are declared with the Name() operator. For
9045example, the type of this object is now validated to be of type Integer:
9046Name(_BBN, 1). This change migrates the compiler to using the core
9047predefined
9048name table instead of maintaining a local version. Added a new file,
9049aslpredef.c. ACPICA BZ 832.
9050
9051Disassembler: Added support for the ACPI 4.0 MCHI table.
9052
9053----------------------------------------
905421 January 2010. Summary of changes for version 20100121:
9055
90561) ACPI CA Core Subsystem:
9057
9058Added the 2010 copyright to all module headers and signons. This affects
9059virtually every file in the ACPICA core subsystem, the iASL compiler, the
9060tools/utilities, and the test suites.
9061
9062Implemented a change to the AcpiGetDevices interface to eliminate
9063unnecessary
9064invocations of the _STA method. In the case where a specific _HID is
9065requested, do not run _STA until a _HID match is found. This eliminates
9066potentially dozens of _STA calls during a search for a particular
9067device/HID,
9068which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
9069
9070Implemented an additional repair for predefined method return values.
9071Attempt
9072to repair unexpected NULL elements within returned Package objects.
9073Create
9074an
9075Integer of value zero, a NULL String, or a zero-length Buffer as
9076appropriate.
9077ACPICA BZ 818. Lin Ming, Bob Moore.
9078
9079Removed the obsolete ACPI_INTEGER data type. This type was introduced as
9080the
9081code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
9082(with
908364-bit AML integers). It is now obsolete and this change removes it from
9084the
9085ACPICA code base, replaced by UINT64. The original typedef has been
9086retained
9087for now for compatibility with existing device driver code. ACPICA BZ
9088824.
9089
9090Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
9091in
9092the parse tree object.
9093
9094Added additional warning options for the gcc-4 generation. Updated the
9095source
9096accordingly. This includes some code restructuring to eliminate
9097unreachable
9098code, elimination of some gotos, elimination of unused return values,
9099some
9100additional casting, and removal of redundant declarations.
9101
9102Example Code and Data Size: These are the sizes for the OS-independent
9103acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9104debug version of the code includes the debug output trace mechanism and
9105has a
9106much larger code and data size.
9107
9108  Previous Release:
9109    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
9110    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
9111  Current Release:
9112    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
9113    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
9114
91152) iASL Compiler/Disassembler and Tools:
9116
9117No functional changes for this release.
9118
9119----------------------------------------
912014 December 2009. Summary of changes for version 20091214:
9121
91221) ACPI CA Core Subsystem:
9123
9124Enhanced automatic data type conversions for predefined name repairs.
9125This
9126change expands the automatic repairs/conversions for predefined name
9127return
9128values to make Integers, Strings, and Buffers fully interchangeable.
9129Also,
9130a
9131Buffer can be converted to a Package of Integers if necessary. The
9132nsrepair.c
9133module was completely restructured. Lin Ming, Bob Moore.
9134
9135Implemented automatic removal of null package elements during predefined
9136name
9137repairs. This change will automatically remove embedded and trailing NULL
9138package elements from returned package objects that are defined to
9139contain
9140a
9141variable number of sub-packages. The driver is then presented with a
9142package
9143with no null elements to deal with. ACPICA BZ 819.
9144
9145Implemented a repair for the predefined _FDE and _GTM names. The expected
9146return value for both names is a Buffer of 5 DWORDs. This repair fixes
9147two
9148possible problems (both seen in the field), where a package of integers
9149is
9150returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
9151Kim.
9152
9153Implemented additional module-level code support. This change will
9154properly
9155execute module-level code that is not at the root of the namespace (under
9156a
9157Device object, etc.). Now executes the code within the current scope
9158instead
9159of the root. ACPICA BZ 762. Lin Ming.
9160
9161Fixed possible mutex acquisition errors when running _REG methods. Fixes
9162a
9163problem where mutex errors can occur when running a _REG method that is
9164in
9165the same scope as a method-defined operation region or an operation
9166region
9167under a module-level IF block. This type of code is rare, so the problem
9168has
9169not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
9170
9171Fixed a possible memory leak during module-level code execution. An
9172object
9173could be leaked for each block of executed module-level code if the
9174interpreter slack mode is enabled This change deletes any implicitly
9175returned
9176object from the module-level code block. Lin Ming.
9177
9178Removed messages for successful predefined repair(s). The repair
9179mechanism
9180was considered too wordy. Now, messages are only unconditionally emitted
9181if
9182the return object cannot be repaired. Existing messages for successful
9183repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
9184827.
9185
9186Example Code and Data Size: These are the sizes for the OS-independent
9187acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9188debug version of the code includes the debug output trace mechanism and
9189has a
9190much larger code and data size.
9191
9192  Previous Release:
9193    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
9194    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
9195  Current Release:
9196    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
9197    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
9198
91992) iASL Compiler/Disassembler and Tools:
9200
9201iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
9202files
9203were no longer automatically removed at the termination of the compile.
9204
9205acpiexec: Implemented the -f option to specify default region fill value.
9206This option specifies the value used to initialize buffers that simulate
9207operation regions. Default value is zero. Useful for debugging problems
9208that
9209depend on a specific initial value for a region or field.
9210
9211----------------------------------------
921212 November 2009. Summary of changes for version 20091112:
9213
92141) ACPI CA Core Subsystem:
9215
9216Implemented a post-order callback to AcpiWalkNamespace. The existing
9217interface only has a pre-order callback. This change adds an additional
9218parameter for a post-order callback which will be more useful for bus
9219scans.
9220ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
9221
9222Modified the behavior of the operation region memory mapping cache for
9223SystemMemory. Ensure that the memory mappings created for operation
9224regions
9225do not cross 4K page boundaries. Crossing a page boundary while mapping
9226regions can cause kernel warnings on some hosts if the pages have
9227different
9228attributes. Such regions are probably BIOS bugs, and this is the
9229workaround.
9230Linux BZ 14445. Lin Ming.
9231
9232Implemented an automatic repair for predefined methods that must return
9233sorted lists. This change will repair (by sorting) packages returned by
9234_ALR,
9235_PSS, and _TSS. Drivers can now assume that the packages are correctly
9236sorted
9237and do not contain NULL package elements. Adds one new file,
9238namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
9239
9240Fixed a possible fault during predefined name validation if a return
9241Package
9242object contains NULL elements. Also adds a warning if a NULL element is
9243followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
9244may
9245include repair or removal of all such NULL elements where possible.
9246
9247Implemented additional module-level executable AML code support. This
9248change
9249will execute module-level code that is not at the root of the namespace
9250(under a Device object, etc.) at table load time. Module-level executable
9251AML
9252code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
9253
9254Implemented a new internal function to create Integer objects. This
9255function
9256simplifies miscellaneous object creation code. ACPICA BZ 823.
9257
9258Reduced the severity of predefined repair messages, Warning to Info.
9259Since
9260the object was successfully repaired, a warning is too severe. Reduced to
9261an
9262info message for now. These messages may eventually be changed to debug-
9263only.
9264ACPICA BZ 812.
9265
9266Example Code and Data Size: These are the sizes for the OS-independent
9267acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9268debug version of the code includes the debug output trace mechanism and
9269has a
9270much larger code and data size.
9271
9272  Previous Release:
9273    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
9274    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
9275  Current Release:
9276    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
9277    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
9278
92792) iASL Compiler/Disassembler and Tools:
9280
9281iASL: Implemented Switch() with While(1) so that Break works correctly.
9282This
9283change correctly implements the Switch operator with a surrounding
9284While(1)
9285so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
9286
9287iASL: Added a message if a package initializer list is shorter than
9288package
9289length. Adds a new remark for a Package() declaration if an initializer
9290list
9291exists, but is shorter than the declared length of the package. Although
9292technically legal, this is probably a coding error and it is seen in the
9293field. ACPICA BZ 815. Lin Ming, Bob Moore.
9294
9295iASL: Fixed a problem where the compiler could fault after the maximum
9296number
9297of errors was reached (200).
9298
9299acpixtract: Fixed a possible warning for pointer cast if the compiler
9300warning
9301level set very high.
9302
9303----------------------------------------
930413 October 2009. Summary of changes for version 20091013:
9305
93061) ACPI CA Core Subsystem:
9307
9308Fixed a problem where an Operation Region _REG method could be executed
9309more
9310than once. If a custom address space handler is installed by the host
9311before
9312the "initialize operation regions" phase of the ACPICA initialization,
9313any
9314_REG methods for that address space could be executed twice. This change
9315fixes the problem. ACPICA BZ 427. Lin Ming.
9316
9317Fixed a possible memory leak for the Scope() ASL operator. When the exact
9318invocation of "Scope(\)" is executed (change scope to root), one internal
9319operand object was leaked. Lin Ming.
9320
9321Implemented a run-time repair for the _MAT predefined method. If the _MAT
9322return value is defined as a Field object in the AML, and the field
9323size is less than or equal to the default width of an integer (32 or
932464),_MAT
9325can incorrectly return an Integer instead of a Buffer. ACPICA now
9326automatically repairs this problem. ACPICA BZ 810.
9327
9328Implemented a run-time repair for the _BIF and _BIX predefined methods.
9329The
9330"OEM Information" field is often incorrectly returned as an Integer with
9331value zero if the field is not supported by the platform. This is due to
9332an
9333ambiguity in the ACPI specification. The field should always be a string.
9334ACPICA now automatically repairs this problem by returning a NULL string
9335within the returned Package. ACPICA BZ 807.
9336
9337Example Code and Data Size: These are the sizes for the OS-independent
9338acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9339debug version of the code includes the debug output trace mechanism and
9340has a
9341much larger code and data size.
9342
9343  Previous Release:
9344    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
9345    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
9346  Current Release:
9347    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
9348    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
9349
93502) iASL Compiler/Disassembler and Tools:
9351
9352Disassembler: Fixed a problem where references to external symbols that
9353contained one or more parent-prefixes (carats) were not handled
9354correctly,
9355possibly causing a fault. ACPICA BZ 806. Lin Ming.
9356
9357Disassembler: Restructured the code so that all functions that handle
9358external symbols are in a single module. One new file is added,
9359common/dmextern.c.
9360
9361AML Debugger: Added a max count argument for the Batch command (which
9362executes multiple predefined methods within the namespace.)
9363
9364iASL: Updated the compiler documentation (User Reference.) Available at
9365http://www.acpica.org/documentation/. ACPICA BZ 750.
9366
9367AcpiXtract: Updated for Lint and other formatting changes. Close all open
9368files.
9369
9370----------------------------------------
937103 September 2009. Summary of changes for version 20090903:
9372
93731) ACPI CA Core Subsystem:
9374
9375For Windows Vista compatibility, added the automatic execution of an _INI
9376method located at the namespace root (\_INI). This method is executed at
9377table load time. This support is in addition to the automatic execution
9378of
9379\_SB._INI. Lin Ming.
9380
9381Fixed a possible memory leak in the interpreter for AML package objects
9382if
9383the package initializer list is longer than the defined size of the
9384package.
9385This apparently can only happen if the BIOS changes the package size on
9386the
9387fly (seen in a _PSS object), as ASL compilers do not allow this. The
9388interpreter will truncate the package to the defined size (and issue an
9389error
9390message), but previously could leave the extra objects undeleted if they
9391were
9392pre-created during the argument processing (such is the case if the
9393package
9394consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
9395
9396Fixed a problem seen when a Buffer or String is stored to itself via ASL.
9397This has been reported in the field. Previously, ACPICA would zero out
9398the
9399buffer/string. Now, the operation is treated as a noop. Provides Windows
9400compatibility. ACPICA BZ 803. Lin Ming.
9401
9402Removed an extraneous error message for ASL constructs of the form
9403Store(LocalX,LocalX) when LocalX is uninitialized. These curious
9404statements
9405are seen in many BIOSs and are once again treated as NOOPs and no error
9406is
9407emitted when they are encountered. ACPICA BZ 785.
9408
9409Fixed an extraneous warning message if a _DSM reserved method returns a
9410Package object. _DSM can return any type of object, so validation on the
9411return type cannot be performed. ACPICA BZ 802.
9412
9413Example Code and Data Size: These are the sizes for the OS-independent
9414acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9415debug version of the code includes the debug output trace mechanism and
9416has a
9417much larger code and data size.
9418
9419  Previous Release:
9420    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
9421    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
9422  Current Release:
9423    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
9424    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
9425
94262) iASL Compiler/Disassembler and Tools:
9427
9428iASL: Fixed a problem with the use of the Alias operator and Resource
9429Templates. The correct alias is now constructed and no error is emitted.
9430ACPICA BZ 738.
9431
9432iASL: Implemented the -I option to specify additional search directories
9433for
9434include files. Allows multiple additional search paths for include files.
9435Directories are searched in the order specified on the command line
9436(after
9437the local directory is searched.) ACPICA BZ 800.
9438
9439iASL: Fixed a problem where the full pathname for include files was not
9440emitted for warnings/errors. This caused the IDE support to not work
9441properly. ACPICA BZ 765.
9442
9443iASL: Implemented the -@ option to specify a Windows-style response file
9444containing additional command line options. ACPICA BZ 801.
9445
9446AcpiExec: Added support to load multiple AML files simultaneously (such
9447as
9448a
9449DSDT and multiple SSDTs). Also added support for wildcards within the AML
9450pathname. These features allow all machine tables to be easily loaded and
9451debugged together. ACPICA BZ 804.
9452
9453Disassembler: Added missing support for disassembly of HEST table Error
9454Bank
9455subtables.
9456
9457----------------------------------------
945830 July 2009. Summary of changes for version 20090730:
9459
9460The ACPI 4.0 implementation for ACPICA is complete with this release.
9461
94621) ACPI CA Core Subsystem:
9463
9464ACPI 4.0: Added header file support for all new and changed ACPI tables.
9465Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
9466new
9467for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
9468BERT,
9469EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
9470There
9471have been some ACPI 4.0 changes to other existing tables. Split the large
9472actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
9473
9474ACPI 4.0: Implemented predefined name validation for all new names. There
9475are
947631 new names in ACPI 4.0. The predefined validation module was split into
9477two
9478files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
9479
9480Implemented support for so-called "module-level executable code". This is
9481executable AML code that exists outside of any control method and is
9482intended
9483to be executed at table load time. Although illegal since ACPI 2.0, this
9484type
9485of code still exists and is apparently still being created. Blocks of
9486this
9487code are now detected and executed as intended. Currently, the code
9488blocks
9489must exist under either an If, Else, or While construct; these are the
9490typical cases seen in the field. ACPICA BZ 762. Lin Ming.
9491
9492Implemented an automatic dynamic repair for predefined names that return
9493nested Package objects. This applies to predefined names that are defined
9494to
9495return a variable-length Package of sub-packages. If the number of sub-
9496packages is one, BIOS code is occasionally seen that creates a simple
9497single
9498package with no sub-packages. This code attempts to fix the problem by
9499wrapping a new package object around the existing package. These methods
9500can
9501be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
9502BZ
9503790.
9504
9505Fixed a regression introduced in 20090625 for the AcpiGetDevices
9506interface.
9507The _HID/_CID matching was broken and no longer matched IDs correctly.
9508ACPICA
9509BZ 793.
9510
9511Fixed a problem with AcpiReset where the reset would silently fail if the
9512register was one of the protected I/O ports. AcpiReset now bypasses the
9513port
9514validation mechanism. This may eventually be driven into the
9515AcpiRead/Write
9516interfaces.
9517
9518Fixed a regression related to the recent update of the AcpiRead/Write
9519interfaces. A sleep/suspend could fail if the optional PM2 Control
9520register
9521does not exist during an attempt to write the Bus Master Arbitration bit.
9522(However, some hosts already delete the code that writes this bit, and
9523the
9524code may in fact be obsolete at this date.) ACPICA BZ 799.
9525
9526Fixed a problem where AcpiTerminate could fault if inadvertently called
9527twice
9528in succession. ACPICA BZ 795.
9529
9530Example Code and Data Size: These are the sizes for the OS-independent
9531acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9532debug version of the code includes the debug output trace mechanism and
9533has a
9534much larger code and data size.
9535
9536  Previous Release:
9537    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9538    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9539  Current Release:
9540    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
9541    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
9542
95432) iASL Compiler/Disassembler and Tools:
9544
9545ACPI 4.0: Implemented disassembler support for all new ACPI tables and
9546changes to existing tables. ACPICA BZ 775.
9547
9548----------------------------------------
954925 June 2009. Summary of changes for version 20090625:
9550
9551The ACPI 4.0 Specification was released on June 16 and is available at
9552www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
9553continue for the next few releases.
9554
95551) ACPI CA Core Subsystem:
9556
9557ACPI 4.0: Implemented interpreter support for the IPMI operation region
9558address space. Includes support for bi-directional data buffers and an
9559IPMI
9560address space handler (to be installed by an IPMI device driver.) ACPICA
9561BZ
9562773. Lin Ming.
9563
9564ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
9565Includes
9566support in both the header files and the disassembler.
9567
9568Completed a major update for the AcpiGetObjectInfo external interface.
9569Changes include:
9570 - Support for variable, unlimited length HID, UID, and CID strings.
9571 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
9572etc.)
9573 - Call the _SxW power methods on behalf of a device object.
9574 - Determine if a device is a PCI root bridge.
9575 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
9576These changes will require an update to all callers of this interface.
9577See
9578the updated ACPICA Programmer Reference for details. One new source file
9579has
9580been added - utilities/utids.c. ACPICA BZ 368, 780.
9581
9582Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
9583transfers. The Value parameter has been extended from 32 bits to 64 bits
9584in
9585order to support new ACPI 4.0 tables. These changes will require an
9586update
9587to
9588all callers of these interfaces. See the ACPICA Programmer Reference for
9589details. ACPICA BZ 768.
9590
9591Fixed several problems with AcpiAttachData. The handler was not invoked
9592when
9593the host node was deleted. The data sub-object was not automatically
9594deleted
9595when the host node was deleted. The interface to the handler had an
9596unused
9597parameter, this was removed. ACPICA BZ 778.
9598
9599Enhanced the function that dumps ACPI table headers. All non-printable
9600characters in the string fields are now replaced with '?' (Signature,
9601OemId,
9602OemTableId, and CompilerId.) ACPI tables with non-printable characters in
9603these fields are occasionally seen in the field. ACPICA BZ 788.
9604
9605Fixed a problem with predefined method repair code where the code that
9606attempts to repair/convert an object of incorrect type is only executed
9607on
9608the first time the predefined method is called. The mechanism that
9609disables
9610warnings on subsequent calls was interfering with the repair mechanism.
9611ACPICA BZ 781.
9612
9613Fixed a possible memory leak in the predefined validation/repair code
9614when
9615a
9616buffer is automatically converted to an expected string object.
9617
9618Removed obsolete 16-bit files from the distribution and from the current
9619git
9620tree head. ACPICA BZ 776.
9621
9622Example Code and Data Size: These are the sizes for the OS-independent
9623acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9624debug version of the code includes the debug output trace mechanism and
9625has a
9626much larger code and data size.
9627
9628  Previous Release:
9629    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9630    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9631  Current Release:
9632    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9633    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9634
96352) iASL Compiler/Disassembler and Tools:
9636
9637ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
9638operation region keyword. ACPICA BZ 771, 772. Lin Ming.
9639
9640ACPI 4.0: iASL - implemented compile-time validation support for all new
9641predefined names and control methods (31 total). ACPICA BZ 769.
9642
9643----------------------------------------
964421 May 2009. Summary of changes for version 20090521:
9645
96461) ACPI CA Core Subsystem:
9647
9648Disabled the preservation of the SCI enable bit in the PM1 control
9649register.
9650The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
9651to
9652be
9653a "preserved" bit - "OSPM always preserves this bit position", section
96544.7.3.2.1. However, some machines fail if this bit is in fact preserved
9655because the bit needs to be explicitly set by the OS as a workaround. No
9656machines fail if the bit is not preserved. Therefore, ACPICA no longer
9657attempts to preserve this bit.
9658
9659Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
9660incorrectly formed _PRT package could cause a fault. Added validation to
9661ensure that each package element is actually a sub-package.
9662
9663Implemented a new interface to install or override a single control
9664method,
9665AcpiInstallMethod. This interface is useful when debugging in order to
9666repair
9667an existing method or to install a missing method without having to
9668override
9669the entire ACPI table. See the ACPICA Programmer Reference for use and
9670examples. Lin Ming, Bob Moore.
9671
9672Fixed several reference count issues with the DdbHandle object that is
9673created from a Load or LoadTable operator. Prevent premature deletion of
9674the
9675object. Also, mark the object as invalid once the table has been
9676unloaded.
9677This is needed because the handle itself may not be deleted after the
9678table
9679unload, depending on whether it has been stored in a named object by the
9680caller. Lin Ming.
9681
9682Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
9683mutexes of the same sync level are acquired but then not released in
9684strict
9685opposite order, the internally maintained Current Sync Level becomes
9686confused
9687and can cause subsequent execution errors. ACPICA BZ 471.
9688
9689Changed the allowable release order for ASL mutex objects. The ACPI 4.0
9690specification has been changed to make the SyncLevel for mutex objects
9691more
9692useful. When releasing a mutex, the SyncLevel of the mutex must now be
9693the
9694same as the current sync level. This makes more sense than the previous
9695rule
9696(SyncLevel less than or equal). This change updates the code to match the
9697specification.
9698
9699Fixed a problem with the local version of the AcpiOsPurgeCache function.
9700The
9701(local) cache must be locked during all cache object deletions. Andrew
9702Baumann.
9703
9704Updated the Load operator to use operation region interfaces. This
9705replaces
9706direct memory mapping with region access calls. Now, all region accesses
9707go
9708through the installed region handler as they should.
9709
9710Simplified and optimized the NsGetNextNode function. Reduced parameter
9711count
9712and reduced code for this frequently used function.
9713
9714Example Code and Data Size: These are the sizes for the OS-independent
9715acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9716debug version of the code includes the debug output trace mechanism and
9717has a
9718much larger code and data size.
9719
9720  Previous Release:
9721    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9722    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9723  Current Release:
9724    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9725    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9726
97272) iASL Compiler/Disassembler and Tools:
9728
9729Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
9730problems
9731with sub-table disassembly and handling invalid sub-tables. Attempt
9732recovery
9733after an invalid sub-table ID.
9734
9735----------------------------------------
973622 April 2009. Summary of changes for version 20090422:
9737
97381) ACPI CA Core Subsystem:
9739
9740Fixed a compatibility issue with the recently released I/O port
9741protection
9742mechanism. For windows compatibility, 1) On a port protection violation,
9743simply ignore the request and do not return an exception (allow the
9744control
9745method to continue execution.) 2) If only part of the request overlaps a
9746protected port, read/write the individual ports that are not protected.
9747Linux
9748BZ 13036. Lin Ming
9749
9750Enhanced the execution of the ASL/AML BreakPoint operator so that it
9751actually
9752breaks into the AML debugger if the debugger is present. This matches the
9753ACPI-defined behavior.
9754
9755Fixed several possible warnings related to the use of the configurable
9756ACPI_THREAD_ID. This type can now be configured as either an integer or a
9757pointer with no warnings. Also fixes several warnings in printf-like
9758statements for the 64-bit build when the type is configured as a pointer.
9759ACPICA BZ 766, 767.
9760
9761Fixed a number of possible warnings when compiling with gcc 4+ (depending
9762on
9763warning options.) Examples include printf formats, aliasing, unused
9764globals,
9765missing prototypes, missing switch default statements, use of non-ANSI
9766library functions, use of non-ANSI constructs. See generate/unix/Makefile
9767for
9768a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
9769
9770Example Code and Data Size: These are the sizes for the OS-independent
9771acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9772debug version of the code includes the debug output trace mechanism and
9773has a
9774much larger code and data size.
9775
9776  Previous Release:
9777    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9778    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9779  Current Release:
9780    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9781    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9782
97832) iASL Compiler/Disassembler and Tools:
9784
9785iASL: Fixed a generation warning from Bison 2.3 and fixed several
9786warnings
9787on
9788the 64-bit build.
9789
9790iASL: Fixed a problem where the Unix/Linux versions of the compiler could
9791not
9792correctly digest Windows/DOS formatted files (with CR/LF).
9793
9794iASL: Added a new option for "quiet mode" (-va) that produces only the
9795compilation summary, not individual errors and warnings. Useful for large
9796batch compilations.
9797
9798AcpiExec: Implemented a new option (-z) to enable a forced
9799semaphore/mutex
9800timeout that can be used to detect hang conditions during execution of
9801AML
9802code (includes both internal semaphores and AML-defined mutexes and
9803events.)
9804
9805Added new makefiles for the generation of acpica in a generic unix-like
9806environment. These makefiles are intended to generate the acpica tools
9807and
9808utilities from the original acpica git source tree structure.
9809
9810Test Suites: Updated and cleaned up the documentation files. Updated the
9811copyrights to 2009, affecting all source files. Use the new version of
9812iASL
9813with quiet mode. Increased the number of available semaphores in the
9814Windows
9815OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9816added
9817an alternate implementation of the semaphore timeout to allow aslts to
9818execute fully on Cygwin.
9819
9820----------------------------------------
982120 March 2009. Summary of changes for version 20090320:
9822
98231) ACPI CA Core Subsystem:
9824
9825Fixed a possible race condition between AcpiWalkNamespace and dynamic
9826table
9827unloads. Added a reader/writer locking mechanism to allow multiple
9828concurrent
9829namespace walks (readers), but block a dynamic table unload until it can
9830gain
9831exclusive write access to the namespace. This fixes a problem where a
9832table
9833unload could (possibly catastrophically) delete the portion of the
9834namespace
9835that is currently being examined by a walk. Adds a new file, utlock.c,
9836that
9837implements the reader/writer lock mechanism. ACPICA BZ 749.
9838
9839Fixed a regression introduced in version 20090220 where a change to the
9840FADT
9841handling could cause the ACPICA subsystem to access non-existent I/O
9842ports.
9843
9844Modified the handling of FADT register and table (FACS/DSDT) addresses.
9845The
9846FADT can contain both 32-bit and 64-bit versions of these addresses.
9847Previously, the 64-bit versions were favored, meaning that if both 32 and
984864
9849versions were valid, but not equal, the 64-bit version was used. This was
9850found to cause some machines to fail. Now, in this case, the 32-bit
9851version
9852is used instead. This now matches the Windows behavior.
9853
9854Implemented a new mechanism to protect certain I/O ports. Provides
9855Microsoft
9856compatibility and protects the standard PC I/O ports from access via AML
9857code. Adds a new file, hwvalid.c
9858
9859Fixed a possible extraneous warning message from the FADT support. The
9860message warns of a 32/64 length mismatch between the legacy and GAS
9861definitions for a register.
9862
9863Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9864is
9865made obsolete by the port protection mechanism above. It was previously
9866used
9867to validate the entire address range of an operation region, which could
9868be
9869incorrect if the range included illegal ports, but fields within the
9870operation region did not actually access those ports. Validation is now
9871performed on a per-field basis instead of the entire region.
9872
9873Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9874Ignored bits must be "preserved" according to the ACPI spec. Usually,
9875this
9876means a read/modify/write when writing to the register. However, for
9877status
9878registers, writing a one means clear the event. Writing a zero means
9879preserve
9880the event (do not clear.) This behavior is clarified in the ACPI 4.0
9881spec,
9882and the ACPICA code now simply always writes a zero to the ignored bit.
9883
9884Modified the handling of ignored bits for the PM1 A/B Control Registers.
9885As
9886per the ACPI specification, for the control registers, preserve
9887(read/modify/write) all bits that are defined as either reserved or
9888ignored.
9889
9890Updated the handling of write-only bits in the PM1 A/B Control Registers.
9891When reading the register, zero the write-only bits as per the ACPI spec.
9892ACPICA BZ 443. Lin Ming.
9893
9894Removed "Linux" from the list of supported _OSI strings. Linux no longer
9895wants to reply true to this request. The Windows strings are the only
9896paths
9897through the AML that are tested and known to work properly.
9898
9899  Previous Release:
9900    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9901    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9902  Current Release:
9903    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9904    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9905
99062) iASL Compiler/Disassembler and Tools:
9907
9908Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9909and
9910aetables.c
9911
9912----------------------------------------
991320 February 2009. Summary of changes for version 20090220:
9914
99151) ACPI CA Core Subsystem:
9916
9917Optimized the ACPI register locking. Removed locking for reads from the
9918ACPI
9919bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9920is
9921not required when reading the single-bit registers. The
9922AcpiGetRegisterUnlocked function is no longer needed and has been
9923removed.
9924This will improve performance for reads on these registers. ACPICA BZ
9925760.
9926
9927Fixed the parameter validation for AcpiRead/Write. Now return
9928AE_BAD_PARAMETER if the input register pointer is null, and
9929AE_BAD_ADDRESS
9930if
9931the register has an address of zero. Previously, these cases simply
9932returned
9933AE_OK. For optional registers such as PM1B status/enable/control, the
9934caller
9935should check for a valid register address before calling. ACPICA BZ 748.
9936
9937Renamed the external ACPI bit register access functions. Renamed
9938AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9939functions. The new names are AcpiReadBitRegister and
9940AcpiWriteBitRegister.
9941Also, restructured the code for these functions by simplifying the code
9942path
9943and condensing duplicate code to reduce code size.
9944
9945Added new functions to transparently handle the possibly split PM1 A/B
9946registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9947functions
9948now handle the split registers for PM1 Status, Enable, and Control.
9949ACPICA
9950BZ
9951746.
9952
9953Added a function to handle the PM1 control registers,
9954AcpiHwWritePm1Control.
9955This function writes both of the PM1 control registers (A/B). These
9956registers
9957are different than the PM1 A/B status and enable registers in that
9958different
9959values can be written to the A/B registers. Most notably, the SLP_TYP
9960bits
9961can be different, as per the values returned from the _Sx predefined
9962methods.
9963
9964Removed an extra register write within AcpiHwClearAcpiStatus. This
9965function
9966was writing an optional PM1B status register twice. The existing call to
9967the
9968low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9969A/B
9970register. ACPICA BZ 751.
9971
9972Split out the PM1 Status registers from the FADT. Added new globals for
9973these
9974registers (A/B), similar to the way the PM1 Enable registers are handled.
9975Instead of overloading the FADT Event Register blocks. This makes the
9976code
9977clearer and less prone to error.
9978
9979Fixed the warning message for when the platform contains too many ACPI
9980tables
9981for the default size of the global root table data structure. The
9982calculation
9983for the truncation value was incorrect.
9984
9985Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9986obsolete macro, since it is now a simple reference to ->common.type.
9987There
9988were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9989
9990Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9991TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9992simply SLEEP_TYPE. ACPICA BZ 754.
9993
9994Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9995function is only needed on 64-bit host operating systems and is thus not
9996included for 32-bit hosts.
9997
9998Debug output: print the input and result for invocations of the _OSI
9999reserved
10000control method via the ACPI_LV_INFO debug level. Also, reduced some of
10001the
10002verbosity of this debug level. Len Brown.
10003
10004Example Code and Data Size: These are the sizes for the OS-independent
10005acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10006debug version of the code includes the debug output trace mechanism and
10007has a
10008much larger code and data size.
10009
10010  Previous Release:
10011    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
10012    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
10013  Current Release:
10014    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
10015    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
10016
100172) iASL Compiler/Disassembler and Tools:
10018
10019Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
10020various legal performance profiles.
10021
10022----------------------------------------
1002323 January 2009. Summary of changes for version 20090123:
10024
100251) ACPI CA Core Subsystem:
10026
10027Added the 2009 copyright to all module headers and signons. This affects
10028virtually every file in the ACPICA core subsystem, the iASL compiler, and
10029the tools/utilities.
10030
10031Implemented a change to allow the host to override any ACPI table,
10032including
10033dynamically loaded tables. Previously, only the DSDT could be replaced by
10034the
10035host. With this change, the AcpiOsTableOverride interface is called for
10036each
10037table found in the RSDT/XSDT during ACPICA initialization, and also
10038whenever
10039a table is dynamically loaded via the AML Load operator.
10040
10041Updated FADT flag definitions, especially the Boot Architecture flags.
10042
10043Debugger: For the Find command, automatically pad the input ACPI name
10044with
10045underscores if the name is shorter than 4 characters. This enables a
10046match
10047with the actual namespace entry which is itself padded with underscores.
10048
10049Example Code and Data Size: These are the sizes for the OS-independent
10050acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10051debug version of the code includes the debug output trace mechanism and
10052has a
10053much larger code and data size.
10054
10055  Previous Release:
10056    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
10057    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
10058  Current Release:
10059    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
10060    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
10061
100622) iASL Compiler/Disassembler and Tools:
10063
10064Fix build error under Bison-2.4.
10065
10066Disassembler: Enhanced FADT support. Added decoding of the Boot
10067Architecture
10068flags. Now decode all flags, regardless of the FADT version. Flag output
10069includes the FADT version which first defined each flag.
10070
10071The iASL -g option now dumps the RSDT to a file (in addition to the FADT
10072and
10073DSDT). Windows only.
10074
10075----------------------------------------
1007604 December 2008. Summary of changes for version 20081204:
10077
100781) ACPI CA Core Subsystem:
10079
10080The ACPICA Programmer Reference has been completely updated and revamped
10081for
10082this release. This includes updates to the external interfaces, OSL
10083interfaces, the overview sections, and the debugger reference.
10084
10085Several new ACPICA interfaces have been implemented and documented in the
10086programmer reference:
10087AcpiReset - Writes the reset value to the FADT-defined reset register.
10088AcpiDisableAllGpes - Disable all available GPEs.
10089AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
10090AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
10091AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
10092AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
10093AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
10094
10095Most of the public ACPI hardware-related interfaces have been moved to a
10096new
10097file, components/hardware/hwxface.c
10098
10099Enhanced the FADT parsing and low-level ACPI register access: The ACPI
10100register lengths within the FADT are now used, and the low level ACPI
10101register access no longer hardcodes the ACPI register lengths. Given that
10102there may be some risk in actually trusting the FADT register lengths, a
10103run-
10104time option was added to fall back to the default hardcoded lengths if
10105the
10106FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
10107option is set to true for now, and a warning is issued if a suspicious
10108FADT
10109register length is overridden with the default value.
10110
10111Fixed a reference count issue in NsRepairObject. This problem was
10112introduced
10113in version 20081031 as part of a fix to repair Buffer objects within
10114Packages. Lin Ming.
10115
10116Added semaphore support to the Linux/Unix application OS-services layer
10117(OSL). ACPICA BZ 448. Lin Ming.
10118
10119Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
10120will
10121be implemented in the OSL, or will binary semaphores be used instead.
10122
10123Example Code and Data Size: These are the sizes for the OS-independent
10124acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10125debug version of the code includes the debug output trace mechanism and
10126has a
10127much larger code and data size.
10128
10129  Previous Release:
10130    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
10131    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
10132  Current Release:
10133    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
10134    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
10135
101362) iASL Compiler/Disassembler and Tools:
10137
10138iASL: Completed the '-e' option to include additional ACPI tables in
10139order
10140to
10141aid with disassembly and External statement generation. ACPICA BZ 742.
10142Lin
10143Ming.
10144
10145iASL: Removed the "named object in while loop" error. The compiler cannot
10146determine how many times a loop will execute. ACPICA BZ 730.
10147
10148Disassembler: Implemented support for FADT revision 2 (MS extension).
10149ACPICA
10150BZ 743.
10151
10152Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
10153MCFG).
10154
10155----------------------------------------
1015631 October 2008. Summary of changes for version 20081031:
10157
101581) ACPI CA Core Subsystem:
10159
10160Restructured the ACPICA header files into public/private. acpi.h now
10161includes
10162only the "public" acpica headers. All other acpica headers are "private"
10163and
10164should not be included by acpica users. One new file, accommon.h is used
10165to
10166include the commonly used private headers for acpica code generation.
10167Future
10168plans include moving all private headers to a new subdirectory.
10169
10170Implemented an automatic Buffer->String return value conversion for
10171predefined ACPI methods. For these methods (such as _BIF), added
10172automatic
10173conversion for return objects that are required to be a String, but a
10174Buffer
10175was found instead. This can happen when reading string battery data from
10176an
10177operation region, because it used to be difficult to convert the data
10178from
10179buffer to string from within the ASL. Ensures that the host OS is
10180provided
10181with a valid null-terminated string. Linux BZ 11822.
10182
10183Updated the FACS waking vector interfaces. Split
10184AcpiSetFirmwareWakingVector
10185into two: one for the 32-bit vector, another for the 64-bit vector. This
10186is
10187required because the host OS must setup the wake much differently for
10188each
10189vector (real vs. protected mode, etc.) and the interface itself should
10190not
10191be
10192deciding which vector to use. Also, eliminated the
10193GetFirmwareWakingVector
10194interface, as it served no purpose (only the firmware reads the vector,
10195OS
10196only writes the vector.) ACPICA BZ 731.
10197
10198Implemented a mechanism to escape infinite AML While() loops. Added a
10199loop
10200counter to force exit from AML While loops if the count becomes too
10201large.
10202This can occur in poorly written AML when the hardware does not respond
10203within a while loop and the loop does not implement a timeout. The
10204maximum
10205loop count is configurable. A new exception code is returned when a loop
10206is
10207broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
10208
10209Optimized the execution of AML While loops. Previously, a control state
10210object was allocated and freed for each execution of the loop. The
10211optimization is to simply reuse the control state for each iteration.
10212This
10213speeds up the raw loop execution time by about 5%.
10214
10215Enhanced the implicit return mechanism. For Windows compatibility, return
10216an
10217implicit integer of value zero for methods that contain no executable
10218code.
10219Such methods are seen in the field as stubs (presumably), and can cause
10220drivers to fail if they expect a return value. Lin Ming.
10221
10222Allow multiple backslashes as root prefixes in namepaths. In a fully
10223qualified namepath, allow multiple backslash prefixes. This can happen
10224(and
10225is seen in the field) because of the use of a double-backslash in strings
10226(since backslash is the escape character) causing confusion. ACPICA BZ
10227739
10228Lin Ming.
10229
10230Emit a warning if two different FACS or DSDT tables are discovered in the
10231FADT. Checks if there are two valid but different addresses for the FACS
10232and
10233DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
10234
10235Consolidated the method argument count validation code. Merged the code
10236that
10237validates control method argument counts into the predefined validation
10238module. Eliminates possible multiple warnings for incorrect argument
10239counts.
10240
10241Implemented ACPICA example code. Includes code for ACPICA initialization,
10242handler installation, and calling a control method. Available at
10243source/tools/examples.
10244
10245Added a global pointer for FACS table to simplify internal FACS access.
10246Use
10247the global pointer instead of using AcpiGetTableByIndex for each FACS
10248access.
10249This simplifies the code for the Global Lock and the Firmware Waking
10250Vector(s).
10251
10252Example Code and Data Size: These are the sizes for the OS-independent
10253acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10254debug version of the code includes the debug output trace mechanism and
10255has a
10256much larger code and data size.
10257
10258  Previous Release:
10259    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
10260    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
10261  Current Release:
10262    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
10263    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
10264
102652) iASL Compiler/Disassembler and Tools:
10266
10267iASL: Improved disassembly of external method calls. Added the -e option
10268to
10269allow the inclusion of additional ACPI tables to help with the
10270disassembly
10271of
10272method invocations and the generation of external declarations during the
10273disassembly. Certain external method invocations cannot be disassembled
10274properly without the actual declaration of the method. Use the -e option
10275to
10276include the table where the external method(s) are actually declared.
10277Most
10278useful for disassembling SSDTs that make method calls back to the master
10279DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
10280-d
10281-e dsdt.aml ssdt1.aml
10282
10283iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
10284problem where the use of an alias within a namepath would result in a not
10285found error or cause the compiler to fault. Also now allows forward
10286references from the Alias operator itself. ACPICA BZ 738.
10287
10288----------------------------------------
1028926 September 2008. Summary of changes for version 20080926:
10290
102911) ACPI CA Core Subsystem:
10292
10293Designed and implemented a mechanism to validate predefined ACPI methods
10294and
10295objects. This code validates the predefined ACPI objects (objects whose
10296names
10297start with underscore) that appear in the namespace, at the time they are
10298evaluated. The argument count and the type of the returned object are
10299validated against the ACPI specification. The purpose of this validation
10300is
10301to detect problems with the BIOS-implemented predefined ACPI objects
10302before
10303the results are returned to the ACPI-related drivers. Future enhancements
10304may
10305include actual repair of incorrect return objects where possible. Two new
10306files are nspredef.c and acpredef.h.
10307
10308Fixed a fault in the AML parser if a memory allocation fails during the
10309Op
10310completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
10311
10312Fixed an issue with implicit return compatibility. This change improves
10313the
10314implicit return mechanism to be more compatible with the MS interpreter.
10315Lin
10316Ming, ACPICA BZ 349.
10317
10318Implemented support for zero-length buffer-to-string conversions. Allow
10319zero
10320length strings during interpreter buffer-to-string conversions. For
10321example,
10322during the ToDecimalString and ToHexString operators, as well as implicit
10323conversions. Fiodor Suietov, ACPICA BZ 585.
10324
10325Fixed two possible memory leaks in the error exit paths of
10326AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
10327are
10328similar in that they use a stack of state objects in order to eliminate
10329recursion. The stack must be fully unwound and deallocated if an error
10330occurs. Lin Ming. ACPICA BZ 383.
10331
10332Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
10333global
10334ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
10335Moore ACPICA BZ 442.
10336
10337Removed the obsolete version number in module headers. Removed the
10338"$Revision" number that appeared in each module header. This version
10339number
10340was useful under SourceSafe and CVS, but has no meaning under git. It is
10341not
10342only incorrect, it could also be misleading.
10343
10344Example Code and Data Size: These are the sizes for the OS-independent
10345acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10346debug version of the code includes the debug output trace mechanism and
10347has a
10348much larger code and data size.
10349
10350  Previous Release:
10351    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10352    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
10353  Current Release:
10354    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
10355    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
10356
10357----------------------------------------
1035829 August 2008. Summary of changes for version 20080829:
10359
103601) ACPI CA Core Subsystem:
10361
10362Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
10363Reference. Changes include the elimination of cheating on the Object
10364field
10365for the DdbHandle subtype, addition of a reference class field to
10366differentiate the various reference types (instead of an AML opcode), and
10367the
10368cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
10369
10370Reduce an error to a warning for an incorrect method argument count.
10371Previously aborted with an error if too few arguments were passed to a
10372control method via the external ACPICA interface. Now issue a warning
10373instead
10374and continue. Handles the case where the method inadvertently declares
10375too
10376many arguments, but does not actually use the extra ones. Applies mainly
10377to
10378the predefined methods. Lin Ming. Linux BZ 11032.
10379
10380Disallow the evaluation of named object types with no intrinsic value.
10381Return
10382AE_TYPE for objects that have no value and therefore evaluation is
10383undefined:
10384Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
10385of
10386these types were allowed, but an exception would be generated at some
10387point
10388during the evaluation. Now, the error is generated up front.
10389
10390Fixed a possible memory leak in the AcpiNsGetExternalPathname function
10391(nsnames.c). Fixes a leak in the error exit path.
10392
10393Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
10394debug
10395levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
10396ACPI_EXCEPTION
10397interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
10398ACPI_LV_EVENTS.
10399
10400Removed obsolete and/or unused exception codes from the acexcep.h header.
10401There is the possibility that certain device drivers may be affected if
10402they
10403use any of these exceptions.
10404
10405The ACPICA documentation has been added to the public git source tree,
10406under
10407acpica/documents. Included are the ACPICA programmer reference, the iASL
10408compiler reference, and the changes.txt release logfile.
10409
10410Example Code and Data Size: These are the sizes for the OS-independent
10411acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10412debug version of the code includes the debug output trace mechanism and
10413has a
10414much larger code and data size.
10415
10416  Previous Release:
10417    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10418    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
10419  Current Release:
10420    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10421    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
10422
104232) iASL Compiler/Disassembler and Tools:
10424
10425Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
10426defines _SCP with 3 arguments. Previous versions defined it with only 1
10427argument. iASL now allows both definitions.
10428
10429iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
10430zero-
10431length subtables when disassembling ACPI tables. Also fixed a couple of
10432errors where a full 16-bit table type field was not extracted from the
10433input
10434properly.
10435
10436acpisrc: Improve comment counting mechanism for generating source code
10437statistics. Count first and last lines of multi-line comments as
10438whitespace,
10439not comment lines. Handle Linux legal header in addition to standard
10440acpica
10441header.
10442
10443----------------------------------------
10444
1044529 July 2008. Summary of changes for version 20080729:
10446
104471) ACPI CA Core Subsystem:
10448
10449Fix a possible deadlock in the GPE dispatch. Remove call to
10450AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
10451attempt
10452to acquire the GPE lock but can deadlock since the GPE lock is already
10453held
10454at dispatch time. This code was introduced in version 20060831 as a
10455response
10456to Linux BZ 6881 and has since been removed from Linux.
10457
10458Add a function to dereference returned reference objects. Examines the
10459return
10460object from a call to AcpiEvaluateObject. Any Index or RefOf references
10461are
10462automatically dereferenced in an attempt to return something useful
10463(these
10464reference types cannot be converted into an external ACPI_OBJECT.)
10465Provides
10466MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
10467
10468x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
10469subtables for the MADT and one new subtable for the SRAT. Includes
10470disassembler and AcpiSrc support. Data from the Intel 64 Architecture
10471x2APIC
10472Specification, June 2008.
10473
10474Additional error checking for pathname utilities. Add error check after
10475all
10476calls to AcpiNsGetPathnameLength. Add status return from
10477AcpiNsBuildExternalPath and check after all calls. Add parameter
10478validation
10479to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
10480
10481Return status from the global init function AcpiUtGlobalInitialize. This
10482is
10483used by both the kernel subsystem and the utilities such as iASL
10484compiler.
10485The function could possibly fail when the caches are initialized. Yang
10486Yi.
10487
10488Add a function to decode reference object types to strings. Created for
10489improved error messages.
10490
10491Improve object conversion error messages. Better error messages during
10492object
10493conversion from internal to the external ACPI_OBJECT. Used for external
10494calls
10495to AcpiEvaluateObject.
10496
10497Example Code and Data Size: These are the sizes for the OS-independent
10498acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10499debug version of the code includes the debug output trace mechanism and
10500has a
10501much larger code and data size.
10502
10503  Previous Release:
10504    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
10505    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10506  Current Release:
10507    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10508    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
10509
105102) iASL Compiler/Disassembler and Tools:
10511
10512Debugger: fix a possible hang when evaluating non-methods. Fixes a
10513problem
10514introduced in version 20080701. If the object being evaluated (via
10515execute
10516command) is not a method, the debugger can hang while trying to obtain
10517non-
10518existent parameters.
10519
10520iASL: relax error for using reserved "_T_x" identifiers. These names can
10521appear in a disassembled ASL file if they were emitted by the original
10522compiler. Instead of issuing an error or warning and forcing the user to
10523manually change these names, issue a remark instead.
10524
10525iASL: error if named object created in while loop. Emit an error if any
10526named
10527object is created within a While loop. If allowed, this code will
10528generate
10529a
10530run-time error on the second iteration of the loop when an attempt is
10531made
10532to
10533create the same named object twice. ACPICA bugzilla 730.
10534
10535iASL: Support absolute pathnames for include files. Add support for
10536absolute
10537pathnames within the Include operator. previously, only relative
10538pathnames
10539were supported.
10540
10541iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
10542Descriptor.
10543The ACPI spec requires one interrupt minimum. BZ 423
10544
10545iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
10546Handles the case for the Interrupt Resource Descriptor where
10547the ResourceSource argument is omitted but ResourceSourceIndex
10548is present. Now leave room for the Index. BZ 426
10549
10550iASL: Prevent error message if CondRefOf target does not exist. Fixes
10551cases
10552where an error message is emitted if the target does not exist. BZ 516
10553
10554iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
10555(get ACPI tables on Windows). This was apparently broken in version
1055620070919.
10557
10558AcpiXtract: Handle EOF while extracting data. Correctly handle the case
10559where
10560the EOF happens immediately after the last table in the input file. Print
10561completion message. Previously, no message was displayed in this case.
10562
10563----------------------------------------
1056401 July 2008. Summary of changes for version 20080701:
10565
105660) Git source tree / acpica.org
10567
10568Fixed a problem where a git-clone from http would not transfer the entire
10569source tree.
10570
105711) ACPI CA Core Subsystem:
10572
10573Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
10574enable bit. Now performs a read-change-write of the enable register
10575instead
10576of simply writing out the cached enable mask. This will prevent
10577inadvertent
10578enabling of GPEs if a rogue GPE is received during initialization (before
10579GPE
10580handlers are installed.)
10581
10582Implemented a copy for dynamically loaded tables. Previously, dynamically
10583loaded tables were simply mapped - but on some machines this memory is
10584corrupted after suspend. Now copy the table to a local buffer. For the
10585OpRegion case, added checksum verify. Use the table length from the table
10586header, not the region length. For the Buffer case, use the table length
10587also. Dennis Noordsij, Bob Moore. BZ 10734
10588
10589Fixed a problem where the same ACPI table could not be dynamically loaded
10590and
10591unloaded more than once. Without this change, a table cannot be loaded
10592again
10593once it has been loaded/unloaded one time. The current mechanism does not
10594unregister a table upon an unload. During a load, if the same table is
10595found,
10596this no longer returns an exception. BZ 722
10597
10598Fixed a problem where the wrong descriptor length was calculated for the
10599EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
10600EndTag
10601are calculated as 12 bytes long, but the actual length in the internal
10602descriptor is 16 because of the round-up to 8 on the 64-bit build.
10603Reported
10604by Linn Crosetto. BZ 728
10605
10606Fixed a possible memory leak in the Unload operator. The DdbHandle
10607returned
10608by Load() did not have its reference count decremented during unload,
10609leading
10610to a memory leak. Lin Ming. BZ 727
10611
10612Fixed a possible memory leak when deleting thermal/processor objects. Any
10613associated notify handlers (and objects) were not being deleted. Fiodor
10614Suietov. BZ 506
10615
10616Fixed the ordering of the ASCII names in the global mutex table to match
10617the
10618actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
10619only.
10620Vegard Nossum. BZ 726
10621
10622Enhanced the AcpiGetObjectInfo interface to return the number of required
10623arguments if the object is a control method. Added this call to the
10624debugger
10625so the proper number of default arguments are passed to a method. This
10626prevents a warning when executing methods from AcpiExec.
10627
10628Added a check for an invalid handle in AcpiGetObjectInfo. Return
10629AE_BAD_PARAMETER if input handle is invalid. BZ 474
10630
10631Fixed an extraneous warning from exconfig.c on the 64-bit build.
10632
10633Example Code and Data Size: These are the sizes for the OS-independent
10634acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10635debug version of the code includes the debug output trace mechanism and
10636has a
10637much larger code and data size.
10638
10639  Previous Release:
10640    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10641    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10642  Current Release:
10643    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
10644    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10645
106462) iASL Compiler/Disassembler and Tools:
10647
10648iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
10649resource descriptor names.
10650
10651iASL: Detect invalid ASCII characters in input (windows version). Removed
10652the
10653"-CF" flag from the flex compile, enables correct detection of non-ASCII
10654characters in the input. BZ 441
10655
10656iASL: Eliminate warning when result of LoadTable is not used. Eliminate
10657the
10658"result of operation not used" warning when the DDB handle returned from
10659LoadTable is not used. The warning is not needed. BZ 590
10660
10661AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
10662method
10663to
10664pass address of table to the AML. Added option to disable OpRegion
10665simulation
10666to allow creation of an OpRegion with a real address that was passed to
10667_CFG.
10668All of this allows testing of the Load and Unload operators from
10669AcpiExec.
10670
10671Debugger: update tables command for unloaded tables. Handle unloaded
10672tables
10673and use the standard table header output routine.
10674
10675----------------------------------------
1067609 June 2008. Summary of changes for version 20080609:
10677
106781) ACPI CA Core Subsystem:
10679
10680Implemented a workaround for reversed _PRT entries. A significant number
10681of
10682BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
10683change dynamically detects and repairs this problem. Provides
10684compatibility
10685with MS ACPI. BZ 6859
10686
10687Simplified the internal ACPI hardware interfaces to eliminate the locking
10688flag parameter from Register Read/Write. Added a new external interface,
10689AcpiGetRegisterUnlocked.
10690
10691Fixed a problem where the invocation of a GPE control method could hang.
10692This
10693was a regression introduced in 20080514. The new method argument count
10694validation mechanism can enter an infinite loop when a GPE method is
10695dispatched. Problem fixed by removing the obsolete code that passed GPE
10696block
10697information to the notify handler via the control method parameter
10698pointer.
10699
10700Fixed a problem where the _SST execution status was incorrectly returned
10701to
10702the caller of AcpiEnterSleepStatePrep. This was a regression introduced
10703in
1070420080514. _SST is optional and a NOT_FOUND exception should never be
10705returned. BZ 716
10706
10707Fixed a problem where a deleted object could be accessed from within the
10708AML
10709parser. This was a regression introduced in version 20080123 as a fix for
10710the
10711Unload operator. Lin Ming. BZ 10669
10712
10713Cleaned up the debug operand dump mechanism. Eliminated unnecessary
10714operands
10715and eliminated the use of a negative index in a loop. Operands are now
10716displayed in the correct order, not backwards. This also fixes a
10717regression
10718introduced in 20080514 on 64-bit systems where the elimination of
10719ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
10720715
10721
10722Fixed a possible memory leak in EvPciConfigRegionSetup where the error
10723exit
10724path did not delete a locally allocated structure.
10725
10726Updated definitions for the DMAR and SRAT tables to synchronize with the
10727current specifications. Includes disassembler support.
10728
10729Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
10730loop termination value was used. Loop terminated on iteration early,
10731missing
10732one mutex. Linn Crosetto
10733
10734Example Code and Data Size: These are the sizes for the OS-independent
10735acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10736debug version of the code includes the debug output trace mechanism and
10737has a
10738much larger code and data size.
10739
10740  Previous Release:
10741    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10742    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10743  Current Release:
10744    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10745    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10746
107472) iASL Compiler/Disassembler and Tools:
10748
10749Disassembler: Implemented support for EisaId() within _CID objects. Now
10750disassemble integer _CID objects back to EisaId invocations, including
10751multiple integers within _CID packages. Includes single-step support for
10752debugger also.
10753
10754Disassembler: Added support for DMAR and SRAT table definition changes.
10755
10756----------------------------------------
1075714 May 2008. Summary of changes for version 20080514:
10758
107591) ACPI CA Core Subsystem:
10760
10761Fixed a problem where GPEs were enabled too early during the ACPICA
10762initialization. This could lead to "handler not installed" errors on some
10763machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
10764This
10765ensures that all operation regions and devices throughout the namespace
10766have
10767been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
10768
10769Implemented a change to the enter sleep code. Moved execution of the _GTS
10770method to just before setting sleep enable bit. The execution was moved
10771from
10772AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
10773immediately before the SLP_EN bit is set, as per the ACPI specification.
10774Luming Yu, BZ 1653.
10775
10776Implemented a fix to disable unknown GPEs (2nd version). Now always
10777disable
10778the GPE, even if ACPICA thinks that that it is already disabled. It is
10779possible that the AML or some other code has enabled the GPE unbeknownst
10780to
10781the ACPICA code.
10782
10783Fixed a problem with the Field operator where zero-length fields would
10784return
10785an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
10786ASL
10787field declarations in Field(), BankField(), and IndexField(). BZ 10606.
10788
10789Implemented a fix for the Load operator, now load the table at the
10790namespace
10791root. This reverts a change introduced in version 20071019. The table is
10792now
10793loaded at the namespace root even though this goes against the ACPI
10794specification. This provides compatibility with other ACPI
10795implementations.
10796The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10797Ming.
10798
10799Fixed a problem where ACPICA would not Load() tables with unusual
10800signatures.
10801Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10802acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10803Therefore, signature validation is worthless. Apparently MS ACPI accepts
10804such
10805signatures, ACPICA must be compatible. BZ 10454.
10806
10807Fixed a possible negative array index in AcpiUtValidateException. Added
10808NULL
10809fields to the exception string arrays to eliminate a -1 subtraction on
10810the
10811SubStatus field.
10812
10813Updated the debug tracking macros to reduce overall code and data size.
10814Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10815instead of pointers to static strings. Jan Beulich and Bob Moore.
10816
10817Implemented argument count checking in control method invocation via
10818AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10819too
10820many. This applies only to extern programmatic control method execution,
10821not
10822method-to-method calls within the AML. Lin Ming.
10823
10824Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10825no
10826longer needed, especially with the removal of 16-bit support. It was
10827replaced
10828mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10829bit
10830on
1083132/64-bit platforms is required.
10832
10833Added the C const qualifier for appropriate string constants -- mostly
10834MODULE_NAME and printf format strings. Jan Beulich.
10835
10836Example Code and Data Size: These are the sizes for the OS-independent
10837acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10838debug version of the code includes the debug output trace mechanism and
10839has a
10840much larger code and data size.
10841
10842  Previous Release:
10843    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10844    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10845  Current Release:
10846    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10847    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10848
108492) iASL Compiler/Disassembler and Tools:
10850
10851Implemented ACPI table revision ID validation in the disassembler. Zero
10852is
10853always invalid. For DSDTs, the ID controls the interpreter integer width.
108541
10855means 32-bit and this is unusual. 2 or greater is 64-bit.
10856
10857----------------------------------------
1085821 March 2008. Summary of changes for version 20080321:
10859
108601) ACPI CA Core Subsystem:
10861
10862Implemented an additional change to the GPE support in order to suppress
10863spurious or stray GPEs. The AcpiEvDisableGpe function will now
10864permanently
10865disable incoming GPEs that are neither enabled nor disabled -- meaning
10866that
10867the GPE is unknown to the system. This should prevent future interrupt
10868floods
10869from that GPE. BZ 6217 (Zhang Rui)
10870
10871Fixed a problem where NULL package elements were not returned to the
10872AcpiEvaluateObject interface correctly. The element was simply ignored
10873instead of returning a NULL ACPI_OBJECT package element, potentially
10874causing
10875a buffer overflow and/or confusing the caller who expected a fixed number
10876of
10877elements. BZ 10132 (Lin Ming, Bob Moore)
10878
10879Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10880Dword,
10881Qword), Field, BankField, and IndexField operators when invoked from
10882inside
10883an executing control method. In this case, these operators created
10884namespace
10885nodes that were incorrectly left marked as permanent nodes instead of
10886temporary nodes. This could cause a problem if there is race condition
10887between an exiting control method and a running namespace walk. (Reported
10888by
10889Linn Crosetto)
10890
10891Fixed a problem where the CreateField and CreateXXXField operators would
10892incorrectly allow duplicate names (the name of the field) with no
10893exception
10894generated.
10895
10896Implemented several changes for Notify handling. Added support for new
10897Notify
10898values (ACPI 2.0+) and improved the Notify debug output. Notify on
10899PowerResource objects is no longer allowed, as per the ACPI
10900specification.
10901(Bob Moore, Zhang Rui)
10902
10903All Reference Objects returned via the AcpiEvaluateObject interface are
10904now
10905marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10906for
10907NULL objects - either NULL package elements or unresolved named
10908references.
10909
10910Fixed a problem where an extraneous debug message was produced for
10911package
10912objects (when debugging enabled). The message "Package List length larger
10913than NumElements count" is now produced in the correct case, and is now
10914an
10915error message rather than a debug message. Added a debug message for the
10916opposite case, where NumElements is larger than the Package List (the
10917package
10918will be padded out with NULL elements as per the ACPI spec.)
10919
10920Implemented several improvements for the output of the ASL "Debug" object
10921to
10922clarify and keep all data for a given object on one output line.
10923
10924Fixed two size calculation issues with the variable-length Start
10925Dependent
10926resource descriptor.
10927
10928Example Code and Data Size: These are the sizes for the OS-independent
10929acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10930debug version of the code includes the debug output trace mechanism and
10931has
10932a much larger code and data size.
10933
10934  Previous Release:
10935    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10936    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10937  Current Release:
10938    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10939    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10940
109412) iASL Compiler/Disassembler and Tools:
10942
10943Fixed a problem with the use of the Switch operator where execution of
10944the
10945containing method by multiple concurrent threads could cause an
10946AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10947actual Switch opcode, it must be simulated with local named temporary
10948variables and if/else pairs. The solution chosen was to mark any method
10949that
10950uses Switch as Serialized, thus preventing multiple thread entries. BZ
10951469.
10952
10953----------------------------------------
1095413 February 2008. Summary of changes for version 20080213:
10955
109561) ACPI CA Core Subsystem:
10957
10958Implemented another MS compatibility design change for GPE/Notify
10959handling.
10960GPEs are now cleared/enabled asynchronously to allow all pending notifies
10961to
10962complete first. It is expected that the OSL will queue the enable request
10963behind all pending notify requests (may require changes to the local host
10964OSL
10965in AcpiOsExecute). Alexey Starikovskiy.
10966
10967Fixed a problem where buffer and package objects passed as arguments to a
10968control method via the external AcpiEvaluateObject interface could cause
10969an
10970AE_AML_INTERNAL exception depending on the order and type of operators
10971executed by the target control method.
10972
10973Fixed a problem where resource descriptor size optimization could cause a
10974problem when a _CRS resource template is passed to a _SRS method. The
10975_SRS
10976resource template must use the same descriptors (with the same size) as
10977returned from _CRS. This change affects the following resource
10978descriptors:
10979IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
109809487)
10981
10982Fixed a problem where a CopyObject to RegionField, BankField, and
10983IndexField
10984objects did not perform an implicit conversion as it should. These types
10985must
10986retain their initial type permanently as per the ACPI specification.
10987However,
10988a CopyObject to all other object types should not perform an implicit
10989conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10990
10991Fixed a problem with the AcpiGetDevices interface where the mechanism to
10992match device CIDs did not examine the entire list of available CIDs, but
10993instead aborted on the first non-matching CID. Andrew Patterson.
10994
10995Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10996was
10997inadvertently changed to return a 16-bit value instead of a 32-bit value,
10998truncating the upper dword of a 64-bit value. This macro is only used to
10999display debug output, so no incorrect calculations were made. Also,
11000reimplemented the macro so that a 64-bit shift is not performed by
11001inefficient compilers.
11002
11003Added missing va_end statements that should correspond with each va_start
11004statement.
11005
11006Example Code and Data Size: These are the sizes for the OS-independent
11007acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11008debug version of the code includes the debug output trace mechanism and
11009has
11010a much larger code and data size.
11011
11012  Previous Release:
11013    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
11014    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
11015  Current Release:
11016    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
11017    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
11018
110192) iASL Compiler/Disassembler and Tools:
11020
11021Implemented full disassembler support for the following new ACPI tables:
11022BERT, EINJ, and ERST. Implemented partial disassembler support for the
11023complicated HEST table. These tables support the Windows Hardware Error
11024Architecture (WHEA).
11025
11026----------------------------------------
1102723 January 2008. Summary of changes for version 20080123:
11028
110291) ACPI CA Core Subsystem:
11030
11031Added the 2008 copyright to all module headers and signons. This affects
11032virtually every file in the ACPICA core subsystem, the iASL compiler, and
11033the tools/utilities.
11034
11035Fixed a problem with the SizeOf operator when used with Package and
11036Buffer
11037objects. These objects have deferred execution for some arguments, and
11038the
11039execution is now completed before the SizeOf is executed. This problem
11040caused
11041unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
11042BZ
110439558
11044
11045Implemented an enhancement to the interpreter "slack mode". In the
11046absence
11047of
11048an explicit return or an implicitly returned object from the last
11049executed
11050opcode, a control method will now implicitly return an integer of value 0
11051for
11052Microsoft compatibility. (Lin Ming) BZ 392
11053
11054Fixed a problem with the Load operator where an exception was not
11055returned
11056in
11057the case where the table is already loaded. (Lin Ming) BZ 463
11058
11059Implemented support for the use of DDBHandles as an Indexed Reference, as
11060per
11061the ACPI spec. (Lin Ming) BZ 486
11062
11063Implemented support for UserTerm (Method invocation) for the Unload
11064operator
11065as per the ACPI spec. (Lin Ming) BZ 580
11066
11067Fixed a problem with the LoadTable operator where the OemId and
11068OemTableId
11069input strings could cause unexpected failures if they were shorter than
11070the
11071maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
11072
11073Implemented support for UserTerm (Method invocation) for the Unload
11074operator
11075as per the ACPI spec. (Lin Ming) BZ 580
11076
11077Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
11078HEST,
11079IBFT, UEFI, WDAT. Disassembler support is forthcoming.
11080
11081Example Code and Data Size: These are the sizes for the OS-independent
11082acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11083debug version of the code includes the debug output trace mechanism and
11084has
11085a much larger code and data size.
11086
11087  Previous Release:
11088    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
11089    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
11090  Current Release:
11091    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
11092    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
11093
110942) iASL Compiler/Disassembler and Tools:
11095
11096Implemented support in the disassembler for checksum validation on
11097incoming
11098binary DSDTs and SSDTs. If incorrect, a message is displayed within the
11099table
11100header dump at the start of the disassembly.
11101
11102Implemented additional debugging information in the namespace listing
11103file
11104created during compilation. In addition to the namespace hierarchy, the
11105full
11106pathname to each namespace object is displayed.
11107
11108Fixed a problem with the disassembler where invalid ACPI tables could
11109cause
11110faults or infinite loops.
11111
11112Fixed an unexpected parse error when using the optional "parameter types"
11113list in a control method declaration. (Lin Ming) BZ 397
11114
11115Fixed a problem where two External declarations with the same name did
11116not
11117cause an error (Lin Ming) BZ 509
11118
11119Implemented support for full TermArgs (adding Argx, Localx and method
11120invocation) for the ParameterData parameter to the LoadTable operator.
11121(Lin
11122Ming) BZ 583,587
11123
11124----------------------------------------
1112519 December 2007. Summary of changes for version 20071219:
11126
111271) ACPI CA Core Subsystem:
11128
11129Implemented full support for deferred execution for the TermArg string
11130arguments for DataTableRegion. This enables forward references and full
11131operand resolution for the three string arguments. Similar to
11132OperationRegion
11133deferred argument execution.) Lin Ming. BZ 430
11134
11135Implemented full argument resolution support for the BankValue argument
11136to
11137BankField. Previously, only constants were supported, now any TermArg may
11138be
11139used. Lin Ming BZ 387, 393
11140
11141Fixed a problem with AcpiGetDevices where the search of a branch of the
11142device tree could be terminated prematurely. In accordance with the ACPI
11143specification, the search down the current branch is terminated if a
11144device
11145is both not present and not functional (instead of just not present.)
11146Yakui
11147Zhao.
11148
11149Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
11150if
11151the underlying AML code changed the GPE enable registers. Now, any
11152unknown
11153incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
11154disabled
11155instead of simply ignored. Rui Zhang.
11156
11157Fixed a problem with Index Fields where the Index register was
11158incorrectly
11159limited to a maximum of 32 bits. Now any size may be used.
11160
11161Fixed a couple memory leaks associated with "implicit return" objects
11162when
11163the AML Interpreter slack mode is enabled. Lin Ming BZ 349
11164
11165Example Code and Data Size: These are the sizes for the OS-independent
11166acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11167debug version of the code includes the debug output trace mechanism and
11168has
11169a much larger code and data size.
11170
11171  Previous Release:
11172    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
11173    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
11174  Current Release:
11175    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
11176    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
11177
11178----------------------------------------
1117914 November 2007. Summary of changes for version 20071114:
11180
111811) ACPI CA Core Subsystem:
11182
11183Implemented event counters for each of the Fixed Events, the ACPI SCI
11184(interrupt) itself, and control methods executed. Named
11185AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
11186These
11187should be useful for debugging and statistics.
11188
11189Implemented a new external interface, AcpiGetStatistics, to retrieve the
11190contents of the various event counters. Returns the current values for
11191AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
11192AcpiMethodCount. The interface can be expanded in the future if new
11193counters
11194are added. Device drivers should use this interface rather than access
11195the
11196counters directly.
11197
11198Fixed a problem with the FromBCD and ToBCD operators. With some
11199compilers,
11200the ShortDivide function worked incorrectly, causing problems with the
11201BCD
11202functions with large input values. A truncation from 64-bit to 32-bit
11203inadvertently occurred. Internal BZ 435. Lin Ming
11204
11205Fixed a problem with Index references passed as method arguments.
11206References
11207passed as arguments to control methods were dereferenced immediately
11208(before
11209control was passed to the called method). The references are now
11210correctly
11211passed directly to the called method. BZ 5389. Lin Ming
11212
11213Fixed a problem with CopyObject used in conjunction with the Index
11214operator.
11215The reference was incorrectly dereferenced before the copy. The reference
11216is
11217now correctly copied. BZ 5391. Lin Ming
11218
11219Fixed a problem with Control Method references within Package objects.
11220These
11221references are now correctly generated. This completes the package
11222construction overhaul that began in version 20071019.
11223
11224Example Code and Data Size: These are the sizes for the OS-independent
11225acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11226debug version of the code includes the debug output trace mechanism and
11227has
11228a much larger code and data size.
11229
11230  Previous Release:
11231    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
11232    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
11233  Current Release:
11234    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
11235    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
11236
11237
112382) iASL Compiler/Disassembler and Tools:
11239
11240The AcpiExec utility now installs handlers for all of the predefined
11241Operation Region types. New types supported are: PCI_Config, CMOS, and
11242PCIBARTarget.
11243
11244Fixed a problem with the 64-bit version of AcpiExec where the extended
11245(64-
11246bit) address fields for the DSDT and FACS within the FADT were not being
11247used, causing truncation of the upper 32-bits of these addresses. Lin
11248Ming
11249and Bob Moore
11250
11251----------------------------------------
1125219 October 2007. Summary of changes for version 20071019:
11253
112541) ACPI CA Core Subsystem:
11255
11256Fixed a problem with the Alias operator when the target of the alias is a
11257named ASL operator that opens a new scope -- Scope, Device,
11258PowerResource,
11259Processor, and ThermalZone. In these cases, any children of the original
11260operator could not be accessed via the alias, potentially causing
11261unexpected
11262AE_NOT_FOUND exceptions. (BZ 9067)
11263
11264Fixed a problem with the Package operator where all named references were
11265created as object references and left otherwise unresolved. According to
11266the
11267ACPI specification, a Package can only contain Data Objects or references
11268to
11269control methods. The implication is that named references to Data Objects
11270(Integer, Buffer, String, Package, BufferField, Field) should be resolved
11271immediately upon package creation. This is the approach taken with this
11272change. References to all other named objects (Methods, Devices, Scopes,
11273etc.) are all now properly created as reference objects. (BZ 5328)
11274
11275Reverted a change to Notify handling that was introduced in version
1127620070508. This version changed the Notify handling from asynchronous to
11277fully synchronous (Device driver Notify handling with respect to the
11278Notify
11279ASL operator). It was found that this change caused more problems than it
11280solved and was removed by most users.
11281
11282Fixed a problem with the Increment and Decrement operators where the type
11283of
11284the target object could be unexpectedly and incorrectly changed. (BZ 353)
11285Lin Ming.
11286
11287Fixed a problem with the Load and LoadTable operators where the table
11288location within the namespace was ignored. Instead, the table was always
11289loaded into the root or current scope. Lin Ming.
11290
11291Fixed a problem with the Load operator when loading a table from a buffer
11292object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
11293
11294Fixed a problem with the Debug object where a store of a DdbHandle
11295reference
11296object to the Debug object could cause a fault.
11297
11298Added a table checksum verification for the Load operator, in the case
11299where
11300the load is from a buffer. (BZ 578).
11301
11302Implemented additional parameter validation for the LoadTable operator.
11303The
11304length of the input strings SignatureString, OemIdString, and OemTableId
11305are
11306now checked for maximum lengths. (BZ 582) Lin Ming.
11307
11308Example Code and Data Size: These are the sizes for the OS-independent
11309acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11310debug version of the code includes the debug output trace mechanism and
11311has
11312a much larger code and data size.
11313
11314  Previous Release:
11315    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
11316    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
11317  Current Release:
11318    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
11319    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
11320
11321
113222) iASL Compiler/Disassembler:
11323
11324Fixed a problem where if a single file was specified and the file did not
11325exist, no error message was emitted. (Introduced with wildcard support in
11326version 20070917.)
11327
11328----------------------------------------
1132919 September 2007. Summary of changes for version 20070919:
11330
113311) ACPI CA Core Subsystem:
11332
11333Designed and implemented new external interfaces to install and remove
11334handlers for ACPI table-related events. Current events that are defined
11335are
11336LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
11337they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
11338AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
11339
11340Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
11341(acpi_serialized option on Linux) could cause some systems to hang during
11342initialization. (Bob Moore) BZ 8171
11343
11344Fixed a problem where objects of certain types (Device, ThermalZone,
11345Processor, PowerResource) can be not found if they are declared and
11346referenced from within the same control method (Lin Ming) BZ 341
11347
11348Example Code and Data Size: These are the sizes for the OS-independent
11349acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11350debug version of the code includes the debug output trace mechanism and
11351has
11352a much larger code and data size.
11353
11354  Previous Release:
11355    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
11356    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
11357  Current Release:
11358    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
11359    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
11360
11361
113622) iASL Compiler/Disassembler:
11363
11364Implemented support to allow multiple files to be compiled/disassembled
11365in
11366a
11367single invocation. This includes command line wildcard support for both
11368the
11369Windows and Unix versions of the compiler. This feature simplifies the
11370disassembly and compilation of multiple ACPI tables in a single
11371directory.
11372
11373----------------------------------------
1137408 May 2007. Summary of changes for version 20070508:
11375
113761) ACPI CA Core Subsystem:
11377
11378Implemented a Microsoft compatibility design change for the handling of
11379the
11380Notify AML operator. Previously, notify handlers were dispatched and
11381executed completely asynchronously in a deferred thread. The new design
11382still executes the notify handlers in a different thread, but the
11383original
11384thread that executed the Notify() now waits at a synchronization point
11385for
11386the notify handler to complete. Some machines depend on a synchronous
11387Notify
11388operator in order to operate correctly.
11389
11390Implemented support to allow Package objects to be passed as method
11391arguments to the external AcpiEvaluateObject interface. Previously, this
11392would return the AE_NOT_IMPLEMENTED exception. This feature had not been
11393implemented since there were no reserved control methods that required it
11394until recently.
11395
11396Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
11397that
11398contained invalid non-zero values in reserved fields could cause later
11399failures because these fields have meaning in later revisions of the
11400FADT.
11401For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
11402fields
11403are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
11404
11405Fixed a problem where the Global Lock handle was not properly updated if
11406a
11407thread that acquired the Global Lock via executing AML code then
11408attempted
11409to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
11410Joe
11411Liu.
11412
11413Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
11414could be corrupted if the interrupt being removed was at the head of the
11415list. Reported by Linn Crosetto.
11416
11417Example Code and Data Size: These are the sizes for the OS-independent
11418acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11419debug version of the code includes the debug output trace mechanism and
11420has
11421a much larger code and data size.
11422
11423  Previous Release:
11424    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11425    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
11426  Current Release:
11427    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
11428    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
11429
11430----------------------------------------
1143120 March 2007. Summary of changes for version 20070320:
11432
114331) ACPI CA Core Subsystem:
11434
11435Implemented a change to the order of interpretation and evaluation of AML
11436operand objects within the AML interpreter. The interpreter now evaluates
11437operands in the order that they appear in the AML stream (and the
11438corresponding ASL code), instead of in the reverse order (after the
11439entire
11440operand list has been parsed). The previous behavior caused several
11441subtle
11442incompatibilities with the Microsoft AML interpreter as well as being
11443somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
11444
11445Implemented a change to the ACPI Global Lock support. All interfaces to
11446the
11447global lock now allow the same thread to acquire the lock multiple times.
11448This affects the AcpiAcquireGlobalLock external interface to the global
11449lock
11450as well as the internal use of the global lock to support AML fields -- a
11451control method that is holding the global lock can now simultaneously
11452access
11453AML fields that require global lock protection. Previously, in both
11454cases,
11455this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
11456to
11457AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
11458Controller. There is no change to the behavior of the AML Acquire
11459operator,
11460as this can already be used to acquire a mutex multiple times by the same
11461thread. BZ 8066. With assistance from Alexey Starikovskiy.
11462
11463Fixed a problem where invalid objects could be referenced in the AML
11464Interpreter after error conditions. During operand evaluation, ensure
11465that
11466the internal "Return Object" field is cleared on error and only valid
11467pointers are stored there. Caused occasional access to deleted objects
11468that
11469resulted in "large reference count" warning messages. Valery Podrezov.
11470
11471Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
11472on
11473deeply nested control method invocations. BZ 7873, local BZ 487. Valery
11474Podrezov.
11475
11476Fixed an internal problem with the handling of result objects on the
11477interpreter result stack. BZ 7872. Valery Podrezov.
11478
11479Removed obsolete code that handled the case where AML_NAME_OP is the
11480target
11481of a reference (Reference.Opcode). This code was no longer necessary. BZ
114827874. Valery Podrezov.
11483
11484Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
11485was
11486a
11487remnant from the previously discontinued 16-bit support.
11488
11489Example Code and Data Size: These are the sizes for the OS-independent
11490acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11491debug version of the code includes the debug output trace mechanism and
11492has
11493a much larger code and data size.
11494
11495  Previous Release:
11496    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11497    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11498  Current Release:
11499    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11500    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
11501
11502----------------------------------------
1150326 January 2007. Summary of changes for version 20070126:
11504
115051) ACPI CA Core Subsystem:
11506
11507Added the 2007 copyright to all module headers and signons. This affects
11508virtually every file in the ACPICA core subsystem, the iASL compiler, and
11509the utilities.
11510
11511Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
11512during a table load. A bad pointer was passed in the case where the DSDT
11513is
11514overridden, causing a fault in this case.
11515
11516Example Code and Data Size: These are the sizes for the OS-independent
11517acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11518debug version of the code includes the debug output trace mechanism and
11519has
11520a much larger code and data size.
11521
11522  Previous Release:
11523    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11524    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11525  Current Release:
11526    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11527    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11528
11529----------------------------------------
1153015 December 2006. Summary of changes for version 20061215:
11531
115321) ACPI CA Core Subsystem:
11533
11534Support for 16-bit ACPICA has been completely removed since it is no
11535longer
11536necessary and it clutters the code. All 16-bit macros, types, and
11537conditional compiles have been removed, cleaning up and simplifying the
11538code
11539across the entire subsystem. DOS support is no longer needed since the
11540bootable Linux firmware kit is now available.
11541
11542The handler for the Global Lock is now removed during AcpiTerminate to
11543enable a clean subsystem restart, via the implementation of the
11544AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
11545HP)
11546
11547Implemented enhancements to the multithreading support within the
11548debugger
11549to enable improved multithreading debugging and evaluation of the
11550subsystem.
11551(Valery Podrezov)
11552
11553Debugger: Enhanced the Statistics/Memory command to emit the total
11554(maximum)
11555memory used during the execution, as well as the maximum memory consumed
11556by
11557each of the various object types. (Valery Podrezov)
11558
11559Example Code and Data Size: These are the sizes for the OS-independent
11560acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11561debug version of the code includes the debug output trace mechanism and
11562has
11563a much larger code and data size.
11564
11565  Previous Release:
11566    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11567    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11568  Current Release:
11569    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11570    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11571
11572
115732) iASL Compiler/Disassembler and Tools:
11574
11575AcpiExec: Implemented a new option (-m) to display full memory use
11576statistics upon subsystem/program termination. (Valery Podrezov)
11577
11578----------------------------------------
1157909 November 2006. Summary of changes for version 20061109:
11580
115811) ACPI CA Core Subsystem:
11582
11583Optimized the Load ASL operator in the case where the source operand is
11584an
11585operation region. Simply map the operation region memory, instead of
11586performing a bytewise read. (Region must be of type SystemMemory, see
11587below.)
11588
11589Fixed the Load ASL operator for the case where the source operand is a
11590region field. A buffer object is also allowed as the source operand. BZ
11591480
11592
11593Fixed a problem where the Load ASL operator allowed the source operand to
11594be
11595an operation region of any type. It is now restricted to regions of type
11596SystemMemory, as per the ACPI specification. BZ 481
11597
11598Additional cleanup and optimizations for the new Table Manager code.
11599
11600AcpiEnable will now fail if all of the required ACPI tables are not
11601loaded
11602(FADT, FACS, DSDT). BZ 477
11603
11604Added #pragma pack(8/4) to acobject.h to ensure that the structures in
11605this
11606header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
11607manually optimized to be aligned and will not work if it is byte-packed.
11608
11609Example Code and Data Size: These are the sizes for the OS-independent
11610acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11611debug version of the code includes the debug output trace mechanism and
11612has
11613a much larger code and data size.
11614
11615  Previous Release:
11616    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11617    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11618  Current Release:
11619    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11620    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11621
11622
116232) iASL Compiler/Disassembler and Tools:
11624
11625Fixed a problem where the presence of the _OSI predefined control method
11626within complex expressions could cause an internal compiler error.
11627
11628AcpiExec: Implemented full region support for multiple address spaces.
11629SpaceId is now part of the REGION object. BZ 429
11630
11631----------------------------------------
1163211 October 2006. Summary of changes for version 20061011:
11633
116341) ACPI CA Core Subsystem:
11635
11636Completed an AML interpreter performance enhancement for control method
11637execution. Previously a 2-pass parse/execution, control methods are now
11638completely parsed and executed in a single pass. This improves overall
11639interpreter performance by ~25%, reduces code size, and reduces CPU stack
11640use. (Valery Podrezov + interpreter changes in version 20051202 that
11641eliminated namespace loading during the pass one parse.)
11642
11643Implemented _CID support for PCI Root Bridge detection. If the _HID does
11644not
11645match the predefined PCI Root Bridge IDs, the _CID list (if present) is
11646now
11647obtained and also checked for an ID match.
11648
11649Implemented additional support for the PCI _ADR execution: upsearch until
11650a
11651device scope is found before executing _ADR. This allows PCI_Config
11652operation regions to be declared locally within control methods
11653underneath
11654PCI device objects.
11655
11656Fixed a problem with a possible race condition between threads executing
11657AcpiWalkNamespace and the AML interpreter. This condition was removed by
11658modifying AcpiWalkNamespace to (by default) ignore all temporary
11659namespace
11660entries created during any concurrent control method execution. An
11661additional namespace race condition is known to exist between
11662AcpiWalkNamespace and the Load/Unload ASL operators and is still under
11663investigation.
11664
11665Restructured the AML ParseLoop function, breaking it into several
11666subfunctions in order to reduce CPU stack use and improve
11667maintainability.
11668(Mikhail Kouzmich)
11669
11670AcpiGetHandle: Fix for parameter validation to detect invalid
11671combinations
11672of prefix handle and pathname. BZ 478
11673
11674Example Code and Data Size: These are the sizes for the OS-independent
11675acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11676debug version of the code includes the debug output trace mechanism and
11677has
11678a much larger code and data size.
11679
11680  Previous Release:
11681    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11682    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11683  Current Release:
11684    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11685    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11686
116872) iASL Compiler/Disassembler and Tools:
11688
11689Ported the -g option (get local ACPI tables) to the new ACPICA Table
11690Manager
11691to restore original behavior.
11692
11693----------------------------------------
1169427 September 2006. Summary of changes for version 20060927:
11695
116961) ACPI CA Core Subsystem:
11697
11698Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
11699These functions now use a spinlock for mutual exclusion and the interrupt
11700level indication flag is not needed.
11701
11702Fixed a problem with the Global Lock where the lock could appear to be
11703obtained before it is actually obtained. The global lock semaphore was
11704inadvertently created with one unit instead of zero units. (BZ 464)
11705Fiodor
11706Suietov.
11707
11708Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
11709during
11710a read from a buffer or region field. (BZ 458) Fiodor Suietov.
11711
11712Example Code and Data Size: These are the sizes for the OS-independent
11713acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11714debug version of the code includes the debug output trace mechanism and
11715has
11716a much larger code and data size.
11717
11718  Previous Release:
11719    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11720    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11721  Current Release:
11722    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11723    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11724
11725
117262) iASL Compiler/Disassembler and Tools:
11727
11728Fixed a compilation problem with the pre-defined Resource Descriptor
11729field
11730names where an "object does not exist" error could be incorrectly
11731generated
11732if the parent ResourceTemplate pathname places the template within a
11733different namespace scope than the current scope. (BZ 7212)
11734
11735Fixed a problem where the compiler could hang after syntax errors
11736detected
11737in an ElseIf construct. (BZ 453)
11738
11739Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
11740operator. An incorrect output filename was produced when this parameter
11741was
11742a null string (""). Now, the original input filename is used as the AML
11743output filename, with an ".aml" extension.
11744
11745Implemented a generic batch command mode for the AcpiExec utility
11746(execute
11747any AML debugger command) (Valery Podrezov).
11748
11749----------------------------------------
1175012 September 2006. Summary of changes for version 20060912:
11751
117521) ACPI CA Core Subsystem:
11753
11754Enhanced the implementation of the "serialized mode" of the interpreter
11755(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
11756specified, instead of creating a serialization semaphore per control
11757method,
11758the interpreter lock is simply no longer released before a blocking
11759operation during control method execution. This effectively makes the AML
11760Interpreter single-threaded. The overhead of a semaphore per-method is
11761eliminated.
11762
11763Fixed a regression where an error was no longer emitted if a control
11764method
11765attempts to create 2 objects of the same name. This once again returns
11766AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
11767that
11768will dynamically serialize the control method to possible prevent future
11769errors. (BZ 440)
11770
11771Integrated a fix for a problem with PCI Express HID detection in the PCI
11772Config Space setup procedure. (BZ 7145)
11773
11774Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
11775AcpiHwInitialize function - the FADT registers are now validated when the
11776table is loaded.
11777
11778Added two new warnings during FADT verification - 1) if the FADT is
11779larger
11780than the largest known FADT version, and 2) if there is a mismatch
11781between
11782a
1178332-bit block address and the 64-bit X counterpart (when both are non-
11784zero.)
11785
11786Example Code and Data Size: These are the sizes for the OS-independent
11787acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11788debug version of the code includes the debug output trace mechanism and
11789has
11790a much larger code and data size.
11791
11792  Previous Release:
11793    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11794    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11795  Current Release:
11796    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11797    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11798
11799
118002) iASL Compiler/Disassembler and Tools:
11801
11802Fixed a problem with the implementation of the Switch() operator where
11803the
11804temporary variable was declared too close to the actual Switch, instead
11805of
11806at method level. This could cause a problem if the Switch() operator is
11807within a while loop, causing an error on the second iteration. (BZ 460)
11808
11809Disassembler - fix for error emitted for unknown type for target of scope
11810operator. Now, ignore it and continue.
11811
11812Disassembly of an FADT now verifies the input FADT and reports any errors
11813found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11814
11815Disassembly of raw data buffers with byte initialization data now
11816prefixes
11817each output line with the current buffer offset.
11818
11819Disassembly of ASF! table now includes all variable-length data fields at
11820the end of some of the subtables.
11821
11822The disassembler now emits a comment if a buffer appears to be a
11823ResourceTemplate, but cannot be disassembled as such because the EndTag
11824does
11825not appear at the very end of the buffer.
11826
11827AcpiExec - Added the "-t" command line option to enable the serialized
11828mode
11829of the AML interpreter.
11830
11831----------------------------------------
1183231 August 2006. Summary of changes for version 20060831:
11833
118341) ACPI CA Core Subsystem:
11835
11836Miscellaneous fixes for the Table Manager:
11837- Correctly initialize internal common FADT for all 64-bit "X" fields
11838- Fixed a couple table mapping issues during table load
11839- Fixed a couple alignment issues for IA64
11840- Initialize input array to zero in AcpiInitializeTables
11841- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
11842AcpiGetTableByIndex
11843
11844Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11845now
11846immediately disabled to prevent the waking GPE from firing again and to
11847prevent other wake GPEs from interrupting the wake process.
11848
11849Added the AcpiGpeCount global that tracks the number of processed GPEs,
11850to
11851be used for debugging systems with a large number of ACPI interrupts.
11852
11853Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11854both the ACPICA headers and the disassembler.
11855
11856Example Code and Data Size: These are the sizes for the OS-independent
11857acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11858debug version of the code includes the debug output trace mechanism and
11859has
11860a much larger code and data size.
11861
11862  Previous Release:
11863    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11864    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11865  Current Release:
11866    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11867    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11868
11869
118702) iASL Compiler/Disassembler and Tools:
11871
11872Disassembler support for the DMAR ACPI table.
11873
11874----------------------------------------
1187523 August 2006. Summary of changes for version 20060823:
11876
118771) ACPI CA Core Subsystem:
11878
11879The Table Manager component has been completely redesigned and
11880reimplemented. The new design is much simpler, and reduces the overall
11881code
11882and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11883is
11884now possible to obtain the ACPI tables very early during kernel
11885initialization, even before dynamic memory management is initialized.
11886(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11887
11888Obsolete ACPICA interfaces:
11889
11890- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11891init
11892time).
11893- AcpiLoadTable: Not needed.
11894- AcpiUnloadTable: Not needed.
11895
11896New ACPICA interfaces:
11897
11898- AcpiInitializeTables: Must be called before the table manager can be
11899used.
11900- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11901allocated memory after it becomes available.
11902- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11903tables
11904in the RSDT/XSDT.
11905
11906Other ACPICA changes:
11907
11908- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11909Use
11910AcpiOsUnmapMemory to free this mapping.
11911- AcpiGetTable returns the actual mapped table. The mapping is managed
11912internally and must not be deleted by the caller. Use of this interface
11913causes no additional dynamic memory allocation.
11914- AcpiFindRootPointer: Support for physical addressing has been
11915eliminated,
11916it appeared to be unused.
11917- The interface to AcpiOsMapMemory has changed to be consistent with the
11918other allocation interfaces.
11919- The interface to AcpiOsGetRootPointer has changed to eliminate
11920unnecessary
11921parameters.
11922- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1192364-
11924bit platforms. Was previously 64 bits on all platforms.
11925- The interface to the ACPI Global Lock acquire/release macros have
11926changed
11927slightly since ACPICA no longer keeps a local copy of the FACS with a
11928constructed pointer to the actual global lock.
11929
11930Porting to the new table manager:
11931
11932- AcpiInitializeTables: Must be called once, and can be called anytime
11933during the OS initialization process. It allows the host to specify an
11934area
11935of memory to be used to store the internal version of the RSDT/XSDT (root
11936table). This allows the host to access ACPI tables before memory
11937management
11938is initialized and running.
11939- AcpiReallocateRootTable: Can be called after memory management is
11940running
11941to copy the root table to a dynamically allocated array, freeing up the
11942scratch memory specified in the call to AcpiInitializeTables.
11943- AcpiSubsystemInitialize: This existing interface is independent of the
11944Table Manager, and does not have to be called before the Table Manager
11945can
11946be used, it only must be called before the rest of ACPICA can be used.
11947- ACPI Tables: Some changes have been made to the names and structure of
11948the
11949actbl.h and actbl1.h header files and may require changes to existing
11950code.
11951For example, bitfields have been completely removed because of their lack
11952of
11953portability across C compilers.
11954- Update interfaces to the Global Lock acquire/release macros if local
11955versions are used. (see acwin.h)
11956
11957Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11958
11959New files: tbfind.c
11960
11961Example Code and Data Size: These are the sizes for the OS-independent
11962acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11963debug version of the code includes the debug output trace mechanism and
11964has
11965a much larger code and data size.
11966
11967  Previous Release:
11968    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11969    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11970  Current Release:
11971    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11972    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11973
11974
119752) iASL Compiler/Disassembler and Tools:
11976
11977No changes for this release.
11978
11979----------------------------------------
1198021 July 2006. Summary of changes for version 20060721:
11981
119821) ACPI CA Core Subsystem:
11983
11984The full source code for the ASL test suite used to validate the iASL
11985compiler and the ACPICA core subsystem is being released with the ACPICA
11986source for the first time. The source is contained in a separate package
11987and
11988consists of over 1100 files that exercise all ASL/AML operators. The
11989package
11990should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11991Fiodor
11992Suietov)
11993
11994Completed a new design and implementation for support of the ACPI Global
11995Lock. On the OS side, the global lock is now treated as a standard AML
11996mutex. Previously, multiple OS threads could "acquire" the global lock
11997simultaneously. However, this could cause the BIOS to be starved out of
11998the
11999lock - especially in cases such as the Embedded Controller driver where
12000there is a tight coupling between the OS and the BIOS.
12001
12002Implemented an optimization for the ACPI Global Lock interrupt mechanism.
12003The Global Lock interrupt handler no longer queues the execution of a
12004separate thread to signal the global lock semaphore. Instead, the
12005semaphore
12006is signaled directly from the interrupt handler.
12007
12008Implemented support within the AML interpreter for package objects that
12009contain a larger AML length (package list length) than the package
12010element
12011count. In this case, the length of the package is truncated to match the
12012package element count. Some BIOS code apparently modifies the package
12013length
12014on the fly, and this change supports this behavior. Provides
12015compatibility
12016with the MS AML interpreter. (With assistance from Fiodor Suietov)
12017
12018Implemented a temporary fix for the BankValue parameter of a Bank Field
12019to
12020support all constant values, now including the Zero and One opcodes.
12021Evaluation of this parameter must eventually be converted to a full
12022TermArg
12023evaluation. A not-implemented error is now returned (temporarily) for
12024non-
12025constant values for this parameter.
12026
12027Fixed problem reports (Fiodor Suietov) integrated:
12028- Fix for premature object deletion after CopyObject on Operation Region
12029(BZ
12030350)
12031
12032Example Code and Data Size: These are the sizes for the OS-independent
12033acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12034debug version of the code includes the debug output trace mechanism and
12035has
12036a much larger code and data size.
12037
12038  Previous Release:
12039    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
12040    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
12041  Current Release:
12042    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
12043    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
12044
12045
120462) iASL Compiler/Disassembler and Tools:
12047
12048No changes for this release.
12049
12050----------------------------------------
1205107 July 2006. Summary of changes for version 20060707:
12052
120531) ACPI CA Core Subsystem:
12054
12055Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
12056that do not allow the initialization of address pointers within packed
12057structures - even though the hardware itself may support misaligned
12058transfers. Some of the debug data structures are packed by default to
12059minimize size.
12060
12061Added an error message for the case where AcpiOsGetThreadId() returns
12062zero.
12063A non-zero value is required by the core ACPICA code to ensure the proper
12064operation of AML mutexes and recursive control methods.
12065
12066The DSDT is now the only ACPI table that determines whether the AML
12067interpreter is in 32-bit or 64-bit mode. Not really a functional change,
12068but
12069the hooks for per-table 32/64 switching have been removed from the code.
12070A
12071clarification to the ACPI specification is forthcoming in ACPI 3.0B.
12072
12073Fixed a possible leak of an OwnerID in the error path of
12074AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
12075deletion to a single place in AcpiTbUninstallTable to correct possible
12076leaks
12077when using the AcpiTbDeleteTablesByType interface (with assistance from
12078Lance Ortiz.)
12079
12080Fixed a problem with Serialized control methods where the semaphore
12081associated with the method could be over-signaled after multiple method
12082invocations.
12083
12084Fixed two issues with the locking of the internal namespace data
12085structure.
12086Both the Unload() operator and AcpiUnloadTable interface now lock the
12087namespace during the namespace deletion associated with the table unload
12088(with assistance from Linn Crosetto.)
12089
12090Fixed problem reports (Valery Podrezov) integrated:
12091- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
12092
12093Fixed problem reports (Fiodor Suietov) integrated:
12094- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
12095- On Address Space handler deletion, needless deactivation call (BZ 374)
12096- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
12097375)
12098- Possible memory leak, Notify sub-objects of Processor, Power,
12099ThermalZone
12100(BZ 376)
12101- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
12102- Minimum Length of RSDT should be validated (BZ 379)
12103- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
12104Handler (BZ (380)
12105- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
12106loaded
12107(BZ 381)
12108
12109Example Code and Data Size: These are the sizes for the OS-independent
12110acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12111debug version of the code includes the debug output trace mechanism and
12112has
12113a much larger code and data size.
12114
12115  Previous Release:
12116    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
12117    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
12118  Current Release:
12119    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
12120    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
12121
12122
121232) iASL Compiler/Disassembler and Tools:
12124
12125Fixed problem reports:
12126Compiler segfault when ASL contains a long (>1024) String declaration (BZ
12127436)
12128
12129----------------------------------------
1213023 June 2006. Summary of changes for version 20060623:
12131
121321) ACPI CA Core Subsystem:
12133
12134Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
12135allows the type to be customized to the host OS for improved efficiency
12136(since a spinlock is usually a very small object.)
12137
12138Implemented support for "ignored" bits in the ACPI registers. According
12139to
12140the ACPI specification, these bits should be preserved when writing the
12141registers via a read/modify/write cycle. There are 3 bits preserved in
12142this
12143manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
12144
12145Implemented the initial deployment of new OSL mutex interfaces. Since
12146some
12147host operating systems have separate mutex and semaphore objects, this
12148feature was requested. The base code now uses mutexes (and the new mutex
12149interfaces) wherever a binary semaphore was used previously. However, for
12150the current release, the mutex interfaces are defined as macros to map
12151them
12152to the existing semaphore interfaces. Therefore, no OSL changes are
12153required
12154at this time. (See acpiosxf.h)
12155
12156Fixed several problems with the support for the control method SyncLevel
12157parameter. The SyncLevel now works according to the ACPI specification
12158and
12159in concert with the Mutex SyncLevel parameter, since the current
12160SyncLevel
12161is a property of the executing thread. Mutual exclusion for control
12162methods
12163is now implemented with a mutex instead of a semaphore.
12164
12165Fixed three instances of the use of the C shift operator in the bitfield
12166support code (exfldio.c) to avoid the use of a shift value larger than
12167the
12168target data width. The behavior of C compilers is undefined in this case
12169and
12170can cause unpredictable results, and therefore the case must be detected
12171and
12172avoided. (Fiodor Suietov)
12173
12174Added an info message whenever an SSDT or OEM table is loaded dynamically
12175via the Load() or LoadTable() ASL operators. This should improve
12176debugging
12177capability since it will show exactly what tables have been loaded
12178(beyond
12179the tables present in the RSDT/XSDT.)
12180
12181Example Code and Data Size: These are the sizes for the OS-independent
12182acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12183debug version of the code includes the debug output trace mechanism and
12184has
12185a much larger code and data size.
12186
12187  Previous Release:
12188    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
12189    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
12190  Current Release:
12191    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
12192    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
12193
12194
121952) iASL Compiler/Disassembler and Tools:
12196
12197No changes for this release.
12198
12199----------------------------------------
1220008 June 2006. Summary of changes for version 20060608:
12201
122021) ACPI CA Core Subsystem:
12203
12204Converted the locking mutex used for the ACPI hardware to a spinlock.
12205This
12206change should eliminate all problems caused by attempting to acquire a
12207semaphore at interrupt level, and it means that all ACPICA external
12208interfaces that directly access the ACPI hardware can be safely called
12209from
12210interrupt level. OSL code that implements the semaphore interfaces should
12211be
12212able to eliminate any workarounds for being called at interrupt level.
12213
12214Fixed a regression introduced in 20060526 where the ACPI device
12215initialization could be prematurely aborted with an AE_NOT_FOUND if a
12216device
12217did not have an optional _INI method.
12218
12219Fixed an IndexField issue where a write to the Data Register should be
12220limited in size to the AccessSize (width) of the IndexField itself. (BZ
12221433,
12222Fiodor Suietov)
12223
12224Fixed problem reports (Valery Podrezov) integrated:
12225- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
12226
12227Fixed problem reports (Fiodor Suietov) integrated:
12228- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
12229
12230Removed four global mutexes that were obsolete and were no longer being
12231used.
12232
12233Example Code and Data Size: These are the sizes for the OS-independent
12234acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12235debug version of the code includes the debug output trace mechanism and
12236has
12237a much larger code and data size.
12238
12239  Previous Release:
12240    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
12241    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
12242  Current Release:
12243    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
12244    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
12245
12246
122472) iASL Compiler/Disassembler and Tools:
12248
12249Fixed a fault when using -g option (get tables from registry) on Windows
12250machines.
12251
12252Fixed problem reports integrated:
12253- Generate error if CreateField NumBits parameter is zero. (BZ 405)
12254- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
12255Suietov)
12256- Global table revision override (-r) is ignored (BZ 413)
12257
12258----------------------------------------
1225926 May 2006. Summary of changes for version 20060526:
12260
122611) ACPI CA Core Subsystem:
12262
12263Restructured, flattened, and simplified the internal interfaces for
12264namespace object evaluation - resulting in smaller code, less CPU stack
12265use,
12266and fewer interfaces. (With assistance from Mikhail Kouzmich)
12267
12268Fixed a problem with the CopyObject operator where the first parameter
12269was
12270not typed correctly for the parser, interpreter, compiler, and
12271disassembler.
12272Caused various errors and unexpected behavior.
12273
12274Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
12275produced incorrect results with some C compilers. Since the behavior of C
12276compilers when the shift value is larger than the datatype width is
12277apparently not well defined, the interpreter now detects this condition
12278and
12279simply returns zero as expected in all such cases. (BZ 395)
12280
12281Fixed problem reports (Valery Podrezov) integrated:
12282- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
12283- Allow interpreter to handle nested method declarations (BZ 5361)
12284
12285Fixed problem reports (Fiodor Suietov) integrated:
12286- AcpiTerminate doesn't free debug memory allocation list objects (BZ
12287355)
12288- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
12289356)
12290- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
12291- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
12292- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
12293- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
12294- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
12295- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
12296- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
12297365)
12298- Status of the Global Initialization Handler call not used (BZ 366)
12299- Incorrect object parameter to Global Initialization Handler (BZ 367)
12300
12301Example Code and Data Size: These are the sizes for the OS-independent
12302acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12303debug version of the code includes the debug output trace mechanism and
12304has
12305a much larger code and data size.
12306
12307  Previous Release:
12308    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
12309    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
12310  Current Release:
12311    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
12312    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
12313
12314
123152) iASL Compiler/Disassembler and Tools:
12316
12317Modified the parser to allow the names IO, DMA, and IRQ to be used as
12318namespace identifiers with no collision with existing resource descriptor
12319macro names. This provides compatibility with other ASL compilers and is
12320most useful for disassembly/recompilation of existing tables without
12321parse
12322errors. (With assistance from Thomas Renninger)
12323
12324Disassembler: fixed an incorrect disassembly problem with the
12325DataTableRegion and CopyObject operators. Fixed a possible fault during
12326disassembly of some Alias operators.
12327
12328----------------------------------------
1232912 May 2006. Summary of changes for version 20060512:
12330
123311) ACPI CA Core Subsystem:
12332
12333Replaced the AcpiOsQueueForExecution interface with a new interface named
12334AcpiOsExecute. The major difference is that the new interface does not
12335have
12336a Priority parameter, this appeared to be useless and has been replaced
12337by
12338a
12339Type parameter. The Type tells the host what type of execution is being
12340requested, such as global lock handler, notify handler, GPE handler, etc.
12341This allows the host to queue and execute the request as appropriate for
12342the
12343request type, possibly using different work queues and different
12344priorities
12345for the various request types. This enables fixes for multithreading
12346deadlock problems such as BZ #5534, and will require changes to all
12347existing
12348OS interface layers. (Alexey Starikovskiy and Bob Moore)
12349
12350Fixed a possible memory leak associated with the support for the so-
12351called
12352"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
12353Suietov)
12354
12355Fixed a problem with the Load() operator where a table load from an
12356operation region could overwrite an internal table buffer by up to 7
12357bytes
12358and cause alignment faults on IPF systems. (With assistance from Luming
12359Yu)
12360
12361Example Code and Data Size: These are the sizes for the OS-independent
12362acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12363debug version of the code includes the debug output trace mechanism and
12364has
12365a much larger code and data size.
12366
12367  Previous Release:
12368    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
12369    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
12370  Current Release:
12371    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
12372    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
12373
12374
12375
123762) iASL Compiler/Disassembler and Tools:
12377
12378Disassembler: Implemented support to cross reference the internal
12379namespace
12380and automatically generate ASL External() statements for symbols not
12381defined
12382within the current table being disassembled. This will simplify the
12383disassembly and recompilation of interdependent tables such as SSDTs
12384since
12385these statements will no longer have to be added manually.
12386
12387Disassembler: Implemented experimental support to automatically detect
12388invocations of external control methods and generate appropriate
12389External()
12390statements. This is problematic because the AML cannot be correctly
12391parsed
12392until the number of arguments for each control method is known.
12393Currently,
12394standalone method invocations and invocations as the source operand of a
12395Store() statement are supported.
12396
12397Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
12398LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
12399LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
12400more readable and likely closer to the original ASL source.
12401
12402----------------------------------------
1240321 April 2006. Summary of changes for version 20060421:
12404
124051) ACPI CA Core Subsystem:
12406
12407Removed a device initialization optimization introduced in 20051216 where
12408the _STA method was not run unless an _INI was also present for the same
12409device. This optimization could cause problems because it could allow
12410_INI
12411methods to be run within a not-present device subtree. (If a not-present
12412device had no _INI, _STA would not be run, the not-present status would
12413not
12414be discovered, and the children of the device would be incorrectly
12415traversed.)
12416
12417Implemented a new _STA optimization where namespace subtrees that do not
12418contain _INI are identified and ignored during device initialization.
12419Selectively running _STA can significantly improve boot time on large
12420machines (with assistance from Len Brown.)
12421
12422Implemented support for the device initialization case where the returned
12423_STA flags indicate a device not-present but functioning. In this case,
12424_INI
12425is not run, but the device children are examined for presence, as per the
12426ACPI specification.
12427
12428Implemented an additional change to the IndexField support in order to
12429conform to MS behavior. The value written to the Index Register is not
12430simply a byte offset, it is a byte offset in units of the access width of
12431the parent Index Field. (Fiodor Suietov)
12432
12433Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
12434interface is called during the creation of all AML operation regions, and
12435allows the host OS to exert control over what addresses it will allow the
12436AML code to access. Operation Regions whose addresses are disallowed will
12437cause a runtime exception when they are actually accessed (will not
12438affect
12439or abort table loading.) See oswinxf or osunixxf for an example
12440implementation.
12441
12442Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
12443interface allows the host OS to match the various "optional"
12444interface/behavior strings for the _OSI predefined control method as
12445appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
12446for an example implementation.
12447
12448Restructured and corrected various problems in the exception handling
12449code
12450paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
12451(with assistance from Takayoshi Kochi.)
12452
12453Modified the Linux source converter to ignore quoted string literals
12454while
12455converting identifiers from mixed to lower case. This will correct
12456problems
12457with the disassembler and other areas where such strings must not be
12458modified.
12459
12460The ACPI_FUNCTION_* macros no longer require quotes around the function
12461name. This allows the Linux source converter to convert the names, now
12462that
12463the converter ignores quoted strings.
12464
12465Example Code and Data Size: These are the sizes for the OS-independent
12466acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12467debug version of the code includes the debug output trace mechanism and
12468has
12469a much larger code and data size.
12470
12471  Previous Release:
12472
12473    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
12474    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
12475  Current Release:
12476    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
12477    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
12478
12479
124802) iASL Compiler/Disassembler and Tools:
12481
12482Implemented 3 new warnings for iASL, and implemented multiple warning
12483levels
12484(w2 flag).
12485
124861) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
12487not
12488WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
12489check for the possible timeout, a warning is issued.
12490
124912) Useless operators: If an ASL operator does not specify an optional
12492target
12493operand and it also does not use the function return value from the
12494operator, a warning is issued since the operator effectively does
12495nothing.
12496
124973) Unreferenced objects: If a namespace object is created, but never
12498referenced, a warning is issued. This is a warning level 2 since there
12499are
12500cases where this is ok, such as when a secondary table is loaded that
12501uses
12502the unreferenced objects. Even so, care is taken to only flag objects
12503that
12504don't look like they will ever be used. For example, the reserved methods
12505(starting with an underscore) are usually not referenced because it is
12506expected that the OS will invoke them.
12507
12508----------------------------------------
1250931 March 2006. Summary of changes for version 20060331:
12510
125111) ACPI CA Core Subsystem:
12512
12513Implemented header file support for the following additional ACPI tables:
12514ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
12515support,
12516all current and known ACPI tables are now defined in the ACPICA headers
12517and
12518are available for use by device drivers and other software.
12519
12520Implemented support to allow tables that contain ACPI names with invalid
12521characters to be loaded. Previously, this would cause the table load to
12522fail, but since there are several known cases of such tables on existing
12523machines, this change was made to enable ACPI support for them. Also,
12524this
12525matches the behavior of the Microsoft ACPI implementation.
12526
12527Fixed a couple regressions introduced during the memory optimization in
12528the
1252920060317 release. The namespace node definition required additional
12530reorganization and an internal datatype that had been changed to 8-bit
12531was
12532restored to 32-bit. (Valery Podrezov)
12533
12534Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
12535could be passed through to AcpiOsReleaseObject which is unexpected. Such
12536null pointers are now trapped and ignored, matching the behavior of the
12537previous implementation before the deployment of AcpiOsReleaseObject.
12538(Valery Podrezov, Fiodor Suietov)
12539
12540Fixed a memory mapping leak during the deletion of a SystemMemory
12541operation
12542region where a cached memory mapping was not deleted. This became a
12543noticeable problem for operation regions that are defined within
12544frequently
12545used control methods. (Dana Meyers)
12546
12547Reorganized the ACPI table header files into two main files: one for the
12548ACPI tables consumed by the ACPICA core, and another for the
12549miscellaneous
12550ACPI tables that are consumed by the drivers and other software. The
12551various
12552FADT definitions were merged into one common section and three different
12553tables (ACPI 1.0, 1.0+, and 2.0)
12554
12555Example Code and Data Size: These are the sizes for the OS-independent
12556acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12557debug version of the code includes the debug output trace mechanism and
12558has
12559a much larger code and data size.
12560
12561  Previous Release:
12562    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12563    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12564  Current Release:
12565    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
12566    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
12567
12568
125692) iASL Compiler/Disassembler and Tools:
12570
12571Disassembler: Implemented support to decode and format all non-AML ACPI
12572tables (tables other than DSDTs and SSDTs.) This includes the new tables
12573added to the ACPICA headers, therefore all current and known ACPI tables
12574are
12575supported.
12576
12577Disassembler: The change to allow ACPI names with invalid characters also
12578enables the disassembly of such tables. Invalid characters within names
12579are
12580changed to '*' to make the name printable; the iASL compiler will still
12581generate an error for such names, however, since this is an invalid ACPI
12582character.
12583
12584Implemented an option for AcpiXtract (-a) to extract all tables found in
12585the
12586input file. The default invocation extracts only the DSDTs and SSDTs.
12587
12588Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
12589makefile for the AcpiXtract utility.
12590
12591----------------------------------------
1259217 March 2006. Summary of changes for version 20060317:
12593
125941) ACPI CA Core Subsystem:
12595
12596Implemented the use of a cache object for all internal namespace nodes.
12597Since there are about 1000 static nodes in a typical system, this will
12598decrease memory use for cache implementations that minimize per-
12599allocation
12600overhead (such as a slab allocator.)
12601
12602Removed the reference count mechanism for internal namespace nodes, since
12603it
12604was deemed unnecessary. This reduces the size of each namespace node by
12605about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
12606case,
12607and 32 bytes for the 64-bit case.
12608
12609Optimized several internal data structures to reduce object size on 64-
12610bit
12611platforms by packing data within the 64-bit alignment. This includes the
12612frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
12613instances corresponding to the namespace objects.
12614
12615Added two new strings for the predefined _OSI method: "Windows 2001.1
12616SP1"
12617and "Windows 2006".
12618
12619Split the allocation tracking mechanism out to a separate file, from
12620utalloc.c to uttrack.c. This mechanism appears to be only useful for
12621application-level code. Kernels may wish to not include uttrack.c in
12622distributions.
12623
12624Removed all remnants of the obsolete ACPI_REPORT_* macros and the
12625associated
12626code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
12627macros.)
12628
12629Code and Data Size: These are the sizes for the acpica.lib produced by
12630the
12631Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12632ACPI
12633driver or OSPM code. The debug version of the code includes the debug
12634output
12635trace mechanism and has a much larger code and data size. Note that these
12636values will vary depending on the efficiency of the compiler and the
12637compiler options used during generation.
12638
12639  Previous Release:
12640    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12641    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12642  Current Release:
12643    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12644    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12645
12646
126472) iASL Compiler/Disassembler and Tools:
12648
12649Implemented an ANSI C version of the acpixtract utility. This version
12650will
12651automatically extract the DSDT and all SSDTs from the input acpidump text
12652file and dump the binary output to separate files. It can also display a
12653summary of the input file including the headers for each table found and
12654will extract any single ACPI table, with any signature. (See
12655source/tools/acpixtract)
12656
12657----------------------------------------
1265810 March 2006. Summary of changes for version 20060310:
12659
126601) ACPI CA Core Subsystem:
12661
12662Tagged all external interfaces to the subsystem with the new
12663ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
12664assist
12665kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
12666macro. The default definition is NULL.
12667
12668Added the ACPI_THREAD_ID type for the return value from
12669AcpiOsGetThreadId.
12670This allows the host to define this as necessary to simplify kernel
12671integration. The default definition is ACPI_NATIVE_UINT.
12672
12673Fixed two interpreter problems related to error processing, the deletion
12674of
12675objects, and placing invalid pointers onto the internal operator result
12676stack. BZ 6028, 6151 (Valery Podrezov)
12677
12678Increased the reference count threshold where a warning is emitted for
12679large
12680reference counts in order to eliminate unnecessary warnings on systems
12681with
12682large namespaces (especially 64-bit.) Increased the value from 0x400 to
126830x800.
12684
12685Due to universal disagreement as to the meaning of the 'c' in the
12686calloc()
12687function, the ACPI_MEM_CALLOCATE macro has been renamed to
12688ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
12689ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
12690ACPI_FREE.
12691
12692Code and Data Size: These are the sizes for the acpica.lib produced by
12693the
12694Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12695ACPI
12696driver or OSPM code. The debug version of the code includes the debug
12697output
12698trace mechanism and has a much larger code and data size. Note that these
12699values will vary depending on the efficiency of the compiler and the
12700compiler options used during generation.
12701
12702  Previous Release:
12703    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12704    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12705  Current Release:
12706    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12707    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12708
12709
127102) iASL Compiler/Disassembler:
12711
12712Disassembler: implemented support for symbolic resource descriptor
12713references. If a CreateXxxxField operator references a fixed offset
12714within
12715a
12716resource descriptor, a name is assigned to the descriptor and the offset
12717is
12718translated to the appropriate resource tag and pathname. The addition of
12719this support brings the disassembled code very close to the original ASL
12720source code and helps eliminate run-time errors when the disassembled
12721code
12722is modified (and recompiled) in such a way as to invalidate the original
12723fixed offsets.
12724
12725Implemented support for a Descriptor Name as the last parameter to the
12726ASL
12727Register() macro. This parameter was inadvertently left out of the ACPI
12728specification, and will be added for ACPI 3.0b.
12729
12730Fixed a problem where the use of the "_OSI" string (versus the full path
12731"\_OSI") caused an internal compiler error. ("No back ptr to op")
12732
12733Fixed a problem with the error message that occurs when an invalid string
12734is
12735used for a _HID object (such as one with an embedded asterisk:
12736"*PNP010A".)
12737The correct message is now displayed.
12738
12739----------------------------------------
1274017 February 2006. Summary of changes for version 20060217:
12741
127421) ACPI CA Core Subsystem:
12743
12744Implemented a change to the IndexField support to match the behavior of
12745the
12746Microsoft AML interpreter. The value written to the Index register is now
12747a
12748byte offset, no longer an index based upon the width of the Data
12749register.
12750This should fix IndexField problems seen on some machines where the Data
12751register is not exactly one byte wide. The ACPI specification will be
12752clarified on this point.
12753
12754Fixed a problem where several resource descriptor types could overrun the
12755internal descriptor buffer due to size miscalculation: VendorShort,
12756VendorLong, and Interrupt. This was noticed on IA64 machines, but could
12757affect all platforms.
12758
12759Fixed a problem where individual resource descriptors were misaligned
12760within
12761the internal buffer, causing alignment faults on IA64 platforms.
12762
12763Code and Data Size: These are the sizes for the acpica.lib produced by
12764the
12765Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12766ACPI
12767driver or OSPM code. The debug version of the code includes the debug
12768output
12769trace mechanism and has a much larger code and data size. Note that these
12770values will vary depending on the efficiency of the compiler and the
12771compiler options used during generation.
12772
12773  Previous Release:
12774    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12775    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12776  Current Release:
12777    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12778    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12779
12780
127812) iASL Compiler/Disassembler:
12782
12783Implemented support for new reserved names: _WDG and _WED are Microsoft
12784extensions for Windows Instrumentation Management, _TDL is a new ACPI-
12785defined method (Throttling Depth Limit.)
12786
12787Fixed a problem where a zero-length VendorShort or VendorLong resource
12788descriptor was incorrectly emitted as a descriptor of length one.
12789
12790----------------------------------------
1279110 February 2006. Summary of changes for version 20060210:
12792
127931) ACPI CA Core Subsystem:
12794
12795Removed a couple of extraneous ACPI_ERROR messages that appeared during
12796normal execution. These became apparent after the conversion from
12797ACPI_DEBUG_PRINT.
12798
12799Fixed a problem where the CreateField operator could hang if the BitIndex
12800or
12801NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12802
12803Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12804failed with an exception. This also fixes a couple of related RefOf and
12805DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12806
12807Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12808of
12809AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12810BZ
128115480)
12812
12813Implemented a memory cleanup at the end of the execution of each
12814iteration
12815of an AML While() loop, preventing the accumulation of outstanding
12816objects.
12817(Valery Podrezov, BZ 5427)
12818
12819Eliminated a chunk of duplicate code in the object resolution code.
12820(Valery
12821Podrezov, BZ 5336)
12822
12823Fixed several warnings during the 64-bit code generation.
12824
12825The AcpiSrc source code conversion tool now inserts one line of
12826whitespace
12827after an if() statement that is followed immediately by a comment,
12828improving
12829readability of the Linux code.
12830
12831Code and Data Size: The current and previous library sizes for the core
12832subsystem are shown below. These are the code and data sizes for the
12833acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12834These
12835values do not include any ACPI driver or OSPM code. The debug version of
12836the
12837code includes the debug output trace mechanism and has a much larger code
12838and data size. Note that these values will vary depending on the
12839efficiency
12840of the compiler and the compiler options used during generation.
12841
12842  Previous Release:
12843    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12844    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12845  Current Release:
12846    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12847    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12848
12849
128502) iASL Compiler/Disassembler:
12851
12852Fixed a problem with the disassembly of a BankField operator with a
12853complex
12854expression for the BankValue parameter.
12855
12856----------------------------------------
1285727 January 2006. Summary of changes for version 20060127:
12858
128591) ACPI CA Core Subsystem:
12860
12861Implemented support in the Resource Manager to allow unresolved
12862namestring
12863references within resource package objects for the _PRT method. This
12864support
12865is in addition to the previously implemented unresolved reference support
12866within the AML parser. If the interpreter slack mode is enabled, these
12867unresolved references will be passed through to the caller as a NULL
12868package
12869entry.
12870
12871Implemented and deployed new macros and functions for error and warning
12872messages across the subsystem. These macros are simpler and generate less
12873code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12874ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12875macros remain defined to allow ACPI drivers time to migrate to the new
12876macros.
12877
12878Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12879the
12880Acquire/Release Lock OSL interfaces.
12881
12882Fixed a problem where Alias ASL operators are sometimes not correctly
12883resolved, in both the interpreter and the iASL compiler.
12884
12885Fixed several problems with the implementation of the
12886ConcatenateResTemplate
12887ASL operator. As per the ACPI specification, zero length buffers are now
12888treated as a single EndTag. One-length buffers always cause a fatal
12889exception. Non-zero length buffers that do not end with a full 2-byte
12890EndTag
12891cause a fatal exception.
12892
12893Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12894interface. (With assistance from Thomas Renninger)
12895
12896Code and Data Size: The current and previous library sizes for the core
12897subsystem are shown below. These are the code and data sizes for the
12898acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12899These
12900values do not include any ACPI driver or OSPM code. The debug version of
12901the
12902code includes the debug output trace mechanism and has a much larger code
12903and data size. Note that these values will vary depending on the
12904efficiency
12905of the compiler and the compiler options used during generation.
12906
12907  Previous Release:
12908    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12909    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12910  Current Release:
12911    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12912    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12913
12914
129152) iASL Compiler/Disassembler:
12916
12917Fixed an internal error that was generated for any forward references to
12918ASL
12919Alias objects.
12920
12921----------------------------------------
1292213 January 2006. Summary of changes for version 20060113:
12923
129241) ACPI CA Core Subsystem:
12925
12926Added 2006 copyright to all module headers and signons. This affects
12927virtually every file in the ACPICA core subsystem, iASL compiler, and the
12928utilities.
12929
12930Enhanced the ACPICA error reporting in order to simplify user migration
12931to
12932the non-debug version of ACPICA. Replaced all instances of the
12933ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12934debug
12935levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12936respectively. This preserves all error and warning messages in the non-
12937debug
12938version of the ACPICA code (this has been referred to as the "debug lite"
12939option.) Over 200 cases were converted to create a total of over 380
12940error/warning messages across the ACPICA code. This increases the code
12941and
12942data size of the default non-debug version of the code somewhat (about
1294313K),
12944but all error/warning reporting may be disabled if desired (and code
12945eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12946configuration option. The size of the debug version of ACPICA remains
12947about
12948the same.
12949
12950Fixed a memory leak within the AML Debugger "Set" command. One object was
12951not properly deleted for every successful invocation of the command.
12952
12953Code and Data Size: The current and previous library sizes for the core
12954subsystem are shown below. These are the code and data sizes for the
12955acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12956These
12957values do not include any ACPI driver or OSPM code. The debug version of
12958the
12959code includes the debug output trace mechanism and has a much larger code
12960and data size. Note that these values will vary depending on the
12961efficiency
12962of the compiler and the compiler options used during generation.
12963
12964  Previous Release:
12965    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12966    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12967  Current Release:
12968    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12969    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12970
12971
129722) iASL Compiler/Disassembler:
12973
12974The compiler now officially supports the ACPI 3.0a specification that was
12975released on December 30, 2005. (Specification is available at
12976www.acpi.info)
12977
12978----------------------------------------
1297916 December 2005. Summary of changes for version 20051216:
12980
129811) ACPI CA Core Subsystem:
12982
12983Implemented optional support to allow unresolved names within ASL Package
12984objects. A null object is inserted in the package when a named reference
12985cannot be located in the current namespace. Enabled via the interpreter
12986slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12987machines
12988that contain such code.
12989
12990Implemented an optimization to the initialization sequence that can
12991improve
12992boot time. During ACPI device initialization, the _STA method is now run
12993if
12994and only if the _INI method exists. The _STA method is used to determine
12995if
12996the device is present; An _INI can only be run if _STA returns present,
12997but
12998it is a waste of time to run the _STA method if the _INI does not exist.
12999(Prototype and assistance from Dong Wei)
13000
13001Implemented use of the C99 uintptr_t for the pointer casting macros if it
13002is
13003available in the current compiler. Otherwise, the default (void *) cast
13004is
13005used as before.
13006
13007Fixed some possible memory leaks found within the execution path of the
13008Break, Continue, If, and CreateField operators. (Valery Podrezov)
13009
13010Fixed a problem introduced in the 20051202 release where an exception is
13011generated during method execution if a control method attempts to declare
13012another method.
13013
13014Moved resource descriptor string constants that are used by both the AML
13015disassembler and AML debugger to the common utilities directory so that
13016these components are independent.
13017
13018Implemented support in the AcpiExec utility (-e switch) to globally
13019ignore
13020exceptions during control method execution (method is not aborted.)
13021
13022Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
13023generation.
13024
13025Code and Data Size: The current and previous library sizes for the core
13026subsystem are shown below. These are the code and data sizes for the
13027acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13028These
13029values do not include any ACPI driver or OSPM code. The debug version of
13030the
13031code includes the debug output trace mechanism and has a much larger code
13032and data size. Note that these values will vary depending on the
13033efficiency
13034of the compiler and the compiler options used during generation.
13035
13036  Previous Release:
13037    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
13038    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
13039  Current Release:
13040    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
13041    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
13042
13043
130442) iASL Compiler/Disassembler:
13045
13046Fixed a problem where a CPU stack overflow fault could occur if a
13047recursive
13048method call was made from within a Return statement.
13049
13050----------------------------------------
1305102 December 2005. Summary of changes for version 20051202:
13052
130531) ACPI CA Core Subsystem:
13054
13055Modified the parsing of control methods to no longer create namespace
13056objects during the first pass of the parse. Objects are now created only
13057during the execute phase, at the moment the namespace creation operator
13058is
13059encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
13060This
13061should eliminate ALREADY_EXISTS exceptions seen on some machines where
13062reentrant control methods are protected by an AML mutex. The mutex will
13063now
13064correctly block multiple threads from attempting to create the same
13065object
13066more than once.
13067
13068Increased the number of available Owner Ids for namespace object tracking
13069from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
13070on
13071some machines with a large number of ACPI tables (either static or
13072dynamic).
13073
13074Fixed a problem with the AcpiExec utility where a fault could occur when
13075the
13076-b switch (batch mode) is used.
13077
13078Enhanced the namespace dump routine to output the owner ID for each
13079namespace object.
13080
13081Code and Data Size: The current and previous library sizes for the core
13082subsystem are shown below. These are the code and data sizes for the
13083acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13084These
13085values do not include any ACPI driver or OSPM code. The debug version of
13086the
13087code includes the debug output trace mechanism and has a much larger code
13088and data size. Note that these values will vary depending on the
13089efficiency
13090of the compiler and the compiler options used during generation.
13091
13092  Previous Release:
13093    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
13094    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13095  Current Release:
13096    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
13097    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
13098
13099
131002) iASL Compiler/Disassembler:
13101
13102Fixed a parse error during compilation of certain Switch/Case constructs.
13103To
13104simplify the parse, the grammar now allows for multiple Default
13105statements
13106and this error is now detected and flagged during the analysis phase.
13107
13108Disassembler: The disassembly now includes the contents of the original
13109table header within a comment at the start of the file. This includes the
13110name and version of the original ASL compiler.
13111
13112----------------------------------------
1311317 November 2005. Summary of changes for version 20051117:
13114
131151) ACPI CA Core Subsystem:
13116
13117Fixed a problem in the AML parser where the method thread count could be
13118decremented below zero if any errors occurred during the method parse
13119phase.
13120This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
13121machines.
13122This also fixed a related regression with the mechanism that detects and
13123corrects methods that cannot properly handle reentrancy (related to the
13124deployment of the new OwnerId mechanism.)
13125
13126Eliminated the pre-parsing of control methods (to detect errors) during
13127table load. Related to the problem above, this was causing unwind issues
13128if
13129any errors occurred during the parse, and it seemed to be overkill. A
13130table
13131load should not be aborted if there are problems with any single control
13132method, thus rendering this feature rather pointless.
13133
13134Fixed a problem with the new table-driven resource manager where an
13135internal
13136buffer overflow could occur for small resource templates.
13137
13138Implemented a new external interface, AcpiGetVendorResource. This
13139interface
13140will find and return a vendor-defined resource descriptor within a _CRS
13141or
13142_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
13143Helgaas.
13144
13145Removed the length limit (200) on string objects as per the upcoming ACPI
131463.0A specification. This affects the following areas of the interpreter:
131471)
13148any implicit conversion of a Buffer to a String, 2) a String object
13149result
13150of the ASL Concatenate operator, 3) the String object result of the ASL
13151ToString operator.
13152
13153Fixed a problem in the Windows OS interface layer (OSL) where a
13154WAIT_FOREVER
13155on a semaphore object would incorrectly timeout. This allows the
13156multithreading features of the AcpiExec utility to work properly under
13157Windows.
13158
13159Updated the Linux makefiles for the iASL compiler and AcpiExec to include
13160the recently added file named "utresrc.c".
13161
13162Code and Data Size: The current and previous library sizes for the core
13163subsystem are shown below. These are the code and data sizes for the
13164acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13165These
13166values do not include any ACPI driver or OSPM code. The debug version of
13167the
13168code includes the debug output trace mechanism and has a much larger code
13169and data size. Note that these values will vary depending on the
13170efficiency
13171of the compiler and the compiler options used during generation.
13172
13173  Previous Release:
13174    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
13175    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13176  Current Release:
13177    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
13178    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13179
13180
131812) iASL Compiler/Disassembler:
13182
13183Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
13184specification. For the iASL compiler, this means that string literals
13185within
13186the source ASL can be of any length.
13187
13188Enhanced the listing output to dump the AML code for resource descriptors
13189immediately after the ASL code for each descriptor, instead of in a block
13190at
13191the end of the entire resource template.
13192
13193Enhanced the compiler debug output to dump the entire original parse tree
13194constructed during the parse phase, before any transforms are applied to
13195the
13196tree. The transformed tree is dumped also.
13197
13198----------------------------------------
1319902 November 2005. Summary of changes for version 20051102:
13200
132011) ACPI CA Core Subsystem:
13202
13203Modified the subsystem initialization sequence to improve GPE support.
13204The
13205GPE initialization has been split into two parts in order to defer
13206execution
13207of the _PRW methods (Power Resources for Wake) until after the hardware
13208is
13209fully initialized and the SCI handler is installed. This allows the _PRW
13210methods to access fields protected by the Global Lock. This will fix
13211systems
13212where a NO_GLOBAL_LOCK exception has been seen during initialization.
13213
13214Converted the ACPI internal object disassemble and display code within
13215the
13216AML debugger to fully table-driven operation, reducing code size and
13217increasing maintainability.
13218
13219Fixed a regression with the ConcatenateResTemplate() ASL operator
13220introduced
13221in the 20051021 release.
13222
13223Implemented support for "local" internal ACPI object types within the
13224debugger "Object" command and the AcpiWalkNamespace external interfaces.
13225These local types include RegionFields, BankFields, IndexFields, Alias,
13226and
13227reference objects.
13228
13229Moved common AML resource handling code into a new file, "utresrc.c".
13230This
13231code is shared by both the Resource Manager and the AML Debugger.
13232
13233Code and Data Size: The current and previous library sizes for the core
13234subsystem are shown below. These are the code and data sizes for the
13235acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13236These
13237values do not include any ACPI driver or OSPM code. The debug version of
13238the
13239code includes the debug output trace mechanism and has a much larger code
13240and data size. Note that these values will vary depending on the
13241efficiency
13242of the compiler and the compiler options used during generation.
13243
13244  Previous Release:
13245    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
13246    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
13247  Current Release:
13248    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
13249    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13250
13251
132522) iASL Compiler/Disassembler:
13253
13254Fixed a problem with very large initializer lists (more than 4000
13255elements)
13256for both Buffer and Package objects where the parse stack could overflow.
13257
13258Enhanced the pre-compile source code scan for non-ASCII characters to
13259ignore
13260characters within comment fields. The scan is now always performed and is
13261no
13262longer optional, detecting invalid characters within a source file
13263immediately rather than during the parse phase or later.
13264
13265Enhanced the ASL grammar definition to force early reductions on all
13266list-
13267style grammar elements so that the overall parse stack usage is greatly
13268reduced. This should improve performance and reduce the possibility of
13269parse
13270stack overflow.
13271
13272Eliminated all reduce/reduce conflicts in the iASL parser generation.
13273Also,
13274with the addition of a %expected statement, the compiler generates from
13275source with no warnings.
13276
13277Fixed a possible segment fault in the disassembler if the input filename
13278does not contain a "dot" extension (Thomas Renninger).
13279
13280----------------------------------------
1328121 October 2005. Summary of changes for version 20051021:
13282
132831) ACPI CA Core Subsystem:
13284
13285Implemented support for the EM64T and other x86-64 processors. This
13286essentially entails recognizing that these processors support non-aligned
13287memory transfers. Previously, all 64-bit processors were assumed to lack
13288hardware support for non-aligned transfers.
13289
13290Completed conversion of the Resource Manager to nearly full table-driven
13291operation. Specifically, the resource conversion code (convert AML to
13292internal format and the reverse) and the debug code to dump internal
13293resource descriptors are fully table-driven, reducing code and data size
13294and
13295improving maintainability.
13296
13297The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
13298word
13299on 64-bit processors instead of a fixed 32-bit word. (With assistance
13300from
13301Alexey Starikovskiy)
13302
13303Implemented support within the resource conversion code for the Type-
13304Specific byte within the various ACPI 3.0 *WordSpace macros.
13305
13306Fixed some issues within the resource conversion code for the type-
13307specific
13308flags for both Memory and I/O address resource descriptors. For Memory,
13309implemented support for the MTP and TTP flags. For I/O, split the TRS and
13310TTP flags into two separate fields.
13311
13312Code and Data Size: The current and previous library sizes for the core
13313subsystem are shown below. These are the code and data sizes for the
13314acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13315These
13316values do not include any ACPI driver or OSPM code. The debug version of
13317the
13318code includes the debug output trace mechanism and has a much larger code
13319and data size. Note that these values will vary depending on the
13320efficiency
13321of the compiler and the compiler options used during generation.
13322
13323  Previous Release:
13324    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
13325    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
13326  Current Release:
13327    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
13328    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
13329
13330
13331
133322) iASL Compiler/Disassembler:
13333
13334Relaxed a compiler restriction that disallowed a ResourceIndex byte if
13335the
13336corresponding ResourceSource string was not also present in a resource
13337descriptor declaration. This restriction caused problems with existing
13338AML/ASL code that includes the Index byte without the string. When such
13339AML
13340was disassembled, it could not be compiled without modification. Further,
13341the modified code created a resource template with a different size than
13342the
13343original, breaking code that used fixed offsets into the resource
13344template
13345buffer.
13346
13347Removed a recent feature of the disassembler to ignore a lone
13348ResourceIndex
13349byte. This byte is now emitted if present so that the exact AML can be
13350reproduced when the disassembled code is recompiled.
13351
13352Improved comments and text alignment for the resource descriptor code
13353emitted by the disassembler.
13354
13355Implemented disassembler support for the ACPI 3.0 AccessSize field within
13356a
13357Register() resource descriptor.
13358
13359----------------------------------------
1336030 September 2005. Summary of changes for version 20050930:
13361
133621) ACPI CA Core Subsystem:
13363
13364Completed a major overhaul of the Resource Manager code - specifically,
13365optimizations in the area of the AML/internal resource conversion code.
13366The
13367code has been optimized to simplify and eliminate duplicated code, CPU
13368stack
13369use has been decreased by optimizing function parameters and local
13370variables, and naming conventions across the manager have been
13371standardized
13372for clarity and ease of maintenance (this includes function, parameter,
13373variable, and struct/typedef names.) The update may force changes in some
13374driver code, depending on how resources are handled by the host OS.
13375
13376All Resource Manager dispatch and information tables have been moved to a
13377single location for clarity and ease of maintenance. One new file was
13378created, named "rsinfo.c".
13379
13380The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
13381guarantee that the argument is not evaluated twice, making them less
13382prone
13383to macro side-effects. However, since there exists the possibility of
13384additional stack use if a particular compiler cannot optimize them (such
13385as
13386in the debug generation case), the original macros are optionally
13387available.
13388Note that some invocations of the return_VALUE macro may now cause size
13389mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
13390to
13391eliminate these. (From Randy Dunlap)
13392
13393Implemented a new mechanism to enable debug tracing for individual
13394control
13395methods. A new external interface, AcpiDebugTrace, is provided to enable
13396this mechanism. The intent is to allow the host OS to easily enable and
13397disable tracing for problematic control methods. This interface can be
13398easily exposed to a user or debugger interface if desired. See the file
13399psxface.c for details.
13400
13401AcpiUtCallocate will now return a valid pointer if a length of zero is
13402specified - a length of one is used and a warning is issued. This matches
13403the behavior of AcpiUtAllocate.
13404
13405Code and Data Size: The current and previous library sizes for the core
13406subsystem are shown below. These are the code and data sizes for the
13407acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13408These
13409values do not include any ACPI driver or OSPM code. The debug version of
13410the
13411code includes the debug output trace mechanism and has a much larger code
13412and data size. Note that these values will vary depending on the
13413efficiency
13414of the compiler and the compiler options used during generation.
13415
13416  Previous Release:
13417    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
13418    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
13419  Current Release:
13420    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
13421    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
13422
13423
134242) iASL Compiler/Disassembler:
13425
13426A remark is issued if the effective compile-time length of a package or
13427buffer is zero. Previously, this was a warning.
13428
13429----------------------------------------
1343016 September 2005. Summary of changes for version 20050916:
13431
134321) ACPI CA Core Subsystem:
13433
13434Fixed a problem within the Resource Manager where support for the Generic
13435Register descriptor was not fully implemented. This descriptor is now
13436fully
13437recognized, parsed, disassembled, and displayed.
13438
13439Completely restructured the Resource Manager code to utilize table-driven
13440dispatch and lookup, eliminating many of the large switch() statements.
13441This
13442reduces overall subsystem code size and code complexity. Affects the
13443resource parsing and construction, disassembly, and debug dump output.
13444
13445Cleaned up and restructured the debug dump output for all resource
13446descriptors. Improved readability of the output and reduced code size.
13447
13448Fixed a problem where changes to internal data structures caused the
13449optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
13450
13451Code and Data Size: The current and previous library sizes for the core
13452subsystem are shown below. These are the code and data sizes for the
13453acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13454These
13455values do not include any ACPI driver or OSPM code. The debug version of
13456the
13457code includes the debug output trace mechanism and has a much larger code
13458and data size. Note that these values will vary depending on the
13459efficiency
13460of the compiler and the compiler options used during generation.
13461
13462  Previous Release:
13463    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
13464    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
13465  Current Release:
13466    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
13467    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
13468
13469
134702) iASL Compiler/Disassembler:
13471
13472Updated the disassembler to automatically insert an EndDependentFn()
13473macro
13474into the ASL stream if this macro is missing in the original AML code,
13475simplifying compilation of the resulting ASL module.
13476
13477Fixed a problem in the disassembler where a disassembled ResourceSource
13478string (within a large resource descriptor) was not surrounded by quotes
13479and
13480not followed by a comma, causing errors when the resulting ASL module was
13481compiled. Also, escape sequences within a ResourceSource string are now
13482handled correctly (especially "\\")
13483
13484----------------------------------------
1348502 September 2005. Summary of changes for version 20050902:
13486
134871) ACPI CA Core Subsystem:
13488
13489Fixed a problem with the internal Owner ID allocation and deallocation
13490mechanisms for control method execution and recursive method invocation.
13491This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
13492messages seen on some systems. Recursive method invocation depth is
13493currently limited to 255. (Alexey Starikovskiy)
13494
13495Completely eliminated all vestiges of support for the "module-level
13496executable code" until this support is fully implemented and debugged.
13497This
13498should eliminate the NO_RETURN_VALUE exceptions seen during table load on
13499some systems that invoke this support.
13500
13501Fixed a problem within the resource manager code where the transaction
13502flags
13503for a 64-bit address descriptor were handled incorrectly in the type-
13504specific flag byte.
13505
13506Consolidated duplicate code within the address descriptor resource
13507manager
13508code, reducing overall subsystem code size.
13509
13510Fixed a fault when using the AML debugger "disassemble" command to
13511disassemble individual control methods.
13512
13513Removed references to the "release_current" directory within the Unix
13514release package.
13515
13516Code and Data Size: The current and previous core subsystem library sizes
13517are shown below. These are the code and data sizes for the acpica.lib
13518produced by the Microsoft Visual C++ 6.0 compiler. These values do not
13519include any ACPI driver or OSPM code. The debug version of the code
13520includes
13521the debug output trace mechanism and has a much larger code and data
13522size.
13523Note that these values will vary depending on the efficiency of the
13524compiler
13525and the compiler options used during generation.
13526
13527  Previous Release:
13528    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13529    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13530  Current Release:
13531    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
13532    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
13533
13534
135352) iASL Compiler/Disassembler:
13536
13537Implemented an error check for illegal duplicate values in the interrupt
13538and
13539dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
13540Interrupt().
13541
13542Implemented error checking for the Irq() and IrqNoFlags() macros to
13543detect
13544too many values in the interrupt list (16 max) and invalid values in the
13545list (range 0 - 15)
13546
13547The maximum length string literal within an ASL file is now restricted to
13548200 characters as per the ACPI specification.
13549
13550Fixed a fault when using the -ln option (generate namespace listing).
13551
13552Implemented an error check to determine if a DescriptorName within a
13553resource descriptor has already been used within the current scope.
13554
13555----------------------------------------
1355615 August 2005.  Summary of changes for version 20050815:
13557
135581) ACPI CA Core Subsystem:
13559
13560Implemented a full bytewise compare to determine if a table load request
13561is
13562attempting to load a duplicate table. The compare is performed if the
13563table
13564signatures and table lengths match. This will allow different tables with
13565the same OEM Table ID and revision to be loaded - probably against the
13566ACPI
13567specification, but discovered in the field nonetheless.
13568
13569Added the changes.txt logfile to each of the zipped release packages.
13570
13571Code and Data Size: Current and previous core subsystem library sizes are
13572shown below. These are the code and data sizes for the acpica.lib
13573produced
13574by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13575any ACPI driver or OSPM code. The debug version of the code includes the
13576debug output trace mechanism and has a much larger code and data size.
13577Note
13578that these values will vary depending on the efficiency of the compiler
13579and
13580the compiler options used during generation.
13581
13582  Previous Release:
13583    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13584    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13585  Current Release:
13586    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13587    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13588
13589
135902) iASL Compiler/Disassembler:
13591
13592Fixed a problem where incorrect AML code could be generated for Package
13593objects if optimization is disabled (via the -oa switch).
13594
13595Fixed a problem with where incorrect AML code is generated for variable-
13596length packages when the package length is not specified and the number
13597of
13598initializer values is greater than 255.
13599
13600
13601----------------------------------------
1360229 July 2005.  Summary of changes for version 20050729:
13603
136041) ACPI CA Core Subsystem:
13605
13606Implemented support to ignore an attempt to install/load a particular
13607ACPI
13608table more than once. Apparently there exists BIOS code that repeatedly
13609attempts to load the same SSDT upon certain events. With assistance from
13610Venkatesh Pallipadi.
13611
13612Restructured the main interface to the AML parser in order to correctly
13613handle all exceptional conditions. This will prevent leakage of the
13614OwnerId
13615resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
13616some
13617machines. With assistance from Alexey Starikovskiy.
13618
13619Support for "module level code" has been disabled in this version due to
13620a
13621number of issues that have appeared on various machines. The support can
13622be
13623enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
13624compilation. When the issues are fully resolved, the code will be enabled
13625by
13626default again.
13627
13628Modified the internal functions for debug print support to define the
13629FunctionName parameter as a (const char *) for compatibility with
13630compiler
13631built-in macros such as __FUNCTION__, etc.
13632
13633Linted the entire ACPICA source tree for both 32-bit and 64-bit.
13634
13635Implemented support to display an object count summary for the AML
13636Debugger
13637commands Object and Methods.
13638
13639Code and Data Size: Current and previous core subsystem library sizes are
13640shown below. These are the code and data sizes for the acpica.lib
13641produced
13642by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13643any ACPI driver or OSPM code. The debug version of the code includes the
13644debug output trace mechanism and has a much larger code and data size.
13645Note
13646that these values will vary depending on the efficiency of the compiler
13647and
13648the compiler options used during generation.
13649
13650  Previous Release:
13651    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13652    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13653  Current Release:
13654    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13655    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13656
13657
136582) iASL Compiler/Disassembler:
13659
13660Fixed a regression that appeared in the 20050708 version of the compiler
13661where an error message was inadvertently emitted for invocations of the
13662_OSI
13663reserved control method.
13664
13665----------------------------------------
1366608 July 2005.  Summary of changes for version 20050708:
13667
136681) ACPI CA Core Subsystem:
13669
13670The use of the CPU stack in the debug version of the subsystem has been
13671considerably reduced. Previously, a debug structure was declared in every
13672function that used the debug macros. This structure has been removed in
13673favor of declaring the individual elements as parameters to the debug
13674functions. This reduces the cumulative stack use during nested execution
13675of
13676ACPI function calls at the cost of a small increase in the code size of
13677the
13678debug version of the subsystem. With assistance from Alexey Starikovskiy
13679and
13680Len Brown.
13681
13682Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
13683headers to define a macro that will return the current function name at
13684runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
13685by
13686the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
13687compiler-dependent header, the function name is saved on the CPU stack
13688(one
13689pointer per function.) This mechanism is used because apparently there
13690exists no standard ANSI-C defined macro that that returns the function
13691name.
13692
13693Redesigned and reimplemented the "Owner ID" mechanism used to track
13694namespace objects created/deleted by ACPI tables and control method
13695execution. A bitmap is now used to allocate and free the IDs, thus
13696solving
13697the wraparound problem present in the previous implementation. The size
13698of
13699the namespace node descriptor was reduced by 2 bytes as a result (Alexey
13700Starikovskiy).
13701
13702Removed the UINT32_BIT and UINT16_BIT types that were used for the
13703bitfield
13704flag definitions within the headers for the predefined ACPI tables. These
13705have been replaced by UINT8_BIT in order to increase the code portability
13706of
13707the subsystem. If the use of UINT8 remains a problem, we may be forced to
13708eliminate bitfields entirely because of a lack of portability.
13709
13710Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
13711This
13712is a frequently used function and this improvement increases the
13713performance
13714of the entire subsystem (Alexey Starikovskiy).
13715
13716Fixed several possible memory leaks and the inverse - premature object
13717deletion (Alexey Starikovskiy).
13718
13719Code and Data Size: Current and previous core subsystem library sizes are
13720shown below. These are the code and data sizes for the acpica.lib
13721produced
13722by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13723any ACPI driver or OSPM code. The debug version of the code includes the
13724debug output trace mechanism and has a much larger code and data size.
13725Note
13726that these values will vary depending on the efficiency of the compiler
13727and
13728the compiler options used during generation.
13729
13730  Previous Release:
13731    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13732    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13733  Current Release:
13734    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13735    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13736
13737----------------------------------------
1373824 June 2005.  Summary of changes for version 20050624:
13739
137401) ACPI CA Core Subsystem:
13741
13742Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
13743the host-defined cache object. This allows the OSL implementation to
13744define
13745and type this object in any manner desired, simplifying the OSL
13746implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
13747Linux, and should be defined in the OS-specific header file for other
13748operating systems as required.
13749
13750Changed the interface to AcpiOsAcquireObject to directly return the
13751requested object as the function return (instead of ACPI_STATUS.) This
13752change was made for performance reasons, since this is the purpose of the
13753interface in the first place. AcpiOsAcquireObject is now similar to the
13754AcpiOsAllocate interface.
13755
13756Implemented a new AML debugger command named Businfo. This command
13757displays
13758information about all devices that have an associate _PRT object. The
13759_ADR,
13760_HID, _UID, and _CID are displayed for these devices.
13761
13762Modified the initialization sequence in AcpiInitializeSubsystem to call
13763the
13764OSL interface AcpiOslInitialize first, before any local initialization.
13765This
13766change was required because the global initialization now calls OSL
13767interfaces.
13768
13769Enhanced the Dump command to display the entire contents of Package
13770objects
13771(including all sub-objects and their values.)
13772
13773Restructured the code base to split some files because of size and/or
13774because the code logically belonged in a separate file. New files are
13775listed
13776below. All makefiles and project files included in the ACPI CA release
13777have
13778been updated.
13779    utilities/utcache.c           /* Local cache interfaces */
13780    utilities/utmutex.c           /* Local mutex support */
13781    utilities/utstate.c           /* State object support */
13782    interpreter/parser/psloop.c   /* Main AML parse loop */
13783
13784Code and Data Size: Current and previous core subsystem library sizes are
13785shown below. These are the code and data sizes for the acpica.lib
13786produced
13787by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13788any ACPI driver or OSPM code. The debug version of the code includes the
13789debug output trace mechanism and has a much larger code and data size.
13790Note
13791that these values will vary depending on the efficiency of the compiler
13792and
13793the compiler options used during generation.
13794
13795  Previous Release:
13796    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13797    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13798  Current Release:
13799    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13800    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13801
13802
138032) iASL Compiler/Disassembler:
13804
13805Fixed a regression introduced in version 20050513 where the use of a
13806Package
13807object within a Case() statement caused a compile time exception. The
13808original behavior has been restored (a Match() operator is emitted.)
13809
13810----------------------------------------
1381117 June 2005.  Summary of changes for version 20050617:
13812
138131) ACPI CA Core Subsystem:
13814
13815Moved the object cache operations into the OS interface layer (OSL) to
13816allow
13817the host OS to handle these operations if desired (for example, the Linux
13818OSL will invoke the slab allocator). This support is optional; the
13819compile
13820time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13821cache
13822code in the ACPI CA core. The new OSL interfaces are shown below. See
13823utalloc.c for an example implementation, and acpiosxf.h for the exact
13824interface definitions. With assistance from Alexey Starikovskiy.
13825    AcpiOsCreateCache
13826    AcpiOsDeleteCache
13827    AcpiOsPurgeCache
13828    AcpiOsAcquireObject
13829    AcpiOsReleaseObject
13830
13831Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13832return
13833and restore a flags parameter. This fits better with many OS lock models.
13834Note: the current execution state (interrupt handler or not) is no longer
13835passed to these interfaces. If necessary, the OSL must determine this
13836state
13837by itself, a simple and fast operation. With assistance from Alexey
13838Starikovskiy.
13839
13840Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13841present if the revision of the RSDP was 2 or greater. According to the
13842ACPI
13843specification, the XSDT is optional in all cases, and the table manager
13844therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13845Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13846contain
13847only the RSDT.
13848
13849Fixed an interpreter problem with the Mid() operator in the case of an
13850input
13851string where the resulting output string is of zero length. It now
13852correctly
13853returns a valid, null terminated string object instead of a string object
13854with a null pointer.
13855
13856Fixed a problem with the control method argument handling to allow a
13857store
13858to an Arg object that already contains an object of type Device. The
13859Device
13860object is now correctly overwritten. Previously, an error was returned.
13861
13862
13863Enhanced the debugger Find command to emit object values in addition to
13864the
13865found object pathnames. The output format is the same as the dump
13866namespace
13867command.
13868
13869Enhanced the debugger Set command. It now has the ability to set the
13870value
13871of any Named integer object in the namespace (Previously, only method
13872locals
13873and args could be set.)
13874
13875Code and Data Size: Current and previous core subsystem library sizes are
13876shown below. These are the code and data sizes for the acpica.lib
13877produced
13878by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13879any ACPI driver or OSPM code. The debug version of the code includes the
13880debug output trace mechanism and has a much larger code and data size.
13881Note
13882that these values will vary depending on the efficiency of the compiler
13883and
13884the compiler options used during generation.
13885
13886  Previous Release:
13887    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13888    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13889  Current Release:
13890    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13891    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13892
13893
138942) iASL Compiler/Disassembler:
13895
13896Fixed a regression in the disassembler where if/else/while constructs
13897were
13898output incorrectly. This problem was introduced in the previous release
13899(20050526). This problem also affected the single-step disassembly in the
13900debugger.
13901
13902Fixed a problem where compiling the reserved _OSI method would randomly
13903(but
13904rarely) produce compile errors.
13905
13906Enhanced the disassembler to emit compilable code in the face of
13907incorrect
13908AML resource descriptors. If the optional ResourceSourceIndex is present,
13909but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13910disassembly. Otherwise, the resulting code cannot be compiled without
13911errors.
13912
13913----------------------------------------
1391426 May 2005.  Summary of changes for version 20050526:
13915
139161) ACPI CA Core Subsystem:
13917
13918Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13919the module level (not within a control method.) These opcodes are
13920executed
13921exactly once at the time the table is loaded. This type of code was legal
13922up
13923until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13924in
13925order to provide backwards compatibility with earlier BIOS
13926implementations.
13927This eliminates the "Encountered executable code at module level" warning
13928that was previously generated upon detection of such code.
13929
13930Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13931inadvertently be generated during the lookup of namespace objects in the
13932second pass parse of ACPI tables and control methods. It appears that
13933this
13934problem could occur during the resolution of forward references to
13935namespace
13936objects.
13937
13938Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13939corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13940allows the deadlock detection debug code to be compiled out in the normal
13941case, improving mutex performance (and overall subsystem performance)
13942considerably.
13943
13944Implemented a handful of miscellaneous fixes for possible memory leaks on
13945error conditions and error handling control paths. These fixes were
13946suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13947
13948Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13949(tbxfroot.c)
13950to prevent a fault in this error case.
13951
13952Code and Data Size: Current and previous core subsystem library sizes are
13953shown below. These are the code and data sizes for the acpica.lib
13954produced
13955by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13956any ACPI driver or OSPM code. The debug version of the code includes the
13957debug output trace mechanism and has a much larger code and data size.
13958Note
13959that these values will vary depending on the efficiency of the compiler
13960and
13961the compiler options used during generation.
13962
13963  Previous Release:
13964    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13965    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13966  Current Release:
13967    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13968    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13969
13970
139712) iASL Compiler/Disassembler:
13972
13973Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13974the module level (not within a control method.) These operators will be
13975executed once at the time the table is loaded. This type of code was
13976legal
13977up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13978compiler in order to provide backwards compatibility with earlier BIOS
13979ASL
13980code.
13981
13982The ACPI integer width (specified via the table revision ID or the -r
13983override, 32 or 64 bits) is now used internally during compile-time
13984constant
13985folding to ensure that constants are truncated to 32 bits if necessary.
13986Previously, the revision ID value was only emitted in the AML table
13987header.
13988
13989An error message is now generated for the Mutex and Method operators if
13990the
13991SyncLevel parameter is outside the legal range of 0 through 15.
13992
13993Fixed a problem with the Method operator ParameterTypes list handling
13994(ACPI
139953.0). Previously, more than 2 types or 2 arguments generated a syntax
13996error.
13997The actual underlying implementation of method argument typechecking is
13998still under development, however.
13999
14000----------------------------------------
1400113 May 2005.  Summary of changes for version 20050513:
14002
140031) ACPI CA Core Subsystem:
14004
14005Implemented support for PCI Express root bridges -- added support for
14006device
14007PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
14008
14009The interpreter now automatically truncates incoming 64-bit constants to
1401032
14011bits if currently executing out of a 32-bit ACPI table (Revision < 2).
14012This
14013also affects the iASL compiler constant folding. (Note: as per below, the
14014iASL compiler no longer allows 64-bit constants within 32-bit tables.)
14015
14016Fixed a problem where string and buffer objects with "static" pointers
14017(pointers to initialization data within an ACPI table) were not handled
14018consistently. The internal object copy operation now always copies the
14019data
14020to a newly allocated buffer, regardless of whether the source object is
14021static or not.
14022
14023Fixed a problem with the FromBCD operator where an implicit result
14024conversion was improperly performed while storing the result to the
14025target
14026operand. Since this is an "explicit conversion" operator, the implicit
14027conversion should never be performed on the output.
14028
14029Fixed a problem with the CopyObject operator where a copy to an existing
14030named object did not always completely overwrite the existing object
14031stored
14032at name. Specifically, a buffer-to-buffer copy did not delete the
14033existing
14034buffer.
14035
14036Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
14037and
14038structs for consistency.
14039
14040Code and Data Size: Current and previous core subsystem library sizes are
14041shown below. These are the code and data sizes for the acpica.lib
14042produced
14043by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14044any ACPI driver or OSPM code. The debug version of the code includes the
14045debug output trace mechanism and has a much larger code and data size.
14046Note
14047that these values will vary depending on the efficiency of the compiler
14048and
14049the compiler options used during generation.
14050
14051  Previous Release:
14052    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
14053    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
14054  Current Release: (Same sizes)
14055    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
14056    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
14057
14058
140592) iASL Compiler/Disassembler:
14060
14061The compiler now emits a warning if an attempt is made to generate a 64-
14062bit
14063integer constant from within a 32-bit ACPI table (Revision < 2). The
14064integer
14065is truncated to 32 bits.
14066
14067Fixed a problem with large package objects: if the static length of the
14068package is greater than 255, the "variable length package" opcode is
14069emitted. Previously, this caused an error. This requires an update to the
14070ACPI spec, since it currently (incorrectly) states that packages larger
14071than
14072255 elements are not allowed.
14073
14074The disassembler now correctly handles variable length packages and
14075packages
14076larger than 255 elements.
14077
14078----------------------------------------
1407908 April 2005.  Summary of changes for version 20050408:
14080
140811) ACPI CA Core Subsystem:
14082
14083Fixed three cases in the interpreter where an "index" argument to an ASL
14084function was still (internally) 32 bits instead of the required 64 bits.
14085This was the Index argument to the Index, Mid, and Match operators.
14086
14087The "strupr" function is now permanently local (AcpiUtStrupr), since this
14088is
14089not a POSIX-defined function and not present in most kernel-level C
14090libraries. All references to the C library strupr function have been
14091removed
14092from the headers.
14093
14094Completed the deployment of static functions/prototypes. All prototypes
14095with
14096the static attribute have been moved from the headers to the owning C
14097file.
14098
14099Implemented an extract option (-e) for the AcpiBin utility (AML binary
14100utility). This option allows the utility to extract individual ACPI
14101tables
14102from the output of AcpiDmp. It provides the same functionality of the
14103acpixtract.pl perl script without the worry of setting the correct perl
14104options. AcpiBin runs on Windows and has not yet been generated/validated
14105in
14106the Linux/Unix environment (but should be soon).
14107
14108Updated and fixed the table dump option for AcpiBin (-d). This option
14109converts a single ACPI table to a hex/ascii file, similar to the output
14110of
14111AcpiDmp.
14112
14113Code and Data Size: Current and previous core subsystem library sizes are
14114shown below. These are the code and data sizes for the acpica.lib
14115produced
14116by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14117any ACPI driver or OSPM code. The debug version of the code includes the
14118debug output trace mechanism and has a much larger code and data size.
14119Note
14120that these values will vary depending on the efficiency of the compiler
14121and
14122the compiler options used during generation.
14123
14124  Previous Release:
14125    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
14126    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
14127  Current Release:
14128    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
14129    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
14130
14131
141322) iASL Compiler/Disassembler:
14133
14134Disassembler fix: Added a check to ensure that the table length found in
14135the
14136ACPI table header within the input file is not longer than the actual
14137input
14138file size. This indicates some kind of file or table corruption.
14139
14140----------------------------------------
1414129 March 2005.  Summary of changes for version 20050329:
14142
141431) ACPI CA Core Subsystem:
14144
14145An error is now generated if an attempt is made to create a Buffer Field
14146of
14147length zero (A CreateField with a length operand of zero.)
14148
14149The interpreter now issues a warning whenever executable code at the
14150module
14151level is detected during ACPI table load. This will give some idea of the
14152prevalence of this type of code.
14153
14154Implemented support for references to named objects (other than control
14155methods) within package objects.
14156
14157Enhanced package object output for the debug object. Package objects are
14158now
14159completely dumped, showing all elements.
14160
14161Enhanced miscellaneous object output for the debug object. Any object can
14162now be written to the debug object (for example, a device object can be
14163written, and the type of the object will be displayed.)
14164
14165The "static" qualifier has been added to all local functions across both
14166the
14167core subsystem and the iASL compiler.
14168
14169The number of "long" lines (> 80 chars) within the source has been
14170significantly reduced, by about 1/3.
14171
14172Cleaned up all header files to ensure that all CA/iASL functions are
14173prototyped (even static functions) and the formatting is consistent.
14174
14175Two new header files have been added, acopcode.h and acnames.h.
14176
14177Removed several obsolete functions that were no longer used.
14178
14179Code and Data Size: Current and previous core subsystem library sizes are
14180shown below. These are the code and data sizes for the acpica.lib
14181produced
14182by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14183any ACPI driver or OSPM code. The debug version of the code includes the
14184debug output trace mechanism and has a much larger code and data size.
14185Note
14186that these values will vary depending on the efficiency of the compiler
14187and
14188the compiler options used during generation.
14189
14190  Previous Release:
14191    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14192    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
14193  Current Release:
14194    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
14195    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
14196
14197
14198
141992) iASL Compiler/Disassembler:
14200
14201Fixed a problem with the resource descriptor generation/support. For the
14202ResourceSourceIndex and the ResourceSource fields, both must be present,
14203or
14204both must be not present - can't have one without the other.
14205
14206The compiler now returns non-zero from the main procedure if any errors
14207have
14208occurred during the compilation.
14209
14210
14211----------------------------------------
1421209 March 2005.  Summary of changes for version 20050309:
14213
142141) ACPI CA Core Subsystem:
14215
14216The string-to-buffer implicit conversion code has been modified again
14217after
14218a change to the ACPI specification.  In order to match the behavior of
14219the
14220other major ACPI implementation, the target buffer is no longer truncated
14221if
14222the source string is smaller than an existing target buffer. This change
14223requires an update to the ACPI spec, and should eliminate the recent
14224AE_AML_BUFFER_LIMIT issues.
14225
14226The "implicit return" support was rewritten to a new algorithm that
14227solves
14228the general case. Rather than attempt to determine when a method is about
14229to
14230exit, the result of every ASL operator is saved momentarily until the
14231very
14232next ASL operator is executed. Therefore, no matter how the method exits,
14233there will always be a saved implicit return value. This feature is only
14234enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
14235eliminate
14236AE_AML_NO_RETURN_VALUE errors when enabled.
14237
14238Implemented implicit conversion support for the predicate (operand) of
14239the
14240If, Else, and While operators. String and Buffer arguments are
14241automatically
14242converted to Integers.
14243
14244Changed the string-to-integer conversion behavior to match the new ACPI
14245errata: "If no integer object exists, a new integer is created. The ASCII
14246string is interpreted as a hexadecimal constant. Each string character is
14247interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
14248with the first character as the most significant digit, and ending with
14249the
14250first non-hexadecimal character or end-of-string." This means that the
14251first
14252non-hex character terminates the conversion and this is the code that was
14253changed.
14254
14255Fixed a problem where the ObjectType operator would fail (fault) when
14256used
14257on an Index of a Package which pointed to a null package element. The
14258operator now properly returns zero (Uninitialized) in this case.
14259
14260Fixed a problem where the While operator used excessive memory by not
14261properly popping the result stack during execution. There was no memory
14262leak
14263after execution, however. (Code provided by Valery Podrezov.)
14264
14265Fixed a problem where references to control methods within Package
14266objects
14267caused the method to be invoked, instead of producing a reference object
14268pointing to the method.
14269
14270Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
14271to
14272improve performance and reduce code size. (Code provided by Alexey
14273Starikovskiy.)
14274
14275Code and Data Size: Current and previous core subsystem library sizes are
14276shown below. These are the code and data sizes for the acpica.lib
14277produced
14278by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14279any ACPI driver or OSPM code. The debug version of the code includes the
14280debug output trace mechanism and has a much larger code and data size.
14281Note
14282that these values will vary depending on the efficiency of the compiler
14283and
14284the compiler options used during generation.
14285
14286  Previous Release:
14287    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14288    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
14289  Current Release:
14290    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14291    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
14292
14293
142942) iASL Compiler/Disassembler:
14295
14296Fixed a problem with the Return operator with no arguments. Since the AML
14297grammar for the byte encoding requires an operand for the Return opcode,
14298the
14299compiler now emits a Return(Zero) for this case.  An ACPI specification
14300update has been written for this case.
14301
14302For tables other than the DSDT, namepath optimization is automatically
14303disabled. This is because SSDTs can be loaded anywhere in the namespace,
14304the
14305compiler has no knowledge of where, and thus cannot optimize namepaths.
14306
14307Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
14308inadvertently omitted from the ACPI specification, and will require an
14309update to the spec.
14310
14311The source file scan for ASCII characters is now optional (-a). This
14312change
14313was made because some vendors place non-ascii characters within comments.
14314However, the scan is simply a brute-force byte compare to ensure all
14315characters in the file are in the range 0x00 to 0x7F.
14316
14317Fixed a problem with the CondRefOf operator where the compiler was
14318inappropriately checking for the existence of the target. Since the point
14319of
14320the operator is to check for the existence of the target at run-time, the
14321compiler no longer checks for the target existence.
14322
14323Fixed a problem where errors generated from the internal AML interpreter
14324during constant folding were not handled properly, causing a fault.
14325
14326Fixed a problem with overly aggressive range checking for the Stall
14327operator. The valid range (max 255) is now only checked if the operand is
14328of
14329type Integer. All other operand types cannot be statically checked.
14330
14331Fixed a problem where control method references within the RefOf,
14332DeRefOf,
14333and ObjectType operators were not treated properly. They are now treated
14334as
14335actual references, not method invocations.
14336
14337Fixed and enhanced the "list namespace" option (-ln). This option was
14338broken
14339a number of releases ago.
14340
14341Improved error handling for the Field, IndexField, and BankField
14342operators.
14343The compiler now cleanly reports and recovers from errors in the field
14344component (FieldUnit) list.
14345
14346Fixed a disassembler problem where the optional ResourceDescriptor fields
14347TRS and TTP were not always handled correctly.
14348
14349Disassembler - Comments in output now use "//" instead of "/*"
14350
14351----------------------------------------
1435228 February 2005.  Summary of changes for version 20050228:
14353
143541) ACPI CA Core Subsystem:
14355
14356Fixed a problem where the result of an Index() operator (an object
14357reference) must increment the reference count on the target object for
14358the
14359life of the object reference.
14360
14361Implemented AML Interpreter and Debugger support for the new ACPI 3.0
14362Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
14363WordSpace
14364resource descriptors.
14365
14366Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
14367Space Descriptor" string, indicating interpreter support for the
14368descriptors
14369above.
14370
14371Implemented header support for the new ACPI 3.0 FADT flag bits.
14372
14373Implemented header support for the new ACPI 3.0 PCI Express bits for the
14374PM1
14375status/enable registers.
14376
14377Updated header support for the MADT processor local Apic struct and MADT
14378platform interrupt source struct for new ACPI 3.0 fields.
14379
14380Implemented header support for the SRAT and SLIT ACPI tables.
14381
14382Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
14383flag
14384at runtime.
14385
14386Code and Data Size: Current and previous core subsystem library sizes are
14387shown below. These are the code and data sizes for the acpica.lib
14388produced
14389by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14390any ACPI driver or OSPM code. The debug version of the code includes the
14391debug output trace mechanism and has a much larger code and data size.
14392Note
14393that these values will vary depending on the efficiency of the compiler
14394and
14395the compiler options used during generation.
14396
14397  Previous Release:
14398    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
14399    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
14400  Current Release:
14401    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14402    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
14403
14404
144052) iASL Compiler/Disassembler:
14406
14407Fixed a problem with the internal 64-bit String-to-integer conversion
14408with
14409strings less than two characters long.
14410
14411Fixed a problem with constant folding where the result of the Index()
14412operator can not be considered a constant. This means that Index() cannot
14413be
14414a type3 opcode and this will require an update to the ACPI specification.
14415
14416Disassembler: Implemented support for the TTP, MTP, and TRS resource
14417descriptor fields. These fields were inadvertently ignored and not output
14418in
14419the disassembly of the resource descriptor.
14420
14421
14422 ----------------------------------------
1442311 February 2005.  Summary of changes for version 20050211:
14424
144251) ACPI CA Core Subsystem:
14426
14427Implemented ACPI 3.0 support for implicit conversion within the Match()
14428operator. MatchObjects can now be of type integer, buffer, or string
14429instead
14430of just type integer.  Package elements are implicitly converted to the
14431type
14432of the MatchObject. This change aligns the behavior of Match() with the
14433behavior of the other logical operators (LLess(), etc.) It also requires
14434an
14435errata change to the ACPI specification as this support was intended for
14436ACPI 3.0, but was inadvertently omitted.
14437
14438Fixed a problem with the internal implicit "to buffer" conversion.
14439Strings
14440that are converted to buffers will cause buffer truncation if the string
14441is
14442smaller than the target buffer. Integers that are converted to buffers
14443will
14444not cause buffer truncation, only zero extension (both as per the ACPI
14445spec.) The problem was introduced when code was added to truncate the
14446buffer, but this should not be performed in all cases, only the string
14447case.
14448
14449Fixed a problem with the Buffer and Package operators where the
14450interpreter
14451would get confused if two such operators were used as operands to an ASL
14452operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
14453stack was not being popped after the execution of these operators,
14454resulting
14455in an AE_NO_RETURN_VALUE exception.
14456
14457Fixed a problem with constructs of the form Store(Index(...),...). The
14458reference object returned from Index was inadvertently resolved to an
14459actual
14460value. This problem was introduced in version 20050114 when the behavior
14461of
14462Store() was modified to restrict the object types that can be used as the
14463source operand (to match the ACPI specification.)
14464
14465Reduced excessive stack use within the AcpiGetObjectInfo procedure.
14466
14467Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
14468
14469Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
14470
14471Code and Data Size: Current and previous core subsystem library sizes are
14472shown below. These are the code and data sizes for the acpica.lib
14473produced
14474by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14475any ACPI driver or OSPM code. The debug version of the code includes the
14476debug output trace mechanism and has a much larger code and data size.
14477Note
14478that these values will vary depending on the efficiency of the compiler
14479and
14480the compiler options used during generation.
14481
14482  Previous Release:
14483    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
14484    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
14485  Current Release:
14486    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
14487    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
14488
14489
144902) iASL Compiler/Disassembler:
14491
14492Fixed a code generation problem in the constant folding optimization code
14493where incorrect code was generated if a constant was reduced to a buffer
14494object (i.e., a reduced type 5 opcode.)
14495
14496Fixed a typechecking problem for the ToBuffer operator. Caused by an
14497incorrect return type in the internal opcode information table.
14498
14499----------------------------------------
1450025 January 2005.  Summary of changes for version 20050125:
14501
145021) ACPI CA Core Subsystem:
14503
14504Fixed a recently introduced problem with the Global Lock where the
14505underlying semaphore was not created.  This problem was introduced in
14506version 20050114, and caused an AE_AML_NO_OPERAND exception during an
14507Acquire() operation on _GL.
14508
14509The local object cache is now optional, and is disabled by default. Both
14510AcpiExec and the iASL compiler enable the cache because they run in user
14511mode and this enhances their performance. #define
14512ACPI_ENABLE_OBJECT_CACHE
14513to enable the local cache.
14514
14515Fixed an issue in the internal function AcpiUtEvaluateObject concerning
14516the
14517optional "implicit return" support where an error was returned if no
14518return
14519object was expected, but one was implicitly returned. AE_OK is now
14520returned
14521in this case and the implicitly returned object is deleted.
14522AcpiUtEvaluateObject is only occasionally used, and only to execute
14523reserved
14524methods such as _STA and _INI where the return type is known up front.
14525
14526Fixed a few issues with the internal convert-to-integer code. It now
14527returns
14528an error if an attempt is made to convert a null string, a string of only
14529blanks/tabs, or a zero-length buffer. This affects both implicit
14530conversion
14531and explicit conversion via the ToInteger() operator.
14532
14533The internal debug code in AcpiUtAcquireMutex has been commented out. It
14534is
14535not needed for normal operation and should increase the performance of
14536the
14537entire subsystem. The code remains in case it is needed for debug
14538purposes
14539again.
14540
14541The AcpiExec source and makefile are included in the Unix/Linux package
14542for
14543the first time.
14544
14545Code and Data Size: Current and previous core subsystem library sizes are
14546shown below. These are the code and data sizes for the acpica.lib
14547produced
14548by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14549any ACPI driver or OSPM code. The debug version of the code includes the
14550debug output trace mechanism and has a much larger code and data size.
14551Note
14552that these values will vary depending on the efficiency of the compiler
14553and
14554the compiler options used during generation.
14555
14556  Previous Release:
14557    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14558    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14559  Current Release:
14560    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
14561    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
14562
145632) iASL Compiler/Disassembler:
14564
14565Switch/Case support: A warning is now issued if the type of the Switch
14566value
14567cannot be determined at compile time. For example, Switch(Arg0) will
14568generate the warning, and the type is assumed to be an integer. As per
14569the
14570ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
14571the
14572warning.
14573
14574Switch/Case support: Implemented support for buffer and string objects as
14575the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
14576buffers and strings.
14577
14578Switch/Case support: The emitted code for the LEqual() comparisons now
14579uses
14580the switch value as the first operand, not the second. The case value is
14581now
14582the second operand, and this allows the case value to be implicitly
14583converted to the type of the switch value, not the other way around.
14584
14585Switch/Case support: Temporary variables are now emitted immediately
14586within
14587the control method, not at the global level. This means that there are
14588now
1458936 temps available per-method, not 36 temps per-module as was the case
14590with
14591the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
14592
14593----------------------------------------
1459414 January 2005.  Summary of changes for version 20050114:
14595
14596Added 2005 copyright to all module headers.  This affects every module in
14597the core subsystem, iASL compiler, and the utilities.
14598
145991) ACPI CA Core Subsystem:
14600
14601Fixed an issue with the String-to-Buffer conversion code where the string
14602null terminator was not included in the buffer after conversion, but
14603there
14604is existing ASL that assumes the string null terminator is included. This
14605is
14606the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
14607introduced in the previous version when the code was updated to correctly
14608set the converted buffer size as per the ACPI specification. The ACPI
14609spec
14610is ambiguous and will be updated to specify that the null terminator must
14611be
14612included in the converted buffer. This also affects the ToBuffer() ASL
14613operator.
14614
14615Fixed a problem with the Mid() ASL/AML operator where it did not work
14616correctly on Buffer objects. Newly created sub-buffers were not being
14617marked
14618as initialized.
14619
14620
14621Fixed a problem in AcpiTbFindTable where incorrect string compares were
14622performed on the OemId and OemTableId table header fields.  These fields
14623are
14624not null terminated, so strncmp is now used instead of strcmp.
14625
14626Implemented a restriction on the Store() ASL/AML operator to align the
14627behavior with the ACPI specification.  Previously, any object could be
14628used
14629as the source operand.  Now, the only objects that may be used are
14630Integers,
14631Buffers, Strings, Packages, Object References, and DDB Handles.  If
14632necessary, the original behavior can be restored by enabling the
14633EnableInterpreterSlack flag.
14634
14635Enhanced the optional "implicit return" support to allow an implicit
14636return
14637value from methods that are invoked externally via the AcpiEvaluateObject
14638interface.  This enables implicit returns from the _STA and _INI methods,
14639for example.
14640
14641Changed the Revision() ASL/AML operator to return the current version of
14642the
14643AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
14644returned
14645the supported ACPI version (This is the function of the _REV method).
14646
14647Updated the _REV predefined method to return the currently supported
14648version
14649of ACPI, now 3.
14650
14651Implemented batch mode option for the AcpiExec utility (-b).
14652
14653Code and Data Size: Current and previous core subsystem library sizes are
14654shown below. These are the code and data sizes for the acpica.lib
14655produced
14656by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14657any ACPI driver or OSPM code. The debug version of the code includes the
14658debug output trace mechanism and has a much larger code and data size.
14659Note
14660that these values will vary depending on the efficiency of the compiler
14661and
14662the compiler options used during generation.
14663
14664  Previous Release:
14665    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14666    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14667  Current Release:
14668    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14669    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14670
14671----------------------------------------
1467210 December 2004.  Summary of changes for version 20041210:
14673
14674ACPI 3.0 support is nearing completion in both the iASL compiler and the
14675ACPI CA core subsystem.
14676
146771) ACPI CA Core Subsystem:
14678
14679Fixed a problem in the ToDecimalString operator where the resulting
14680string
14681length was incorrectly calculated. The length is now calculated exactly,
14682eliminating incorrect AE_STRING_LIMIT exceptions.
14683
14684Fixed a problem in the ToHexString operator to allow a maximum 200
14685character
14686string to be produced.
14687
14688Fixed a problem in the internal string-to-buffer and buffer-to-buffer
14689copy
14690routine where the length of the resulting buffer was not truncated to the
14691new size (if the target buffer already existed).
14692
14693Code and Data Size: Current and previous core subsystem library sizes are
14694shown below. These are the code and data sizes for the acpica.lib
14695produced
14696by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14697any ACPI driver or OSPM code. The debug version of the code includes the
14698debug output trace mechanism and has a much larger code and data size.
14699Note
14700that these values will vary depending on the efficiency of the compiler
14701and
14702the compiler options used during generation.
14703
14704  Previous Release:
14705    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14706    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14707  Current Release:
14708    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14709    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14710
14711
147122) iASL Compiler/Disassembler:
14713
14714Implemented the new ACPI 3.0 resource template macros - DWordSpace,
14715ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
14716Includes support in the disassembler.
14717
14718Implemented support for the new (ACPI 3.0) parameter to the Register
14719macro,
14720AccessSize.
14721
14722Fixed a problem where the _HE resource name for the Interrupt macro was
14723referencing bit 0 instead of bit 1.
14724
14725Implemented check for maximum 255 interrupts in the Interrupt macro.
14726
14727Fixed a problem with the predefined resource descriptor names where
14728incorrect AML code was generated if the offset within the resource buffer
14729was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
14730but did not update the surrounding package lengths.
14731
14732Changes to the Dma macro:  All channels within the channel list must be
14733in
14734the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
14735optional (default is BusMaster).
14736
14737Implemented check for maximum 7 data bytes for the VendorShort macro.
14738
14739The ReadWrite parameter is now optional for the Memory32 and similar
14740macros.
14741
14742----------------------------------------
1474303 December 2004.  Summary of changes for version 20041203:
14744
147451) ACPI CA Core Subsystem:
14746
14747The low-level field insertion/extraction code (exfldio) has been
14748completely
14749rewritten to eliminate unnecessary complexity, bugs, and boundary
14750conditions.
14751
14752Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
14753ToDecimalString
14754operators where the input operand could be inadvertently deleted if no
14755conversion was necessary (e.g., if the input to ToInteger was an Integer
14756object.)
14757
14758Fixed a problem with the ToDecimalString and ToHexString where an
14759incorrect
14760exception code was returned if the resulting string would be > 200 chars.
14761AE_STRING_LIMIT is now returned.
14762
14763Fixed a problem with the Concatenate operator where AE_OK was always
14764returned, even if the operation failed.
14765
14766Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
14767semaphores to be allocated.
14768
14769Code and Data Size: Current and previous core subsystem library sizes are
14770shown below. These are the code and data sizes for the acpica.lib
14771produced
14772by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14773any ACPI driver or OSPM code. The debug version of the code includes the
14774debug output trace mechanism and has a much larger code and data size.
14775Note
14776that these values will vary depending on the efficiency of the compiler
14777and
14778the compiler options used during generation.
14779
14780  Previous Release:
14781    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14782    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14783  Current Release:
14784    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14785    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14786
14787
147882) iASL Compiler/Disassembler:
14789
14790Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
14791recently introduced in 20041119.
14792
14793Fixed a problem with the ToUUID macro where the upper nybble of each
14794buffer
14795byte was inadvertently set to zero.
14796
14797----------------------------------------
1479819 November 2004.  Summary of changes for version 20041119:
14799
148001) ACPI CA Core Subsystem:
14801
14802Fixed a problem in the internal ConvertToInteger routine where new
14803integers
14804were not truncated to 32 bits for 32-bit ACPI tables. This routine
14805converts
14806buffers and strings to integers.
14807
14808Implemented support to store a value to an Index() on a String object.
14809This
14810is an ACPI 2.0 feature that had not yet been implemented.
14811
14812Implemented new behavior for storing objects to individual package
14813elements
14814(via the Index() operator). The previous behavior was to invoke the
14815implicit
14816conversion rules if an object was already present at the index.  The new
14817behavior is to simply delete any existing object and directly store the
14818new
14819object. Although the ACPI specification seems unclear on this subject,
14820other
14821ACPI implementations behave in this manner.  (This is the root of the
14822AE_BAD_HEX_CONSTANT issue.)
14823
14824Modified the RSDP memory scan mechanism to support the extended checksum
14825for
14826ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14827RSDP signature is found with a valid checksum.
14828
14829Code and Data Size: Current and previous core subsystem library sizes are
14830shown below. These are the code and data sizes for the acpica.lib
14831produced
14832by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14833any ACPI driver or OSPM code. The debug version of the code includes the
14834debug output trace mechanism and has a much larger code and data size.
14835Note
14836that these values will vary depending on the efficiency of the compiler
14837and
14838the compiler options used during generation.
14839
14840  Previous Release:
14841    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14842    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14843  Current Release:
14844    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14845    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14846
14847
148482) iASL Compiler/Disassembler:
14849
14850Fixed a missing semicolon in the aslcompiler.y file.
14851
14852----------------------------------------
1485305 November 2004.  Summary of changes for version 20041105:
14854
148551) ACPI CA Core Subsystem:
14856
14857Implemented support for FADT revision 2.  This was an interim table
14858(between
14859ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14860
14861Implemented optional support to allow uninitialized LocalX and ArgX
14862variables in a control method.  The variables are initialized to an
14863Integer
14864object with a value of zero.  This support is enabled by setting the
14865AcpiGbl_EnableInterpreterSlack flag to TRUE.
14866
14867Implemented support for Integer objects for the SizeOf operator.  Either
148684
14869or 8 is returned, depending on the current integer size (32-bit or 64-
14870bit,
14871depending on the parent table revision).
14872
14873Fixed a problem in the implementation of the SizeOf and ObjectType
14874operators
14875where the operand was resolved to a value too early, causing incorrect
14876return values for some objects.
14877
14878Fixed some possible memory leaks during exceptional conditions.
14879
14880Code and Data Size: Current and previous core subsystem library sizes are
14881shown below. These are the code and data sizes for the acpica.lib
14882produced
14883by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14884any ACPI driver or OSPM code. The debug version of the code includes the
14885debug output trace mechanism and has a much larger code and data size.
14886Note
14887that these values will vary depending on the efficiency of the compiler
14888and
14889the compiler options used during generation.
14890
14891  Previous Release:
14892    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14893    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14894  Current Release:
14895    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14896    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14897
14898
148992) iASL Compiler/Disassembler:
14900
14901Implemented support for all ACPI 3.0 reserved names and methods.
14902
14903Implemented all ACPI 3.0 grammar elements in the front-end, including
14904support for semicolons.
14905
14906Implemented the ACPI 3.0 Function() and ToUUID() macros
14907
14908Fixed a problem in the disassembler where a Scope() operator would not be
14909emitted properly if the target of the scope was in another table.
14910
14911----------------------------------------
1491215 October 2004.  Summary of changes for version 20041015:
14913
14914Note:  ACPI CA is currently undergoing an in-depth and complete formal
14915evaluation to test/verify the following areas. Other suggestions are
14916welcome. This will result in an increase in the frequency of releases and
14917the number of bug fixes in the next few months.
14918  - Functional tests for all ASL/AML operators
14919  - All implicit/explicit type conversions
14920  - Bit fields and operation regions
14921  - 64-bit math support and 32-bit-only "truncated" math support
14922  - Exceptional conditions, both compiler and interpreter
14923  - Dynamic object deletion and memory leaks
14924  - ACPI 3.0 support when implemented
14925  - External interfaces to the ACPI subsystem
14926
14927
149281) ACPI CA Core Subsystem:
14929
14930Fixed two alignment issues on 64-bit platforms - within debug statements
14931in
14932AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14933Address
14934field within the non-aligned ACPI generic address structure.
14935
14936Fixed a problem in the Increment and Decrement operators where incorrect
14937operand resolution could result in the inadvertent modification of the
14938original integer when the integer is passed into another method as an
14939argument and the arg is then incremented/decremented.
14940
14941Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14942bit
14943BCD number were truncated during conversion.
14944
14945Fixed a problem in the ToDecimal operator where the length of the
14946resulting
14947string could be set incorrectly too long if the input operand was a
14948Buffer
14949object.
14950
14951Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14952(0)
14953within a buffer would prematurely terminate a compare between buffer
14954objects.
14955
14956Added a check for string overflow (>200 characters as per the ACPI
14957specification) during the Concatenate operator with two string operands.
14958
14959Code and Data Size: Current and previous core subsystem library sizes are
14960shown below. These are the code and data sizes for the acpica.lib
14961produced
14962by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14963any ACPI driver or OSPM code. The debug version of the code includes the
14964debug output trace mechanism and has a much larger code and data size.
14965Note
14966that these values will vary depending on the efficiency of the compiler
14967and
14968the compiler options used during generation.
14969
14970  Previous Release:
14971    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14972    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14973  Current Release:
14974    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14975    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14976
14977
14978
149792) iASL Compiler/Disassembler:
14980
14981Allow the use of the ObjectType operator on uninitialized Locals and Args
14982(returns 0 as per the ACPI specification).
14983
14984Fixed a problem where the compiler would fault if there was a syntax
14985error
14986in the FieldName of all of the various CreateXXXField operators.
14987
14988Disallow the use of lower case letters within the EISAID macro, as per
14989the
14990ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14991Where
14992U is an uppercase letter and N is a hex digit.
14993
14994
14995----------------------------------------
1499606 October 2004.  Summary of changes for version 20041006:
14997
149981) ACPI CA Core Subsystem:
14999
15000Implemented support for the ACPI 3.0 Timer operator. This ASL function
15001implements a 64-bit timer with 100 nanosecond granularity.
15002
15003Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
15004implement the ACPI 3.0 Timer operator.  This allows the host OS to
15005implement
15006the timer with the best clock available. Also, it keeps the core
15007subsystem
15008out of the clock handling business, since the host OS (usually) performs
15009this function.
15010
15011Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
15012functions use a 64-bit address which is part of the packed ACPI Generic
15013Address Structure. Since the structure is non-aligned, the alignment
15014macros
15015are now used to extract the address to a local variable before use.
15016
15017Fixed a problem where the ToInteger operator assumed all input strings
15018were
15019hexadecimal. The operator now handles both decimal strings and hex
15020strings
15021(prefixed with "0x").
15022
15023Fixed a problem where the string length in the string object created as a
15024result of the internal ConvertToString procedure could be incorrect. This
15025potentially affected all implicit conversions and also the
15026ToDecimalString
15027and ToHexString operators.
15028
15029Fixed two problems in the ToString operator. If the length parameter was
15030zero, an incorrect string object was created and the value of the input
15031length parameter was inadvertently changed from zero to Ones.
15032
15033Fixed a problem where the optional ResourceSource string in the
15034ExtendedIRQ
15035resource macro was ignored.
15036
15037Simplified the interfaces to the internal division functions, reducing
15038code
15039size and complexity.
15040
15041Code and Data Size: Current and previous core subsystem library sizes are
15042shown below. These are the code and data sizes for the acpica.lib
15043produced
15044by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15045any ACPI driver or OSPM code. The debug version of the code includes the
15046debug output trace mechanism and has a much larger code and data size.
15047Note
15048that these values will vary depending on the efficiency of the compiler
15049and
15050the compiler options used during generation.
15051
15052  Previous Release:
15053    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
15054    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
15055  Current Release:
15056    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15057    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
15058
15059
150602) iASL Compiler/Disassembler:
15061
15062Implemented support for the ACPI 3.0 Timer operator.
15063
15064Fixed a problem where the Default() operator was inadvertently ignored in
15065a
15066Switch/Case block.  This was a problem in the translation of the Switch
15067statement to If...Else pairs.
15068
15069Added support to allow a standalone Return operator, with no parentheses
15070(or
15071operands).
15072
15073Fixed a problem with code generation for the ElseIf operator where the
15074translated Else...If parse tree was improperly constructed leading to the
15075loss of some code.
15076
15077----------------------------------------
1507822 September 2004.  Summary of changes for version 20040922:
15079
150801) ACPI CA Core Subsystem:
15081
15082Fixed a problem with the implementation of the LNot() operator where
15083"Ones"
15084was not returned for the TRUE case. Changed the code to return Ones
15085instead
15086of (!Arg) which was usually 1. This change affects iASL constant folding
15087for
15088this operator also.
15089
15090Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
15091not
15092initialized properly -- Now zero the entire buffer in this case where the
15093buffer already exists.
15094
15095Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
15096Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
15097related code considerably. This will require changes/updates to all OS
15098interface layers (OSLs.)
15099
15100Implemented a new external interface, AcpiInstallExceptionHandler, to
15101allow
15102a system exception handler to be installed. This handler is invoked upon
15103any
15104run-time exception that occurs during control method execution.
15105
15106Added support for the DSDT in AcpiTbFindTable. This allows the
15107DataTableRegion() operator to access the local copy of the DSDT.
15108
15109Code and Data Size: Current and previous core subsystem library sizes are
15110shown below. These are the code and data sizes for the acpica.lib
15111produced
15112by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15113any ACPI driver or OSPM code. The debug version of the code includes the
15114debug output trace mechanism and has a much larger code and data size.
15115Note
15116that these values will vary depending on the efficiency of the compiler
15117and
15118the compiler options used during generation.
15119
15120  Previous Release:
15121    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
15122    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
15123  Current Release:
15124    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
15125    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
15126
15127
151282) iASL Compiler/Disassembler:
15129
15130Fixed a problem with constant folding and the LNot operator. LNot was
15131returning 1 in the TRUE case, not Ones as per the ACPI specification.
15132This
15133could result in the generation of an incorrect folded/reduced constant.
15134
15135End-Of-File is now allowed within a "//"-style comment.  A parse error no
15136longer occurs if such a comment is at the very end of the input ASL
15137source
15138file.
15139
15140Implemented the "-r" option to override the Revision in the table header.
15141The initial use of this option will be to simplify the evaluation of the
15142AML
15143interpreter by allowing a single ASL source module to be compiled for
15144either
1514532-bit or 64-bit integers.
15146
15147
15148----------------------------------------
1514927 August 2004.  Summary of changes for version 20040827:
15150
151511) ACPI CA Core Subsystem:
15152
15153- Implemented support for implicit object conversion in the non-numeric
15154logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
15155and
15156LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
15157the second operand is implicitly converted on the fly to match the type
15158of
15159the first operand.  For example:
15160
15161    LEqual (Source1, Source2)
15162
15163Source1 and Source2 must each evaluate to an integer, a string, or a
15164buffer.
15165The data type of Source1 dictates the required type of Source2. Source2
15166is
15167implicitly converted if necessary to match the type of Source1.
15168
15169- Updated and corrected the behavior of the string conversion support.
15170The
15171rules concerning conversion of buffers to strings (according to the ACPI
15172specification) are as follows:
15173
15174ToDecimalString - explicit byte-wise conversion of buffer to string of
15175decimal values (0-255) separated by commas. ToHexString - explicit byte-
15176wise
15177conversion of buffer to string of hex values (0-FF) separated by commas.
15178ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
15179byte
15180copy with no transform except NULL terminated. Any other implicit buffer-
15181to-
15182string conversion - byte-wise conversion of buffer to string of hex
15183values
15184(0-FF) separated by spaces.
15185
15186- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
15187
15188- Fixed a problem in AcpiNsGetPathnameLength where the returned length
15189was
15190one byte too short in the case of a node in the root scope.  This could
15191cause a fault during debug output.
15192
15193- Code and Data Size: Current and previous core subsystem library sizes
15194are
15195shown below.  These are the code and data sizes for the acpica.lib
15196produced
15197by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15198any ACPI driver or OSPM code.  The debug version of the code includes the
15199debug output trace mechanism and has a much larger code and data size.
15200Note
15201that these values will vary depending on the efficiency of the compiler
15202and
15203the compiler options used during generation.
15204
15205  Previous Release:
15206    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
15207    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
15208  Current Release:
15209    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
15210    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
15211
15212
152132) iASL Compiler/Disassembler:
15214
15215- Fixed a Linux generation error.
15216
15217
15218----------------------------------------
1521916 August 2004.  Summary of changes for version 20040816:
15220
152211) ACPI CA Core Subsystem:
15222
15223Designed and implemented support within the AML interpreter for the so-
15224called "implicit return".  This support returns the result of the last
15225ASL
15226operation within a control method, in the absence of an explicit Return()
15227operator.  A few machines depend on this behavior, even though it is not
15228explicitly supported by the ASL language.  It is optional support that
15229can
15230be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
15231
15232Removed support for the PCI_Config address space from the internal low
15233level
15234hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
15235support was not used internally, and would not work correctly anyway
15236because
15237the PCI bus number and segment number were not supported.  There are
15238separate interfaces for PCI configuration space access because of the
15239unique
15240interface.
15241
15242Code and Data Size: Current and previous core subsystem library sizes are
15243shown below.  These are the code and data sizes for the acpica.lib
15244produced
15245by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15246any ACPI driver or OSPM code.  The debug version of the code includes the
15247debug output trace mechanism and has a much larger code and data size.
15248Note
15249that these values will vary depending on the efficiency of the compiler
15250and
15251the compiler options used during generation.
15252
15253  Previous Release:
15254    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
15255    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
15256  Current Release:
15257    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
15258    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
15259
15260
152612) iASL Compiler/Disassembler:
15262
15263Fixed a problem where constants in ASL expressions at the root level (not
15264within a control method) could be inadvertently truncated during code
15265generation.  This problem was introduced in the 20040715 release.
15266
15267
15268----------------------------------------
1526915 July 2004.  Summary of changes for version 20040715:
15270
152711) ACPI CA Core Subsystem:
15272
15273Restructured the internal HW GPE interfaces to pass/track the current
15274state
15275of interrupts (enabled/disabled) in order to avoid possible deadlock and
15276increase flexibility of the interfaces.
15277
15278Implemented a "lexicographical compare" for String and Buffer objects
15279within
15280the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
15281-
15282as per further clarification to the ACPI specification.  Behavior is
15283similar
15284to C library "strcmp".
15285
15286Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
15287external function.  In the 32-bit non-debug case, the stack use has been
15288reduced from 168 bytes to 32 bytes.
15289
15290Deployed a new run-time configuration flag,
15291AcpiGbl_EnableInterpreterSlack,
15292whose purpose is to allow the AML interpreter to forgive certain bad AML
15293constructs.  Default setting is FALSE.
15294
15295Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
15296IO
15297support code.  If enabled, it allows field access to go beyond the end of
15298a
15299region definition if the field is within the region length rounded up to
15300the
15301next access width boundary (a common coding error.)
15302
15303Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
15304ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
15305these
15306symbols are lowercase by the latest version of the AcpiSrc tool.
15307
15308The prototypes for the PCI interfaces in acpiosxf.h have been updated to
15309rename "Register" to simply "Reg" to prevent certain compilers from
15310complaining.
15311
15312Code and Data Size: Current and previous core subsystem library sizes are
15313shown below.  These are the code and data sizes for the acpica.lib
15314produced
15315by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15316any ACPI driver or OSPM code.  The debug version of the code includes the
15317debug output trace mechanism and has a much larger code and data size.
15318Note
15319that these values will vary depending on the efficiency of the compiler
15320and
15321the compiler options used during generation.
15322
15323  Previous Release:
15324    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15325    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
15326  Current Release:
15327    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
15328    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
15329
15330
153312) iASL Compiler/Disassembler:
15332
15333Implemented full support for Package objects within the Case() operator.
15334Note: The Break() operator is currently not supported within Case blocks
15335(TermLists) as there is some question about backward compatibility with
15336ACPI
153371.0 interpreters.
15338
15339
15340Fixed a problem where complex terms were not supported properly within
15341the
15342Switch() operator.
15343
15344Eliminated extraneous warning for compiler-emitted reserved names of the
15345form "_T_x".  (Used in Switch/Case operators.)
15346
15347Eliminated optimization messages for "_T_x" objects and small constants
15348within the DefinitionBlock operator.
15349
15350
15351----------------------------------------
1535215 June 2004.  Summary of changes for version 20040615:
15353
153541) ACPI CA Core Subsystem:
15355
15356Implemented support for Buffer and String objects (as per ACPI 2.0) for
15357the
15358following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
15359LLessEqual.
15360
15361All directory names in the entire source package are lower case, as they
15362were in earlier releases.
15363
15364Implemented "Disassemble" command in the AML debugger that will
15365disassemble
15366a single control method.
15367
15368Code and Data Size: Current and previous core subsystem library sizes are
15369shown below.  These are the code and data sizes for the acpica.lib
15370produced
15371by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15372any ACPI driver or OSPM code.  The debug version of the code includes the
15373debug output trace mechanism and has a much larger code and data size.
15374Note
15375that these values will vary depending on the efficiency of the compiler
15376and
15377the compiler options used during generation.
15378
15379  Previous Release:
15380    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
15381    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
15382
15383  Current Release:
15384    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15385    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
15386
15387
153882) iASL Compiler/Disassembler:
15389
15390Implemented support for Buffer and String objects (as per ACPI 2.0) for
15391the
15392following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
15393LLessEqual.
15394
15395All directory names in the entire source package are lower case, as they
15396were in earlier releases.
15397
15398Fixed a fault when using the -g or -d<nofilename> options if the FADT was
15399not found.
15400
15401Fixed an issue with the Windows version of the compiler where later
15402versions
15403of Windows place the FADT in the registry under the name "FADT" and not
15404"FACP" as earlier versions did.  This applies when using the -g or -
15405d<nofilename> options.  The compiler now looks for both strings as
15406necessary.
15407
15408Fixed a problem with compiler namepath optimization where a namepath
15409within
15410the Scope() operator could not be optimized if the namepath was a subpath
15411of
15412the current scope path.
15413
15414----------------------------------------
1541527 May 2004.  Summary of changes for version 20040527:
15416
154171) ACPI CA Core Subsystem:
15418
15419Completed a new design and implementation for EBDA (Extended BIOS Data
15420Area)
15421support in the RSDP scan code.  The original code improperly scanned for
15422the
15423EBDA by simply scanning from memory location 0 to 0x400.  The correct
15424method
15425is to first obtain the EBDA pointer from within the BIOS data area, then
15426scan 1K of memory starting at the EBDA pointer.  There appear to be few
15427if
15428any machines that place the RSDP in the EBDA, however.
15429
15430Integrated a fix for a possible fault during evaluation of BufferField
15431arguments.  Obsolete code that was causing the problem was removed.
15432
15433Found and fixed a problem in the Field Support Code where data could be
15434corrupted on a bit field read that starts on an aligned boundary but does
15435not end on an aligned boundary.  Merged the read/write "datum length"
15436calculation code into a common procedure.
15437
15438Rolled in a couple of changes to the FreeBSD-specific header.
15439
15440
15441Code and Data Size: Current and previous core subsystem library sizes are
15442shown below.  These are the code and data sizes for the acpica.lib
15443produced
15444by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15445any ACPI driver or OSPM code.  The debug version of the code includes the
15446debug output trace mechanism and has a much larger code and data size.
15447Note
15448that these values will vary depending on the efficiency of the compiler
15449and
15450the compiler options used during generation.
15451
15452  Previous Release:
15453    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15454    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
15455  Current Release:
15456    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
15457    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
15458
15459
154602) iASL Compiler/Disassembler:
15461
15462Fixed a generation warning produced by some overly-verbose compilers for
15463a
1546464-bit constant.
15465
15466----------------------------------------
1546714 May 2004.  Summary of changes for version 20040514:
15468
154691) ACPI CA Core Subsystem:
15470
15471Fixed a problem where hardware GPE enable bits sometimes not set properly
15472during and after GPE method execution.  Result of 04/27 changes.
15473
15474Removed extra "clear all GPEs" when sleeping/waking.
15475
15476Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
15477AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
15478to
15479the new AcpiEv* calls as appropriate.
15480
15481ACPI_OS_NAME was removed from the OS-specific headers.  The default name
15482is
15483now "Microsoft Windows NT" for maximum compatibility.  However this can
15484be
15485changed by modifying the acconfig.h file.
15486
15487Allow a single invocation of AcpiInstallNotifyHandler for a handler that
15488traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
15489
15490Run _INI methods on ThermalZone objects.  This is against the ACPI
15491specification, but there is apparently ASL code in the field that has
15492these
15493_INI methods, and apparently "other" AML interpreters execute them.
15494
15495Performed a full 16/32/64 bit lint that resulted in some small changes.
15496
15497Added a sleep simulation command to the AML debugger to test sleep code.
15498
15499Code and Data Size: Current and previous core subsystem library sizes are
15500shown below.  These are the code and data sizes for the acpica.lib
15501produced
15502by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15503any ACPI driver or OSPM code.  The debug version of the code includes the
15504debug output trace mechanism and has a much larger code and data size.
15505Note
15506that these values will vary depending on the efficiency of the compiler
15507and
15508the compiler options used during generation.
15509
15510  Previous Release:
15511    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15512    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15513  Current Release:
15514    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15515    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
15516
15517----------------------------------------
1551827 April 2004.  Summary of changes for version 20040427:
15519
155201) ACPI CA Core Subsystem:
15521
15522Completed a major overhaul of the GPE handling within ACPI CA.  There are
15523now three types of GPEs:  wake-only, runtime-only, and combination
15524wake/run.
15525The only GPEs allowed to be combination wake/run are for button-style
15526devices such as a control-method power button, control-method sleep
15527button,
15528or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
15529not
15530referenced by any _PRW methods are marked for "runtime" and hardware
15531enabled.  Any GPE that is referenced by a _PRW method is marked for
15532"wake"
15533(and disabled at runtime).  However, at sleep time, only those GPEs that
15534have been specifically enabled for wake via the AcpiEnableGpe interface
15535will
15536actually be hardware enabled.
15537
15538A new external interface has been added, AcpiSetGpeType(), that is meant
15539to
15540be used by device drivers to force a GPE to a particular type.  It will
15541be
15542especially useful for the drivers for the button devices mentioned above.
15543
15544Completed restructuring of the ACPI CA initialization sequence so that
15545default operation region handlers are installed before GPEs are
15546initialized
15547and the _PRW methods are executed.  This will prevent errors when the
15548_PRW
15549methods attempt to access system memory or I/O space.
15550
15551GPE enable/disable no longer reads the GPE enable register.  We now keep
15552the
15553enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
15554thus no longer depend on the hardware to maintain these bits.
15555
15556Always clear the wake status and fixed/GPE status bits before sleep, even
15557for state S5.
15558
15559Improved the AML debugger output for displaying the GPE blocks and their
15560current status.
15561
15562Added new strings for the _OSI method, of the form "Windows 2001 SPx"
15563where
15564x = 0,1,2,3,4.
15565
15566Fixed a problem where the physical address was incorrectly calculated
15567when
15568the Load() operator was used to directly load from an Operation Region
15569(vs.
15570loading from a Field object.)  Also added check for minimum table length
15571for
15572this case.
15573
15574Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
15575mutex release.
15576
15577Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
15578consistency with the other fields returned.
15579
15580Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
15581structure for each GPE in the system, so the size of this structure is
15582important.
15583
15584CPU stack requirement reduction:  Cleaned up the method execution and
15585object
15586evaluation paths so that now a parameter structure is passed, instead of
15587copying the various method parameters over and over again.
15588
15589In evregion.c:  Correctly exit and reenter the interpreter region if and
15590only if dispatching an operation region request to a user-installed
15591handler.
15592Do not exit/reenter when dispatching to a default handler (e.g., default
15593system memory or I/O handlers)
15594
15595
15596Notes for updating drivers for the new GPE support.  The following
15597changes
15598must be made to ACPI-related device drivers that are attached to one or
15599more
15600GPEs: (This information will be added to the ACPI CA Programmer
15601Reference.)
15602
156031) AcpiInstallGpeHandler no longer automatically enables the GPE, you
15604must
15605explicitly call AcpiEnableGpe.
156062) There is a new interface called AcpiSetGpeType. This should be called
15607before enabling the GPE.  Also, this interface will automatically disable
15608the GPE if it is currently enabled.
156093) AcpiEnableGpe no longer supports a GPE type flag.
15610
15611Specific drivers that must be changed:
156121) EC driver:
15613    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
15614AeGpeHandler, NULL);
15615    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
15616    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
15617
156182) Button Drivers (Power, Lid, Sleep):
15619Run _PRW method under parent device
15620If _PRW exists: /* This is a control-method button */
15621    Extract GPE number and possibly GpeDevice
15622    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
15623    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
15624
15625For all other devices that have _PRWs, we automatically set the GPE type
15626to
15627ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
15628This
15629must be done on a selective basis, usually requiring some kind of user
15630app
15631to allow the user to pick the wake devices.
15632
15633
15634Code and Data Size: Current and previous core subsystem library sizes are
15635shown below.  These are the code and data sizes for the acpica.lib
15636produced
15637by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15638any ACPI driver or OSPM code.  The debug version of the code includes the
15639debug output trace mechanism and has a much larger code and data size.
15640Note
15641that these values will vary depending on the efficiency of the compiler
15642and
15643the compiler options used during generation.
15644
15645  Previous Release:
15646    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15647    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15648  Current Release:
15649
15650    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15651    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15652
15653
15654
15655----------------------------------------
1565602 April 2004.  Summary of changes for version 20040402:
15657
156581) ACPI CA Core Subsystem:
15659
15660Fixed an interpreter problem where an indirect store through an ArgX
15661parameter was incorrectly applying the "implicit conversion rules" during
15662the store.  From the ACPI specification: "If the target is a method local
15663or
15664argument (LocalX or ArgX), no conversion is performed and the result is
15665stored directly to the target".  The new behavior is to disable implicit
15666conversion during ALL stores to an ArgX.
15667
15668Changed the behavior of the _PRW method scan to ignore any and all errors
15669returned by a given _PRW.  This prevents the scan from aborting from the
15670failure of any single _PRW.
15671
15672Moved the runtime configuration parameters from the global init procedure
15673to
15674static variables in acglobal.h.  This will allow the host to override the
15675default values easily.
15676
15677Code and Data Size: Current and previous core subsystem library sizes are
15678shown below.  These are the code and data sizes for the acpica.lib
15679produced
15680by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15681any ACPI driver or OSPM code.  The debug version of the code includes the
15682debug output trace mechanism and has a much larger code and data size.
15683Note
15684that these values will vary depending on the efficiency of the compiler
15685and
15686the compiler options used during generation.
15687
15688  Previous Release:
15689    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15690    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15691  Current Release:
15692    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15693    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15694
15695
156962) iASL Compiler/Disassembler:
15697
15698iASL now fully disassembles SSDTs.  However, External() statements are
15699not
15700generated automatically for unresolved symbols at this time.  This is a
15701planned feature for future implementation.
15702
15703Fixed a scoping problem in the disassembler that occurs when the type of
15704the
15705target of a Scope() operator is overridden.  This problem caused an
15706incorrectly nested internal namespace to be constructed.
15707
15708Any warnings or errors that are emitted during disassembly are now
15709commented
15710out automatically so that the resulting file can be recompiled without
15711any
15712hand editing.
15713
15714----------------------------------------
1571526 March 2004.  Summary of changes for version 20040326:
15716
157171) ACPI CA Core Subsystem:
15718
15719Implemented support for "wake" GPEs via interaction between GPEs and the
15720_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
15721identified as a WAKE GPE and by default will no longer be enabled at
15722runtime.  Previously, we were blindly enabling all GPEs with a
15723corresponding
15724_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
15725We
15726believe this has been the cause of thousands of "spurious" GPEs on some
15727systems.
15728
15729This new GPE behavior is can be reverted to the original behavior (enable
15730ALL GPEs at runtime) via a runtime flag.
15731
15732Fixed a problem where aliased control methods could not access objects
15733properly.  The proper scope within the namespace was not initialized
15734(transferred to the target of the aliased method) before executing the
15735target method.
15736
15737Fixed a potential race condition on internal object deletion on the
15738return
15739object in AcpiEvaluateObject.
15740
15741Integrated a fix for resource descriptors where both _MEM and _MTP were
15742being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
15743wide, 0x0F instead of 0x03.)
15744
15745Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
15746preventing
15747a
15748fault in some cases.
15749
15750Updated Notify() values for debug statements in evmisc.c
15751
15752Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
15753
15754Code and Data Size: Current and previous core subsystem library sizes are
15755shown below.  These are the code and data sizes for the acpica.lib
15756produced
15757by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15758any ACPI driver or OSPM code.  The debug version of the code includes the
15759debug output trace mechanism and has a much larger code and data size.
15760Note
15761that these values will vary depending on the efficiency of the compiler
15762and
15763the compiler options used during generation.
15764
15765  Previous Release:
15766
15767    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15768    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15769  Current Release:
15770    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15771    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15772
15773----------------------------------------
1577411 March 2004.  Summary of changes for version 20040311:
15775
157761) ACPI CA Core Subsystem:
15777
15778Fixed a problem where errors occurring during the parse phase of control
15779method execution did not abort cleanly.  For example, objects created and
15780installed in the namespace were not deleted.  This caused all subsequent
15781invocations of the method to return the AE_ALREADY_EXISTS exception.
15782
15783Implemented a mechanism to force a control method to "Serialized"
15784execution
15785if the method attempts to create namespace objects. (The root of the
15786AE_ALREADY_EXISTS problem.)
15787
15788Implemented support for the predefined _OSI "internal" control method.
15789Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
15790and
15791"Windows 2001.1", and can be easily upgraded for new strings as
15792necessary.
15793This feature will allow "other" operating systems to execute the fully
15794tested, "Windows" code path through the ASL code
15795
15796Global Lock Support:  Now allows multiple acquires and releases with any
15797internal thread.  Removed concept of "owning thread" for this special
15798mutex.
15799
15800Fixed two functions that were inappropriately declaring large objects on
15801the
15802CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
15803during
15804method execution considerably.
15805
15806Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15807S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15808
15809Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15810defined on the machine.
15811
15812Implemented two runtime options:  One to force all control method
15813execution
15814to "Serialized" to mimic Windows behavior, another to disable _OSI
15815support
15816if it causes problems on a given machine.
15817
15818Code and Data Size: Current and previous core subsystem library sizes are
15819shown below.  These are the code and data sizes for the acpica.lib
15820produced
15821by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15822any ACPI driver or OSPM code.  The debug version of the code includes the
15823debug output trace mechanism and has a much larger code and data size.
15824Note
15825that these values will vary depending on the efficiency of the compiler
15826and
15827the compiler options used during generation.
15828
15829  Previous Release:
15830    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15831    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15832  Current Release:
15833    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15834    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15835
158362) iASL Compiler/Disassembler:
15837
15838Fixed an array size problem for FreeBSD that would cause the compiler to
15839fault.
15840
15841----------------------------------------
1584220 February 2004.  Summary of changes for version 20040220:
15843
15844
158451) ACPI CA Core Subsystem:
15846
15847Implemented execution of _SxD methods for Device objects in the
15848GetObjectInfo interface.
15849
15850Fixed calls to _SST method to pass the correct arguments.
15851
15852Added a call to _SST on wake to restore to "working" state.
15853
15854Check for End-Of-Buffer failure case in the WalkResources interface.
15855
15856Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15857structures to the beginning of the file.
15858
15859After wake, clear GPE status register(s) before enabling GPEs.
15860
15861After wake, clear/enable power button.  (Perhaps we should clear/enable
15862all
15863fixed events upon wake.)
15864
15865Fixed a couple of possible memory leaks in the Namespace manager.
15866
15867Integrated latest acnetbsd.h file.
15868
15869----------------------------------------
1587011 February 2004.  Summary of changes for version 20040211:
15871
15872
158731) ACPI CA Core Subsystem:
15874
15875Completed investigation and implementation of the call-by-reference
15876mechanism for control method arguments.
15877
15878Fixed a problem where a store of an object into an indexed package could
15879fail if the store occurs within a different method than the method that
15880created the package.
15881
15882Fixed a problem where the ToDecimal operator could return incorrect
15883results.
15884
15885Fixed a problem where the CopyObject operator could fail on some of the
15886more
15887obscure objects (e.g., Reference objects.)
15888
15889Improved the output of the Debug object to display buffer, package, and
15890index objects.
15891
15892Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15893return
15894the expected result.
15895
15896Added permanent ACPI_REPORT_ERROR macros for all instances of the
15897ACPI_AML_INTERNAL exception.
15898
15899Integrated latest version of acfreebsd.h
15900
15901----------------------------------------
1590216 January 2004.  Summary of changes for version 20040116:
15903
15904The purpose of this release is primarily to update the copyright years in
15905each module, thus causing a huge number of diffs.  There are a few small
15906functional changes, however.
15907
159081) ACPI CA Core Subsystem:
15909
15910Improved error messages when there is a problem finding one or more of
15911the
15912required base ACPI tables
15913
15914Reintroduced the definition of APIC_HEADER in actbl.h
15915
15916Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15917
15918Removed extraneous reference to NewObj in dsmthdat.c
15919
159202) iASL compiler
15921
15922Fixed a problem introduced in December that disabled the correct
15923disassembly
15924of Resource Templates
15925
15926
15927----------------------------------------
1592803 December 2003.  Summary of changes for version 20031203:
15929
159301) ACPI CA Core Subsystem:
15931
15932Changed the initialization of Operation Regions during subsystem
15933init to perform two entire walks of the ACPI namespace; The first
15934to initialize the regions themselves, the second to execute the
15935_REG methods.  This fixed some interdependencies across _REG
15936methods found on some machines.
15937
15938Fixed a problem where a Store(Local0, Local1) could simply update
15939the object reference count, and not create a new copy of the
15940object if the Local1 is uninitialized.
15941
15942Implemented support for the _SST reserved method during sleep
15943transitions.
15944
15945Implemented support to clear the SLP_TYP and SLP_EN bits when
15946waking up, this is apparently required by some machines.
15947
15948When sleeping, clear the wake status only if SleepState is not S5.
15949
15950Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15951pointer arithmetic advanced a string pointer too far.
15952
15953Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15954could be returned if the requested table has not been loaded.
15955
15956Within the support for IRQ resources, restructured the handling of
15957the active and edge/level bits.
15958
15959Fixed a few problems in AcpiPsxExecute() where memory could be
15960leaked under certain error conditions.
15961
15962Improved error messages for the cases where the ACPI mode could
15963not be entered.
15964
15965Code and Data Size: Current and previous core subsystem library
15966sizes are shown below.  These are the code and data sizes for the
15967acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15968these values do not include any ACPI driver or OSPM code.  The
15969debug version of the code includes the debug output trace
15970mechanism and has a much larger code and data size.  Note that
15971these values will vary depending on the efficiency of the compiler
15972and the compiler options used during generation.
15973
15974  Previous Release (20031029):
15975    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15976    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15977  Current Release:
15978    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15979    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15980
159812) iASL Compiler/Disassembler:
15982
15983Implemented a fix for the iASL disassembler where a bad index was
15984generated.  This was most noticeable on 64-bit platforms
15985
15986
15987----------------------------------------
1598829 October 2003.  Summary of changes for version 20031029:
15989
159901) ACPI CA Core Subsystem:
15991
15992
15993Fixed a problem where a level-triggered GPE with an associated
15994_Lxx control method was incorrectly cleared twice.
15995
15996Fixed a problem with the Field support code where an access can
15997occur beyond the end-of-region if the field is non-aligned but
15998extends to the very end of the parent region (resulted in an
15999AE_AML_REGION_LIMIT exception.)
16000
16001Fixed a problem with ACPI Fixed Events where an RT Clock handler
16002would not get invoked on an RTC event.  The RTC event bitmasks for
16003the PM1 registers were not being initialized properly.
16004
16005Implemented support for executing _STA and _INI methods for
16006Processor objects.  Although this is currently not part of the
16007ACPI specification, there is existing ASL code that depends on the
16008init-time execution of these methods.
16009
16010Implemented and deployed a GetDescriptorName function to decode
16011the various types of internal descriptors.  Guards against null
16012descriptors during debug output also.
16013
16014Implemented and deployed a GetNodeName function to extract the 4-
16015character namespace node name.  This function simplifies the debug
16016and error output, as well as guarding against null pointers during
16017output.
16018
16019Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
16020simplify the debug and error output of 64-bit integers.  This
16021macro replaces the HIDWORD and LODWORD macros for dumping these
16022integers.
16023
16024Updated the implementation of the Stall() operator to only call
16025AcpiOsStall(), and also return an error if the operand is larger
16026than 255.  This preserves the required behavior of not
16027relinquishing the processor, as would happen if AcpiOsSleep() was
16028called for "long stalls".
16029
16030Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
16031initialized are now treated as NOOPs.
16032
16033Cleaned up a handful of warnings during 64-bit generation.
16034
16035Fixed a reported error where and incorrect GPE number was passed
16036to the GPE dispatch handler.  This value is only used for error
16037output, however.  Used this opportunity to clean up and streamline
16038the GPE dispatch code.
16039
16040Code and Data Size: Current and previous core subsystem library
16041sizes are shown below.  These are the code and data sizes for the
16042acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16043these values do not include any ACPI driver or OSPM code.  The
16044
16045debug version of the code includes the debug output trace
16046mechanism and has a much larger code and data size.  Note that
16047these values will vary depending on the efficiency of the compiler
16048and the compiler options used during generation.
16049
16050  Previous Release (20031002):
16051    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
16052    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
16053  Current Release:
16054    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
16055    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
16056
16057
160582) iASL Compiler/Disassembler:
16059
16060Updated the iASL compiler to return an error if the operand to the
16061Stall() operator is larger than 255.
16062
16063
16064----------------------------------------
1606502 October 2003.  Summary of changes for version 20031002:
16066
16067
160681) ACPI CA Core Subsystem:
16069
16070Fixed a problem with Index Fields where the index was not
16071incremented for fields that require multiple writes to the
16072index/data registers (Fields that are wider than the data
16073register.)
16074
16075Fixed a problem with all Field objects where a write could go
16076beyond the end-of-field if the field was larger than the access
16077granularity and therefore required multiple writes to complete the
16078request.  An extra write beyond the end of the field could happen
16079inadvertently.
16080
16081Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
16082would incorrectly be returned if the width of the Data Register
16083was larger than the specified field access width.
16084
16085Completed fixes for LoadTable() and Unload() and verified their
16086operation.  Implemented full support for the "DdbHandle" object
16087throughout the ACPI CA subsystem.
16088
16089Implemented full support for the MADT and ECDT tables in the ACPI
16090CA header files.  Even though these tables are not directly
16091consumed by ACPI CA, the header definitions are useful for ACPI
16092device drivers.
16093
16094Integrated resource descriptor fixes posted to the Linux ACPI
16095list.  This included checks for minimum descriptor length, and
16096support for trailing NULL strings within descriptors that have
16097optional string elements.
16098
16099Code and Data Size: Current and previous core subsystem library
16100sizes are shown below.  These are the code and data sizes for the
16101acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16102these values do not include any ACPI driver or OSPM code.  The
16103debug version of the code includes the debug output trace
16104mechanism and has a much larger code and data size.  Note that
16105these values will vary depending on the efficiency of the compiler
16106and the compiler options used during generation.
16107
16108  Previous Release (20030918):
16109    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
16110    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
16111  Current Release:
16112    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
16113    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
16114
16115
161162) iASL Compiler:
16117
16118Implemented detection of non-ASCII characters within the input
16119source ASL file.  This catches attempts to compile binary (AML)
16120files early in the compile, with an informative error message.
16121
16122Fixed a problem where the disassembler would fault if the output
16123filename could not be generated or if the output file could not be
16124opened.
16125
16126----------------------------------------
1612718 September 2003.  Summary of changes for version 20030918:
16128
16129
161301) ACPI CA Core Subsystem:
16131
16132Found and fixed a longstanding problem with the late execution of
16133the various deferred AML opcodes (such as Operation Regions,
16134Buffer Fields, Buffers, and Packages).  If the name string
16135specified for the name of the new object placed the object in a
16136scope other than the current scope, the initialization/execution
16137of the opcode failed.  The solution to this problem was to
16138implement a mechanism where the late execution of such opcodes
16139does not attempt to lookup/create the name a second time in an
16140incorrect scope.  This fixes the "region size computed
16141incorrectly" problem.
16142
16143Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
16144Global Lock AE_BAD_PARAMETER error.
16145
16146Fixed several 64-bit issues with prototypes, casting and data
16147types.
16148
16149Removed duplicate prototype from acdisasm.h
16150
16151Fixed an issue involving EC Operation Region Detach (Shaohua Li)
16152
16153Code and Data Size: Current and previous core subsystem library
16154sizes are shown below.  These are the code and data sizes for the
16155acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16156these values do not include any ACPI driver or OSPM code.  The
16157debug version of the code includes the debug output trace
16158mechanism and has a much larger code and data size.  Note that
16159these values will vary depending on the efficiency of the compiler
16160and the compiler options used during generation.
16161
16162  Previous Release:
16163
16164    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
16165    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
16166  Current Release:
16167    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
16168    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
16169
16170
161712) Linux:
16172
16173Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
16174correct sleep time in seconds.
16175
16176----------------------------------------
1617714 July 2003.  Summary of changes for version 20030619:
16178
161791) ACPI CA Core Subsystem:
16180
16181Parse SSDTs in order discovered, as opposed to reverse order
16182(Hrvoje Habjanic)
16183
16184Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
16185Klausner,
16186   Nate Lawson)
16187
16188
161892) Linux:
16190
16191Dynamically allocate SDT list (suggested by Andi Kleen)
16192
16193proc function return value cleanups (Andi Kleen)
16194
16195Correctly handle NMI watchdog during long stalls (Andrew Morton)
16196
16197Make it so acpismp=force works (reported by Andrew Morton)
16198
16199
16200----------------------------------------
1620119 June 2003.  Summary of changes for version 20030619:
16202
162031) ACPI CA Core Subsystem:
16204
16205Fix To/FromBCD, eliminating the need for an arch-specific #define.
16206
16207Do not acquire a semaphore in the S5 shutdown path.
16208
16209Fix ex_digits_needed for 0. (Takayoshi Kochi)
16210
16211Fix sleep/stall code reversal. (Andi Kleen)
16212
16213Revert a change having to do with control method calling
16214semantics.
16215
162162) Linux:
16217
16218acpiphp update (Takayoshi Kochi)
16219
16220Export acpi_disabled for sonypi (Stelian Pop)
16221
16222Mention acpismp=force in config help
16223
16224Re-add acpitable.c and acpismp=force. This improves backwards
16225
16226compatibility and also cleans up the code to a significant degree.
16227
16228Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
16229
16230----------------------------------------
1623122 May 2003.  Summary of changes for version 20030522:
16232
162331) ACPI CA Core Subsystem:
16234
16235Found and fixed a reported problem where an AE_NOT_FOUND error
16236occurred occasionally during _BST evaluation.  This turned out to
16237be an Owner ID allocation issue where a called method did not get
16238a new ID assigned to it.  Eventually, (after 64k calls), the Owner
16239ID UINT16 would wraparound so that the ID would be the same as the
16240caller's and the called method would delete the caller's
16241namespace.
16242
16243Implemented extended error reporting for control methods that are
16244aborted due to a run-time exception.  Output includes the exact
16245AML instruction that caused the method abort, a dump of the method
16246locals and arguments at the time of the abort, and a trace of all
16247nested control method calls.
16248
16249Modified the interpreter to allow the creation of buffers of zero
16250length from the AML code. Implemented new code to ensure that no
16251attempt is made to actually allocate a memory buffer (of length
16252zero) - instead, a simple buffer object with a NULL buffer pointer
16253and length zero is created.  A warning is no longer issued when
16254the AML attempts to create a zero-length buffer.
16255
16256Implemented a workaround for the "leading asterisk issue" in
16257_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
16258asterisk is automatically removed if present in any HID, UID, or
16259CID strings.  The iASL compiler will still flag this asterisk as
16260an error, however.
16261
16262Implemented full support for _CID methods that return a package of
16263multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
16264now additionally returns a device _CID list if present.  This
16265required a change to the external interface in order to pass an
16266ACPI_BUFFER object as a parameter since the _CID list is of
16267variable length.
16268
16269Fixed a problem with the new AE_SAME_HANDLER exception where
16270handler initialization code did not know about this exception.
16271
16272Code and Data Size: Current and previous core subsystem library
16273sizes are shown below.  These are the code and data sizes for the
16274acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16275these values do not include any ACPI driver or OSPM code.  The
16276debug version of the code includes the debug output trace
16277mechanism and has a much larger code and data size.  Note that
16278these values will vary depending on the efficiency of the compiler
16279and the compiler options used during generation.
16280
16281  Previous Release (20030509):
16282    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
16283    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
16284  Current Release:
16285    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
16286    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
16287
16288
162892) Linux:
16290
16291Fixed a bug in which we would reinitialize the ACPI interrupt
16292after it was already working, thus disabling all ACPI and the IRQs
16293for any other device sharing the interrupt. (Thanks to Stian
16294Jordet)
16295
16296Toshiba driver update (John Belmonte)
16297
16298Return only 0 or 1 for our interrupt handler status (Andrew
16299Morton)
16300
16301
163023) iASL Compiler:
16303
16304Fixed a reported problem where multiple (nested) ElseIf()
16305statements were not handled correctly by the compiler, resulting
16306in incorrect warnings and incorrect AML code.  This was a problem
16307in both the ASL parser and the code generator.
16308
16309
163104) Documentation:
16311
16312Added changes to existing interfaces, new exception codes, and new
16313text concerning reference count object management versus garbage
16314collection.
16315
16316----------------------------------------
1631709 May 2003.  Summary of changes for version 20030509.
16318
16319
163201) ACPI CA Core Subsystem:
16321
16322Changed the subsystem initialization sequence to hold off
16323installation of address space handlers until the hardware has been
16324initialized and the system has entered ACPI mode.  This is because
16325the installation of space handlers can cause _REG methods to be
16326run.  Previously, the _REG methods could potentially be run before
16327ACPI mode was enabled.
16328
16329Fixed some memory leak issues related to address space handler and
16330notify handler installation.  There were some problems with the
16331reference count mechanism caused by the fact that the handler
16332objects are shared across several namespace objects.
16333
16334Fixed a reported problem where reference counts within the
16335namespace were not properly updated when named objects created by
16336method execution were deleted.
16337
16338Fixed a reported problem where multiple SSDTs caused a deletion
16339issue during subsystem termination.  Restructured the table data
16340structures to simplify the linked lists and the related code.
16341
16342Fixed a problem where the table ID associated with secondary
16343tables (SSDTs) was not being propagated into the namespace objects
16344created by those tables.  This would only present a problem for
16345tables that are unloaded at run-time, however.
16346
16347Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
16348type as the length parameter (instead of UINT32).
16349
16350Solved a long-standing problem where an ALREADY_EXISTS error
16351appears on various systems.  This problem could happen when there
16352are multiple PCI_Config operation regions under a single PCI root
16353bus.  This doesn't happen very frequently, but there are some
16354systems that do this in the ASL.
16355
16356Fixed a reported problem where the internal DeleteNode function
16357was incorrectly handling the case where a namespace node was the
16358first in the parent's child list, and had additional peers (not
16359the only child, but first in the list of children.)
16360
16361Code and Data Size: Current core subsystem library sizes are shown
16362below.  These are the code and data sizes for the acpica.lib
16363produced by the Microsoft Visual C++ 6.0 compiler, and these
16364values do not include any ACPI driver or OSPM code.  The debug
16365version of the code includes the debug output trace mechanism and
16366has a much larger code and data size.  Note that these values will
16367vary depending on the efficiency of the compiler and the compiler
16368options used during generation.
16369
16370  Previous Release
16371    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
16372    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
16373  Current Release:
16374    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
16375    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
16376
16377
163782) Linux:
16379
16380Allow ":" in OS override string (Ducrot Bruno)
16381
16382Kobject fix (Greg KH)
16383
16384
163853 iASL Compiler/Disassembler:
16386
16387Fixed a problem in the generation of the C source code files (AML
16388is emitted in C source statements for BIOS inclusion) where the
16389Ascii dump that appears within a C comment at the end of each line
16390could cause a compile time error if the AML sequence happens to
16391have an open comment or close comment sequence embedded.
16392
16393
16394----------------------------------------
1639524 April 2003.  Summary of changes for version 20030424.
16396
16397
163981) ACPI CA Core Subsystem:
16399
16400Support for big-endian systems has been implemented.  Most of the
16401support has been invisibly added behind big-endian versions of the
16402ACPI_MOVE_* macros.
16403
16404Fixed a problem in AcpiHwDisableGpeBlock() and
16405AcpiHwClearGpeBlock() where an incorrect offset was passed to the
16406low level hardware write routine.  The offset parameter was
16407actually eliminated from the low level read/write routines because
16408they had become obsolete.
16409
16410Fixed a problem where a handler object was deleted twice during
16411the removal of a fixed event handler.
16412
16413
164142) Linux:
16415
16416A fix for SMP systems with link devices was contributed by
16417
16418Compaq's Dan Zink.
16419
16420(2.5) Return whether we handled the interrupt in our IRQ handler.
16421(Linux ISRs no longer return void, so we can propagate the handler
16422return value from the ACPI CA core back to the OS.)
16423
16424
16425
164263) Documentation:
16427
16428The ACPI CA Programmer Reference has been updated to reflect new
16429interfaces and changes to existing interfaces.
16430
16431----------------------------------------
1643228 March 2003.  Summary of changes for version 20030328.
16433
164341) ACPI CA Core Subsystem:
16435
16436The GPE Block Device support has been completed.  New interfaces
16437are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
16438interfaces (enable, disable, clear, getstatus) have been split
16439into separate interfaces for Fixed Events and General Purpose
16440Events (GPEs) in order to support GPE Block Devices properly.
16441
16442Fixed a problem where the error message "Failed to acquire
16443semaphore" would appear during operations on the embedded
16444controller (EC).
16445
16446Code and Data Size: Current core subsystem library sizes are shown
16447below.  These are the code and data sizes for the acpica.lib
16448produced by the Microsoft Visual C++ 6.0 compiler, and these
16449values do not include any ACPI driver or OSPM code.  The debug
16450version of the code includes the debug output trace mechanism and
16451has a much larger code and data size.  Note that these values will
16452vary depending on the efficiency of the compiler and the compiler
16453options used during generation.
16454
16455  Previous Release
16456    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
16457    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
16458  Current Release:
16459    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
16460    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
16461
16462
16463----------------------------------------
1646428 February 2003.  Summary of changes for version 20030228.
16465
16466
164671) ACPI CA Core Subsystem:
16468
16469The GPE handling and dispatch code has been completely overhauled
16470in preparation for support of GPE Block Devices (ID ACPI0006).
16471This affects internal data structures and code only; there should
16472be no differences visible externally.  One new file has been
16473added, evgpeblk.c
16474
16475The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
16476fields that are used to determine the GPE block lengths.  The
16477REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
16478structures are ignored.  This is per the ACPI specification but it
16479isn't very clear.  The full 256 Block 0/1 GPEs are now supported
16480(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
16481
16482In the SCI interrupt handler, removed the read of the PM1_CONTROL
16483register to look at the SCI_EN bit.  On some machines, this read
16484causes an SMI event and greatly slows down SCI events.  (This may
16485in fact be the cause of slow battery status response on some
16486systems.)
16487
16488Fixed a problem where a store of a NULL string to a package object
16489could cause the premature deletion of the object.  This was seen
16490during execution of the battery _BIF method on some systems,
16491resulting in no battery data being returned.
16492
16493Added AcpiWalkResources interface to simplify parsing of resource
16494lists.
16495
16496Code and Data Size: Current core subsystem library sizes are shown
16497below.  These are the code and data sizes for the acpica.lib
16498produced by the Microsoft Visual C++ 6.0 compiler, and these
16499values do not include any ACPI driver or OSPM code.  The debug
16500version of the code includes the debug output trace mechanism and
16501has a much larger code and data size.  Note that these values will
16502vary depending on the efficiency of the compiler and the compiler
16503options used during generation.
16504
16505  Previous Release
16506    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16507    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16508  Current Release:
16509    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
16510    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
16511
16512
165132) Linux
16514
16515S3 fixes (Ole Rohne)
16516
16517Update ACPI PHP driver with to use new acpi_walk_resource API
16518(Bjorn Helgaas)
16519
16520Add S4BIOS support (Pavel Machek)
16521
16522Map in entire table before performing checksum (John Stultz)
16523
16524Expand the mem= cmdline to allow the specification of reserved and
16525ACPI DATA blocks (Pavel Machek)
16526
16527Never use ACPI on VISWS
16528
16529Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
16530
16531Revert a change that allowed P_BLK lengths to be 4 or 5. This is
16532causing us to think that some systems support C2 when they really
16533don't.
16534
16535Do not count processor objects for non-present CPUs (Thanks to
16536Dominik Brodowski)
16537
16538
165393) iASL Compiler:
16540
16541Fixed a problem where ASL include files could not be found and
16542opened.
16543
16544Added support for the _PDC reserved name.
16545
16546
16547----------------------------------------
1654822 January 2003.  Summary of changes for version 20030122.
16549
16550
165511) ACPI CA Core Subsystem:
16552
16553Added a check for constructs of the form:  Store (Local0, Local0)
16554where Local0 is not initialized.  Apparently, some BIOS
16555programmers believe that this is a NOOP.  Since this store doesn't
16556do anything anyway, the new prototype behavior will ignore this
16557error.  This is a case where we can relax the strict checking in
16558the interpreter in the name of compatibility.
16559
16560
165612) Linux
16562
16563The AcpiSrc Source Conversion Utility has been released with the
16564Linux package for the first time.  This is the utility that is
16565used to convert the ACPI CA base source code to the Linux version.
16566
16567(Both) Handle P_BLK lengths shorter than 6 more gracefully
16568
16569(Both) Move more headers to include/acpi, and delete an unused
16570header.
16571
16572(Both) Move drivers/acpi/include directory to include/acpi
16573
16574(Both) Boot functions don't use cmdline, so don't pass it around
16575
16576(Both) Remove include of unused header (Adrian Bunk)
16577
16578(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
16579the
16580former now also includes the latter, acpiphp.h only needs the one,
16581now.
16582
16583(2.5) Make it possible to select method of bios restoring after S3
16584resume. [=> no more ugly ifdefs] (Pavel Machek)
16585
16586(2.5) Make proc write interfaces work (Pavel Machek)
16587
16588(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
16589
16590(2.5) Break out ACPI Perf code into its own module, under cpufreq
16591(Dominik Brodowski)
16592
16593(2.4) S4BIOS support (Ducrot Bruno)
16594
16595(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
16596Visinoni)
16597
16598
165993) iASL Compiler:
16600
16601Added support to disassemble SSDT and PSDTs.
16602
16603Implemented support to obtain SSDTs from the Windows registry if
16604available.
16605
16606
16607----------------------------------------
1660809 January 2003.  Summary of changes for version 20030109.
16609
166101) ACPI CA Core Subsystem:
16611
16612Changed the behavior of the internal Buffer-to-String conversion
16613function.  The current ACPI specification states that the contents
16614of the buffer are "converted to a string of two-character
16615hexadecimal numbers, each separated by a space".  Unfortunately,
16616this definition is not backwards compatible with existing ACPI 1.0
16617implementations (although the behavior was not defined in the ACPI
166181.0 specification).  The new behavior simply copies data from the
16619buffer to the string until a null character is found or the end of
16620the buffer is reached.  The new String object is always null
16621terminated.  This problem was seen during the generation of _BIF
16622battery data where incorrect strings were returned for battery
16623type, etc.  This will also require an errata to the ACPI
16624specification.
16625
16626Renamed all instances of NATIVE_UINT and NATIVE_INT to
16627ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
16628
16629Copyright in all module headers (both Linux and non-Linux) has be
16630updated to 2003.
16631
16632Code and Data Size: Current core subsystem library sizes are shown
16633below.  These are the code and data sizes for the acpica.lib
16634produced by the Microsoft Visual C++ 6.0 compiler, and these
16635values do not include any ACPI driver or OSPM code.  The debug
16636version of the code includes the debug output trace mechanism and
16637has a much larger code and data size.  Note that these values will
16638vary depending on the efficiency of the compiler and the compiler
16639options used during generation.
16640
16641  Previous Release
16642    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16643    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16644  Current Release:
16645    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16646    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16647
16648
166492) Linux
16650
16651Fixed an oops on module insertion/removal (Matthew Tippett)
16652
16653(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
16654
16655(2.5) Replace pr_debug (Randy Dunlap)
16656
16657(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
16658
16659(Both) Eliminate spawning of thread from timer callback, in favor
16660of schedule_work()
16661
16662(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
16663
16664(Both) Added define for Fixed Function HW region (Matthew Wilcox)
16665
16666(Both) Add missing statics to button.c (Pavel Machek)
16667
16668Several changes have been made to the source code translation
16669utility that generates the Linux Code in order to make the code
16670more "Linux-like":
16671
16672All typedefs on structs and unions have been removed in keeping
16673with the Linux coding style.
16674
16675Removed the non-Linux SourceSafe module revision number from each
16676module header.
16677
16678Completed major overhaul of symbols to be lowercase for linux.
16679Doubled the number of symbols that are lowercase.
16680
16681Fixed a problem where identifiers within procedure headers and
16682within quotes were not fully lower cased (they were left with a
16683starting capital.)
16684
16685Some C macros whose only purpose is to allow the generation of 16-
16686bit code are now completely removed in the Linux code, increasing
16687readability and maintainability.
16688
16689----------------------------------------
16690
1669112 December 2002.  Summary of changes for version 20021212.
16692
16693
166941) ACPI CA Core Subsystem:
16695
16696Fixed a problem where the creation of a zero-length AML Buffer
16697would cause a fault.
16698
16699Fixed a problem where a Buffer object that pointed to a static AML
16700buffer (in an ACPI table) could inadvertently be deleted, causing
16701memory corruption.
16702
16703Fixed a problem where a user buffer (passed in to the external
16704ACPI CA interfaces) could be overwritten if the buffer was too
16705small to complete the operation, causing memory corruption.
16706
16707Fixed a problem in the Buffer-to-String conversion code where a
16708string of length one was always returned, regardless of the size
16709of the input Buffer object.
16710
16711Removed the NATIVE_CHAR data type across the entire source due to
16712lack of need and lack of consistent use.
16713
16714Code and Data Size: Current core subsystem library sizes are shown
16715below.  These are the code and data sizes for the acpica.lib
16716produced by the Microsoft Visual C++ 6.0 compiler, and these
16717values do not include any ACPI driver or OSPM code.  The debug
16718version of the code includes the debug output trace mechanism and
16719has a much larger code and data size.  Note that these values will
16720vary depending on the efficiency of the compiler and the compiler
16721options used during generation.
16722
16723  Previous Release
16724    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16725    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16726  Current Release:
16727    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16728    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16729
16730
16731----------------------------------------
1673205 December 2002.  Summary of changes for version 20021205.
16733
167341) ACPI CA Core Subsystem:
16735
16736Fixed a problem where a store to a String or Buffer object could
16737cause corruption of the DSDT if the object type being stored was
16738the same as the target object type and the length of the object
16739being stored was equal to or smaller than the original (existing)
16740target object.  This was seen to cause corruption of battery _BIF
16741buffers if the _BIF method modified the buffer on the fly.
16742
16743Fixed a problem where an internal error was generated if a control
16744method invocation was used in an OperationRegion, Buffer, or
16745Package declaration.  This was caused by the deferred parsing of
16746the control method and thus the deferred creation of the internal
16747method object.  The solution to this problem was to create the
16748internal method object at the moment the method is encountered in
16749the first pass - so that subsequent references to the method will
16750able to obtain the required parameter count and thus properly
16751parse the method invocation.  This problem presented itself as an
16752AE_AML_INTERNAL during the pass 1 parse phase during table load.
16753
16754Fixed a problem where the internal String object copy routine did
16755not always allocate sufficient memory for the target String object
16756and caused memory corruption.  This problem was seen to cause
16757"Allocation already present in list!" errors as memory allocation
16758became corrupted.
16759
16760Implemented a new function for the evaluation of namespace objects
16761that allows the specification of the allowable return object
16762types.  This simplifies a lot of code that checks for a return
16763object of one or more specific objects returned from the
16764evaluation (such as _STA, etc.)  This may become and external
16765function if it would be useful to ACPI-related drivers.
16766
16767Completed another round of prefixing #defines with "ACPI_" for
16768clarity.
16769
16770Completed additional code restructuring to allow more modular
16771linking for iASL compiler and AcpiExec.  Several files were split
16772creating new files.  New files:  nsparse.c dsinit.c evgpe.c
16773
16774Implemented an abort mechanism to terminate an executing control
16775method via the AML debugger.  This feature is useful for debugging
16776control methods that depend (wait) for specific hardware
16777responses.
16778
16779Code and Data Size: Current core subsystem library sizes are shown
16780below.  These are the code and data sizes for the acpica.lib
16781produced by the Microsoft Visual C++ 6.0 compiler, and these
16782values do not include any ACPI driver or OSPM code.  The debug
16783version of the code includes the debug output trace mechanism and
16784has a much larger code and data size.  Note that these values will
16785vary depending on the efficiency of the compiler and the compiler
16786options used during generation.
16787
16788  Previous Release
16789    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16790    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16791  Current Release:
16792    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16793    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16794
16795
167962) iASL Compiler/Disassembler
16797
16798Fixed a compiler code generation problem for "Interrupt" Resource
16799Descriptors.  If specified in the ASL, the optional "Resource
16800Source Index" and "Resource Source" fields were not inserted into
16801the correct location within the AML resource descriptor, creating
16802an invalid descriptor.
16803
16804Fixed a disassembler problem for "Interrupt" resource descriptors.
16805The optional "Resource Source Index" and "Resource Source" fields
16806were ignored.
16807
16808
16809----------------------------------------
1681022 November 2002.  Summary of changes for version 20021122.
16811
16812
168131) ACPI CA Core Subsystem:
16814
16815Fixed a reported problem where an object stored to a Method Local
16816or Arg was not copied to a new object during the store - the
16817object pointer was simply copied to the Local/Arg.  This caused
16818all subsequent operations on the Local/Arg to also affect the
16819original source of the store operation.
16820
16821Fixed a problem where a store operation to a Method Local or Arg
16822was not completed properly if the Local/Arg contained a reference
16823(from RefOf) to a named field.  The general-purpose store-to-
16824namespace-node code is now used so that this case is handled
16825automatically.
16826
16827Fixed a problem where the internal object copy routine would cause
16828a protection fault if the object being copied was a Package and
16829contained either 1) a NULL package element or 2) a nested sub-
16830package.
16831
16832Fixed a problem with the GPE initialization that resulted from an
16833ambiguity in the ACPI specification.  One section of the
16834specification states that both the address and length of the GPE
16835block must be zero if the block is not supported.  Another section
16836implies that only the address need be zero if the block is not
16837supported.  The code has been changed so that both the address and
16838the length must be non-zero to indicate a valid GPE block (i.e.,
16839if either the address or the length is zero, the GPE block is
16840invalid.)
16841
16842Code and Data Size: Current core subsystem library sizes are shown
16843below.  These are the code and data sizes for the acpica.lib
16844produced by the Microsoft Visual C++ 6.0 compiler, and these
16845values do not include any ACPI driver or OSPM code.  The debug
16846version of the code includes the debug output trace mechanism and
16847has a much larger code and data size.  Note that these values will
16848vary depending on the efficiency of the compiler and the compiler
16849options used during generation.
16850
16851  Previous Release
16852    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16853    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16854  Current Release:
16855    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16856    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16857
16858
168592) Linux
16860
16861Cleaned up EC driver. Exported an external EC read/write
16862interface. By going through this, other drivers (most notably
16863sonypi) will be able to serialize access to the EC.
16864
16865
168663) iASL Compiler/Disassembler
16867
16868Implemented support to optionally generate include files for both
16869ASM and C (the -i switch).  This simplifies BIOS development by
16870automatically creating include files that contain external
16871declarations for the symbols that are created within the
16872
16873(optionally generated) ASM and C AML source files.
16874
16875
16876----------------------------------------
1687715 November 2002.  Summary of changes for version 20021115.
16878
168791) ACPI CA Core Subsystem:
16880
16881Fixed a memory leak problem where an error during resolution of
16882
16883method arguments during a method invocation from another method
16884failed to cleanup properly by deleting all successfully resolved
16885argument objects.
16886
16887Fixed a problem where the target of the Index() operator was not
16888correctly constructed if the source object was a package.  This
16889problem has not been detected because the use of a target operand
16890with Index() is very rare.
16891
16892Fixed a problem with the Index() operator where an attempt was
16893made to delete the operand objects twice.
16894
16895Fixed a problem where an attempt was made to delete an operand
16896twice during execution of the CondRefOf() operator if the target
16897did not exist.
16898
16899Implemented the first of perhaps several internal create object
16900functions that create and initialize a specific object type.  This
16901consolidates duplicated code wherever the object is created, thus
16902shrinking the size of the subsystem.
16903
16904Implemented improved debug/error messages for errors that occur
16905during nested method invocations.  All executing method pathnames
16906are displayed (with the error) as the call stack is unwound - thus
16907simplifying debug.
16908
16909Fixed a problem introduced in the 10/02 release that caused
16910premature deletion of a buffer object if a buffer was used as an
16911ASL operand where an integer operand is required (Thus causing an
16912implicit object conversion from Buffer to Integer.)  The change in
16913the 10/02 release was attempting to fix a memory leak (albeit
16914incorrectly.)
16915
16916Code and Data Size: Current core subsystem library sizes are shown
16917below.  These are the code and data sizes for the acpica.lib
16918produced by the Microsoft Visual C++ 6.0 compiler, and these
16919values do not include any ACPI driver or OSPM code.  The debug
16920version of the code includes the debug output trace mechanism and
16921has a much larger code and data size.  Note that these values will
16922vary depending on the efficiency of the compiler and the compiler
16923options used during generation.
16924
16925  Previous Release
16926    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16927    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16928  Current Release:
16929    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16930    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16931
16932
169332) Linux
16934
16935Changed the implementation of the ACPI semaphores to use down()
16936instead of down_interruptable().  It is important that the
16937execution of ACPI control methods not be interrupted by signals.
16938Methods must run to completion, or the system may be left in an
16939unknown/unstable state.
16940
16941Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16942(Shawn Starr)
16943
16944
169453) iASL Compiler/Disassembler
16946
16947
16948Changed the default location of output files.  All output files
16949are now placed in the current directory by default instead of in
16950the directory of the source file.  This change may affect some
16951existing makefiles, but it brings the behavior of the compiler in
16952line with other similar tools.  The location of the output files
16953can be overridden with the -p command line switch.
16954
16955
16956----------------------------------------
1695711 November 2002.  Summary of changes for version 20021111.
16958
16959
169600) ACPI Specification 2.0B is released and is now available at:
16961http://www.acpi.info/index.html
16962
16963
169641) ACPI CA Core Subsystem:
16965
16966Implemented support for the ACPI 2.0 SMBus Operation Regions.
16967This includes the early detection and handoff of the request to
16968the SMBus region handler (avoiding all of the complex field
16969support code), and support for the bidirectional return packet
16970from an SMBus write operation.  This paves the way for the
16971development of SMBus drivers in each host operating system.
16972
16973Fixed a problem where the semaphore WAIT_FOREVER constant was
16974defined as 32 bits, but must be 16 bits according to the ACPI
16975specification.  This had the side effect of causing ASL
16976Mutex/Event timeouts even though the ASL code requested a wait
16977forever.  Changed all internal references to the ACPI timeout
16978parameter to 16 bits to prevent future problems.  Changed the name
16979of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16980
16981Code and Data Size: Current core subsystem library sizes are shown
16982below.  These are the code and data sizes for the acpica.lib
16983produced by the Microsoft Visual C++ 6.0 compiler, and these
16984values do not include any ACPI driver or OSPM code.  The debug
16985version of the code includes the debug output trace mechanism and
16986has a much larger code and data size.  Note that these values will
16987vary depending on the efficiency of the compiler and the compiler
16988options used during generation.
16989
16990  Previous Release
16991    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16992    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16993  Current Release:
16994    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16995    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16996
16997
169982) Linux
16999
17000Module loading/unloading fixes (John Cagle)
17001
17002
170033) iASL Compiler/Disassembler
17004
17005Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
17006
17007Implemented support for the disassembly of all SMBus protocol
17008keywords (SMBQuick, SMBWord, etc.)
17009
17010----------------------------------------
1701101 November 2002.  Summary of changes for version 20021101.
17012
17013
170141) ACPI CA Core Subsystem:
17015
17016Fixed a problem where platforms that have a GPE1 block but no GPE0
17017block were not handled correctly.  This resulted in a "GPE
17018overlap" error message.  GPE0 is no longer required.
17019
17020Removed code added in the previous release that inserted nodes
17021into the namespace in alphabetical order.  This caused some side-
17022effects on various machines.  The root cause of the problem is
17023still under investigation since in theory, the internal ordering
17024of the namespace nodes should not matter.
17025
17026
17027Enhanced error reporting for the case where a named object is not
17028found during control method execution.  The full ACPI namepath
17029(name reference) of the object that was not found is displayed in
17030this case.
17031
17032Note: as a result of the overhaul of the namespace object types in
17033the previous release, the namespace nodes for the predefined
17034scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
17035instead of ACPI_TYPE_ANY.  This simplifies the namespace
17036management code but may affect code that walks the namespace tree
17037looking for specific object types.
17038
17039Code and Data Size: Current core subsystem library sizes are shown
17040below.  These are the code and data sizes for the acpica.lib
17041produced by the Microsoft Visual C++ 6.0 compiler, and these
17042values do not include any ACPI driver or OSPM code.  The debug
17043version of the code includes the debug output trace mechanism and
17044has a much larger code and data size.  Note that these values will
17045vary depending on the efficiency of the compiler and the compiler
17046options used during generation.
17047
17048  Previous Release
17049    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
17050    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
17051  Current Release:
17052    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
17053    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
17054
17055
170562) Linux
17057
17058Fixed a problem introduced in the previous release where the
17059Processor and Thermal objects were not recognized and installed in
17060/proc.  This was related to the scope type change described above.
17061
17062
170633) iASL Compiler/Disassembler
17064
17065Implemented the -g option to get all of the required ACPI tables
17066from the registry and save them to files (Windows version of the
17067compiler only.)  The required tables are the FADT, FACS, and DSDT.
17068
17069Added ACPI table checksum validation during table disassembly in
17070order to catch corrupted tables.
17071
17072
17073----------------------------------------
1707422 October 2002.  Summary of changes for version 20021022.
17075
170761) ACPI CA Core Subsystem:
17077
17078Implemented a restriction on the Scope operator that the target
17079must already exist in the namespace at the time the operator is
17080encountered (during table load or method execution).  In other
17081words, forward references are not allowed and Scope() cannot
17082create a new object. This changes the previous behavior where the
17083interpreter would create the name if not found.  This new behavior
17084correctly enables the search-to-root algorithm during namespace
17085lookup of the target name.  Because of this upsearch, this fixes
17086the known Compaq _SB_.OKEC problem and makes both the AML
17087interpreter and iASL compiler compatible with other ACPI
17088implementations.
17089
17090Completed a major overhaul of the internal ACPI object types for
17091the ACPI Namespace and the associated operand objects.  Many of
17092these types had become obsolete with the introduction of the two-
17093pass namespace load.  This cleanup simplifies the code and makes
17094the entire namespace load mechanism much clearer and easier to
17095understand.
17096
17097Improved debug output for tracking scope opening/closing to help
17098diagnose scoping issues.  The old scope name as well as the new
17099scope name are displayed.  Also improved error messages for
17100problems with ASL Mutex objects and error messages for GPE
17101problems.
17102
17103Cleaned up the namespace dump code, removed obsolete code.
17104
17105All string output (for all namespace/object dumps) now uses the
17106common ACPI string output procedure which handles escapes properly
17107and does not emit non-printable characters.
17108
17109Fixed some issues with constants in the 64-bit version of the
17110local C library (utclib.c)
17111
17112
171132) Linux
17114
17115EC Driver:  No longer attempts to acquire the Global Lock at
17116interrupt level.
17117
17118
171193) iASL Compiler/Disassembler
17120
17121Implemented ACPI 2.0B grammar change that disallows all Type 1 and
171222 opcodes outside of a control method.  This means that the
17123"executable" operators (versus the "namespace" operators) cannot
17124be used at the table level; they can only be used within a control
17125method.
17126
17127Implemented the restriction on the Scope() operator where the
17128target must already exist in the namespace at the time the
17129operator is encountered (during ASL compilation). In other words,
17130forward references are not allowed and Scope() cannot create a new
17131object.  This makes the iASL compiler compatible with other ACPI
17132implementations and makes the Scope() implementation adhere to the
17133ACPI specification.
17134
17135Fixed a problem where namepath optimization for the Alias operator
17136was optimizing the wrong path (of the two namepaths.)  This caused
17137a "Missing alias link" error message.
17138
17139Fixed a problem where an "unknown reserved name" warning could be
17140incorrectly generated for names like "_SB" when the trailing
17141underscore is not used in the original ASL.
17142
17143Fixed a problem where the reserved name check did not handle
17144NamePaths with multiple NameSegs correctly.  The first nameseg of
17145the NamePath was examined instead of the last NameSeg.
17146
17147
17148----------------------------------------
17149
1715002 October 2002.  Summary of changes for this release.
17151
17152
171531) ACPI CA Core Subsystem version 20021002:
17154
17155Fixed a problem where a store/copy of a string to an existing
17156string did not always set the string length properly in the String
17157object.
17158
17159Fixed a reported problem with the ToString operator where the
17160behavior was identical to the ToHexString operator instead of just
17161simply converting a raw buffer to a string data type.
17162
17163Fixed a problem where CopyObject and the other "explicit"
17164conversion operators were not updating the internal namespace node
17165type as part of the store operation.
17166
17167Fixed a memory leak during implicit source operand conversion
17168where the original object was not deleted if it was converted to a
17169new object of a different type.
17170
17171Enhanced error messages for all problems associated with namespace
17172lookups.  Common procedure generates and prints the lookup name as
17173well as the formatted status.
17174
17175Completed implementation of a new design for the Alias support
17176within the namespace.  The existing design did not handle the case
17177where a new object was assigned to one of the two names due to the
17178use of an explicit conversion operator, resulting in the two names
17179pointing to two different objects.  The new design simply points
17180the Alias name to the original name node - not to the object.
17181This results in a level of indirection that must be handled in the
17182name resolution mechanism.
17183
17184Code and Data Size: Current core subsystem library sizes are shown
17185below.  These are the code and data sizes for the acpica.lib
17186produced by the Microsoft Visual C++ 6.0 compiler, and these
17187values do not include any ACPI driver or OSPM code.  The debug
17188version of the code includes the debug output trace mechanism and
17189has a larger code and data size.  Note that these values will vary
17190depending on the efficiency of the compiler and the compiler
17191options used during generation.
17192
17193  Previous Release
17194    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
17195    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
17196  Current Release:
17197    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
17198    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
17199
17200
172012) Linux
17202
17203Initialize thermal driver's timer before it is used. (Knut
17204Neumann)
17205
17206Allow handling negative celsius values. (Kochi Takayoshi)
17207
17208Fix thermal management and make trip points. R/W (Pavel Machek)
17209
17210Fix /proc/acpi/sleep. (P. Christeas)
17211
17212IA64 fixes. (David Mosberger)
17213
17214Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
17215
17216Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
17217Brodowski)
17218
17219
172203) iASL Compiler/Disassembler
17221
17222Clarified some warning/error messages.
17223
17224
17225----------------------------------------
1722618 September 2002.  Summary of changes for this release.
17227
17228
172291) ACPI CA Core Subsystem version 20020918:
17230
17231Fixed a reported problem with reference chaining (via the Index()
17232and RefOf() operators) in the ObjectType() and SizeOf() operators.
17233The definition of these operators includes the dereferencing of
17234all chained references to return information on the base object.
17235
17236Fixed a problem with stores to indexed package elements - the
17237existing code would not complete the store if an "implicit
17238conversion" was not performed.  In other words, if the existing
17239object (package element) was to be replaced completely, the code
17240didn't handle this case.
17241
17242Relaxed typechecking on the ASL "Scope" operator to allow the
17243target name to refer to an object of type Integer, String, or
17244Buffer, in addition to the scoping object types (Device,
17245predefined Scopes, Processor, PowerResource, and ThermalZone.)
17246This allows existing AML code that has workarounds for a bug in
17247Windows to function properly.  A warning is issued, however.  This
17248affects both the AML interpreter and the iASL compiler. Below is
17249an example of this type of ASL code:
17250
17251      Name(DEB,0x00)
17252      Scope(DEB)
17253      {
17254
17255Fixed some reported problems with 64-bit integer support in the
17256local implementation of C library functions (clib.c)
17257
17258
172592) Linux
17260
17261Use ACPI fix map region instead of IOAPIC region, since it is
17262undefined in non-SMP.
17263
17264Ensure that the SCI has the proper polarity and trigger, even on
17265systems that do not have an interrupt override entry in the MADT.
17266
172672.5 big driver reorganization (Pat Mochel)
17268
17269Use early table mapping code from acpitable.c (Andi Kleen)
17270
17271New blacklist entries (Andi Kleen)
17272
17273Blacklist improvements. Split blacklist code out into a separate
17274file. Move checking the blacklist to very early. Previously, we
17275would use ACPI tables, and then halfway through init, check the
17276blacklist -- too late. Now, it's early enough to completely fall-
17277back to non-ACPI.
17278
17279
172803) iASL Compiler/Disassembler version 20020918:
17281
17282Fixed a problem where the typechecking code didn't know that an
17283alias could point to a method.  In other words, aliases were not
17284being dereferenced during typechecking.
17285
17286
17287----------------------------------------
1728829 August 2002.  Summary of changes for this release.
17289
172901) ACPI CA Core Subsystem Version 20020829:
17291
17292If the target of a Scope() operator already exists, it must be an
17293object type that actually opens a scope -- such as a Device,
17294Method, Scope, etc.  This is a fatal runtime error.  Similar error
17295check has been added to the iASL compiler also.
17296
17297Tightened up the namespace load to disallow multiple names in the
17298same scope.  This previously was allowed if both objects were of
17299the same type.  (i.e., a lookup was the same as entering a new
17300name).
17301
17302
173032) Linux
17304
17305Ensure that the ACPI interrupt has the proper trigger and
17306polarity.
17307
17308local_irq_disable is extraneous. (Matthew Wilcox)
17309
17310Make "acpi=off" actually do what it says, and not use the ACPI
17311interpreter *or* the tables.
17312
17313Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
17314Takayoshi)
17315
17316
173173) iASL Compiler/Disassembler  Version 20020829:
17318
17319Implemented namepath optimization for name declarations.  For
17320example, a declaration like "Method (\_SB_.ABCD)" would get
17321optimized to "Method (ABCD)" if the declaration is within the
17322\_SB_ scope.  This optimization is in addition to the named
17323reference path optimization first released in the previous
17324version. This would seem to complete all possible optimizations
17325for namepaths within the ASL/AML.
17326
17327If the target of a Scope() operator already exists, it must be an
17328object type that actually opens a scope -- such as a Device,
17329Method, Scope, etc.
17330
17331Implemented a check and warning for unreachable code in the same
17332block below a Return() statement.
17333
17334Fixed a problem where the listing file was not generated if the
17335compiler aborted if the maximum error count was exceeded (200).
17336
17337Fixed a problem where the typechecking of method return values was
17338broken.  This includes the check for a return value when the
17339method is invoked as a TermArg (a return value is expected.)
17340
17341Fixed a reported problem where EOF conditions during a quoted
17342string or comment caused a fault.
17343
17344
17345----------------------------------------
1734615 August 2002.  Summary of changes for this release.
17347
173481) ACPI CA Core Subsystem Version 20020815:
17349
17350Fixed a reported problem where a Store to a method argument that
17351contains a reference did not perform the indirect store correctly.
17352This problem was created during the conversion to the new
17353reference object model - the indirect store to a method argument
17354code was not updated to reflect the new model.
17355
17356Reworked the ACPI mode change code to better conform to ACPI 2.0,
17357handle corner cases, and improve code legibility (Kochi Takayoshi)
17358
17359Fixed a problem with the pathname parsing for the carat (^)
17360prefix.  The heavy use of the carat operator by the new namepath
17361optimization in the iASL compiler uncovered a problem with the AML
17362interpreter handling of this prefix.  In the case where one or
17363more carats precede a single nameseg, the nameseg was treated as
17364standalone and the search rule (to root) was inadvertently
17365applied.  This could cause both the iASL compiler and the
17366interpreter to find the wrong object or to miss the error that
17367should occur if the object does not exist at that exact pathname.
17368
17369Found and fixed the problem where the HP Pavilion DSDT would not
17370load.  This was a relatively minor tweak to the table loading code
17371(a problem caused by the unexpected encounter with a method
17372invocation not within a control method), but it does not solve the
17373overall issue of the execution of AML code at the table level.
17374This investigation is still ongoing.
17375
17376Code and Data Size: Current core subsystem library sizes are shown
17377below.  These are the code and data sizes for the acpica.lib
17378produced by the Microsoft Visual C++ 6.0 compiler, and these
17379values do not include any ACPI driver or OSPM code.  The debug
17380version of the code includes the debug output trace mechanism and
17381has a larger code and data size.  Note that these values will vary
17382depending on the efficiency of the compiler and the compiler
17383options used during generation.
17384
17385  Previous Release
17386    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
17387    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
17388  Current Release:
17389    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
17390    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
17391
17392
173932) Linux
17394
17395Remove redundant slab.h include (Brad Hards)
17396
17397Fix several bugs in thermal.c (Herbert Nachtnebel)
17398
17399Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
17400
17401Change acpi_system_suspend to use updated irq functions (Pavel
17402Machek)
17403
17404Export acpi_get_firmware_table (Matthew Wilcox)
17405
17406Use proper root proc entry for ACPI (Kochi Takayoshi)
17407
17408Fix early-boot table parsing (Bjorn Helgaas)
17409
17410
174113) iASL Compiler/Disassembler
17412
17413Reworked the compiler options to make them more consistent and to
17414use two-letter options where appropriate.  We were running out of
17415sensible letters.   This may break some makefiles, so check the
17416current options list by invoking the compiler with no parameters.
17417
17418Completed the design and implementation of the ASL namepath
17419optimization option for the compiler.  This option optimizes all
17420references to named objects to the shortest possible path.  The
17421first attempt tries to utilize a single nameseg (4 characters) and
17422the "search-to-root" algorithm used by the interpreter.  If that
17423cannot be used (because either the name is not in the search path
17424or there is a conflict with another object with the same name),
17425the pathname is optimized using the carat prefix (usually a
17426shorter string than specifying the entire path from the root.)
17427
17428Implemented support to obtain the DSDT from the Windows registry
17429(when the disassembly option is specified with no input file).
17430Added this code as the implementation for AcpiOsTableOverride in
17431the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
17432utility) to scan memory for the DSDT to the AcpiOsTableOverride
17433function in the DOS OSL to make the disassembler truly OS
17434independent.
17435
17436Implemented a new option to disassemble and compile in one step.
17437When used without an input filename, this option will grab the
17438DSDT from the local machine, disassemble it, and compile it in one
17439step.
17440
17441Added a warning message for invalid escapes (a backslash followed
17442by any character other than the allowable escapes).  This catches
17443the quoted string error "\_SB_" (which should be "\\_SB_" ).
17444
17445Also, there are numerous instances in the ACPI specification where
17446this error occurs.
17447
17448Added a compiler option to disable all optimizations.  This is
17449basically the "compatibility mode" because by using this option,
17450the AML code will come out exactly the same as other ASL
17451compilers.
17452
17453Added error messages for incorrectly ordered dependent resource
17454functions.  This includes: missing EndDependentFn macro at end of
17455dependent resource list, nested dependent function macros (both
17456start and end), and missing StartDependentFn macro.  These are
17457common errors that should be caught at compile time.
17458
17459Implemented _OSI support for the disassembler and compiler.  _OSI
17460must be included in the namespace for proper disassembly (because
17461the disassembler must know the number of arguments.)
17462
17463Added an "optimization" message type that is optional (off by
17464default).  This message is used for all optimizations - including
17465constant folding, integer optimization, and namepath optimization.
17466
17467----------------------------------------
1746825 July 2002.  Summary of changes for this release.
17469
17470
174711) ACPI CA Core Subsystem Version 20020725:
17472
17473The AML Disassembler has been enhanced to produce compilable ASL
17474code and has been integrated into the iASL compiler (see below) as
17475well as the single-step disassembly for the AML debugger and the
17476disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
17477resource templates and macros are fully supported.  The
17478disassembler has been tested on over 30 different AML files,
17479producing identical AML when the resulting disassembled ASL file
17480is recompiled with the same ASL compiler.
17481
17482Modified the Resource Manager to allow zero interrupts and zero
17483dma channels during the GetCurrentResources call.  This was
17484causing problems on some platforms.
17485
17486Added the AcpiOsRedirectOutput interface to the OSL to simplify
17487output redirection for the AcpiOsPrintf and AcpiOsVprintf
17488interfaces.
17489
17490Code and Data Size: Current core subsystem library sizes are shown
17491below.  These are the code and data sizes for the acpica.lib
17492produced by the Microsoft Visual C++ 6.0 compiler, and these
17493values do not include any ACPI driver or OSPM code.  The debug
17494version of the code includes the debug output trace mechanism and
17495has a larger code and data size.  Note that these values will vary
17496depending on the efficiency of the compiler and the compiler
17497options used during generation.
17498
17499  Previous Release
17500    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17501    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17502  Current Release:
17503    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
17504    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
17505
17506
175072) Linux
17508
17509Fixed a panic in the EC driver (Dominik Brodowski)
17510
17511Implemented checksum of the R/XSDT itself during Linux table scan
17512(Richard Schaal)
17513
17514
175153) iASL compiler
17516
17517The AML disassembler is integrated into the compiler.  The "-d"
17518option invokes the disassembler  to completely disassemble an
17519input AML file, producing as output a text ASL file with the
17520extension ".dsl" (to avoid name collisions with existing .asl
17521source files.)  A future enhancement will allow the disassembler
17522to obtain the BIOS DSDT from the registry under Windows.
17523
17524Fixed a problem with the VendorShort and VendorLong resource
17525descriptors where an invalid AML sequence was created.
17526
17527Implemented a fix for BufferData term in the ASL parser.  It was
17528inadvertently defined twice, allowing invalid syntax to pass and
17529causing reduction conflicts.
17530
17531Fixed a problem where the Ones opcode could get converted to a
17532value of zero if "Ones" was used where a byte, word or dword value
17533was expected.  The 64-bit value is now truncated to the correct
17534size with the correct value.
17535
17536
17537
17538----------------------------------------
1753902 July 2002.  Summary of changes for this release.
17540
17541
175421) ACPI CA Core Subsystem Version 20020702:
17543
17544The Table Manager code has been restructured to add several new
17545features.  Tables that are not required by the core subsystem
17546(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
17547validated in any way and are returned from AcpiGetFirmwareTable if
17548requested.  The AcpiOsTableOverride interface is now called for
17549each table that is loaded by the subsystem in order to allow the
17550host to override any table it chooses.  Previously, only the DSDT
17551could be overridden.  Added one new files, tbrsdt.c and
17552tbgetall.c.
17553
17554Fixed a problem with the conversion of internal package objects to
17555external objects (when a package is returned from a control
17556method.)  The return buffer length was set to zero instead of the
17557proper length of the package object.
17558
17559Fixed a reported problem with the use of the RefOf and DeRefOf
17560operators when passing reference arguments to control methods.  A
17561new type of Reference object is used internally for references
17562produced by the RefOf operator.
17563
17564Added additional error messages in the Resource Manager to explain
17565AE_BAD_DATA errors when they occur during resource parsing.
17566
17567Split the AcpiEnableSubsystem into two primitives to enable a
17568finer granularity initialization sequence.  These two calls should
17569be called in this order: AcpiEnableSubsystem (flags),
17570AcpiInitializeObjects (flags).  The flags parameter remains the
17571same.
17572
17573
175742) Linux
17575
17576Updated the ACPI utilities module to understand the new style of
17577fully resolved package objects that are now returned from the core
17578subsystem.  This eliminates errors of the form:
17579
17580    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
17581    acpi_utils-0430 [145] acpi_evaluate_reference:
17582        Invalid element in package (not a device reference)
17583
17584The method evaluation utility uses the new buffer allocation
17585scheme instead of calling AcpiEvaluate Object twice.
17586
17587Added support for ECDT. This allows the use of the Embedded
17588
17589Controller before the namespace has been fully initialized, which
17590is necessary for ACPI 2.0 support, and for some laptops to
17591initialize properly. (Laptops using ECDT are still rare, so only
17592limited testing was performed of the added functionality.)
17593
17594Fixed memory leaks in the EC driver.
17595
17596Eliminated a brittle code structure in acpi_bus_init().
17597
17598Eliminated the acpi_evaluate() helper function in utils.c. It is
17599no longer needed since acpi_evaluate_object can optionally
17600allocate memory for the return object.
17601
17602Implemented fix for keyboard hang when getting battery readings on
17603some systems (Stephen White)
17604
17605PCI IRQ routing update (Dominik Brodowski)
17606
17607Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
17608support
17609
17610----------------------------------------
1761111 June 2002.  Summary of changes for this release.
17612
17613
176141) ACPI CA Core Subsystem Version 20020611:
17615
17616Fixed a reported problem where constants such as Zero and One
17617appearing within _PRT packages were not handled correctly within
17618the resource manager code.  Originally reported against the ASL
17619compiler because the code generator now optimizes integers to
17620their minimal AML representation (i.e. AML constants if possible.)
17621The _PRT code now handles all AML constant opcodes correctly
17622(Zero, One, Ones, Revision).
17623
17624Fixed a problem with the Concatenate operator in the AML
17625interpreter where a buffer result object was incorrectly marked as
17626not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
17627
17628All package sub-objects are now fully resolved before they are
17629returned from the external ACPI interfaces.  This means that name
17630strings are resolved to object handles, and constant operators
17631(Zero, One, Ones, Revision) are resolved to Integers.
17632
17633Implemented immediate resolution of the AML Constant opcodes
17634(Zero, One, Ones, Revision) to Integer objects upon detection
17635within the AML stream. This has simplified and reduced the
17636generated code size of the subsystem by eliminating about 10
17637switch statements for these constants (which previously were
17638contained in Reference objects.)  The complicating issues are that
17639the Zero opcode is used as a "placeholder" for unspecified
17640optional target operands and stores to constants are defined to be
17641no-ops.
17642
17643Code and Data Size: Current core subsystem library sizes are shown
17644below. These are the code and data sizes for the acpica.lib
17645produced by the Microsoft Visual C++ 6.0 compiler, and these
17646values do not include any ACPI driver or OSPM code.  The debug
17647version of the code includes the debug output trace mechanism and
17648has a larger code and data size.  Note that these values will vary
17649depending on the efficiency of the compiler and the compiler
17650options used during generation.
17651
17652  Previous Release
17653    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17654    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17655  Current Release:
17656    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17657    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17658
17659
176602) Linux
17661
17662
17663Added preliminary support for obtaining _TRA data for PCI root
17664bridges (Bjorn Helgaas).
17665
17666
176673) iASL Compiler Version X2046:
17668
17669Fixed a problem where the "_DDN" reserved name was defined to be a
17670control method with one argument.  There are no arguments, and
17671_DDN does not have to be a control method.
17672
17673Fixed a problem with the Linux version of the compiler where the
17674source lines printed with error messages were the wrong lines.
17675This turned out to be the "LF versus CR/LF" difference between
17676Windows and Unix.  This appears to be the longstanding issue
17677concerning listing output and error messages.
17678
17679Fixed a problem with the Linux version of compiler where opcode
17680names within error messages were wrong.  This was caused by a
17681slight difference in the output of the Flex tool on Linux versus
17682Windows.
17683
17684Fixed a problem with the Linux compiler where the hex output files
17685contained some garbage data caused by an internal buffer overrun.
17686
17687
17688----------------------------------------
1768917 May 2002.  Summary of changes for this release.
17690
17691
176921) ACPI CA Core Subsystem Version 20020517:
17693
17694Implemented a workaround to an BIOS bug discovered on the HP
17695OmniBook where the FADT revision number and the table size are
17696inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
17697behavior is to fallback to using only the ACPI 1.0 fields of the
17698FADT if the table is too small to be a ACPI 2.0 table as claimed
17699by the revision number.  Although this is a BIOS bug, this is a
17700case where the workaround is simple enough and with no side
17701effects, so it seemed prudent to add it.  A warning message is
17702issued, however.
17703
17704Implemented minimum size checks for the fixed-length ACPI tables -
17705- the FADT and FACS, as well as consistency checks between the
17706revision number and the table size.
17707
17708Fixed a reported problem in the table override support where the
17709new table pointer was incorrectly treated as a physical address
17710instead of a logical address.
17711
17712Eliminated the use of the AE_AML_ERROR exception and replaced it
17713with more descriptive codes.
17714
17715Fixed a problem where an exception would occur if an ASL Field was
17716defined with no named Field Units underneath it (used by some
17717index fields).
17718
17719Code and Data Size: Current core subsystem library sizes are shown
17720below.  These are the code and data sizes for the acpica.lib
17721produced by the Microsoft Visual C++ 6.0 compiler, and these
17722values do not include any ACPI driver or OSPM code.  The debug
17723version of the code includes the debug output trace mechanism and
17724has a larger code and data size.  Note that these values will vary
17725depending on the efficiency of the compiler and the compiler
17726options used during generation.
17727
17728  Previous Release
17729    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17730    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17731  Current Release:
17732    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17733    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17734
17735
17736
177372) Linux
17738
17739Much work done on ACPI init (MADT and PCI IRQ routing support).
17740(Paul D. and Dominik Brodowski)
17741
17742Fix PCI IRQ-related panic on boot (Sam Revitch)
17743
17744Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
17745
17746Fix "MHz" typo (Dominik Brodowski)
17747
17748Fix RTC year 2000 issue (Dominik Brodowski)
17749
17750Preclude multiple button proc entries (Eric Brunet)
17751
17752Moved arch-specific code out of include/platform/aclinux.h
17753
177543) iASL Compiler Version X2044:
17755
17756Implemented error checking for the string used in the EISAID macro
17757(Usually used in the definition of the _HID object.)  The code now
17758strictly enforces the PnP format - exactly 7 characters, 3
17759uppercase letters and 4 hex digits.
17760
17761If a raw string is used in the definition of the _HID object
17762(instead of the EISAID macro), the string must contain all
17763alphanumeric characters (e.g., "*PNP0011" is not allowed because
17764of the asterisk.)
17765
17766Implemented checking for invalid use of ACPI reserved names for
17767most of the name creation operators (Name, Device, Event, Mutex,
17768OperationRegion, PowerResource, Processor, and ThermalZone.)
17769Previously, this check was only performed for control methods.
17770
17771Implemented an additional check on the Name operator to emit an
17772error if a reserved name that must be implemented in ASL as a
17773control method is used.  We know that a reserved name must be a
17774method if it is defined with input arguments.
17775
17776The warning emitted when a namespace object reference is not found
17777during the cross reference phase has been changed into an error.
17778The "External" directive should be used for names defined in other
17779modules.
17780
17781
177824) Tools and Utilities
17783
17784The 16-bit tools (adump16 and aexec16) have been regenerated and
17785tested.
17786
17787Fixed a problem with the output of both acpidump and adump16 where
17788the indentation of closing parentheses and brackets was not
17789
17790aligned properly with the parent block.
17791
17792
17793----------------------------------------
1779403 May 2002.  Summary of changes for this release.
17795
17796
177971) ACPI CA Core Subsystem Version 20020503:
17798
17799Added support a new OSL interface that allows the host operating
17800
17801system software to override the DSDT found in the firmware -
17802AcpiOsTableOverride.  With this interface, the OSL can examine the
17803version of the firmware DSDT and replace it with a different one
17804if desired.
17805
17806Added new external interfaces for accessing ACPI registers from
17807device drivers and other system software - AcpiGetRegister and
17808AcpiSetRegister.  This was simply an externalization of the
17809existing AcpiHwBitRegister interfaces.
17810
17811Fixed a regression introduced in the previous build where the
17812ASL/AML CreateField operator always returned an error,
17813"destination must be a NS Node".
17814
17815Extended the maximum time (before failure) to successfully enable
17816ACPI mode to 3 seconds.
17817
17818Code and Data Size: Current core subsystem library sizes are shown
17819below.  These are the code and data sizes for the acpica.lib
17820produced by the Microsoft Visual C++ 6.0 compiler, and these
17821values do not include any ACPI driver or OSPM code.  The debug
17822version of the code includes the debug output trace mechanism and
17823has a larger code and data size.  Note that these values will vary
17824depending on the efficiency of the compiler and the compiler
17825options used during generation.
17826
17827  Previous Release
17828    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17829    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17830  Current Release:
17831    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17832    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17833
17834
178352) Linux
17836
17837Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17838free. While 3 out of 4 of our in-house systems work fine, the last
17839one still hangs when testing the LAPIC timer.
17840
17841Renamed many files in 2.5 kernel release to omit "acpi_" from the
17842name.
17843
17844Added warning on boot for Presario 711FR.
17845
17846Sleep improvements (Pavel Machek)
17847
17848ACPI can now be built without CONFIG_PCI enabled.
17849
17850IA64: Fixed memory map functions (JI Lee)
17851
17852
178533) iASL Compiler Version X2043:
17854
17855Added support to allow the compiler to be integrated into the MS
17856VC++ development environment for one-button compilation of single
17857files or entire projects -- with error-to-source-line mapping.
17858
17859Implemented support for compile-time constant folding for the
17860Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17861specification.  This allows the ASL writer to use expressions
17862instead of Integer/Buffer/String constants in terms that must
17863evaluate to constants at compile time and will also simplify the
17864emitted AML in any such sub-expressions that can be folded
17865(evaluated at compile-time.)  This increases the size of the
17866compiler significantly because a portion of the ACPI CA AML
17867interpreter is included within the compiler in order to pre-
17868evaluate constant expressions.
17869
17870
17871Fixed a problem with the "Unicode" ASL macro that caused the
17872compiler to fault.  (This macro is used in conjunction with the
17873_STR reserved name.)
17874
17875Implemented an AML opcode optimization to use the Zero, One, and
17876Ones opcodes where possible to further reduce the size of integer
17877constants and thus reduce the overall size of the generated AML
17878code.
17879
17880Implemented error checking for new reserved terms for ACPI version
178812.0A.
17882
17883Implemented the -qr option to display the current list of ACPI
17884reserved names known to the compiler.
17885
17886Implemented the -qc option to display the current list of ASL
17887operators that are allowed within constant expressions and can
17888therefore be folded at compile time if the operands are constants.
17889
17890
178914) Documentation
17892
17893Updated the Programmer's Reference for new interfaces, data types,
17894and memory allocation model options.
17895
17896Updated the iASL Compiler User Reference to apply new format and
17897add information about new features and options.
17898
17899----------------------------------------
1790019 April 2002.  Summary of changes for this release.
17901
179021) ACPI CA Core Subsystem Version 20020419:
17903
17904The source code base for the Core Subsystem has been completely
17905cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17906versions.  The Lint option files used are included in the
17907/acpi/generate/lint directory.
17908
17909Implemented enhanced status/error checking across the entire
17910Hardware manager subsystem.  Any hardware errors (reported from
17911the OSL) are now bubbled up and will abort a running control
17912method.
17913
17914
17915Fixed a problem where the per-ACPI-table integer width (32 or 64)
17916was stored only with control method nodes, causing a fault when
17917non-control method code was executed during table loading.  The
17918solution implemented uses a global variable to indicate table
17919width across the entire ACPI subsystem.  Therefore, ACPI CA does
17920not support mixed integer widths across different ACPI tables
17921(DSDT, SSDT).
17922
17923Fixed a problem where NULL extended fields (X fields) in an ACPI
179242.0 ACPI FADT caused the table load to fail.  Although the
17925existing ACPI specification is a bit fuzzy on this topic, the new
17926behavior is to fall back on a ACPI 1.0 field if the corresponding
17927ACPI 2.0 X field is zero (even though the table revision indicates
17928a full ACPI 2.0 table.)  The ACPI specification will be updated to
17929clarify this issue.
17930
17931Fixed a problem with the SystemMemory operation region handler
17932where memory was always accessed byte-wise even if the AML-
17933specified access width was larger than a byte.  This caused
17934problems on systems with memory-mapped I/O.  Memory is now
17935accessed with the width specified.  On systems that do not support
17936non-aligned transfers, a check is made to guarantee proper address
17937alignment before proceeding in order to avoid an AML-caused
17938alignment fault within the kernel.
17939
17940
17941Fixed a problem with the ExtendedIrq resource where only one byte
17942of the 4-byte Irq field was extracted.
17943
17944Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
17945function was out of date and required a rewrite.
17946
17947Code and Data Size: Current core subsystem library sizes are shown
17948below.  These are the code and data sizes for the acpica.lib
17949produced by the Microsoft Visual C++ 6.0 compiler, and these
17950values do not include any ACPI driver or OSPM code.  The debug
17951version of the code includes the debug output trace mechanism and
17952has a larger code and data size.  Note that these values will vary
17953depending on the efficiency of the compiler and the compiler
17954options used during generation.
17955
17956  Previous Release
17957    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17958    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17959  Current Release:
17960    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17961    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17962
17963
179642) Linux
17965
17966PCI IRQ routing fixes (Dominik Brodowski)
17967
17968
179693) iASL Compiler Version X2042:
17970
17971Implemented an additional compile-time error check for a field
17972unit whose size + minimum access width would cause a run-time
17973access beyond the end-of-region.  Previously, only the field size
17974itself was checked.
17975
17976The Core subsystem and iASL compiler now share a common parse
17977object in preparation for compile-time evaluation of the type
179783/4/5 ASL operators.
17979
17980
17981----------------------------------------
17982Summary of changes for this release: 03_29_02
17983
179841) ACPI CA Core Subsystem Version 20020329:
17985
17986Implemented support for late evaluation of TermArg operands to
17987Buffer and Package objects.  This allows complex expressions to be
17988used in the declarations of these object types.
17989
17990Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
179911.0, if the field was larger than 32 bits, it was returned as a
17992buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17993the field is returned as a buffer only if the field is larger than
1799464 bits.  The TableRevision is now considered when making this
17995conversion to avoid incompatibility with existing ASL code.
17996
17997Implemented logical addressing for AcpiOsGetRootPointer.  This
17998allows an RSDP with either a logical or physical address.  With
17999this support, the host OS can now override all ACPI tables with
18000one logical RSDP.  Includes implementation of  "typed" pointer
18001support to allow a common data type for both physical and logical
18002pointers internally.  This required a change to the
18003AcpiOsGetRootPointer interface.
18004
18005Implemented the use of ACPI 2.0 Generic Address Structures for all
18006GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
18007mapped I/O for these ACPI features.
18008
18009Initialization now ignores not only non-required tables (All
18010tables other than the FADT, FACS, DSDT, and SSDTs), but also does
18011not validate the table headers of unrecognized tables.
18012
18013Fixed a problem where a notify handler could only be
18014installed/removed on an object of type Device.  All "notify"
18015
18016objects are now supported -- Devices, Processor, Power, and
18017Thermal.
18018
18019Removed most verbosity from the ACPI_DB_INFO debug level.  Only
18020critical information is returned when this debug level is enabled.
18021
18022Code and Data Size: Current core subsystem library sizes are shown
18023below.  These are the code and data sizes for the acpica.lib
18024produced by the Microsoft Visual C++ 6.0 compiler, and these
18025values do not include any ACPI driver or OSPM code.  The debug
18026version of the code includes the debug output trace mechanism and
18027has a larger code and data size.  Note that these values will vary
18028depending on the efficiency of the compiler and the compiler
18029options used during generation.
18030
18031  Previous Release
18032    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
18033    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
18034  Current Release:
18035    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
18036    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
18037
18038
180392) Linux:
18040
18041The processor driver (acpi_processor.c) now fully supports ACPI
180422.0-based processor performance control (e.g. Intel(R)
18043SpeedStep(TM) technology) Note that older laptops that only have
18044the Intel "applet" interface are not supported through this.  The
18045'limit' and 'performance' interface (/proc) are fully functional.
18046[Note that basic policy for controlling performance state
18047transitions will be included in the next version of ospmd.]  The
18048idle handler was modified to more aggressively use C2, and PIIX4
18049errata handling underwent a complete overhaul (big thanks to
18050Dominik Brodowski).
18051
18052Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
18053based devices in the ACPI namespace are now dynamically bound
18054(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
18055This allows, among other things, ACPI to resolve bus numbers for
18056subordinate PCI bridges.
18057
18058Enhanced PCI IRQ routing to get the proper bus number for _PRT
18059entries defined underneath PCI bridges.
18060
18061Added IBM 600E to bad bios list due to invalid _ADR value for
18062PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
18063
18064In the process of adding full MADT support (e.g. IOAPIC) for IA32
18065(acpi.c, mpparse.c) -- stay tuned.
18066
18067Added back visual differentiation between fixed-feature and
18068control-method buttons in dmesg.  Buttons are also subtyped (e.g.
18069button/power/PWRF) to simplify button identification.
18070
18071We no longer use -Wno-unused when compiling debug. Please ignore
18072any "_THIS_MODULE defined but not used" messages.
18073
18074Can now shut down the system using "magic sysrq" key.
18075
18076
180773) iASL Compiler version 2041:
18078
18079Fixed a problem where conversion errors for hex/octal/decimal
18080constants were not reported.
18081
18082Implemented a fix for the General Register template Address field.
18083This field was 8 bits when it should be 64.
18084
18085Fixed a problem where errors/warnings were no longer being emitted
18086within the listing output file.
18087
18088Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
18089exactly 4 characters, alphanumeric only.
18090
18091
18092
18093
18094----------------------------------------
18095Summary of changes for this release: 03_08_02
18096
18097
180981) ACPI CA Core Subsystem Version 20020308:
18099
18100Fixed a problem with AML Fields where the use of the "AccessAny"
18101keyword could cause an interpreter error due to attempting to read
18102or write beyond the end of the parent Operation Region.
18103
18104Fixed a problem in the SystemMemory Operation Region handler where
18105an attempt was made to map memory beyond the end of the region.
18106This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
18107errors on some Linux systems.
18108
18109Fixed a problem where the interpreter/namespace "search to root"
18110algorithm was not functioning for some object types.  Relaxed the
18111internal restriction on the search to allow upsearches for all
18112external object types as well as most internal types.
18113
18114
181152) Linux:
18116
18117We now use safe_halt() macro versus individual calls to sti | hlt.
18118
18119Writing to the processor limit interface should now work. "echo 1"
18120will increase the limit, 2 will decrease, and 0 will reset to the
18121
18122default.
18123
18124
181253) ASL compiler:
18126
18127Fixed segfault on Linux version.
18128
18129
18130----------------------------------------
18131Summary of changes for this release: 02_25_02
18132
181331) ACPI CA Core Subsystem:
18134
18135
18136Fixed a problem where the GPE bit masks were not initialized
18137properly, causing erratic GPE behavior.
18138
18139Implemented limited support for multiple calling conventions.  The
18140code can be generated with either the VPL (variable parameter
18141list, or "C") convention, or the FPL (fixed parameter list, or
18142"Pascal") convention.  The core subsystem is about 3.4% smaller
18143when generated with FPL.
18144
18145
181462) Linux
18147
18148Re-add some /proc/acpi/event functionality that was lost during
18149the rewrite
18150
18151Resolved issue with /proc events for fixed-feature buttons showing
18152up as the system device.
18153
18154Fixed checks on C2/C3 latencies to be inclusive of maximum values.
18155
18156Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
18157
18158Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
18159
18160Fixed limit interface & usage to fix bugs with passive cooling
18161hysterisis.
18162
18163Restructured PRT support.
18164
18165
18166----------------------------------------
18167Summary of changes for this label: 02_14_02
18168
18169
181701) ACPI CA Core Subsystem:
18171
18172Implemented support in AcpiLoadTable to allow loading of FACS and
18173FADT tables.
18174
18175Support for the now-obsolete interim 0.71 64-bit ACPI tables has
18176been removed.  All 64-bit platforms should be migrated to the ACPI
181772.0 tables.  The actbl71.h header has been removed from the source
18178tree.
18179
18180All C macros defined within the subsystem have been prefixed with
18181"ACPI_" to avoid collision with other system include files.
18182
18183Removed the return value for the two AcpiOsPrint interfaces, since
18184it is never used and causes lint warnings for ignoring the return
18185value.
18186
18187Added error checking to all internal mutex acquire and release
18188calls.  Although a failure from one of these interfaces is
18189probably a fatal system error, these checks will cause the
18190immediate abort of the currently executing method or interface.
18191
18192Fixed a problem where the AcpiSetCurrentResources interface could
18193fault.  This was a side effect of the deployment of the new memory
18194allocation model.
18195
18196Fixed a couple of problems with the Global Lock support introduced
18197in the last major build.  The "common" (1.0/2.0) internal FACS was
18198being overwritten with the FACS signature and clobbering the
18199Global Lock pointer.  Also, the actual firmware FACS was being
18200unmapped after construction of the "common" FACS, preventing
18201access to the actual Global Lock field within it.  The "common"
18202internal FACS is no longer installed as an actual ACPI table; it
18203is used simply as a global.
18204
18205Code and Data Size: Current core subsystem library sizes are shown
18206below.  These are the code and data sizes for the acpica.lib
18207produced by the Microsoft Visual C++ 6.0 compiler, and these
18208values do not include any ACPI driver or OSPM code.  The debug
18209version of the code includes the debug output trace mechanism and
18210has a larger code and data size.  Note that these values will vary
18211depending on the efficiency of the compiler and the compiler
18212options used during generation.
18213
18214  Previous Release (02_07_01)
18215    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
18216    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
18217  Current Release:
18218    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
18219    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
18220
18221
182222) Linux
18223
18224Updated Linux-specific code for core macro and OSL interface
18225changes described above.
18226
18227Improved /proc/acpi/event. It now can be opened only once and has
18228proper poll functionality.
18229
18230Fixed and restructured power management (acpi_bus).
18231
18232Only create /proc "view by type" when devices of that class exist.
18233
18234Fixed "charging/discharging" bug (and others) in acpi_battery.
18235
18236Improved thermal zone code.
18237
18238
182393) ASL Compiler, version X2039:
18240
18241
18242Implemented the new compiler restriction on ASL String hex/octal
18243escapes to non-null, ASCII values.  An error results if an invalid
18244value is used.  (This will require an ACPI 2.0 specification
18245change.)
18246
18247AML object labels that are output to the optional C and ASM source
18248are now prefixed with both the ACPI table signature and table ID
18249to help guarantee uniqueness within a large BIOS project.
18250
18251
18252----------------------------------------
18253Summary of changes for this label: 02_01_02
18254
182551) ACPI CA Core Subsystem:
18256
18257ACPI 2.0 support is complete in the entire Core Subsystem and the
18258ASL compiler. All new ACPI 2.0 operators are implemented and all
18259other changes for ACPI 2.0 support are complete.  With
18260simultaneous code and data optimizations throughout the subsystem,
18261ACPI 2.0 support has been implemented with almost no additional
18262cost in terms of code and data size.
18263
18264Implemented a new mechanism for allocation of return buffers.  If
18265the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
18266be allocated on behalf of the caller.  Consolidated all return
18267buffer validation and allocation to a common procedure.  Return
18268buffers will be allocated via the primary OSL allocation interface
18269since it appears that a separate pool is not needed by most users.
18270If a separate pool is required for these buffers, the caller can
18271still use the original mechanism and pre-allocate the buffer(s).
18272
18273Implemented support for string operands within the DerefOf
18274operator.
18275
18276Restructured the Hardware and Event managers to be table driven,
18277simplifying the source code and reducing the amount of generated
18278code.
18279
18280Split the common read/write low-level ACPI register bitfield
18281procedure into a separate read and write, simplifying the code
18282considerably.
18283
18284Obsoleted the AcpiOsCallocate OSL interface.  This interface was
18285used only a handful of times and didn't have enough critical mass
18286for a separate interface.  Replaced with a common calloc procedure
18287in the core.
18288
18289Fixed a reported problem with the GPE number mapping mechanism
18290that allows GPE1 numbers to be non-contiguous with GPE0.
18291Reorganized the GPE information and shrunk a large array that was
18292originally large enough to hold info for all possible GPEs (256)
18293to simply large enough to hold all GPEs up to the largest GPE
18294number on the machine.
18295
18296Fixed a reported problem with resource structure alignment on 64-
18297bit platforms.
18298
18299Changed the AcpiEnableEvent and AcpiDisableEvent external
18300interfaces to not require any flags for the common case of
18301enabling/disabling a GPE.
18302
18303Implemented support to allow a "Notify" on a Processor object.
18304
18305Most TBDs in comments within the source code have been resolved
18306and eliminated.
18307
18308
18309Fixed a problem in the interpreter where a standalone parent
18310prefix (^) was not handled correctly in the interpreter and
18311debugger.
18312
18313Removed obsolete and unnecessary GPE save/restore code.
18314
18315Implemented Field support in the ASL Load operator.  This allows a
18316table to be loaded from a named field, in addition to loading a
18317table directly from an Operation Region.
18318
18319Implemented timeout and handle support in the external Global Lock
18320interfaces.
18321
18322Fixed a problem in the AcpiDump utility where pathnames were no
18323longer being generated correctly during the dump of named objects.
18324
18325Modified the AML debugger to give a full display of if/while
18326predicates instead of just one AML opcode at a time.  (The
18327predicate can have several nested ASL statements.)  The old method
18328was confusing during single stepping.
18329
18330Code and Data Size: Current core subsystem library sizes are shown
18331below. These are the code and data sizes for the acpica.lib
18332produced by the Microsoft Visual C++ 6.0 compiler, and these
18333values do not include any ACPI driver or OSPM code.  The debug
18334version of the code includes the debug output trace mechanism and
18335has a larger code and data size.  Note that these values will vary
18336depending on the efficiency of the compiler and the compiler
18337options used during generation.
18338
18339  Previous Release (12_18_01)
18340     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
18341     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
18342   Current Release:
18343     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
18344     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
18345
183462) Linux
18347
18348 Implemented fix for PIIX reverse throttling errata (Processor
18349driver)
18350
18351Added new Limit interface (Processor and Thermal drivers)
18352
18353New thermal policy (Thermal driver)
18354
18355Many updates to /proc
18356
18357Battery "low" event support (Battery driver)
18358
18359Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
18360
18361IA32 - IA64 initialization unification, no longer experimental
18362
18363Menuconfig options redesigned
18364
183653) ASL Compiler, version X2037:
18366
18367Implemented several new output features to simplify integration of
18368AML code into  firmware: 1) Output the AML in C source code with
18369labels for each named ASL object.  The    original ASL source code
18370is interleaved as C comments. 2) Output the AML in ASM source code
18371with labels and interleaved ASL    source. 3) Output the AML in
18372raw hex table form, in either C or ASM.
18373
18374Implemented support for optional string parameters to the
18375LoadTable operator.
18376
18377Completed support for embedded escape sequences within string
18378literals.  The compiler now supports all single character escapes
18379as well as the Octal and Hex escapes.  Note: the insertion of a
18380null byte into a string literal (via the hex/octal escape) causes
18381the string to be immediately terminated.  A warning is issued.
18382
18383Fixed a problem where incorrect AML was generated for the case
18384where an ASL namepath consists of a single parent prefix (
18385
18386) with no trailing name segments.
18387
18388The compiler has been successfully generated with a 64-bit C
18389compiler.
18390
18391
18392
18393
18394----------------------------------------
18395Summary of changes for this label: 12_18_01
18396
183971) Linux
18398
18399Enhanced blacklist with reason and severity fields. Any table's
18400signature may now be used to identify a blacklisted system.
18401
18402Call _PIC control method to inform the firmware which interrupt
18403model the OS is using. Turn on any disabled link devices.
18404
18405Cleaned up busmgr /proc error handling (Andreas Dilger)
18406
18407 2) ACPI CA Core Subsystem:
18408
18409Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
18410while loop)
18411
18412Completed implementation of the ACPI 2.0 "Continue",
18413"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
18414operators.  All new ACPI 2.0 operators are now implemented in both
18415the ASL compiler and the AML interpreter.  The only remaining ACPI
184162.0 task is support for the String data type in the DerefOf
18417operator.  Fixed a problem with AcquireMutex where the status code
18418was lost if the caller had to actually wait for the mutex.
18419
18420Increased the maximum ASL Field size from 64K bits to 4G bits.
18421
18422Completed implementation of the external Global Lock interfaces --
18423AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
18424Handler parameters were added.
18425
18426Completed another pass at removing warnings and issues when
18427compiling with 64-bit compilers.  The code now compiles cleanly
18428with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
18429add and subtract (diff) macros have changed considerably.
18430
18431
18432Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1843364-bit platforms, 32-bits on all others.  This type is used
18434wherever memory allocation and/or the C sizeof() operator is used,
18435and affects the OSL memory allocation interfaces AcpiOsAllocate
18436and AcpiOsCallocate.
18437
18438Implemented sticky user breakpoints in the AML debugger.
18439
18440Code and Data Size: Current core subsystem library sizes are shown
18441below. These are the code and data sizes for the acpica.lib
18442produced by the Microsoft Visual C++ 6.0 compiler, and these
18443values do not include any ACPI driver or OSPM code.  The debug
18444version of the code includes the debug output trace mechanism and
18445has a larger code and data size. Note that these values will vary
18446depending on the efficiency of the compiler and the compiler
18447options used during generation.
18448
18449  Previous Release (12_05_01)
18450     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
18451     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
18452   Current Release:
18453     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
18454     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
18455
18456 3) ASL Compiler, version X2034:
18457
18458Now checks for (and generates an error if detected) the use of a
18459Break or Continue statement without an enclosing While statement.
18460
18461
18462Successfully generated the compiler with the Intel 64-bit C
18463compiler.
18464
18465 ----------------------------------------
18466Summary of changes for this label: 12_05_01
18467
18468 1) ACPI CA Core Subsystem:
18469
18470The ACPI 2.0 CopyObject operator is fully implemented.  This
18471operator creates a new copy of an object (and is also used to
18472bypass the "implicit conversion" mechanism of the Store operator.)
18473
18474The ACPI 2.0 semantics for the SizeOf operator are fully
18475implemented.  The change is that performing a SizeOf on a
18476reference object causes an automatic dereference of the object to
18477the actual value before the size is evaluated. This behavior was
18478undefined in ACPI 1.0.
18479
18480The ACPI 2.0 semantics for the Extended IRQ resource descriptor
18481have been implemented.  The interrupt polarity and mode are now
18482independently set.
18483
18484Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
18485appearing in Package objects were not properly converted to
18486integers when the internal Package was converted to an external
18487object (via the AcpiEvaluateObject interface.)
18488
18489Fixed a problem with the namespace object deletion mechanism for
18490objects created by control methods.  There were two parts to this
18491problem: 1) Objects created during the initialization phase method
18492parse were not being deleted, and 2) The object owner ID mechanism
18493to track objects was broken.
18494
18495Fixed a problem where the use of the ASL Scope operator within a
18496control method would result in an invalid opcode exception.
18497
18498Fixed a problem introduced in the previous label where the buffer
18499length required for the _PRT structure was not being returned
18500correctly.
18501
18502Code and Data Size: Current core subsystem library sizes are shown
18503below. These are the code and data sizes for the acpica.lib
18504produced by the Microsoft Visual C++ 6.0 compiler, and these
18505values do not include any ACPI driver or OSPM code.  The debug
18506version of the code includes the debug output trace mechanism and
18507has a larger code and data size.  Note that these values will vary
18508depending on the efficiency of the compiler and the compiler
18509options used during generation.
18510
18511  Previous Release (11_20_01)
18512     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
18513     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
18514
18515  Current Release:
18516     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
18517     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
18518
18519 2) Linux:
18520
18521Updated all files to apply cleanly against 2.4.16.
18522
18523Added basic PCI Interrupt Routing Table (PRT) support for IA32
18524(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
18525version supports both static and dynamic PRT entries, but dynamic
18526entries are treated as if they were static (not yet
18527reconfigurable).  Architecture- specific code to use this data is
18528absent on IA32 but should be available shortly.
18529
18530Changed the initialization sequence to start the ACPI interpreter
18531(acpi_init) prior to initialization of the PCI driver (pci_init)
18532in init/main.c.  This ordering is required to support PRT and
18533facilitate other (future) enhancement.  A side effect is that the
18534ACPI bus driver and certain device drivers can no longer be loaded
18535as modules.
18536
18537Modified the 'make menuconfig' options to allow PCI Interrupt
18538Routing support to be included without the ACPI Bus and other
18539device drivers.
18540
18541 3) ASL Compiler, version X2033:
18542
18543Fixed some issues with the use of the new CopyObject and
18544DataTableRegion operators.  Both are fully functional.
18545
18546 ----------------------------------------
18547Summary of changes for this label: 11_20_01
18548
18549 20 November 2001.  Summary of changes for this release.
18550
18551 1) ACPI CA Core Subsystem:
18552
18553Updated Index support to match ACPI 2.0 semantics.  Storing a
18554Integer, String, or Buffer to an Index of a Buffer will store only
18555the least-significant byte of the source to the Indexed buffer
18556byte.  Multiple writes are not performed.
18557
18558Fixed a problem where the access type used in an AccessAs ASL
18559operator was not recorded correctly into the field object.
18560
18561Fixed a problem where ASL Event objects were created in a
18562signalled state. Events are now created in an unsignalled state.
18563
18564The internal object cache is now purged after table loading and
18565initialization to reduce the use of dynamic kernel memory -- on
18566the assumption that object use is greatest during the parse phase
18567of the entire table (versus the run-time use of individual control
18568methods.)
18569
18570ACPI 2.0 variable-length packages are now fully operational.
18571
18572Code and Data Size: Code and Data optimizations have permitted new
18573feature development with an actual reduction in the library size.
18574Current core subsystem library sizes are shown below.  These are
18575the code and data sizes for the acpica.lib produced by the
18576Microsoft Visual C++ 6.0 compiler, and these values do not include
18577any ACPI driver or OSPM code.  The debug version of the code
18578includes the debug output trace mechanism and has a larger code
18579and data size.  Note that these values will vary depending on the
18580efficiency of the compiler and the compiler options used during
18581generation.
18582
18583  Previous Release (11_09_01):
18584     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18585     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18586
18587  Current Release:
18588     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
18589     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
18590
18591 2) Linux:
18592
18593Enhanced the ACPI boot-time initialization code to allow the use
18594of Local APIC tables for processor enumeration on IA-32, and to
18595pave the way for a fully MPS-free boot (on SMP systems) in the
18596near future.  This functionality replaces
18597arch/i386/kernel/acpitables.c, which was introduced in an earlier
185982.4.15-preX release.  To enable this feature you must add
18599"acpi_boot=on" to the kernel command line -- see the help entry
18600for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
18601the works...
18602
18603Restructured the configuration options to allow boot-time table
18604parsing support without inclusion of the ACPI Interpreter (and
18605other) code.
18606
18607NOTE: This release does not include fixes for the reported events,
18608power-down, and thermal passive cooling issues (coming soon).
18609
18610 3) ASL Compiler:
18611
18612Added additional typechecking for Fields within restricted access
18613Operation Regions.  All fields within EC and CMOS regions must be
18614declared with ByteAcc. All fields within SMBus regions must be
18615declared with the BufferAcc access type.
18616
18617Fixed a problem where the listing file output of control methods
18618no longer interleaved the actual AML code with the ASL source
18619code.
18620
18621
18622
18623
18624----------------------------------------
18625Summary of changes for this label: 11_09_01
18626
186271) ACPI CA Core Subsystem:
18628
18629Implemented ACPI 2.0-defined support for writes to fields with a
18630Buffer, String, or Integer source operand that is smaller than the
18631target field. In these cases, the source operand is zero-extended
18632to fill the target field.
18633
18634Fixed a problem where a Field starting bit offset (within the
18635parent operation region) was calculated incorrectly if the
18636
18637alignment of the field differed from the access width.  This
18638affected CreateWordField, CreateDwordField, CreateQwordField, and
18639possibly other fields that use the "AccessAny" keyword.
18640
18641Fixed a problem introduced in the 11_02_01 release where indirect
18642stores through method arguments did not operate correctly.
18643
186442) Linux:
18645
18646Implemented boot-time ACPI table parsing support
18647(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
18648facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
18649legacy BIOS interfaces (e.g. MPS) for the configuration of system
18650processors, memory, and interrupts during setup_arch().  Note that
18651this patch does not include the required architecture-specific
18652changes required to apply this information -- subsequent patches
18653will be posted for both IA32 and IA64 to achieve this.
18654
18655Added low-level sleep support for IA32 platforms, courtesy of Pat
18656Mochel. This allows IA32 systems to transition to/from various
18657sleeping states (e.g. S1, S3), although the lack of a centralized
18658driver model and power-manageable drivers will prevent its
18659(successful) use on most systems.
18660
18661Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
18662submenu, unified IA32 and IA64 options, added new "Boot using ACPI
18663tables" option, etc.
18664
18665Increased the default timeout for the EC driver from 1ms to 10ms
18666(1000 cycles of 10us) to try to address AE_TIME errors during EC
18667transactions.
18668
18669 ----------------------------------------
18670Summary of changes for this label: 11_02_01
18671
186721) ACPI CA Core Subsystem:
18673
18674ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
18675(QWordAcc keyword). All ACPI 2.0 64-bit support is now
18676implemented.
18677
18678OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
18679changes to support ACPI 2.0 Qword field access.  Read/Write
18680PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
18681accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
18682the value parameter for the address space handler interface is now
18683an ACPI_INTEGER.  OSL implementations of these interfaces must now
18684handle the case where the Width parameter is 64.
18685
18686Index Fields: Fixed a problem where unaligned bit assembly and
18687disassembly for IndexFields was not supported correctly.
18688
18689Index and Bank Fields:  Nested Index and Bank Fields are now
18690supported. During field access, a check is performed to ensure
18691that the value written to an Index or Bank register is not out of
18692the range of the register.  The Index (or Bank) register is
18693written before each access to the field data. Future support will
18694include allowing individual IndexFields to be wider than the
18695DataRegister width.
18696
18697Fields: Fixed a problem where the AML interpreter was incorrectly
18698attempting to write beyond the end of a Field/OpRegion.  This was
18699a boundary case that occurred when a DWORD field was written to a
18700BYTE access OpRegion, forcing multiple writes and causing the
18701interpreter to write one datum too many.
18702
18703Fields: Fixed a problem with Field/OpRegion access where the
18704starting bit address of a field was incorrectly calculated if the
18705current access type was wider than a byte (WordAcc, DwordAcc, or
18706QwordAcc).
18707
18708Fields: Fixed a problem where forward references to individual
18709FieldUnits (individual Field names within a Field definition) were
18710not resolved during the AML table load.
18711
18712Fields: Fixed a problem where forward references from a Field
18713definition to the parent Operation Region definition were not
18714resolved during the AML table load.
18715
18716Fields: Duplicate FieldUnit names within a scope are now detected
18717during AML table load.
18718
18719Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
18720returned an incorrect name for the root node.
18721
18722Code and Data Size: Code and Data optimizations have permitted new
18723feature development with an actual reduction in the library size.
18724Current core subsystem library sizes are shown below.  These are
18725the code and data sizes for the acpica.lib produced by the
18726Microsoft Visual C++ 6.0 compiler, and these values do not include
18727any ACPI driver or OSPM code.  The debug version of the code
18728includes the debug output trace mechanism and has a larger code
18729and data size.  Note that these values will vary depending on the
18730efficiency of the compiler and the compiler options used during
18731generation.
18732
18733  Previous Release (10_18_01):
18734     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18735     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18736
18737  Current Release:
18738     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18739     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18740
18741 2) Linux:
18742
18743Improved /proc processor output (Pavel Machek) Re-added
18744MODULE_LICENSE("GPL") to all modules.
18745
18746 3) ASL Compiler version X2030:
18747
18748Duplicate FieldUnit names within a scope are now detected and
18749flagged as errors.
18750
18751 4) Documentation:
18752
18753Programmer Reference updated to reflect OSL and address space
18754handler interface changes described above.
18755
18756----------------------------------------
18757Summary of changes for this label: 10_18_01
18758
18759ACPI CA Core Subsystem:
18760
18761Fixed a problem with the internal object reference count mechanism
18762that occasionally caused premature object deletion. This resolves
18763all of the outstanding problem reports where an object is deleted
18764in the middle of an interpreter evaluation.  Although this problem
18765only showed up in rather obscure cases, the solution to the
18766problem involved an adjustment of all reference counts involving
18767objects attached to namespace nodes.
18768
18769Fixed a problem with Field support in the interpreter where
18770writing to an aligned field whose length is an exact multiple (2
18771or greater) of the field access granularity would cause an attempt
18772to write beyond the end of the field.
18773
18774The top level AML opcode execution functions within the
18775interpreter have been renamed with a more meaningful and
18776consistent naming convention.  The modules exmonad.c and
18777exdyadic.c were eliminated.  New modules are exoparg1.c,
18778exoparg2.c, exoparg3.c, and exoparg6.c.
18779
18780Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
18781
18782Fixed a problem where the AML debugger was causing some internal
18783objects to not be deleted during subsystem termination.
18784
18785Fixed a problem with the external AcpiEvaluateObject interface
18786where the subsystem would fault if the named object to be
18787evaluated referred to a constant such as Zero, Ones, etc.
18788
18789Fixed a problem with IndexFields and BankFields where the
18790subsystem would fault if the index, data, or bank registers were
18791not defined in the same scope as the field itself.
18792
18793Added printf format string checking for compilers that support
18794this feature.  Corrected more than 50 instances of issues with
18795format specifiers within invocations of ACPI_DEBUG_PRINT
18796throughout the core subsystem code.
18797
18798The ASL "Revision" operator now returns the ACPI support level
18799implemented in the core - the value "2" since the ACPI 2.0 support
18800is more than 50% implemented.
18801
18802Enhanced the output of the AML debugger "dump namespace" command
18803to output in a more human-readable form.
18804
18805Current core subsystem library code sizes are shown below.  These
18806
18807are the code and data sizes for the acpica.lib produced by the
18808Microsoft Visual C++ 6.0 compiler, and these values do not include
18809any ACPI driver or OSPM code.  The debug version of the code
18810includes the full debug trace mechanism -- leading to a much
18811
18812larger code and data size.  Note that these values will vary
18813depending on the efficiency of the compiler and the compiler
18814options used during generation.
18815
18816     Previous Label (09_20_01):
18817     Non-Debug Version:    65K Code,     5K Data,     70K Total
18818     Debug Version:       138K Code,    58K Data,    196K Total
18819
18820     This Label:
18821
18822     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18823     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18824
18825Linux:
18826
18827Implemented a "Bad BIOS Blacklist" to track machines that have
18828known ASL/AML problems.
18829
18830Enhanced the /proc interface for the thermal zone driver and added
18831support for _HOT (the critical suspend trip point).  The 'info'
18832file now includes threshold/policy information, and allows setting
18833of _SCP (cooling preference) and _TZP (polling frequency) values
18834to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18835frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18836preference to the passive/quiet mode (if supported by the ASL).
18837
18838Implemented a workaround for a gcc bug that resuted in an OOPs
18839when loading the control method battery driver.
18840
18841 ----------------------------------------
18842Summary of changes for this label: 09_20_01
18843
18844 ACPI CA Core Subsystem:
18845
18846The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18847modified to allow individual GPE levels to be flagged as wake-
18848enabled (i.e., these GPEs are to remain enabled when the platform
18849sleeps.)
18850
18851The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18852support wake-enabled GPEs.  This means that upon entering the
18853sleep state, all GPEs that are not wake-enabled are disabled.
18854When leaving the sleep state, these GPEs are re-enabled.
18855
18856A local double-precision divide/modulo module has been added to
18857enhance portability to OS kernels where a 64-bit math library is
18858not available.  The new module is "utmath.c".
18859
18860Several optimizations have been made to reduce the use of CPU
18861stack.  Originally over 2K, the maximum stack usage is now below
188622K at 1860  bytes (1.82k)
18863
18864Fixed a problem with the AcpiGetFirmwareTable interface where the
18865root table pointer was not mapped into a logical address properly.
18866
18867Fixed a problem where a NULL pointer was being dereferenced in the
18868interpreter code for the ASL Notify operator.
18869
18870Fixed a problem where the use of the ASL Revision operator
18871returned an error. This operator now returns the current version
18872of the ACPI CA core subsystem.
18873
18874Fixed a problem where objects passed as control method parameters
18875to AcpiEvaluateObject were always deleted at method termination.
18876However, these objects may end up being stored into the namespace
18877by the called method.  The object reference count mechanism was
18878applied to these objects instead of a force delete.
18879
18880Fixed a problem where static strings or buffers (contained in the
18881AML code) that are declared as package elements within the ASL
18882code could cause a fault because the interpreter would attempt to
18883delete them.  These objects are now marked with the "static
18884object" flag to prevent any attempt to delete them.
18885
18886Implemented an interpreter optimization to use operands directly
18887from the state object instead of extracting the operands to local
18888variables.  This reduces stack use and code size, and improves
18889performance.
18890
18891The module exxface.c was eliminated as it was an unnecessary extra
18892layer of code.
18893
18894Current core subsystem library code sizes are shown below.  These
18895are the code and data sizes for the acpica.lib produced by the
18896Microsoft Visual C++ 6.0 compiler, and these values do not include
18897any ACPI driver or OSPM code.  The debug version of the code
18898includes the full debug trace mechanism -- leading to a much
18899larger code and data size.  Note that these values will vary
18900depending on the efficiency of the compiler and the compiler
18901options used during generation.
18902
18903  Non-Debug Version:  65K Code,   5K Data,   70K Total
18904(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
18905Total  (Previously 195K)
18906
18907Linux:
18908
18909Support for ACPI 2.0 64-bit integers has been added.   All ACPI
18910Integer objects are now 64 bits wide
18911
18912All Acpi data types and structures are now in lower case.  Only
18913Acpi macros are upper case for differentiation.
18914
18915 Documentation:
18916
18917Changes to the external interfaces as described above.
18918
18919 ----------------------------------------
18920Summary of changes for this label: 08_31_01
18921
18922 ACPI CA Core Subsystem:
18923
18924A bug with interpreter implementation of the ASL Divide operator
18925was found and fixed.  The implicit function return value (not the
18926explicit store operands) was returning the remainder instead of
18927the quotient.  This was a longstanding bug and it fixes several
18928known outstanding issues on various platforms.
18929
18930The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18931been further optimized for size.  There are 700 invocations of the
18932DEBUG_PRINT macro alone, so each optimization reduces the size of
18933the debug version of the subsystem significantly.
18934
18935A stack trace mechanism has been implemented.  The maximum stack
18936usage is about 2K on 32-bit platforms.  The debugger command "stat
18937stack" will display the current maximum stack usage.
18938
18939All public symbols and global variables within the subsystem are
18940now prefixed with the string "Acpi".  This keeps all of the
18941symbols grouped together in a kernel map, and avoids conflicts
18942with other kernel subsystems.
18943
18944Most of the internal fixed lookup tables have been moved into the
18945code segment via the const operator.
18946
18947Several enhancements have been made to the interpreter to both
18948reduce the code size and improve performance.
18949
18950Current core subsystem library code sizes are shown below.  These
18951are the code and data sizes for the acpica.lib produced by the
18952Microsoft Visual C++ 6.0 compiler, and these values do not include
18953any ACPI driver or OSPM code.  The debug version of the code
18954includes the full debug trace mechanism which contains over 700
18955invocations of the DEBUG_PRINT macro, 500 function entry macro
18956invocations, and over 900 function exit macro invocations --
18957leading to a much larger code and data size.  Note that these
18958values will vary depending on the efficiency of the compiler and
18959the compiler options used during generation.
18960
18961        Non-Debug Version:  64K Code,   5K Data,   69K Total
18962Debug Version:     137K Code,  58K Data,  195K Total
18963
18964 Linux:
18965
18966Implemented wbinvd() macro, pending a kernel-wide definition.
18967
18968Fixed /proc/acpi/event to handle poll() and short reads.
18969
18970 ASL Compiler, version X2026:
18971
18972Fixed a problem introduced in the previous label where the AML
18973
18974code emitted for package objects produced packages with zero
18975length.
18976
18977 ----------------------------------------
18978Summary of changes for this label: 08_16_01
18979
18980ACPI CA Core Subsystem:
18981
18982The following ACPI 2.0 ASL operators have been implemented in the
18983AML interpreter (These are already supported by the Intel ASL
18984compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18985ToBuffer.  Support for 64-bit AML constants is implemented in the
18986AML parser, debugger, and disassembler.
18987
18988The internal memory tracking mechanism (leak detection code) has
18989been upgraded to reduce the memory overhead (a separate tracking
18990block is no longer allocated for each memory allocation), and now
18991supports all of the internal object caches.
18992
18993The data structures and code for the internal object caches have
18994been coelesced and optimized so that there is a single cache and
18995memory list data structure and a single group of functions that
18996implement generic cache management.  This has reduced the code
18997size in both the debug and release versions of the subsystem.
18998
18999The DEBUG_PRINT macro(s) have been optimized for size and replaced
19000by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
19001different, because it generates a single call to an internal
19002function.  This results in a savings of about 90 bytes per
19003invocation, resulting in an overall code and data savings of about
1900416% in the debug version of the subsystem.
19005
19006 Linux:
19007
19008Fixed C3 disk corruption problems and re-enabled C3 on supporting
19009machines.
19010
19011Integrated low-level sleep code by Patrick Mochel.
19012
19013Further tweaked source code Linuxization.
19014
19015Other minor fixes.
19016
19017 ASL Compiler:
19018
19019Support for ACPI 2.0 variable length packages is fixed/completed.
19020
19021Fixed a problem where the optional length parameter for the ACPI
190222.0 ToString operator.
19023
19024Fixed multiple extraneous error messages when a syntax error is
19025detected within the declaration line of a control method.
19026
19027 ----------------------------------------
19028Summary of changes for this label: 07_17_01
19029
19030ACPI CA Core Subsystem:
19031
19032Added a new interface named AcpiGetFirmwareTable to obtain any
19033ACPI table via the ACPI signature.  The interface can be called at
19034any time during kernel initialization, even before the kernel
19035virtual memory manager is initialized and paging is enabled.  This
19036allows kernel subsystems to obtain ACPI tables very early, even
19037before the ACPI CA subsystem is initialized.
19038
19039Fixed a problem where Fields defined with the AnyAcc attribute
19040could be resolved to the incorrect address under the following
19041conditions: 1) the field width is larger than 8 bits and 2) the
19042parent operation region is not defined on a DWORD boundary.
19043
19044Fixed a problem where the interpreter is not being locked during
19045namespace initialization (during execution of the _INI control
19046methods), causing an error when an attempt is made to release it
19047later.
19048
19049ACPI 2.0 support in the AML Interpreter has begun and will be
19050ongoing throughout the rest of this year.  In this label, The Mod
19051operator is implemented.
19052
19053Added a new data type to contain full PCI addresses named
19054ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
19055and Function values.
19056
19057 Linux:
19058
19059Enhanced the Linux version of the source code to change most
19060capitalized ACPI type names to lowercase. For example, all
19061instances of ACPI_STATUS are changed to acpi_status.  This will
19062result in a large diff, but the change is strictly cosmetic and
19063aligns the CA code closer to the Linux coding standard.
19064
19065OSL Interfaces:
19066
19067The interfaces to the PCI configuration space have been changed to
19068add the PCI Segment number and to split the single 32-bit combined
19069DeviceFunction field into two 16-bit fields.  This was
19070accomplished by moving the four values that define an address in
19071PCI configuration space (segment, bus, device, and function) to
19072the new ACPI_PCI_ID structure.
19073
19074The changes to the PCI configuration space interfaces led to a
19075reexamination of the complete set of address space access
19076interfaces for PCI, I/O, and Memory.  The previously existing 18
19077interfaces have proven difficult to maintain (any small change
19078must be propagated across at least 6 interfaces) and do not easily
19079allow for future expansion to 64 bits if necessary.  Also, on some
19080systems, it would not be appropriate to demultiplex the access
19081width (8, 16, 32,or 64) before calling the OSL if the
19082corresponding native OS interfaces contain a similar access width
19083parameter.  For these reasons, the 18 address space interfaces
19084have been replaced by these 6 new ones:
19085
19086AcpiOsReadPciConfiguration
19087AcpiOsWritePciConfiguration
19088AcpiOsReadMemory
19089AcpiOsWriteMemory
19090AcpiOsReadPort
19091AcpiOsWritePort
19092
19093Added a new interface named AcpiOsGetRootPointer to allow the OSL
19094to perform the platform and/or OS-specific actions necessary to
19095obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
19096interface will simply call down to the CA core to perform the low-
19097memory search for the table.  On IA-64, the RSDP is obtained from
19098EFI.  Migrating this interface to the OSL allows the CA core to
19099
19100remain OS and platform independent.
19101
19102Added a new interface named AcpiOsSignal to provide a generic
19103"function code and pointer" interface for various miscellaneous
19104signals and notifications that must be made to the host OS.   The
19105first such signals are intended to support the ASL Fatal and
19106Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
19107interface has been obsoleted.
19108
19109The definition of the AcpiFormatException interface has been
19110changed to simplify its use.  The caller no longer must supply a
19111buffer to the call; A pointer to a const string is now returned
19112directly.  This allows the call to be easily used in printf
19113statements, etc. since the caller does not have to manage a local
19114buffer.
19115
19116
19117 ASL Compiler, Version X2025:
19118
19119The ACPI 2.0 Switch/Case/Default operators have been implemented
19120and are fully functional.  They will work with all ACPI 1.0
19121interpreters, since the operators are simply translated to If/Else
19122pairs.
19123
19124The ACPI 2.0 ElseIf operator is implemented and will also work
19125with 1.0 interpreters, for the same reason.
19126
19127Implemented support for ACPI 2.0 variable-length packages.  These
19128packages have a separate opcode, and their size is determined by
19129the interpreter at run-time.
19130
19131Documentation The ACPI CA Programmer Reference has been updated to
19132reflect the new interfaces and changes to existing interfaces.
19133
19134 ------------------------------------------
19135Summary of changes for this label: 06_15_01
19136
19137 ACPI CA Core Subsystem:
19138
19139Fixed a problem where a DWORD-accessed field within a Buffer
19140object would get its byte address inadvertently rounded down to
19141the nearest DWORD.  Buffers are always Byte-accessible.
19142
19143 ASL Compiler, version X2024:
19144
19145Fixed a problem where the Switch() operator would either fault or
19146hang the compiler.  Note however, that the AML code for this ACPI
191472.0 operator is not yet implemented.
19148
19149Compiler uses the new AcpiOsGetTimer interface to obtain compile
19150timings.
19151
19152Implementation of the CreateField operator automatically converts
19153a reference to a named field within a resource descriptor from a
19154byte offset to a bit offset if required.
19155
19156Added some missing named fields from the resource descriptor
19157support. These are the names that are automatically created by the
19158compiler to reference fields within a descriptor.  They are only
19159valid at compile time and are not passed through to the AML
19160interpreter.
19161
19162Resource descriptor named fields are now typed as Integers and
19163subject to compile-time typechecking when used in expressions.
19164
19165 ------------------------------------------
19166Summary of changes for this label: 05_18_01
19167
19168 ACPI CA Core Subsystem:
19169
19170Fixed a couple of problems in the Field support code where bits
19171from adjacent fields could be returned along with the proper field
19172bits. Restructured the field support code to improve performance,
19173readability and maintainability.
19174
19175New DEBUG_PRINTP macro automatically inserts the procedure name
19176into the output, saving hundreds of copies of procedure name
19177strings within the source, shrinking the memory footprint of the
19178debug version of the core subsystem.
19179
19180 Source Code Structure:
19181
19182The source code directory tree was restructured to reflect the
19183current organization of the component architecture.  Some files
19184and directories have been moved and/or renamed.
19185
19186 Linux:
19187
19188Fixed leaking kacpidpc processes.
19189
19190Fixed queueing event data even when /proc/acpi/event is not
19191opened.
19192
19193 ASL Compiler, version X2020:
19194
19195Memory allocation performance enhancement - over 24X compile time
19196improvement on large ASL files.  Parse nodes and namestring
19197buffers are now allocated from a large internal compiler buffer.
19198
19199The temporary .SRC file is deleted unless the "-s" option is
19200specified
19201
19202The "-d" debug output option now sends all output to the .DBG file
19203instead of the console.
19204
19205"External" second parameter is now optional
19206
19207"ElseIf" syntax now properly allows the predicate
19208
19209Last operand to "Load" now recognized as a Target operand
19210
19211Debug object can now be used anywhere as a normal object.
19212
19213ResourceTemplate now returns an object of type BUFFER
19214
19215EISAID now returns an object of type INTEGER
19216
19217"Index" now works with a STRING operand
19218
19219"LoadTable" now accepts optional parameters
19220
19221"ToString" length parameter is now optional
19222
19223"Interrupt (ResourceType," parse error fixed.
19224
19225"Register" with a user-defined region space parse error fixed
19226
19227Escaped backslash at the end of a string ("\\") scan/parse error
19228fixed
19229
19230"Revision" is now an object of type INTEGER.
19231
19232
19233
19234------------------------------------------
19235Summary of changes for this label: 05_02_01
19236
19237Linux:
19238
19239/proc/acpi/event now blocks properly.
19240
19241Removed /proc/sys/acpi. You can still dump your DSDT from
19242/proc/acpi/dsdt.
19243
19244 ACPI CA Core Subsystem:
19245
19246Fixed a problem introduced in the previous label where some of the
19247"small" resource descriptor types were not recognized.
19248
19249Improved error messages for the case where an ASL Field is outside
19250the range of the parent operation region.
19251
19252 ASL Compiler, version X2018:
19253
19254
19255Added error detection for ASL Fields that extend beyond the length
19256of the parent operation region (only if the length of the region
19257is known at compile time.)  This includes fields that have a
19258minimum access width that is smaller than the parent region, and
19259individual field units that are partially or entirely beyond the
19260extent of the parent.
19261
19262
19263
19264------------------------------------------
19265Summary of changes for this label: 04_27_01
19266
19267 ACPI CA Core Subsystem:
19268
19269Fixed a problem where the namespace mutex could be released at the
19270wrong time during execution of AcpiRemoveAddressSpaceHandler.
19271
19272Added optional thread ID output for debug traces, to simplify
19273debugging of multiple threads.  Added context switch notification
19274when the debug code realizes that a different thread is now
19275executing ACPI code.
19276
19277Some additional external data types have been prefixed with the
19278string "ACPI_" for consistency.  This may effect existing code.
19279The data types affected are the external callback typedefs - e.g.,
19280
19281WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
19282
19283 Linux:
19284
19285Fixed an issue with the OSL semaphore implementation where a
19286thread was waking up with an error from receiving a SIGCHLD
19287signal.
19288
19289Linux version of ACPI CA now uses the system C library for string
19290manipulation routines instead of a local implementation.
19291
19292Cleaned up comments and removed TBDs.
19293
19294 ASL Compiler, version X2017:
19295
19296Enhanced error detection and reporting for all file I/O
19297operations.
19298
19299 Documentation:
19300
19301Programmer Reference updated to version 1.06.
19302
19303
19304
19305------------------------------------------
19306Summary of changes for this label: 04_13_01
19307
19308 ACPI CA Core Subsystem:
19309
19310Restructured support for BufferFields and RegionFields.
19311BankFields support is now fully operational.  All known 32-bit
19312limitations on field sizes have been removed.  Both BufferFields
19313and (Operation) RegionFields are now supported by the same field
19314management code.
19315
19316Resource support now supports QWORD address and IO resources. The
1931716/32/64 bit address structures and the Extended IRQ structure
19318have been changed to properly handle Source Resource strings.
19319
19320A ThreadId of -1 is now used to indicate a "mutex not acquired"
19321condition internally and must never be returned by AcpiOsThreadId.
19322This reserved value was changed from 0 since Unix systems allow a
19323thread ID of 0.
19324
19325Linux:
19326
19327Driver code reorganized to enhance portability
19328
19329Added a kernel configuration option to control ACPI_DEBUG
19330
19331Fixed the EC driver to honor _GLK.
19332
19333ASL Compiler, version X2016:
19334
19335Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
19336address space was set to 0, not 0x7f as it should be.
19337
19338 ------------------------------------------
19339Summary of changes for this label: 03_13_01
19340
19341 ACPI CA Core Subsystem:
19342
19343During ACPI initialization, the _SB_._INI method is now run if
19344present.
19345
19346Notify handler fix - notifies are deferred until the parent method
19347completes execution.  This fixes the "mutex already acquired"
19348issue seen occasionally.
19349
19350Part of the "implicit conversion" rules in ACPI 2.0 have been
19351found to cause compatibility problems with existing ASL/AML.  The
19352convert "result-to-target-type" implementation has been removed
19353for stores to method Args and Locals.  Source operand conversion
19354is still fully implemented.  Possible changes to ACPI 2.0
19355specification pending.
19356
19357Fix to AcpiRsCalculatePciRoutingTableLength to return correct
19358length.
19359
19360Fix for compiler warnings for 64-bit compiles.
19361
19362 Linux:
19363
19364/proc output aligned for easier parsing.
19365
19366Release-version compile problem fixed.
19367
19368New kernel configuration options documented in Configure.help.
19369
19370IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
19371context" message.
19372
19373 OSPM:
19374
19375Power resource driver integrated with bus manager.
19376
19377Fixed kernel fault during active cooling for thermal zones.
19378
19379Source Code:
19380
19381The source code tree has been restructured.
19382
19383
19384
19385------------------------------------------
19386Summary of changes for this label: 03_02_01
19387
19388 Linux OS Services Layer (OSL):
19389
19390Major revision of all Linux-specific code.
19391
19392Modularized all ACPI-specific drivers.
19393
19394Added new thermal zone and power resource drivers.
19395
19396Revamped /proc interface (new functionality is under /proc/acpi).
19397
19398New kernel configuration options.
19399
19400 Linux known issues:
19401
19402New kernel configuration options not documented in Configure.help
19403yet.
19404
19405
19406Module dependencies not currently implemented. If used, they
19407should be loaded in this order: busmgr, power, ec, system,
19408processor, battery, ac_adapter, button, thermal.
19409
19410Modules will not load if CONFIG_MODVERSION is set.
19411
19412IBM 600E - entering S5 may reboot instead of shutting down.
19413
19414IBM 600E - Sleep button may generate "Invalid <NULL> context"
19415message.
19416
19417Some systems may fail with "execution mutex already acquired"
19418message.
19419
19420 ACPI CA Core Subsystem:
19421
19422Added a new OSL Interface, AcpiOsGetThreadId.  This was required
19423for the  deadlock detection code. Defined to return a non-zero, 32-
19424bit thread ID for the currently executing thread.  May be a non-
19425zero constant integer on single-thread systems.
19426
19427Implemented deadlock detection for internal subsystem mutexes.  We
19428may add conditional compilation for this code (debug only) later.
19429
19430ASL/AML Mutex object semantics are now fully supported.  This
19431includes multiple acquires/releases by owner and support for the
19432
19433Mutex SyncLevel parameter.
19434
19435A new "Force Release" mechanism automatically frees all ASL
19436Mutexes that have been acquired but not released when a thread
19437exits the interpreter.  This forces conformance to the ACPI spec
19438("All mutexes must be released when an invocation exits") and
19439prevents deadlocked ASL threads.  This mechanism can be expanded
19440(later) to monitor other resource acquisitions if OEM ASL code
19441continues to misbehave (which it will).
19442
19443Several new ACPI exception codes have been added for the Mutex
19444support.
19445
19446Recursive method calls are now allowed and supported (the ACPI
19447spec does in fact allow recursive method calls.)  The number of
19448recursive calls is subject to the restrictions imposed by the
19449SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
19450parameter.
19451
19452Implemented support for the SyncLevel parameter for control
19453methods (ACPI 2.0 feature)
19454
19455Fixed a deadlock problem when multiple threads attempted to use
19456the interpreter.
19457
19458Fixed a problem where the string length of a String package
19459element was not always set in a package returned from
19460AcpiEvaluateObject.
19461
19462Fixed a problem where the length of a String package element was
19463not always included in the length of the overall package returned
19464from AcpiEvaluateObject.
19465
19466Added external interfaces (Acpi*) to the ACPI debug memory
19467manager.  This manager keeps a list of all outstanding
19468allocations, and can therefore detect memory leaks and attempts to
19469free memory blocks more than once. Useful for code such as the
19470power manager, etc.  May not be appropriate for device drivers.
19471Performance with the debug code enabled is slow.
19472
19473The ACPI Global Lock is now an optional hardware element.
19474
19475 ASL Compiler Version X2015:
19476
19477Integrated changes to allow the compiler to be generated on
19478multiple platforms.
19479
19480Linux makefile added to generate the compiler on Linux
19481
19482 Source Code:
19483
19484All platform-specific headers have been moved to their own
19485subdirectory, Include/Platform.
19486
19487New source file added, Interpreter/ammutex.c
19488
19489New header file, Include/acstruct.h
19490
19491 Documentation:
19492
19493The programmer reference has been updated for the following new
19494interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
19495
19496 ------------------------------------------
19497Summary of changes for this label: 02_08_01
19498
19499Core ACPI CA Subsystem: Fixed a problem where an error was
19500incorrectly returned if the return resource buffer was larger than
19501the actual data (in the resource interfaces).
19502
19503References to named objects within packages are resolved to the
19504
19505full pathname string before packages are returned directly (via
19506the AcpiEvaluateObject interface) or indirectly via the resource
19507interfaces.
19508
19509Linux OS Services Layer (OSL):
19510
19511Improved /proc battery interface.
19512
19513
19514Added C-state debugging output and other miscellaneous fixes.
19515
19516ASL Compiler Version X2014:
19517
19518All defined method arguments can now be used as local variables,
19519including the ones that are not actually passed in as parameters.
19520The compiler tracks initialization of the arguments and issues an
19521exception if they are used without prior assignment (just like
19522locals).
19523
19524The -o option now specifies a filename prefix that is used for all
19525output files, including the AML output file.  Otherwise, the
19526default behavior is as follows:  1) the AML goes to the file
19527specified in the DSDT.  2) all other output files use the input
19528source filename as the base.
19529
19530 ------------------------------------------
19531Summary of changes for this label: 01_25_01
19532
19533Core ACPI CA Subsystem: Restructured the implementation of object
19534store support within the  interpreter.  This includes support for
19535the Store operator as well  as any ASL operators that include a
19536target operand.
19537
19538Partially implemented support for Implicit Result-to-Target
19539conversion. This is when a result object is converted on the fly
19540to the type of  an existing target object.  Completion of this
19541support is pending  further analysis of the ACPI specification
19542concerning this matter.
19543
19544CPU-specific code has been removed from the subsystem (hardware
19545directory).
19546
19547New Power Management Timer functions added
19548
19549Linux OS Services Layer (OSL): Moved system state transition code
19550to the core, fixed it, and modified  Linux OSL accordingly.
19551
19552Fixed C2 and C3 latency calculations.
19553
19554
19555We no longer use the compilation date for the version message on
19556initialization, but retrieve the version from AcpiGetSystemInfo().
19557
19558Incorporated for fix Sony VAIO machines.
19559
19560Documentation:  The Programmer Reference has been updated and
19561reformatted.
19562
19563
19564ASL Compiler:  Version X2013: Fixed a problem where the line
19565numbering and error reporting could get out  of sync in the
19566presence of multiple include files.
19567
19568 ------------------------------------------
19569Summary of changes for this label: 01_15_01
19570
19571Core ACPI CA Subsystem:
19572
19573Implemented support for type conversions in the execution of the
19574ASL  Concatenate operator (The second operand is converted to
19575match the type  of the first operand before concatenation.)
19576
19577Support for implicit source operand conversion is partially
19578implemented.   The ASL source operand types Integer, Buffer, and
19579String are freely  interchangeable for most ASL operators and are
19580converted by the interpreter  on the fly as required.  Implicit
19581Target operand conversion (where the  result is converted to the
19582target type before storing) is not yet implemented.
19583
19584Support for 32-bit and 64-bit BCD integers is implemented.
19585
19586Problem fixed where a field read on an aligned field could cause a
19587read  past the end of the field.
19588
19589New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
19590does not return a value, but the caller expects one.  (The ASL
19591compiler flags this as a warning.)
19592
19593ASL Compiler:
19594
19595Version X2011:
195961. Static typechecking of all operands is implemented. This
19597prevents the use of invalid objects (such as using a Package where
19598an Integer is required) at compile time instead of at interpreter
19599run-time.
196002. The ASL source line is printed with ALL errors and warnings.
196013. Bug fix for source EOF without final linefeed.
196024. Debug option is split into a parse trace and a namespace trace.
196035. Namespace output option (-n) includes initial values for
19604integers and strings.
196056. Parse-only option added for quick syntax checking.
196067. Compiler checks for duplicate ACPI name declarations
19607
19608Version X2012:
196091. Relaxed typechecking to allow interchangeability between
19610strings, integers, and buffers.  These types are now converted by
19611the interpreter at runtime.
196122. Compiler reports time taken by each internal subsystem in the
19613debug         output file.
19614
19615
19616 ------------------------------------------
19617Summary of changes for this label: 12_14_00
19618
19619ASL Compiler:
19620
19621This is the first official release of the compiler. Since the
19622compiler requires elements of the Core Subsystem, this label
19623synchronizes everything.
19624
19625------------------------------------------
19626Summary of changes for this label: 12_08_00
19627
19628
19629Fixed a problem where named references within the ASL definition
19630of both OperationRegions and CreateXXXFields did not work
19631properly.  The symptom was an AE_AML_OPERAND_TYPE during
19632initialization of the region/field. This is similar (but not
19633related internally) to the problem that was fixed in the last
19634label.
19635
19636Implemented both 32-bit and 64-bit support for the BCD ASL
19637functions ToBCD and FromBCD.
19638
19639Updated all legal headers to include "2000" in the copyright
19640years.
19641
19642 ------------------------------------------
19643Summary of changes for this label: 12_01_00
19644
19645Fixed a problem where method invocations within the ASL definition
19646of both OperationRegions and CreateXXXFields did not work
19647properly.  The symptom was an AE_AML_OPERAND_TYPE during
19648initialization of the region/field:
19649
19650  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
19651[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
19652(0x3005)
19653
19654Fixed a problem where operators with more than one nested
19655subexpression would fail.  The symptoms were varied, by mostly
19656AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
19657problem that has gone unnoticed until now.
19658
19659  Subtract (Add (1,2), Multiply (3,4))
19660
19661Fixed a problem where AcpiGetHandle didn't quite get fixed in the
19662previous build (The prefix part of a relative path was handled
19663incorrectly).
19664
19665Fixed a problem where Operation Region initialization failed if
19666the operation region name was a "namepath" instead of a simple
19667"nameseg". Symptom was an AE_NO_OPERAND error.
19668
19669Fixed a problem where an assignment to a local variable via the
19670indirect RefOf mechanism only worked for the first such
19671assignment.  Subsequent assignments were ignored.
19672
19673 ------------------------------------------
19674Summary of changes for this label: 11_15_00
19675
19676ACPI 2.0 table support with backwards support for ACPI 1.0 and the
196770.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
19678the AML  interpreter does NOT have support for the new 2.0 ASL
19679grammar terms at this time.
19680
19681All ACPI hardware access is via the GAS structures in the ACPI 2.0
19682FADT.
19683
19684All physical memory addresses across all platforms are now 64 bits
19685wide. Logical address width remains dependent on the platform
19686(i.e., "void *").
19687
19688AcpiOsMapMemory interface changed to a 64-bit physical address.
19689
19690The AML interpreter integer size is now 64 bits, as per the ACPI
196912.0 specification.
19692
19693For backwards compatibility with ACPI 1.0, ACPI tables with a
19694revision number less than 2 use 32-bit integers only.
19695
19696Fixed a problem where the evaluation of OpRegion operands did not
19697always resolve them to numbers properly.
19698
19699------------------------------------------
19700Summary of changes for this label: 10_20_00
19701
19702Fix for CBN_._STA issue.  This fix will allow correct access to
19703CBN_ OpRegions when the _STA returns 0x8.
19704
19705Support to convert ACPI constants (Ones, Zeros, One) to actual
19706values before a package object is returned
19707
19708Fix for method call as predicate to if/while construct causing
19709incorrect if/while behavior
19710
19711Fix for Else block package lengths sometimes calculated wrong (if
19712block > 63 bytes)
19713
19714Fix for Processor object length field, was always zero
19715
19716Table load abort if FACP sanity check fails
19717
19718Fix for problem with Scope(name) if name already exists
19719
19720Warning emitted if a named object referenced cannot be found
19721(resolved) during method execution.
19722
19723
19724
19725
19726
19727------------------------------------------
19728Summary of changes for this label: 9_29_00
19729
19730New table initialization interfaces: AcpiInitializeSubsystem no
19731longer has any parameters AcpiFindRootPointer - Find the RSDP (if
19732necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
19733>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
19734AcpiLoadTables
19735
19736Note: These interface changes require changes to all existing OSDs
19737
19738The PCI_Config default address space handler is always installed
19739at the root namespace object.
19740
19741-------------------------------------------
19742Summary of changes for this label: 09_15_00
19743
19744The new initialization architecture is implemented.  New
19745interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
19746AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
19747
19748(Namespace is automatically loaded when a table is loaded)
19749
19750The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1975152 bytes to 32 bytes.  There is usually one of these for every
19752namespace object, so the memory savings is significant.
19753
19754Implemented just-in-time evaluation of the CreateField operators.
19755
19756Bug fixes for IA-64 support have been integrated.
19757
19758Additional code review comments have been implemented
19759
19760The so-called "third pass parse" has been replaced by a final walk
19761through the namespace to initialize all operation regions (address
19762spaces) and fields that have not yet been initialized during the
19763execution of the various _INI and REG methods.
19764
19765New file - namespace/nsinit.c
19766
19767-------------------------------------------
19768Summary of changes for this label: 09_01_00
19769
19770Namespace manager data structures have been reworked to change the
19771primary  object from a table to a single object.  This has
19772resulted in dynamic memory  savings of 3X within the namespace and
197732X overall in the ACPI CA subsystem.
19774
19775Fixed problem where the call to AcpiEvFindPciRootBuses was
19776inadvertently left  commented out.
19777
19778Reduced the warning count when generating the source with the GCC
19779compiler.
19780
19781Revision numbers added to each module header showing the
19782SourceSafe version of the file.  Please refer to this version
19783number when giving us feedback or comments on individual modules.
19784
19785The main object types within the subsystem have been renamed to
19786clarify their  purpose:
19787
19788ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
19789ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
19790ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
19791
19792NOTE: no changes to the initialization sequence are included in
19793this label.
19794
19795-------------------------------------------
19796Summary of changes for this label: 08_23_00
19797
19798Fixed problem where TerminateControlMethod was being called
19799multiple times per  method
19800
19801Fixed debugger problem where single stepping caused a semaphore to
19802be  oversignalled
19803
19804Improved performance through additional parse object caching -
19805added  ACPI_EXTENDED_OP type
19806
19807-------------------------------------------
19808Summary of changes for this label: 08_10_00
19809
19810Parser/Interpreter integration:  Eliminated the creation of
19811complete parse trees  for ACPI tables and control methods.
19812Instead, parse subtrees are created and  then deleted as soon as
19813they are processed (Either entered into the namespace or  executed
19814by the interpreter).  This reduces the use of dynamic kernel
19815memory  significantly. (about 10X)
19816
19817Exception codes broken into classes and renumbered.  Be sure to
19818recompile all  code that includes acexcep.h.  Hopefully we won't
19819have to renumber the codes  again now that they are split into
19820classes (environment, programmer, AML code,  ACPI table, and
19821internal).
19822
19823Fixed some additional alignment issues in the Resource Manager
19824subcomponent
19825
19826Implemented semaphore tracking in the AcpiExec utility, and fixed
19827several places  where mutexes/semaphores were being unlocked
19828without a corresponding lock  operation.  There are no known
19829semaphore or mutex "leaks" at this time.
19830
19831Fixed the case where an ASL Return operator is used to return an
19832unnamed  package.
19833
19834-------------------------------------------
19835Summary of changes for this label: 07_28_00
19836
19837Fixed a problem with the way addresses were calculated in
19838AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
19839manifested itself when a Field was  created with WordAccess or
19840DwordAccess, but the field unit defined within the  Field was less
19841
19842than a Word or Dword.
19843
19844Fixed a problem in AmlDumpOperands() module's loop to pull
19845operands off of the  operand stack to display information. The
19846problem manifested itself as a TLB  error on 64-bit systems when
19847accessing an operand stack with two or more  operands.
19848
19849Fixed a problem with the PCI configuration space handlers where
19850context was  getting confused between accesses. This required a
19851change to the generic address  space handler and address space
19852setup definitions. Handlers now get both a  global handler context
19853(this is the one passed in by the user when executing
19854AcpiInstallAddressSpaceHandler() and a specific region context
19855that is unique to  each region (For example, the _ADR, _SEG and
19856_BBN values associated with a  specific region). The generic
19857function definitions have changed to the  following:
19858
19859typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19860UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19861*HandlerContext, // This used to be void *Context void
19862*RegionContext); // This is an additional parameter
19863
19864typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19865RegionHandle, UINT32 Function, void *HandlerContext,  void
19866**RegionContext); // This used to be **ReturnContext
19867
19868-------------------------------------------
19869Summary of changes for this label: 07_21_00
19870
19871Major file consolidation and rename.  All files within the
19872interpreter have been  renamed as well as most header files.  This
19873was done to prevent collisions with  existing files in the host
19874OSs -- filenames such as "config.h" and "global.h"  seem to be
19875quite common.  The VC project files have been updated.  All
19876makefiles  will require modification.
19877
19878The parser/interpreter integration continues in Phase 5 with the
19879implementation  of a complete 2-pass parse (the AML is parsed
19880twice) for each table;  This  avoids the construction of a huge
19881parse tree and therefore reduces the amount of  dynamic memory
19882required by the subsystem.  Greater use of the parse object cache
19883means that performance is unaffected.
19884
19885Many comments from the two code reviews have been rolled in.
19886
19887The 64-bit alignment support is complete.
19888
19889-------------------------------------------
19890Summary of changes for this label: 06_30_00
19891
19892With a nod and a tip of the hat to the technology of yesteryear,
19893we've added  support in the source code for 80 column output
19894devices.  The code is now mostly  constrained to 80 columns or
19895less to support environments and editors that 1)  cannot display
19896or print more than 80 characters on a single line, and 2) cannot
19897disable line wrapping.
19898
19899A major restructuring of the namespace data structure has been
19900completed.  The  result is 1) cleaner and more
19901understandable/maintainable code, and 2) a  significant reduction
19902in the dynamic memory requirement for each named ACPI  object
19903(almost half).
19904
19905-------------------------------------------
19906Summary of changes for this label: 06_23_00
19907
19908Linux support has been added.  In order to obtain approval to get
19909the ACPI CA  subsystem into the Linux kernel, we've had to make
19910quite a few changes to the  base subsystem that will affect all
19911users (all the changes are generic and OS- independent).  The
19912effects of these global changes have been somewhat far  reaching.
19913Files have been merged and/or renamed and interfaces have been
19914renamed.   The major changes are described below.
19915
19916Osd* interfaces renamed to AcpiOs* to eliminate namespace
19917pollution/confusion  within our target kernels.  All OSD
19918interfaces must be modified to match the new  naming convention.
19919
19920Files merged across the subsystem.  A number of the smaller source
19921and header  files have been merged to reduce the file count and
19922increase the density of the  existing files.  There are too many
19923to list here.  In general, makefiles that  call out individual
19924files will require rebuilding.
19925
19926Interpreter files renamed.  All interpreter files now have the
19927prefix am*  instead of ie* and is*.
19928
19929Header files renamed:  The acapi.h file is now acpixf.h.  The
19930acpiosd.h file is  now acpiosxf.h.  We are removing references to
19931the acronym "API" since it is  somewhat windowsy. The new name is
19932"external interface" or xface or xf in the  filenames.j
19933
19934
19935All manifest constants have been forced to upper case (some were
19936mixed case.)   Also, the string "ACPI_" has been prepended to many
19937(not all) of the constants,  typedefs, and structs.
19938
19939The globals "DebugLevel" and "DebugLayer" have been renamed
19940"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
19941
19942All other globals within the subsystem are now prefixed with
19943"AcpiGbl_" Internal procedures within the subsystem are now
19944prefixed with "Acpi" (with only  a few exceptions).  The original
19945two-letter abbreviation for the subcomponent  remains after "Acpi"
19946- for example, CmCallocate became AcpiCmCallocate.
19947
19948Added a source code translation/conversion utility.  Used to
19949generate the Linux  source code, it can be modified to generate
19950other types of source as well. Can  also be used to cleanup
19951existing source by removing extraneous spaces and blank  lines.
19952Found in tools/acpisrc/*
19953
19954OsdUnMapMemory was renamed to OsdUnmapMemory and then
19955AcpiOsUnmapMemory.  (UnMap  became Unmap).
19956
19957A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19958When set to  one, this indicates that the caller wants to use the
19959
19960semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
19961both types.  However, implementers of this  call may want to use
19962different OS primitives depending on the type of semaphore
19963requested.  For example, some operating systems provide separate
19964
19965"mutex" and  "semaphore" interfaces - where the mutex interface is
19966much faster because it  doesn't have all the overhead of a full
19967semaphore implementation.
19968
19969Fixed a deadlock problem where a method that accesses the PCI
19970address space can  block forever if it is the first access to the
19971space.
19972
19973-------------------------------------------
19974Summary of changes for this label: 06_02_00
19975
19976Support for environments that cannot handle unaligned data
19977accesses (e.g.  firmware and OS environments devoid of alignment
19978handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19979been added (via configurable macros) in  these three areas: -
19980Transfer of data from the raw AML byte stream is done via byte
19981moves instead of    word/dword/qword moves. - External objects are
19982aligned within the user buffer, including package   elements (sub-
19983objects). - Conversion of name strings to UINT32 Acpi Names is now
19984done byte-wise.
19985
19986The Store operator was modified to mimic Microsoft's
19987implementation when storing  to a Buffer Field.
19988
19989Added a check of the BM_STS bit before entering C3.
19990
19991The methods subdirectory has been obsoleted and removed.  A new
19992file, cmeval.c  subsumes the functionality.
19993
19994A 16-bit (DOS) version of AcpiExec has been developed.  The
19995makefile is under  the acpiexec directory.
19996