xref: /src/sys/contrib/dev/acpica/changes.txt (revision 1efb6541c67792702db075015d48615168ba3783)
1----------------------------------------
212 December 2025. Summary of changes for version 20251212:
3
4Major changes:
5
6Update many existing ACPI tables to follow the ACPI 6.6 Specification
7changes and/or newly approved ASWG ECRs - multiple contributors
8
9Add a few new ACPI tables: IOVT, SWFT, KEYP - multiple contributors
10
11Add many new UUIDs, Hardware/PnP/ACPI IDs - Armin Wolf and Pawel
12Chmielewski
13
14Support a few new special methods (_xxx format) and modify few existing
15ones to stay compliant with the latest ACPI Specification changes
16
17Improve existing tools/utilities and fix/clean up some problematic usages
18along with patching certain vulnerabilities
19
20
21----------------------------------------
227 August 2025. Summary of changes for version 20250807:
23
24Major changes:
25
26Added option to skip the global lock for SMM - Huacai Chen
27
28Fixed non-NUL terminated string implementations - Ahmed Salem
29
30Fixed CCEL and CDAT templates - Ahmed Salem
31
32Fixed a major Linux kernel bug (UAF) that was triggered by unequal number
33of method parameters (definition) vs arguments (invocation) in different
34places - Peter Williams, Hans de Goede, Rafael Wysocki
35
36Define distinct D3 states (D3Hot and D3Cold) that help clarify the device
37behavior support - Aymeric Wibo
38
39A few cleanups, improvements to existing table supports, small fixes,
40spelling corrections etc.
41
42
43----------------------------------------
444 April 2025. Summary of changes for version 20250404:
45
46Major changes:
47
48Update all the copyright continuation year to 2025 in the license header
49of all files
50
51Add complete support for 3 new ACPI tables - MRRM,ERDT and RIMT (Tony
52Luck & V L Sunil)
53
54Add a license file to the project which is a great improvement (Dionna
55Glaze)
56
57Update DMAR and TPM2 tables to support their latest versions (Alexey
58Neyman and Stuart Yoder)
59
60A few fixes including local cache allocation, FFixedHW Region, attribute
61packing, string vs. non-string char array, vsnprintf()etc. along with
62some comments, spelling errors and code alignment (multiple awesome
63contributors)
64
65
66----------------------------------------
6712 December 2024. Summary of changes for version 20241212:
68
69Major changes:
70
71Fix 2 critical CVE addressing memory leaks - Seunghun Han
72
73EINJ V2 updates - Zaid Alali (Ampere Computing)
74
75CDAT updates - Ira Weiny (Intel Corporation)
76
77Fix mutex handling, do not release ones that were never acquired - Daniil
78Tatianin
79
80Experiment with new tag name format Ryyyy_mm_dd to solve chronological
81sorting problems
82
83
84----------------------------------------
8527 September 2024. Summary of changes for version 20240927:
86
87Major changes:
88
89Fix the acpixf.h file which caused issues for the last release (before
90this) 20240827
91
92Fix the pointer offset for the SLIC table
93
94Verify the local environment and GitHub commits are all in sync which was
95a problem with the second from last release (before this)20240322 (aka
9620240323 - date issue)
97
98
99
100----------------------------------------
10127 August 2024. Summary of changes for version 20240827:
102
103Major changes:
104
105Fix the PHAT table working: ensure that the PHAT firmware health record
106offset works correctly, fix various sub-table offsets, prevent
107segmentation faults when encountering invalid device paths. Contributed
108by: Armin Wolf <W_Armin@gmx.de>
109
110Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin
111<99danilt@gmail.com>
112
113Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone
114(Fedora) <ahs3@ahs3.net>
115
116Add support for QWordPCC and DWordPCC by Jose Marinho (ARM)
117
118Fix the integer to hex string conversions by Armin Wolf
119
120Detecting FACS in reduced HW mode and allowing setting waking vector
121thereby waking up from S3 state
122
123Fixing issues with crossing page boundaries when mapping operation
124regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD)
125
126Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables
127
128Fix multiple issues with table parsing, compilation and disassembly by
129Myra DeMere (Google)
130
131Allow for more flexibility in _DSM usage.
132
133
134----------------------------------------
13522 March 2024. Summary of changes for version 20240322:
136
137Major changes:
138
139Update all the license header year from 2023 to 2024.
140
141Fix table argument ordering to work properly with iasl.
142
143Get rid of the annoying repeated warning types in MSVC and Windows.
144
145Fix a test in ASLTS with edge case failure.
146
147Fix a couple of issues with how GPEs are counted and enabled.
148
149Add new tables for various architectures/OS, mainly RISC-V and also
150update many more.
151
152Add an option to either make the output deterministic or non-
153deterministic.
154
155Remove redundant checks, duplicated code and fix spellings in various
156files.
157
158Fix flex arrays for C++ compilers and also make ACPICA overall more
159compatible with different compilers which throw warnings related to
160memory sanitization etc.
161
162
163----------------------------------------
16428 June 2023. Summary of changes for version 20230628:
165
1660) Global changes:
167
168Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN:
169?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of
170range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag
171to Timer (since there are no runtime arguments). Reported by: Abhishek
172Mainkar abmainkar@nvidia.com.
173
174Added a define for size of acpi_srat_generic_affinity DeviceHandle.
175Replaced a magic number with a define. The Linux kernel code will utilize
176this. Reported by Dave Jiang dave.jiang@intel.com.
177
178Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5.
179
1801) ACPICA kernel-resident subsystem:
181
182Added port definitions for CDAT SSLBIS. Add upstream port and any port
183definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com.
184
185Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE ->
186ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang
187dave.jiang@intel.com.
188
1891) ACPICA kernel-resident subsystem:
190
191Fix GCC 12 dangling-pointer warning.  We're storing a persistent pointer
192to an ephemeral local variable which technically is a dangling pointer
193and the compiler is correct. However, since we never indirect the
194pointer, this is a safe operation and we can suppress the warning.
195
196Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly
197so we must include it explicitly or we won't have the type definition for
198uintptr_t.
199
2002) iASL Compiler/Disassembler and ACPICA tools:.
201
202IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table
203is updated with new nodes. Add compile and dump functionality for these
204new structures.
205
206AcpiExec: Added a new command, ?interrupt?. The Interrupt command
207simulates an interrupt with a IntID (GSIV) equal to the first argument of
208the call/invocation. The acpiexec code simulates the behavior by OSPM:
209execute the _EVT method of the GED device associated with that IntID.
210Submitted by: Jose Marinho jose.marinho@arm.com.
211
212AcpiExec: Detect GED device and keep track of _EVT. The GED device is
213described by a _HID of ACPI0013. This code traverses the namespace
214identifying all GED devices. For each GED device in the namespace we
215record the Interrupt object and the _EVT method. This information is used
216when an interrupt is simulated via the ?interrupt? command. Submitted by:
217Jose Marinho jose.marinho@arm.com.
218----------------------------------------
21931 March 2023. Summary of changes for version 20230331:
220
221This release is available at https://acpica.org/downloads
222
2230) Global changes:
224
225
226Update all copyright notices to the year 2023. This effects all source
227modules, as well as utility signons.
228Add OS-specific support for Zephyr RTOS.
229Fix miscellaneous code that accesses various objects.
230Remove some dead code.
231Add C ?Flexible Array? support.
232Add support for 64 bit LoongArch compilation.
233Add first batch of RISC-V related definitions.
234Performed a global automated update to remove tabs, fix indentation
235issues, etc.
236
2371) ACPICA kernel-resident subsystem:
238
239hwvalid: Drop port I/O validation.
240
2412) ACPICA tools and utilities:
242
243iASL: Added full macro support in the preprocessor. Example:
244#define ABCD(a,b,c,d) a+b+c-d
245
246Known macro support limitations (at this time):
247	No support for multi-line #define macros (backslash continuation
248lines)
249	No support for the C-style ternary operator
250	No support for the stringizing operator (#)
251	No support for the concatenation (token pasting) operator (##)
252	No support for variable number of macro arguments
253
254Add support for AMD Secure Processor Table (ASPT) version 1.
255Add support for Arm's MPAM ACPI table version 2.
256ACPI 6.5: MADT: add support for trace buffer extension in GICC.
257Headers: Delete bogus NodeArray array of pointers from AEST table.
258PHAT table support is still ongoing.
259
260
261----------------------------------------
26220 October 2022. Summary of changes for version 20221020:
263
264This release is available at https://acpica.org/downloads
265
2660) Global changes:
267
268Allow disabling of -Werror. For distro maintainers having `-Werror` can
269delay update of GCC. Since every GCC release might add new warnings that
270were not yet captured, it might break the build of packages. With this
271change, distros can now build with `NOWERROR=TRUE` instead of patching
272either the errors or the makefiles. The default behavior keeps on using
273`-Werror`.
274
2751) ACPICA kernel-resident subsystem:
276
277Added support for FFH Operation Region special context data. FFH(Fixed
278Function Hardware) Opregion is approved to be added in ACPI 6.5 via code
279first approach[1]. It requires special context data similar to GPIO and
280Generic Serial Bus as it needs to know platform specific offset and
281length.
282
283Reverted this commit "executer/exsystem: Warn about sleeps greater than
28410 ms." Due to user complaints about valid sleeps greater than 10ms seen
285in some existing machines -- generating lots of warnings.
286
287Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that
288EBDA region must be at least 1KiB in size. Because this is not
289guaranteed, it might happen that while scanning the memory for RSDP
290pointer, the kernel touches memory above 640KiB. This is unwanted as the
291VGA memory range may not be decoded or even present when running under
292virtualization.
293
294Check that EBDA pointer is in valid memory. If the memory at 0x40e is
295uninitialized, the retrieved physical memory address of EBDA may be
296beyond the low memory (i.e. above 640K). If so, the kernel may
297unintentionally access the VGA memory, that might not be decoded or even
298present in case of virtualization.
299
3002) iASL Compiler/Disassembler and ACPICA tools:
301
302Completed the existing partial support for the CDAT "table". Although
303this isn't technically an ACPI table (It doesn't go into the XSDT), it is
304possible to support this table in the Data Table compiler. Created one
305new file, "utilities/utcksum.c", used to centralize checksum
306generation/validation into one location. Includes changes to makefiles
307and MSVC project files.
308
309Updated support for the IORT table - update to version E.e
310
311Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table
312
313iASL: Added CCEL table to both compiler/disassembler.
314
315iASL: NHLT table: Fixed compilation of optional undocumented fields
316
317iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763
318("iASL: Add CCEL table to both compiler/disassembler") introduced the
319iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL
320table member reference. To fix it,  change ACPI_TDEL_OFFSET with
321ACPI_CCEL_OFFSET.
322
323----------------------------------------
32431 March 2022. Summary of changes for version 20220331:
325
3260) Global changes:
327
328Update all copyright notices to the year 2022. This effects all source
329modules, as well as utility signons.
330
331
3321) ACPICA kernel-resident subsystem:
333
334For the ASL Sleep() operator, issue a warning if the sleep value is
335greater than 10 Milliseconds. Quick boottime is important, so warn about
336sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350
337ms, so excessive delays should be called out. 10 ms is chosen randomly,
338but three of such delays would already make up ten percent of the
339boottime.
340
341Namespace: Avoid attempting to walk the Namespace if the Namespace does
342not exist.
343
344AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the
345LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a
346pass/fail integer. Now load returns a pass/fail integer, as well as
347storing the return value in an optional 2nd argument.
348
349Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid
350"performing pointer subtraction with a null pointer has undefined
351behavior" compiler warnings, use uintptr_t and offsetof() that are always
352available during Linux kernel builds to define ACPI_UINTPTR_T and the
353ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code
354in the Linux kernel.
355
356Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted
357by superm1.
358
359executer/exsystem: Inform users about ACPI spec violation for the Stall()
360operator. Values greater than 100 microseconds violate the ACPI
361specification, so warn users about it. From the ACPI Specification
362version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*:
363> The implementation of Stall is OS-specific, but must not relinquish
364> control of the processor. Because of this, delays longer than 100
365> microseconds must use Sleep instead of Stall.
366
367
3682) iASL Compiler/Disassembler and ACPICA tools:
369
370Data Table Compiler/Disassembler: Add support for the APMT table - ARM
371Performance Monitoring Unit table. Submitted by @bwicaksononv.
372
373Data Table Compiler/Disassembler: For MADT, add support for the OEM-
374defined subtables (Types 0x80-0x7F).
375
376Data Table Compiler: Fixed a problem with support for the SDEV table,
377where a subtable Length was not computed correctly.
378
379Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT
380Acpi table support.
381
382Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and
383add template. Submitted by MasterDrogo.
384
385Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz:
386iASL/NHLT: Rename linux specific structures to DeviceInfo to improve
387readability of the code.
388iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint.
389Undocumented bytes at the end of Endpoint Descriptor can be present
390independently of Linux-specific structures. Their size can also vary.
391iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4
392bytes of size and then an amount of bytes specified by size. All of the
393terminators that I've seen had a size equal to 4, but theoretically it
394can vary.
395
396iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
397
398iASL: Remove a remark due to excessive output. Removed a remark for
399duplicate Offset() operators, due to a user complaint.
400
401----------------------------------------
40217 December 2021. Summary of changes for version 20211217:
403
4041) ACPICA kernel-resident subsystem:
405
406Hardware: Do not flush CPU cache when entering S4 and S5. According to
407ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to
408S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of
409the sleep state. Blind cache flush on entering S5 causes problems for
410TDX.
411
412Avoid subobject buffer overflow when validating RSDP signature. Since the
413Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to
414it is only to a 4-char array, and so trying to read past the 4th
415character, as will be done when it is an RSDP, reads beyond the bounds of
416the accessed member. Contributed by jrtc27.
417
418Add support for PCC Opregion special context data. PCC Opregion added in
419ACPIC 6.3 requires special context data similar to GPIO and Generic
420Serial Bus as it needs to know the internal PCC buffer and its length as
421well as the PCC channel index when the opregion handler is being executed
422by the OSPM. Adds support for the special context data needed by PCC
423Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com>
424
4252) iASL Compiler/Disassembler and ACPICA tools:
426
427iASL: Completed compiler support for the NHLT ACPI table.
428
429iASL/NHLT table: Fixed a reported problem where a fault would occur
430during disassembly of a "Linux-Specific" section if the "Specific Data"
431part was not present.
432
433iASL: Added full support (compiler and disassembler) for the AGDI ACPI
434table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>.
435
436iASL: Added full support for the TDEL ACPI table.
437
438iASL table compiler: FADT support updates:
4391) Allow the 32-bit DSDT address to be zero.
4402) Issue error if both the 32-bit and 64-bit DSDT addresses are zero.
441
442iASL: Fix unaligned accesses to local cache allocations. Contributed by
443jrtc27.
444
445iASL: Open binary input files in binary mode, not text mode Affects
446binary input AML files, as well as binary data table files, for
447disassembly.
448
449----------------------------------------
45030 September 2021. Summary of changes for version 20210930:
451
452This release is available at https://acpica.org/downloads
453
4541) ACPICA kernel-resident subsystem:
455
456Hardware: Avoid evaluating methods too early during system resume. During
457wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called
458and it tries to get memory from the OS in order to evaluate a control
459method, but if KFENCE is enabled in the Linux kernel, the memory
460allocation attempt causes an IRQ work to be queued and a self-IPI to be
461sent to the CPU running the code which requires the memory controller to
462be ready, so if that happens too early in the wakeup path, it doesn't
463work.
464
465Prevent that from taking place by calling AcpiGetSleepTypeData() for S0
466upfront, when preparing to enter a given sleep state, and saving the data
467obtained by it for later use during system wakeup.
468
469Added a new _OSI string, "Windows 2020". Posted by superm1.
470
4712) iASL Compiler/Disassembler and ACPICA tools:
472
473iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS
474objects:
475New/latest rules: Under a Device Object:
476         1) If _PRS is present, must have _CRS and _SRS
477         2) If _SRS is present, must have _PRS (_PRS requires _CRS and
478_SRS)
479         3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS
480requires _CRS and _SRS)
481         4) If _SRS is present, probably should have a _DIS (Remark only)
482
483iASL table disassembler: Added disassembly support for the NHLT ACPI
484table. Note: support for Vendor-defined microphone arrays and SNR
485extensions are not supported at this time -- mostly due to a lack of
486example tables. Actual compiler support for NHLT is forthcoming.
487
488Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It
489uses the same subtable structure as the existing Generic Initiator
490Affinity type.
491
492Added the flag for online capable in the MADT, introduced in ACPI 6.3.
493Posted by superm1.
494
4953) ACPICA documentation: Updated the legal info (that appears at the
496start of the Documents) to clarify distribution rights that are granted.
497
498
499----------------------------------------
50030 July 2021. Summary of changes for version 20210730:
501
502This release is available at https://acpica.org/downloads
503
5041) ACPICA kernel-resident subsystem:
505
5062) iASL Compiler/Disassembler and ACPICA tools:
507
508iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021).
509  Under the Device Object:
510  1) If _DIS is present, must have a _CRS and _SRS
511  2) If _PRS is present, must have a _CRS, _DIS, and _SRS
512  3) If _SRS is present, must have a _CRS and _DIS
513A warning will be issued for each of these cases.
514Note: For existing ASL/projects, these warnings may be disabled by
515specifying this on the command line:
516"-vw 3141"
517
518iASL Table Disassembler/Table compiler: Fix for WPBT table with no
519command-line arguments. Handle the case where the Command-line
520Arguments table field does not exist (zero).
521
522Headers: Add new DBG2 Serial Port Subtypes
523The Microsoft Debug Port Table 2 (DBG2) specification revision
524September 21, 2020 comprises additional Serial Port Subtypes [1].
525Reflect that in the actbl1.h header file. Submitted by:
526semihalf-wojtas-marcin
527
528iASL: Add full support for the AEST table (data compiler)
529Includes support in the table compiler and the disassembler.
530
531Add PRMT module header to facilitate parsing.
532This structure is used in to parse PRMT in other Operating Systems
533that relies on using subtable headers in order to parse ACPI tables.
534Although the PRMT doesn't have "subtables" it has a list of module
535information structures that act as subtables.
536
537iASL: Table disassembler: Add missing strings to decode subtable types.
538Includes the MADT and CEDT tables.
539
540
541----------------------------------------
54204 June 2021. Summary of changes for version 20210604:
543
5441) ACPICA kernel-resident subsystem:
545
546Cleaned up (delete) the context mutex during local address handler object
547deletion.
548
549Fixed a memory leak caused by the _CID repair function.
550
551Added support for PlatformRtMechanism OperationRegion handler. Adds a new
552utility function, AcpiUtConvertUuidToString. Writing a buffer to a
553PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
554input buffer contains 26 bytes containing 9 bytes of status, a command
555byte and a 16-byte UUID. This change will simply pass this incoming
556buffer to a handler registered by the OS.
557
5582) iASL Compiler/Disassembler and ACPICA tools:
559
560Added full support for the PRMT ACPI table (Platform Runtime Mechanism
561Table). Includes support in the iASL compiler, the disassembler, and the
562template generator.
563
564Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
565
566Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
567table.
568
569Added full support for the SVKL (Storage Volume Key Location Table) ACPI
570table. Header file support from Kuppuswamy Sathyanarayanan
571<sathyanarayanan.kuppuswamy@linux.intel.com>.
572
573Completed full support for the IVRS (I/O Virtualization Reporting
574Structure) ACPI table. Added compiler support for IVRS, updated
575disassembler support. Adds a new utility, UtIsIdInteger, to determine if
576a HID/CID is an integer or a string.
577
578Headers: Added more structs to the CEDT table: CXL fixed memory window
579structure.
580
581ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
582
583----------------------------------------
58431 March 2021. Summary of changes for version 20210331:
585
586This release is available at https://acpica.org/downloads, and includes
587all ACPI 6.4 support
588
5891) ACPICA kernel-resident subsystem:
590ACPI 6.4: iASL: deprecate DDBHandleObj keyword
591Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
592allocating an object using kmalloc(), but then frees it
593using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
594Fixed a race condition in generic serial bus operation region handler.
595Fixed by Hans de Goede.
596
5972) iASL Compiler/Disassembler and ACPICA tools:
598
599ACPI 6.4: NFIT: add Location Cookie field
600ACPI 6.4: HMAT: add new fields/flags
601ACPI 6.4: Add new flags in SRAT
602ACPI 6.4: add SDEV secure access components
603ACPI 6.4: add Csi2Bus resource template
604ACPI 6.4: add support for PHAT table
605ACPI 6.4: add support for PMTT table
606Add disassembly support for the IVRS table. Compilation of the table is
607not yet complete.
608Fixed a potential infinite loop due to type mismatch. The for-loop is
609using a UINT8 counter and comparing the upper
610limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
611the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
612will wrap around to zero and the loop will never exit. I suspect
613the AslGbl_ExpectedMessagesIndex is never that high, but fixing
614this does future proof the code and cleans up static analysis
615warnings.Colin King.
616iASL/TableCompiler: update it with IORT table E.b revision changes. From
617shamiali2008.
618iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
619off-by: Jean-Philippe Brucker.
620iASL/TableCompiler: Add compilation support for CEDT table. Also, update
621the CEDT template.
622
623----------------------------------------
62405 January 2021. Summary of changes for version 20210105:
625
626This release is available at https://acpica.org/downloads
627
628
6291) ACPICA kernel-resident subsystem:
630
631Updated all copyrights to 2021. This affects all ACPICA source code
632modules.
633
6342) iASL Compiler/Disassembler and ACPICA tools:
635
636ASL test suite (ASLTS): Updated all copyrights to 2021.
637
638Tools and utilities: Updated all signon copyrights to 2021.
639
640iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
641MTMR. Al Stone.
642
643
644----------------------------------------
64517 December 2020. Summary of changes for version 20201217:
646
647This release is available at https://acpica.org/downloads
648
649
6501) ACPICA kernel-resident subsystem:
651
652Note: The implementation of ACPI 6.4 is underway, and is expected to be
653mostly finished next month, when ACPI 6.4 is released.
654
655From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
656several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
657enable this.
658
659AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
660These included a few casts, as well as a null pointer check.
661
662Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
663implicit fallthrough, as well as __attribute__((__fallthrough__)) and
664comments to explicitly denote that cases of fallthrough were intentional.
665Clang also supports this warning and statement attribute, but not the
666comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
667of GCC. With assistance from @nickdesaulniers.
668
6692) iASL Compiler/Disassembler and ACPICA tools:
670
671Added improvement to method call analysis by saving the return type and
672relaxing certain cases of type checking.
673
674iASL Table Compiler: Improved info messages. Added a message to the -T
675option for when the default template (DSDT) is used.
676Also added a note for when multiple SSDTs are created with a DSDT that
677the SSDTs are created in the same file as the DSDT.
678
679
680----------------------------------------
681
68213 November 2020. Summary of changes for version 20201113:
683
684This release is available at https://acpica.org/downloads
685
686
6871) ACPICA kernel-resident subsystem:
688
689Interpreter: fixed a memory leak by using use existing buffer in _HID
690repair. There was a memory leak that occurred when a _CID object is
691defined as a package containing string objects. When _CID is checked for
692any possible repairs, it calls a helper function to repair _HID (because
693_CID basically contains multiple _HID entries). The _HID repair function
694assumes that string objects are standalone objects that are not contained
695inside of any packages. The _HID repair function replaced the string
696object with a brand new object and attempted to delete the old object by
697decrementing the reference count of the old object. Strings inside of
698packages have a reference count of 2 so the _HID repair function leaves
699this object in a dangling state and causes a memory leak. Instead of
700allocating a brand new object and removing the old object, use the
701existing object when repairing the _HID object.
702
703Added function trace macros to improve namespace debugging. The namespace
704repair mechanism does not have function tracing macros. Add several trace
705macros to improve debuggability.
706
707Handle "orphan" _REG methods for GPIO OpRegions. Before this change
708AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
709matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
710Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
711The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
712UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
713to potential issues with checks for OpRegion availability, or in other
714words checks if _REG has been called for the OpRegion which the ACPI code
715wants to use. Except for the "orphan" EC handling, ACPICA core does not
716call _REG on an ACPI node which does not define an OpRegion matching the
717type being registered; and the reference design DSDT, from which most
718Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
719UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
720were assigned ACPI controlled functions in the reference design. Together
721this leads to the perfect storm, at least on the Cherry Trail based
722Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
723and has added the Cherry Trail specific UserDefined(0x93) opregion to its
724GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
725availability check for the standard GeneralPurposeIo OpRegion. This
726clearly is a bug in the DSDT, but this does work under Windows. This
727issue leads to the intel vbtn driver reporting the device always being in
728tablet-mode at boot, even if it is in laptop mode. Which in turn causes
729userspace to ignore touchpad events. So in other words, this issue causes
730the touchpad to not work at boot. This change fixes this by extending the
731"orphan" _REG method handling to also apply to GPIO address-space
732handlers.
733
734
7352) iASL Compiler/Disassembler and ACPICA tools:
736
737iASL: Added more info to namespace dump file (-ln option). In a separate
738section of the dump file (after the main namespace dump), emit the full
739pathname for each namespace node, its type, and the ASL filename and line
740number where it is declared.
741
742AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
743x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
744is omitted, all iASL exceptions are displayed.
745
746iASL: Use StringLiteral instead of StringData for some ASL macros. The
747use of the stringData rule allows for some "string" oriented opcodes
748(Such as ToString, ToHexString, etc.) None of which make sense with the
749macros in question. This change modifies the StringData part of the rule
750for these macros to a simple string  literal - thus disallowing the use
751of ToString, ToHexString, etc.
752The following ASL operators (macros) are affected:
753EisaId
754Fprintf
755Printf
756ToUuid
757Unicode
758Note: The MS compiler requires the use of string literals for these
759operators also.
760
761iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
762the list of "known" UUIDs for the input to the ToUUID macro.
763
764Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
765NFIT table.
766
767
768----------------------------------------
769
77025 September 2020. Summary of changes for version 20200925:
771
772This release is available at https://acpica.org/downloads
773
774
7751) ACPICA kernel-resident subsystem:
776
777Preserve memory opregion mappings. The ACPICA's strategy with respect to
778the handling of memory mappings associated with memory operation regions
779is to avoid mapping the entire region at once which may be problematic at
780least in principle (for example, it may lead to conflicts with
781overlapping mappings having different attributes created by drivers).  It
782may also be wasteful, because memory opregions on some systems take up
783vastchunks of address space while the fields in those regions actually
784accessed by AML are sparsely distributed.
785
786For this reason, a one-page "window" is mapped for a given opregion on
787the first memory access through it and if that "window" does not cover an
788address range accessed through that opregion subsequently, it is unmapped
789and a new "window" is mapped to replace it.  Next, if the new "window" is
790not sufficient to access memory through the opregion in question in the
791future, it will be replaced with yet another "window" and so on.  That
792may lead to a suboptimal sequence of memory mapping and unmapping
793operations, for example if two fields in one opregion separated from each
794other by a sufficiently wide chunk of unused address space are accessed
795in an alternating pattern.
796
797Added support for 64 bit risc-v compilation.  Useful for acpica tools and
798incorporating ACPICA into the Firmware Test Suite. Colin Ian King
799<colin.king@canonical.com>.
800
801Added support for SMBus predefined names (from SMBus Control Method
802Interface Specification, Version 1.0, December 10, 1999. New predefined
803names:
804    _SBA
805    _SBI
806    _SBR
807    _SBT
808    _SBW
809
810AML Disassembler: Added a new command, "All <NameSeg>". This command will
811evaluate all objects in the current namespace whose NameString contains
812the input NameSeg as the last element of the NameString. Useful for
813debugging.
814
815
8162) iASL Compiler/Disassembler and ACPICA tools:
817
818iASL: fixed a crash that occurred when predefined objects return packages
819with lengths that exceed the initializer list.
820
821iASL: added more detail to external resolution error message when
822compiling multiple definition blocks.
823
824iASL: added a remark for an attempt to create a nameseg or namestring
825containing lower-case letters. This should prevent declaring multiple
826namesegs or namestrings in an attempt to refer to different objects (with
827different cases), but actually refer to the same object(s).
828
829iASL: improve alias analysis by saving object type. If the alias is a
830method type, the parameter count is also recorded.
831
832AcpiExec: Increase the default loop timeout value. Was 1 second, is now
83310 seconds. Prevents unnecessary timeouts when executing control methods
834from the command line.
835
836AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
837list. Includes:
838    Memory Device
839    Generic Buttons Device
840    NVDIMM Root Device
841    Control Method Battery
842    Device Graphs for _DSD method
843    Hierarchical Data Extension
844....ARM CoreSight Graph
845
846----------------------------------------
847
848
84917 July 2020. Summary of changes for version 20200717:
850
851This release is available at https://acpica.org/downloads
852
853
8541) ACPICA kernel-resident subsystem:
855
856Do not increment OperationRegion reference counts for field units. Recent
857server firmware has revealed that this reference count can overflow on
858large servers that declare many field units (thousands) under the same
859OperationRegion. This occurs because each field unit declaration will add
860a reference count to the source OperationRegion. This release solves the
861reference count overflow for OperationRegion objects by preventing
862fieldUnits from incrementing their parent OperationRegion's reference
863count.
864
865Replaced one-element arrays with flexible-arrays, which were introduced
866in C99.
867
868Restored the readme file containing the directions for generation of
869ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
870located at: generate/msvc2017/readme.txt
871
8722) iASL Compiler/Disassembler and ACPICA tools:
873
874iASL: Fixed a regression found in version 20200214. Prevent iASL from
875emitting an extra byte of garbage data when control methods declared a
876single parameter type without using braces. This extra byte is known to
877cause a blue screen on the Windows AML interpreter.
878
879iASL: Made a change to allow external declarations to specify the type of
880a named object even when some name segments are not defined.
881This change allows the following ASL code to compile (When DEV0 is not
882defined or not defined yet):
883
884    External (\_SB.DEV0.OBJ1, IntObj)
885    External (\_SB.DEV0, DeviceObj)
886
887iASL: Fixed a problem where method names in "Alias ()" statement could be
888misinterpreted. They are now interpreted correctly as method invocations.
889
890iASL: capture a method parameter count (Within the Method info segment,
891as well as the argument node) when using parameter type lists.
892
893----------------------------------------
894
895
89628 May 2020. Summary of changes for version 20200528:
897
898
8991) ACPICA kernel-resident subsystem:
900
901Removed old/obsolete Visual Studio files which were used to build the
902Windows versions of the ACPICA tools. Since we have moved to Visual
903Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
904project files. The new subdirectory and solution file are located at:
905
906    acpica/generate/msvc2017/AcpiComponents.sln
907
908
9092) iASL Compiler/Disassembler and ACPICA tools:
910
911iASL: added support for a new OperationRegion Address Space (subtype):
912PlatformRtMechanism. Support for this new keyword is being released for
913early prototyping. It will appear in the next release of the ACPI
914specification.
915
916iASL: do not optimize the NameString parameter of the CondRefOf operator.
917In the previous iASL compiler release, the NameString parameter of the
918CondRefOf was optimized. There is evidence that some implementations of
919the AML interpreter do not perform the recursive search-to-parent search
920during the execution of the CondRefOf operator. Therefore, the CondRefOf
921operator behaves differently when the NameString parameter is a single
922name segment (a NameSeg) as opposed to a full NamePath (starting at the
923root scope) or a NameString containing parent prefixes.
924
925iASL: Prevent an inadvertent remark message. This change prevents a
926remark if within a control method the following exist:
9271) An Operation Region is defined, and
9282) A Field operator is defined that refers to the region.
929This happens because at the top level, the Field operator does not
930actually create a new named object, it simply references the operation
931region.
932
933Removed support for the acpinames utility. The acpinames was a simple
934utility used to populate and display the ACPI namespace without executing
935any AML code. However, ACPICA now supports executable opcodes outside of
936control methods. This means that executable AML opcodes such as If and
937Store opcodes need to be executed during table load. Therefore, acpinames
938would need to be updated to match the same behavior as the acpiexec
939utility and since acpiexec can already dump the entire namespace (via the
940'namespace' command), we no longer have the need to maintain acpinames.
941
942    In order to dump the contents of the ACPI namespace using acpiexec,
943execute the following command from the command line:
944
945        acpiexec -b "n" [aml files]
946
947----------------------------------------
948
949
95030 April 2020. Summary of changes for version 20200430:
951
9521) ACPICA kernel-resident subsystem:
953
954Cleaned up the coding style of a couple of global variables
955(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
956AcpiProtocolLengths was made static, and the definition of
957AcpiGbl_NextCmdNum was moved to acglobal.h.
958
959
9602) iASL Compiler/Disassembler and ACPICA tools:
961
962iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
963associated with a field.
964
965Disassembler: has been made more resilient so that it will continue to
966parse AML even if the AML generates ACPI namespace errors. This enables
967iASL to disassemble some AML that may have been compiled using older
968versions of iASL that no longer compile with newer versions of iASL.
969
970iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
971was a mixup where _NIG required one parameter and _NIH required zero
972parameters. This change swaps these parameter requirements. Now it is
973required that _NIH must be called with one parameter and _NIG requires
974zero parameters.
975
976iASL: Allow use of undefined externals as long as they are protected by
977an if (CondRefOf (...)) block when compiling multiple definition blocks.
978
979iASL: Fixed the type override behavior of named objects that are declared
980as External. External declarations will no longer override the type of
981the actual definition if it already exists.
982
983AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
984command line wildcard support on Windows. Note: the AcpiNames utility is
985essentially redundant with the AcpiExec utility (using the "namespace"
986command) and is therefore deprecated. It will be removed in future
987releases of ACPICA.
988
989Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
990operators. The disassembler is intended to emit existing ASL code as-is.
991Therefore, error messages emitted during disassembly should be ignored or
992handled in a way such that the disassembler can continue to parse the
993AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
994parsing for create operators in order to complete parsing ASL termlists.
995
996iASL DataTable Compiler: IVRS table: fix potentially uninitialized
997variable warning. Some compilers catch potential uninitialized variables.
998This is done by examining branches of if/else statements. This change
999replaces an "else if" with an "else" to fix the uninitialized variable
1000warning.
1001
1002
1003----------------------------------------
100426 March 2020. Summary of changes for version 20200326:
1005
1006
10071) ACPICA kernel-resident subsystem:
1008
1009Performed a code clean-up to prevent build errors on early versions of
1010GCC-10.
1011
1012Added the NHLT table signature. iASL data table compiler/disassembler
1013support for this table is coming soon.
1014
1015
10162) iASL Compiler/Disassembler and ACPICA tools:
1017
1018AcpiExec: Fixed several problems with the namespace initialization file
1019(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
1020errors, several seg faults, and enhancements to line parsing within the
1021init file. In addition, each object found in the init file and it's new
1022value is displayed, as well as any such entries that do not have a
1023corresponding name in the namespace. For reference, the syntax for the
1024various supported data types are presented below:
1025	PCHG 0x777788889999BBBB	// Integer
1026	\DEV1.STR1 "XYZ"			// String
1027	BUF1 (88 99 AA)			// Buffer
1028	PKG1 [0x1111 0x2222]		// Package
1029	\BF1 0x7980				// BufferField
1030	RCRV 0x0123456789ABCDEF	// Field Unit
1031
1032iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
1033can be used anywhere in a given ASL file to configure iASL to expect an
1034iASL compiler error code on the line where this macro was placed. If the
1035error code does not exist, an error is generated. This is intended to be
1036used for ACPICA's ASL test suite, but can be used by ASL developers as
1037well.
1038
1039iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
1040IVRS table parsing supported only IVHD type 10h structures. Parsing an
1041IVHD type 11h caused the iasl to report unknown subtable type. Add
1042necessary structure definition for IVHD type 11h and apply correct
1043parsing method based on subtable type. Micha? ?ygowski.
1044
1045iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
1046According to AMD IOMMU Specification Revision 3.05 the reserved field
1047should be IOMMU Feature Reporting. Change the name of the field to the
1048correct one. Micha? ?ygowski.
1049
1050acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
1051based on suggestions by David Seifert and Benjamin Berg.
1052
1053iASL: table compiler: removed an unused variable (DtCompilerParserResult)
1054causing linking errors. Patch based on suggestions by David Seifert and
1055Benjamin Berg.
1056
1057iASL: table compiler: make LexBuffer static to avoid linking errors in
1058newer compilers. Patch based on suggestions by David Seifert and Benjamin
1059Berg.
1060
1061iASL: fixed type matching between External and Named objects. External
1062object types can only be expressed with ACPI object type values that are
1063defined in the ACPI spec. However, iASL uses ACPI object type values that
1064are local to ACPICA in addition to the values defined in the ACPI spec.
1065This change implements type matching to map some object type values
1066specific to ACPICA to ones that are defined in the ACPI spec.
1067
1068iASL: Dropped the type mismatch compiler error that can arise from
1069External declarations to a warning. This warning can occur when there is
1070a type difference between the external declaration and the actual object
1071declaration (when compiling multiple files/modules simultaneously).
1072
1073iASL: removed an incorrect error message regarding externals. This change
1074removes an incorrect error that is emitted when a duplicate external
1075declaration does not contain a type that opens a scope. This is incorrect
1076because the duplicate external with conflicting types are already caught
1077by iASL and it doesn't make any sense to enforce what this conflicting
1078type should be.
1079
1080AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
1081surrounded by parens. Otherwise, a logical statement that applies a
1082logical not operator to this macro could result in a computation that
1083applies the operator to the left side of the logical and but not the
1084right. Reported-by: John Levon <john.levon@joyent.com>
1085
1086Fixed a problem with the local version of sprint(): On 32-bit, the
1087provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
1088String + Size will wrap, meaning End < Start, and
1089AcpiUtBoundStringOutput() will never output anything as a result. The
1090symptom seen of this was acpixtract failing to output anything -- with a
1091custom build that included utprint.c. Signed-off-by: John Levon
1092<john.levon@joyent.com>
1093
1094iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
1095ACPI specification.
1096
1097
1098----------------------------------------
109914 February 2020. Summary of changes for version 20200214:
1100
1101
11021) ACPICA kernel-resident subsystem:
1103
1104Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
1105in a guest when it receives a sleep trigger from the hypervisor. When the
1106guest resumes from this power state, it does not see the SleepEnabled
1107bit. In other words, the sleepHibernation (S4) is triggered in a guest
1108when it receives a sleep trigger from the hypervisor. When the guest
1109resumes from this power state, it does not see the SleepEnabled bit. In
1110other words, the sleep button is not enabled on waking from an S4 state.
1111This causes subsequent invocation of sleep state to fail since the
1112guest.button is not enabled on waking from an S4 state. This causes
1113subsequent invocation of sleep state to fail in the guest. Fix this
1114problem by enabling the sleep button in ACPI legacy wake. From Anchal
1115Agarwal <anchalag@amazon.com>.
1116
1117Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
1118for checking the status bits of all enabled GPEs in one go. It is needed
1119to distinguish spurious SCIs from genuine ones when deciding whether or
1120not to wake up the system from suspend-to-idle.
1121
1122Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
1123using HOST in their environment to represent the host name for their
1124machines. Avoid this problem by renaming this variable from HOST to
1125ACPI_HOST.
1126
1127MSVC 2017 project files: Enable multiprocessor generation to improve
1128build performance.
1129
1130Added a macro to get the byte width of a Generic Address structure. New
1131ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
1132ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
1133
1134
11352) iASL Compiler/Disassembler and ACPICA tools:
1136
1137iASL: Implemented full support for the (optional, rarely used) ReturnType
1138and ParameterTypesList for the Method, Function, and External operators.
1139For Method declarations, the number of individual ParameterTypes must
1140match the declaration of the number of arguments (NumArgs). This also
1141Fixes a problem with the External operator where extra/extraneous bytes
1142were emitted in the AML code if the optional ReturnType/ParameterTypes
1143were specified for a MethodObj declaration.
1144New error message:
11451) Method NumArgs count does not match length of ParameterTypes list
1146
1147iASL: Implemented detection of type mismatches between External
1148declarations and named object declarations. Also, detect type mismatches
1149between multiple External declarations of the same Name.
1150New error messages:
11511) Type mismatch between external declaration and actual object
1152declaration detected
11532) Type mismatch between multiple external declarations detected
1154
1155iASL: Implemented new error messages for External operators that specify
1156a ReturnType and/or ParameterTypesList for any object type other than
1157control methods (MethodObj).
1158New error messages:
11591) Return type is only allowed for Externals declared as MethodObj
11602) Parameter type is only allowed for Externals declared as MethodObj
1161
1162iASL: Implemented two new remark/warning messages for ASL code that
1163creates named objects from within a control method. This is very
1164inefficient since the named object must be created and deleted each time
1165the method is executed.
1166New messages:
11671) Creation of named objects within a method is highly inefficient, use
1168globals or method local variables instead (remark)
11692) Static OperationRegion should be declared outside control method
1170(warning)
1171
1172iASL: Improved illegal forward reference detection by adding support to
1173detect forward-reference method invocations.
1174
1175iASL: Detect and issue an error message for NameStrings that contain too
1176many individual NameSegs (>255). This is an AML limitation that is
1177defined in the ACPI specification.
1178New message:
11791) NameString contains too many NameSegs (>255)
1180
1181acpidump: windows: use GetSystemFirmwareTable API for all tables except
1182SSDT. By using this API, acpidump is able to get all tables in the XSDT
1183
1184iASL: Removed unused parser file and updated msvc2017 project files.
1185Removed the obsolete AslCompiler.y from the repository.
1186
1187iASL: msvc2017: Fixed macros in the file dependency list to prevent
1188unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
1189
1190Disassembler: Prevent spilling error messages to the output file. All
1191errors are directed to the console instead. These error messages
1192prevented re-compilation of the resulting disassembled ASL output file
1193(.DSL).
1194
1195
1196----------------------------------------
119710 January 2020. Summary of changes for version 20200110:
1198
1199
12001) ACPICA kernel-resident subsystem:
1201
1202Updated all copyrights to 2020. This affects all ACPICA source code
1203modules.
1204
1205
12062) iASL Compiler/Disassembler and ACPICA tools:
1207
1208ASL test suite (ASLTS): Updated all copyrights to 2020.
1209
1210Tools and utilities: Updated all signon copyrights to 2020.
1211
1212iASL: fix forward reference analysis for field declarations. Fixes
1213forward reference analysis for field declarations by searching the
1214parent scope for the named object when the object is not present in
1215the current scope.
1216
1217iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
1218full pathname of the name that already exists is printed.
1219
1220iASL: Enhance duplicate Case() detection for buffers. Add check for
1221buffers with no initializer list (these buffers will be filled with
1222zeros at runtime.)
1223
1224
1225----------------------------------------
122613 December 2019. Summary of changes for version 20191213:
1227
1228
12291) ACPICA kernel-resident subsystem:
1230
1231Return a Buffer object for all fields created via the CreateField
1232operator. Previously, an Integer would be returned if the size of
1233the field was less than or equal to the current size of an Integer.
1234Although this goes against the ACPI specification, it provides
1235compatibility with other ACPI implementations. Also updated the
1236ASLTS test suite to reflect this new behavior.
1237
12382) iASL Compiler/Disassembler and ACPICA tools:
1239
1240iASL: Implemented detection of (and throw an error for) duplicate
1241values for Case statements within a single Switch statement. Duplicate
1242Integers, Strings, and Buffers are supported.
1243
1244iASL: Fix error logging issue during multiple file compilation --
1245Switch to the correct input file during error node creation.
1246
1247iASL: For duplicate named object creation, now emit an error instead
1248of a warning - since this will cause a runtime error.
1249
1250AcpiSrc: Add unix line-ending support for non-Windows builds.
1251
1252iASL: Add an error condition for an attempt to create a NameString
1253with > 255 NameSegs (the max allowable via the AML definition).
1254
1255
1256----------------------------------------
125718 October 2019. Summary of changes for version 20191018:
1258
1259
12601) ACPICA kernel-resident subsystem:
1261
1262Debugger: added a new command: ?Fields [address space ID]?. This command
1263dumps the contents of all field units that are defined within the
1264namespace with a particular address space ID.
1265
1266Modified the external interface AcpiLoadTable() to return a table index.
1267This table index can be used for unloading a table for debugging.
1268    ACPI_STATUS
1269    AcpiLoadTable (
1270        ACPI_TABLE_HEADER       *Table,
1271        UINT32                  *TableIndex))
1272
1273Implemented a new external interface: AcpiUnloadTable() This new function
1274takes a table index as an argument and unloads the table. Useful for
1275debugging only.
1276    ACPI_STATUS
1277    AcpiUnloadTable (
1278        UINT32                  TableIndex))
1279
1280Ported the AcpiNames utility to use the new table initialization
1281sequence. The utility was broken before this change. Also, it was
1282required to include most of the AML interpreter into the utility in order
1283to process table initialization (module-level code execution.)
1284
1285Update for results from running Clang V8.0.1. This fixes all "dead
1286assignment" warnings. There are still several "Dereference of NULL
1287pointer" warnings, but these have been found to be false positive
1288warnings.
1289
1290
12912) iASL Compiler/Disassembler and ACPICA tools:
1292
1293iASL: numerous table compiler changes to ensure that the usage of
1294yacc/bison syntax is POSIX-compliant.
1295
1296iASL/disassembler: several simple bug fixes in the data table
1297disassembler.
1298
1299Acpiexec: expanded the initialization file (the -fi option) to initialize
1300strings, buffers, packages, and field units.
1301
1302
1303----------------------------------------
130416 August 2019. Summary of changes for version 20190816:
1305
1306This release is available at https://acpica.org/downloads
1307
1308
13091) ACPICA kernel-resident subsystem:
1310
1311Modified the OwnerId mechanism to allow for more Owner Ids. The previous
1312limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
1313exceptions on machines with a large number of initialization threads,
1314many CPU cores and nested initialization control methods.
1315
1316Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
1317checking if the given GPE (as represented by a GPE device handle and a
1318GPE number) is currently active and dispatching it (if that's the case)
1319outside of interrupt context.
1320
1321Table load: exit the interpreter before initializing objects within the
1322new table This prevents re-acquiring the interpreter lock when loading
1323tables
1324
1325Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
1326uk Kim
1327
1328Macros: removed pointer math on a null pointer. Causes warnings on some
1329compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
1330instead of using arithmetic.
1331
1332Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
1333across all "printf-like" internal functions. Also, cleanup all calls to
1334such functions (both in 32-bit mode and 64-bit mode) now that they are
1335analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
1336
1337
13382) iASL Compiler/Disassembler and ACPICA tools:
1339
1340iASL: implemented a new data table compiler flex/bison front-end. This
1341change is internal and is not intended to result in changes to the
1342compiled code. This new compiler front-end can be invoked using the -tp
1343option for now, until the old mechanism is removed.
1344
1345ASLTS: Implemented a new data table compiler test suite. This test suite
1346generates all table templates and compile/disassemble/re-compile/binary-
1347compare each file.
1348
1349iASL: return -1 if AML files were not generated due to compiler errors
1350
1351iASL: added a warning on use of the now-legacy ASL Processor () keyword.
1352
1353iASL: added an error on _UID object declaration that returns a String
1354within a Processor () declaration. A _UID for a processor must be an
1355Integer.
1356
1357iASL: added a null terminator to name strings that consist only of
1358multiple parent prefixes (^)
1359
1360iASL: added support to compile both ASL and data table files in a single
1361command.
1362
1363Updated the tool generation project files that were recently migrated to
1364MSVC 2017 to eliminate all new warnings. The new project files appear in
1365the directory \acpica\generate\msvc2017. This change effectively
1366deprecates the older project files in \acpica\generate\msvc9.
1367
1368
1369----------------------------------------
137003 July 2019. Summary of changes for version 20190703:
1371
1372
13731) ACPICA kernel-resident subsystem:
1374
1375Remove legacy module-level support code. There were still some remnants
1376of the legacy module-level code executions. Since we no longer support
1377this option, this is essentially dead code and has been removed from the
1378ACPICA source.
1379
1380iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1381scope. If these named objects are declared outside the root scope, they
1382will not be invoked by any host Operating System.
1383
1384Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
1385one) can be enabled in two situations. First, the GPEs with existing _Lxx
1386and _Exx methods are enabled implicitly by ACPICA during system
1387initialization.  Second, the GPEs without these methods (like GPEs listed
1388by _PRW objects for wakeup devices) need to be enabled directly by the
1389code that is going to use them (e.g. ACPI power management or device
1390drivers).
1391
1392In the former case, if the status of a given GPE is set to start with,
1393its handler method (either _Lxx or _Exx) needs to be invoked to take care
1394of the events (possibly) signaled before the GPE was enabled. In the
1395latter case, however, the first caller of AcpiEnableGpe() for a given GPE
1396should not be expected to care about any events that might be signaled
1397through it earlier.  In that case, it is better to clear the status of
1398the GPE before enabling it, to prevent stale events from triggering
1399unwanted actions (like spurious system resume, for example).
1400
1401For this reason, modify AcpiEvAddGpeReference() to take an additional
1402boolean argument indicating whether or not the GPE status needs to be
1403cleared when its reference counter changes from zero to one and make
1404AcpiEnableGpe() pass TRUE to it through that new argument.
1405
1406
14072) iASL Compiler/Disassembler and ACPICA tools:
1408
1409The tool generation process has been migrated to MSVC 2017, and all
1410project files have been upgraded. The new project files appear in the
1411directory \acpica\generate\msvc2017. This change effectively deprecates
1412the older project files in \acpica\generate\msvc9.
1413
1414iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1415scope. If these named objects are declared outside the root scope, they
1416will not be invoked by any host Operating System
1417
1418----------------------------------------
141909 May 2019. Summary of changes for version 20190509:
1420
1421
14221) ACPICA kernel-resident subsystem:
1423
1424Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
1425them") that causes problems with Thunderbolt controllers to occur if a
1426dock device is connected at init time (the xhci_hcd and thunderbolt
1427modules crash which prevents peripherals connected through them from
1428working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
1429Dispatch active GPEs at init time") to get undone, so the problem
1430addressed by commit ecc1165b8b74 appears again as a result of it.
1431
1432
14332) iASL Compiler/Disassembler and ACPICA tools:
1434
1435Reverted iASL: Additional forward reference detection. This change
1436reverts forward reference detection for field declarations. The feature
1437unintentionally emitted AML bytecode with incorrect package lengths for
1438some ASL code related to Fields and OperationRegions. This malformed AML
1439can cause systems to crash
1440during boot. The malformed AML bytecode is emitted in iASL version
144120190329 and 20190405.
1442
1443iASL: improve forward reference detection. This change improves forward
1444reference detection for named objects inside of scopes. If a parse object
1445has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
1446a named object that is declared later in the AML bytecode. This is
1447allowed if the reference is inside of a method and the declaration is
1448outside of a method like so:
1449
1450DefinitionBlock(...)
1451{
1452    Method (TEST)
1453    {
1454        Return (NUM0)
1455    }
1456    Name (NUM0,0)
1457}
1458
1459However, if the declaration and reference are both in the same method or
1460outside any methods, this is a forward reference and should be marked as
1461an error because it would result in runtime errors.
1462
1463DefinitionBlock(...)
1464{
1465    Name (BUFF, Buffer (NUM0) {}) // Forward reference
1466    Name (NUM0, 0x0)
1467
1468    Method (TEST)
1469    {
1470        Local0 = NUM1
1471        Name (NUM1, 0x1) // Forward reference
1472        return (Local0)
1473    }
1474}
1475
1476iASL: Implemented additional buffer overflow analysis for BufferField
1477declarations. Check if a buffer index argument to a create buffer field
1478operation is beyond the end of the target buffer.
1479
1480This affects these AML operators:
1481
1482   AML_CREATE_FIELD_OP
1483   AML_CREATE_BIT_FIELD_OP
1484   AML_CREATE_BYTE_FIELD_OP
1485   AML_CREATE_WORD_FIELD_OP
1486   AML_CREATE_DWORD_FIELD_OP
1487   AML_CREATE_QWORD_FIELD_OP
1488
1489 There are three conditions that must be satisfied in order to allow this
1490validation at compile time:
1491
1492   1) The length of the target buffer must be an integer constant
1493   2) The index specified in the create* must be an integer constant
1494   3) For CreateField, the bit length argument must be non-zero.
1495
1496Example:
1497    Name (BUF1, Buffer() {1,2})
1498    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1499
1500dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1501Error    6165 -                           ^ Buffer index beyond end of
1502target buffer
1503
1504
1505----------------------------------------
150605 April 2019. Summary of changes for version 20190405:
1507
1508
15091) ACPICA kernel-resident subsystem:
1510
1511Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
1512unconditionally clearing ACPI IRQs during suspend/resume") was added
1513earlier to stop clearing of event status bits unconditionally on suspend
1514and resume paths. Though this change fixed an issue on suspend path, it
1515introduced regressions on several resume paths. In the case of S0ix,
1516events are enabled as part of device suspend path. If status bits for the
1517events are set when they are enabled, it could result in premature wake
1518from S0ix. If status is cleared for any event that is being enabled so
1519that any stale events are cleared out. In case of S0ix, events are
1520enabled as part of device suspend path. If status bits for the events are
1521set when they are enabled, it could result in premature wake from S0ix.
1522
1523This change ensures that status is cleared for any event that is being
1524enabled so that any stale events are cleared out.
1525
1526
15272) iASL Compiler/Disassembler and ACPICA tools:
1528
1529iASL: Implemented an enhanced multiple file compilation that combines
1530named objects from all input files to a single namespace. With this
1531feature, any unresolved external declarations as well as duplicate named
1532object declarations can be detected during compilation rather than
1533generating errors much later at runtime. The following commands are
1534examples that utilize this feature:
1535    iasl dsdt.asl ssdt.asl
1536    iasl dsdt.asl ssdt1.asl ssdt2.asl
1537    iasl dsdt.asl ssdt*.asl
1538
1539----------------------------------------
154029 March 2019. Summary of changes for version 20190329:
1541
1542
15431) ACPICA kernel-resident subsystem:
1544
1545Namespace support: Remove the address nodes from global list after method
1546termination. The global address list contains pointers to namespace nodes
1547that represent Operation Regions. This change properly removes Operation
1548Region namespace nodes that are declared dynamically during method
1549execution.
1550
1551Linux: Use a different debug default than ACPICA. There was a divergence
1552between Linux and the ACPICA codebases. In order to resolve this
1553divergence, Linux now declares its own debug default in aclinux.h
1554
1555Renamed some internal macros to improve code understanding and
1556maintenance. The macros below all operate on single 4-character ACPI
1557NameSegs, not generic strings (old -> new):
1558    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
1559    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
1560    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
1561
1562Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
1563table.
1564
1565Test suite: Update makefiles, add PCC operation region support
1566
1567
15682) iASL Compiler/Disassembler and Tools:
1569
1570iASL: Implemented additional illegal forward reference detection. Now
1571detect and emit an error upon detection of a forward reference from a
1572Field to an Operation Region. This will fail at runtime if allowed to
1573pass the compiler.
1574
1575AcpiExec: Add an address list check for dynamic Operation Regions. This
1576feature performs a sanity test for each node the global address list.
1577This is done in order to ensure that all dynamic operation regions are
1578properly removed from the global address list and no dangling pointers
1579are left behind.
1580
1581Disassembler: Improved generation of resource pathnames. This change
1582improves the code that generates resource descriptor and resource tag
1583pathnames. The original code used a bunch of str* C library functions
1584that caused warnings on some compilers.
1585
1586iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
1587function can overwrite buffers if the calling code is not very careful.
1588In the case of generating a module/table header, use of memmove is a
1589better implementation.
1590
1591
15923) Status of new features that have not been completed at this time:
1593
1594iASL: Implementing an enhanced multiple file compilation into a single
1595namespace feature (Status): This feature will be released soon, and
1596allows multiple ASL files to be compiled into the same single namespace.
1597By doing so, any unresolved external declarations as well as duplicate
1598named object declarations can be detected during compilation (rather than
1599later during runtime). The following commands are examples that utilize
1600this feature:
1601    iasl dsdt.asl ssdt.asl
1602    iasl dsdt.asl ssdt1.asl ssdt2.asl
1603    iasl dsdt.asl ssdt*.asl
1604
1605ASL tutorial status: Feedback is being gathered internally and the
1606current plan is to publish this tutorial on the ACPICA website after a
1607final review by a tech writer.
1608
1609----------------------------------------
161015 February 2019. Summary of changes for version 20190215:
1611
1612
16130) Support for ACPI specification version 6.3:
1614
1615Add PCC operation region support for the AML interpreter. This adds PCC
1616operation region support in the AML interpreter and a default handler for
1617acpiexec. The change also renames the PCC region address space keyword to
1618PlatformCommChannel.
1619
1620Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
1621These methods provide OSPM with health information and device boot
1622status.
1623
1624PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
1625defines if the trigger needs to be invoked by OSPM before or at the end
1626of kernel crash dump processing/handling operation.
1627
1628SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
1629is used for describing devices such as heterogeneous processors,
1630accelerators, GPUs, and IO devices with integrated compute or DMA
1631engines.
1632
1633MADT: Add support for statistical profiling in GICC. Statistical
1634profiling extension (SPE) is an architecture-specific feature for ARM.
1635
1636MADT: Add online capable flag. If this bit is set, system hardware
1637supports enabling this processor during OS runtime.
1638
1639New Error Disconnect Recover Notification value. There are a number of
1640scenarios where system Firmware in collaboration with hardware may
1641disconnect one or more devices from the rest of the system for purposes
1642of error containment. Firmware can use this new notification value to
1643alert OSPM of such a removal.
1644
1645PPTT: New additional fields in Processor Structure Flags. These flags
1646provide more information about processor topology.
1647
1648NFIT/Disassembler: Change a field name from "Address Range" to "Region
1649Type".
1650
1651HMAT updates: make several existing fields to be reserved as well as
1652rename subtable 0 to "memory proximity domain attributes".
1653
1654GTDT: Add support for new GTDT Revision 3. This revision adds information
1655for the EL2 timer.
1656
1657iASL: Update the HMAT example template for new fields.
1658
1659iASL: Add support for the new revision of the GTDT (Rev 3).
1660
1661
16621) ACPICA kernel-resident subsystem:
1663
1664AML Parser: fix the main AML parse loop to correctly skip erroneous
1665extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
1666byte extended opcodes. If an error occurs during an AML table load, the
1667AML parser will continue loading the table by skipping the offending
1668opcode. This implements a "load table at any cost" philosophy.
1669
1670
16712) iASL Compiler/Disassembler and Tools:
1672
1673iASL: Add checks for illegal object references, such as a reference
1674outside of method to an object within a method. Such an object is only
1675temporary.
1676
1677iASL: Emit error for creation of a zero-length operation region. Such a
1678region is rather pointless. If encountered, a runtime error is also
1679implemented in the interpreter.
1680
1681Debugger: Fix a possible fault with the "test objects" command.
1682
1683iASL: Makefile: support parent directory filenames containing embedded
1684spaces.
1685
1686iASL: Update the TPM2 template to revision 4.
1687
1688iASL: Add the ability to report specific warnings or remarks as errors.
1689
1690Disassembler: Disassemble OEMx tables as actual AML byte code.
1691Previously, these tables were treated as "unknown table".
1692
1693iASL: Add definition and disassembly for TPM2 revision 3.
1694
1695iASL: Add support for TPM2 rev 3 compilation.
1696
1697
1698----------------------------------------
169908 January 2019. Summary of changes for version 20190108:
1700
1701
17021) ACPICA kernel-resident subsystem:
1703
1704Updated all copyrights to 2019. This affects all source code modules.
1705
1706
17072) iASL Compiler/Disassembler and Tools:
1708
1709ASL test suite (ASLTS): Updated all copyrights to 2019.
1710
1711Tools: Updated all signon copyrights to 2019.
1712
1713AcpiExec: Added a new option to dump extra information concerning any
1714memory leaks detected by the internal object/cache tracking mechanism. -
1715va
1716
1717iASL: Updated the table template for the TPM2 table to the newest version
1718of the table (Revision 4)
1719
1720
1721----------------------------------------
172213 December 2018. Summary of changes for version 20181213:
1723
1724
17251) ACPICA Kernel-resident Subsystem:
1726
1727Fixed some buffer length issues with the GenericSerialBus, related to two
1728of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
1729which are rarely seen in the field. For these, the LEN field of the ASL
1730buffer is now ignored. Hans de Goede
1731
1732Implemented a new object evaluation trace mechanism for control methods
1733and data objects. This includes nested control methods. It is
1734particularly useful for examining the ACPI execution during system
1735initialization since the output is relatively terse. The flag below
1736enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
1737   #define ACPI_LV_EVALUATION          0x00080000
1738
1739Examples:
1740   Enter evaluation       :  _SB.PCI0._INI (Method)
1741   Exit evaluation        :  _SB.PCI0._INI
1742   Enter evaluation       :  _OSI (Method)
1743   Exit evaluation        :  _OSI
1744   Enter evaluation       :  _SB.PCI0.TEST (Method)
1745   Nested method call     :     _SB.PCI0.NST1
1746   Exit nested method     :     _SB.PCI0.NST1
1747   Exit evaluation        :  _SB.PCI0.TEST
1748
1749Added two recently-defined _OSI strings. See
1750https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
1751osi.
1752   "Windows 2018"
1753   "Windows 2018.2"
1754
1755Update for buffer-to-string conversions via the ToHexString ASL operator.
1756A "0x" is now prepended to each of the hex values in the output string.
1757This provides compatibility with other ACPI implementations. The ACPI
1758specification is somewhat vague on this issue.
1759   Example output string after conversion:
1760"0x01,0x02,0x03,0x04,0x05,0x06"
1761
1762Return a run-time error for TermArg expressions within individual package
1763elements. Although this is technically supported by the ASL grammar,
1764other ACPI implementations do not support this either. Also, this fixes a
1765fault if this type of construct is ever encountered (it never has been).
1766
1767
17682) iASL Compiler/Disassembler and Tools:
1769
1770iASL: Implemented a new compile option (-ww) that will promote individual
1771warnings and remarks to errors. This is intended to enhance the firmware
1772build process.
1773
1774AcpiExec: Implemented a new command-line option (-eo) to support the new
1775object evaluation trace mechanism described above.
1776
1777Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1778instead of a "unknown table" message.
1779
1780AcpiHelp: Improved support for the "special" predefined names such as
1781_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
1782used for "xx" and "x".
1783
1784----------------------------------------
178531 October 2018. Summary of changes for version 20181031:
1786
1787
1788An Operation Region regression was fixed by properly adding address
1789ranges to a global list during initialization. This allows OS to
1790accurately check for overlapping regions between native devices (such as
1791PCI) and Operation regions as well as checking for region conflicts
1792between two Operation Regions.
1793
1794Added support for the 2-byte extended opcodes in the code/feature that
1795attempts to continue parsing during the table load phase. Skip parsing
1796Device declarations (and other extended opcodes) when an error occurs
1797during parsing. Previously, only single-byte opcodes were supported.
1798
1799Cleanup: Simplified the module-level code support by eliminating a
1800useless global variable (AcpiGbl_GroupModuleLeveCode).
1801
1802
18032) iASL Compiler/Disassembler and Tools:
1804
1805iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1806could cause a fault in the preprocessor. This was an inadvertent side-
1807effect from moving more allocations/frees to the local cache/memory
1808mechanism.
1809
1810iASL: Enhanced error detection by validating that all NameSeg elements
1811within a NamePatch actually exist. The previous behavior was spotty at
1812best, and such errors could be improperly ignored at compiler time (never
1813at runtime, however. There are two new error messages, as shown in the
1814examples below:
1815
1816dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
1817Error    6161 -                              ^ One or more objects within
1818the Pathname do not exist (TTTT.BXXX)
1819
1820dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1821Error    6160 -        One or more prefix Scopes do not exist ^
1822(BBBB.CBF1)
1823
1824iASL: Disassembler/table-compiler: Added support for the static data
1825table TPM2 revision 3 (an older version of TPM2). The support has been
1826added for the compiler and the disassembler.
1827
1828Fixed compilation of DOS format data table file on Unix/Linux systems.
1829iASL now properly detects line continuations (\) for DOS format data
1830table definition language files on when executing on Unix/Linux.
1831
1832----------------------------------------
183303 October 2018. Summary of changes for version 20181003:
1834
1835
18362) iASL Compiler/Disassembler and Tools:
1837
1838Fixed a regression introduced in version 20180927 that could cause the
1839compiler to fault, especially with NamePaths containing one or more
1840carats (^). Such as: ^^_SB_PCI0
1841
1842Added a new remark for the Sleep() operator when the sleep time operand
1843is larger than one second. This is a very long time for the ASL/BIOS code
1844and may not be what was intended by the ASL writer.
1845
1846----------------------------------------
184727 September 2018. Summary of changes for version 20180927:
1848
1849
18501) ACPICA kernel-resident subsystem:
1851
1852Updated the GPE support to clear the status of all ACPI events when
1853entering any/all sleep states in order to avoid premature wakeups. In
1854theory, this may cause some wakeup events to be missed, but the
1855likelihood of this is small. This change restores the original behavior
1856of the ACPICA code in order to fix a regression seen from the previous
1857"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1858This regression could cause some systems to incorrectly wake immediately.
1859
1860Updated the execution of the _REG methods during initialization and
1861namespace loading to bring the behavior into closer conformance to the
1862ACPI specification and other ACPI implementations:
1863
1864From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1865    "Control methods must assume all operation regions are inaccessible
1866until the _REG(RegionSpace, 1) method is executed"
1867
1868    "The exceptions to this rule are:
18691.  OSPM must guarantee that the following operation regions are always
1870accessible:
1871    SystemIO operation regions.
1872    SystemMemory operation regions when accessing memory returned by the
1873System Address Map reporting interfaces."
1874
1875Since the state of both the SystemIO and SystemMemory address spaces are
1876defined by the specification to never change, this ACPICA change ensures
1877that now _REG is never called on them. This solves some problems seen in
1878the field and provides compatibility with other ACPI implementations. An
1879update to the upcoming new version of the ACPI specification will help
1880clarify this behavior.
1881
1882Updated the implementation of support for the Generic Serial Bus. For the
1883"bidirectional" protocols, the internal implementation now automatically
1884creates a return data buffer of the maximum size (255). This handles the
1885worst-case for data that is returned from the serial bus handler, and
1886fixes some problems seen in the field. This new buffer is directly
1887returned to the ASL. As such, there is no true "bidirectional" buffer,
1888which matches the ACPI specification. This is the reason for the "double
1889store" seen in the example ASL code in the specification, shown below:
1890
1891Word Process Call (AttribProcessCall):
1892    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1893    Field(TOP1, BufferAcc, NoLock, Preserve)
1894    {
1895        FLD1, 8, // Virtual register at command value 1.
1896    }
1897
1898    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1899                             // as BUFF
1900    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1901
1902    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
1903    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
1904transaction
1905                           // This is the "double store". The write to
1906                           // FLD1 returns a new buffer, which is stored
1907                           // back into BUFF with the second Store.
1908
1909
19102) iASL Compiler/Disassembler and Tools:
1911
1912iASL: Implemented detection of extraneous/redundant uses of the Offset()
1913operator within a Field Unit list. A remark is now issued for these. For
1914example, the first two of the Offset() operators below are extraneous.
1915Because both the compiler and the interpreter track the offsets
1916automatically, these Offsets simply refer to the current offset and are
1917unnecessary. Note, when optimization is enabled, the iASL compiler will
1918in fact remove the redundant Offset operators and will not emit any AML
1919code for them.
1920
1921    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1922    Field (OPR1)
1923    {
1924        Offset (0),     // Never needed
1925        FLD1, 32,
1926        Offset (4),     // Redundant, offset is already 4 (bytes)
1927        FLD2, 8,
1928        Offset (64),    // OK use of Offset.
1929        FLD3, 16,
1930    }
1931dsdt.asl     14:         Offset (0),
1932Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1933operator
1934
1935dsdt.asl     16:         Offset (4),
1936Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1937operator
1938
1939----------------------------------------
194010 August 2018. Summary of changes for version 20180810:
1941
1942
19431) ACPICA kernel-resident subsystem:
1944
1945Initial ACPI table loading: Attempt to continue loading ACPI tables
1946regardless of malformed AML. Since migrating table initialization to the
1947new module-level code support, the AML interpreter rejected tables upon
1948any ACPI error encountered during table load. This is a problem because
1949non-serious ACPI errors during table load do not necessarily mean that
1950the entire definition block (DSDT or SSDT) is invalid. This change
1951improves the table loading by ignoring some types of errors that can be
1952generated by incorrect AML. This can range from object type errors, scope
1953errors, and index errors.
1954
1955Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1956during suspend/resume. The status of ACPI events is no longer cleared
1957when entering the ACPI S5 system state (power off) which caused some
1958systems to power up immediately after turning off power in certain
1959situations. This was a functional regression. It was fixed by clearing
1960the status of all ACPI events again when entering S5 (for system-wide
1961suspend or hibernation the clearing of the status of all events is not
1962desirable, as it might cause the kernel to miss wakeup events sometimes).
1963Rafael Wysocki.
1964
1965
19662) iASL Compiler/Disassembler and Tools:
1967
1968AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1969elements listed in the initialization file were previously initialized
1970after the table load and before executing module-level code blocks.
1971Recent changes in the module-level code support means that the table load
1972becomes a large control method execution. If fields are used within
1973module-level code and we are executing with the -fi option, the
1974initialization values were used to initialize the namespace object(s)
1975only after the table was finished loading. This change Provides an early
1976initialization of objects specified in the initialization file so that
1977field unit values are populated during the table load (not after the
1978load).
1979
1980AcpiExec: Fixed a small memory leak regression that could result in
1981warnings during exit of the utility. These warnings were similar to
1982these:
1983    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1984    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1985
1986----------------------------------------
198729 June 2018. Summary of changes for version 20180629:
1988
1989
19901) iASL Compiler/Disassembler and Tools:
1991
1992iASL: Fixed a regression related to the use of the ASL External
1993statement. Error checking for the use of the External() statement has
1994been relaxed. Previously, a restriction on the use of External meant that
1995the referenced named object was required to be defined in a different
1996table (an SSDT). Thus it would be an error to declare an object as an
1997external and then define the same named object in the same table. For
1998example:
1999    DefinitionBlock (...)
2000    {
2001        External (DEV1)
2002        Device (DEV1){...} // This was an error
2003    }
2004However, this behavior has caused regressions in some existing ASL code,
2005because there is code that depends on named objects and externals (with
2006the same name) being declared in the same table. This change will allow
2007the ASL code above to compile without errors or warnings.
2008
2009iASL: Implemented ASL language extensions for four operators to make some
2010of their arguments optional instead of required:
2011    1) Field (RegionName, AccessType, LockRule, UpdateRule)
2012    2) BankField (RegionName, BankName, BankValue,
2013                AccessType, LockRule, UpdateRule)
2014    3) IndexField (IndexName, DataName,
2015                AccessType, LockRule, UpdateRule)
2016For the Field operators above, the AccessType, LockRule, and UpdateRule
2017are now optional arguments. The default values are:
2018        AccessType: AnyAcc
2019        LockRule:   NoLock
2020        UpdateRule: Preserve
2021    4) Mutex (MutexName, SyncLevel)
2022For this operator, the SyncLevel argument is now optional. This argument
2023is rarely used in any meaningful way by ASL code, and thus it makes sense
2024to make it optional. The default value is:
2025        SyncLevel:  0
2026
2027iASL: Attempted use of the ASL Unload() operator now results in the
2028following warning:
2029    "Unload is not supported by all operating systems"
2030This is in fact very true, and the Unload operator may be completely
2031deprecated in the near future.
2032
2033AcpiExec: Fixed a regression for the -fi option (Namespace initialization
2034file. Recent changes in the ACPICA module-level code support altered the
2035table load/initialization sequence . This means that the table load has
2036become a large method execution of the table itself. If Operation Region
2037Fields are used within any module-level code and the -fi option was
2038specified, the initialization values were populated only after the table
2039had completely finished loading (and thus the module-level code had
2040already been executed). This change moves the initialization of objects
2041listed in the initialization file to before the table is executed as a
2042method. Field unit values are now initialized before the table execution
2043is performed.
2044
2045----------------------------------------
204631 May 2018. Summary of changes for version 20180531:
2047
2048
20491) ACPICA kernel-resident Subsystem:
2050
2051Implemented additional support to help ensure that a DSDT or SSDT is
2052fully loaded even if errors are incurred during the load. The majority of
2053the problems that are seen is the failure of individual AML operators
2054that occur during execution of any module-level code (MLC) existing in
2055the table. This support adds a mechanism to abort the current ASL
2056statement (AML opcode), emit an error message, and to simply move on to
2057the next opcode -- instead of aborting the entire table load. This is
2058different than the execution of a control method where the entire method
2059is aborted upon any error. The goal is to perform a very "best effort" to
2060load the ACPI tables. The most common MLC errors that have been seen in
2061the field are direct references to unresolved ASL/AML symbols (referenced
2062directly without the use of the CondRefOf operator to validate the
2063symbol). This new ACPICA behavior is now compatible with other ACPI
2064implementations.
2065
2066Interpreter: The Unload AML operator is no longer supported for the
2067reasons below. An AE_NOT_IMPLEMENTED exception is returned.
20681) A correct implementation on at least some hosts may not be possible.
20692) Other ACPI implementations do not correctly/fully support it.
20703) It requires host device driver support which is not known to exist.
2071    (To properly support namespace unload out from underneath.)
20724) This AML operator has never been seen in the field.
2073
2074Parser: Added a debug option to dump AML parse sub-trees as they are
2075being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
2076ACPI_DB_PARSE_TREES.
2077
2078Debugger: Reduced the verbosity for errors incurred during table load and
2079module-level code execution.
2080
2081Completed an investigation into adding a namespace node "owner list"
2082instead of the current "owner ID" associated with namespace nodes. This
2083list would link together all nodes that are owned by an individual
2084control method. The purpose would be to enhance control method execution
2085by speeding up cleanup during method exit (all namespace nodes created by
2086a method are deleted upon method termination.) Currently, the entire
2087namespace must be searched for matching owner IDs if (and only if) the
2088method creates named objects outside of the local scope. However, by far
2089the most common case is that methods create objects locally, not outside
2090the method scope. There is already an ACPICA optimization in place that
2091only searches the entire namespace in the rare case of a method creating
2092objects elsewhere in the namespace. Therefore, it is felt that the
2093overhead of adding an additional pointer to each namespace node to
2094implement the owner list makes this feature unnecessary.
2095
2096
20972) iASL Compiler/Disassembler and Tools:
2098
2099iASL, Disassembler, and Template generator: Implemented support for
2100Revision D of the IORT table. Adds a new subtable that is used to specify
2101SMMUv3 PMCGs. rmurphy-arm.
2102
2103Disassembler: Restored correct table header validation for the "special"
2104ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
2105table header and must be special-cased. This was a regression that has
2106been present for apparently a long time.
2107
2108AcpiExec: Reduced verbosity of the local exception handler implemented
2109within acpiexec. This handler is invoked by ACPICA upon any exceptions
2110generated during control method execution. A new option was added: -vh
2111restores the original verbosity level if desired.
2112
2113AcpiExec: Changed the default base from decimal to hex for the -x option
2114(set debug level). This simplifies the use of this option and matches the
2115behavior of the corresponding iASL -x option.
2116
2117AcpiExec: Restored a force-exit on multiple control-c (sigint)
2118interrupts. This allows program termination even if other issues cause
2119the control-c to fail.
2120
2121ASL test suite (ASLTS): Added tests for the recently implemented package
2122element resolution mechanism that allows forward references to named
2123objects from individual package elements (this mechanism provides
2124compatibility with other ACPI implementations.)
2125
2126
2127----------------------------------------
21288 May 2018. Summary of changes for version 20180508:
2129
2130
21311) ACPICA kernel-resident subsystem:
2132
2133Completed the new (recently deployed) package resolution mechanism for
2134the Load and LoadTable ASL/AML operators. This fixes a regression that
2135was introduced in version 20180209 that could result in an
2136AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
2137(SSDT) that contains package objects.
2138
2139
21402) iASL Compiler/Disassembler and Tools:
2141
2142AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
21431 MB. This change allows for table offsets within the acpidump file to be
2144up to 8 characters. These changes are backwards compatible with existing
2145acpidump files.
2146
2147
2148----------------------------------------
214927 April 2018. Summary of changes for version 20180427:
2150
2151
21521) ACPICA kernel-resident subsystem:
2153
2154Debugger: Added support for Package objects in the "Test Objects"
2155command. This command walks the entire namespace and evaluates all named
2156data objects (Integers, Strings, Buffers, and now Packages).
2157
2158Improved error messages for the namespace root node. Originally, the root
2159was referred to by the confusing string "\___". This has been replaced by
2160"Namespace Root" for clarification.
2161
2162Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
2163Ian King <colin.king@canonical.com>.
2164
2165
21662) iASL Compiler/Disassembler and Tools:
2167
2168iASL: Implemented support to detect and flag illegal forward references.
2169For compatibility with other ACPI implementations, these references are
2170now illegal at the root level of the DSDT or SSDTs. Forward references
2171have always been illegal within control methods. This change should not
2172affect existing ASL/AML code because of the fact that these references
2173have always been illegal in the other ACPI implementation.
2174
2175iASL: Added error messages for the case where a table OEM ID and OEM
2176TABLE ID strings are longer than the ACPI-defined length. Previously,
2177these strings were simply silently truncated.
2178
2179iASL: Enhanced the -tc option (which creates an AML hex file in C,
2180suitable for import into a firmware project):
2181  1) Create a unique name for the table, to simplify use of multiple
2182SSDTs.
2183  2) Add a protection #ifdef in the file, similar to a .h header file.
2184With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
2185evan.lloyd@arm.com
2186
2187AcpiExec: Added a new option, -df, to disable the local fault handler.
2188This is useful during debugging, where it may be desired to drop into a
2189debugger on a fault.
2190
2191----------------------------------------
219213 March 2018. Summary of changes for version 20180313:
2193
2194
21951) ACPICA kernel-resident subsystem:
2196
2197Implemented various improvements to the GPE support:
2198
21991) Dispatch all active GPEs at initialization time so that no GPEs are
2200lost.
22012) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
2202before devices are enumerated.
22033) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
2204IRQs are not lost.
22054) Add parallel GPE handling to eliminate the possibility of dispatching
2206the same GPE twice.
22075) Dispatch any pending GPEs after enabling for the first time.
2208
2209AcpiGetObjectInfo - removed support for the _STA method. This was causing
2210problems on some platforms.
2211
2212Added a new _OSI string, "Windows 2017.2".
2213
2214Cleaned up and simplified the module-level code support. These changes
2215are in preparation for the eventual removal of the legacy MLC support
2216(deferred execution), replaced by the new MLC architecture which executes
2217the MLC as a table is loaded (DSDT/SSDTs).
2218
2219Changed a compile-time option to a runtime option. Changes the option to
2220ignore ACPI table load-time package resolution errors into a runtime
2221option. Used only for platforms that generate many AE_NOT_FOUND errors
2222during boot. AcpiGbl_IgnorePackageResolutionErrors.
2223
2224Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
2225ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
2226compilation errors from unused variables (seen with some compilers).
2227
2228
22292) iASL Compiler/Disassembler and Tools:
2230
2231ASLTS: parallelized execution in order to achieve an (approximately) 2X
2232performance increase.
2233
2234ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
2235error reporting.
2236
2237----------------------------------------
223809 February 2018. Summary of changes for version 20180209:
2239
2240
22411) ACPICA kernel-resident subsystem:
2242
2243Completed the final integration of the recent changes to Package Object
2244handling and the module-level AML code support. This allows forward
2245references from individual package elements when the package object is
2246declared from within module-level code blocks. Provides compatibility
2247with other ACPI implementations.
2248
2249The new architecture for the AML module-level code has been completed and
2250is now the default for the ACPICA code. This new architecture executes
2251the module-level code in-line as the ACPI table is loaded/parsed instead
2252of the previous architecture which deferred this code until after the
2253table was fully loaded. This solves some ASL code ordering issues and
2254provides compatibility with other ACPI implementations. At this time,
2255there is an option to fallback to the earlier architecture, but this
2256support is deprecated and is planned to be completely removed later this
2257year.
2258
2259Added a compile-time option to ignore AE_NOT_FOUND exceptions during
2260resolution of named reference elements within Package objects. Although
2261this is potentially a serious problem, it can generate a lot of
2262noise/errors on platforms whose firmware carries around a bunch of unused
2263Package objects. To disable these errors, define
2264ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
2265errors are always reported for ACPICA applications such as AcpiExec.
2266
2267Fixed a regression related to the explicit type-conversion AML operators
2268(ToXXXX). The regression was introduced early in 2017 but was not seen
2269until recently because these operators are not fully supported by other
2270ACPI implementations and are thus rarely used by firmware developers. The
2271operators are defined by the ACPI specification to not implement the
2272"implicit result object conversion". The regression incorrectly
2273introduced this object conversion for the following explicit conversion
2274operators:
2275    ToInteger
2276    ToString
2277    ToBuffer
2278    ToDecimalString
2279    ToHexString
2280    ToBCD
2281    FromBCD
2282
2283
22842) iASL Compiler/Disassembler and Tools:
2285
2286iASL: Fixed a problem with the compiler constant folding feature as
2287related to the ToXXXX explicit conversion operators. These operators do
2288not support the "implicit result object conversion" by definition. Thus,
2289ASL expressions that use these operators cannot be folded to a simple
2290Store operator because Store implements the implicit conversion. This
2291change uses the CopyObject operator for the ToXXXX operator folding
2292instead. CopyObject is defined to not implement implicit result
2293conversions and is thus appropriate for folding the ToXXXX operators.
2294
2295iASL: Changed the severity of an error condition to a simple warning for
2296the case where a symbol is declared both locally and as an external
2297symbol. This accommodates existing ASL code.
2298
2299AcpiExec: The -ep option to enable the new architecture for module-level
2300code has been removed. It is replaced by the -dp option which instead has
2301the opposite effect: it disables the new architecture (the default) and
2302enables the legacy architecture. When the legacy code is removed in the
2303future, the -dp option will be removed also.
2304
2305----------------------------------------
230605 January 2018. Summary of changes for version 20180105:
2307
2308
23091) ACPICA kernel-resident subsystem:
2310
2311Updated all copyrights to 2018. This affects all source code modules.
2312
2313Fixed a possible build error caused by an unresolved reference to the
2314AcpiUtSafeStrncpy function.
2315
2316Removed NULL pointer arithmetic in the various pointer manipulation
2317macros. All "(void *) NULL" constructs are converted to "(void *) 0".
2318This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
2319
2320Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
2321Mittal.
2322
2323
23242) iASL Compiler/Disassembler and Tools:
2325
2326ASLTS: Updated all copyrights to 2018.
2327
2328Tools: Updated all signon copyrights to 2018.
2329
2330AcpiXtract: Fixed a regression related to ACPI table signatures where the
2331signature was truncated to 3 characters (instead of 4).
2332
2333AcpiExec: Restore the original terminal mode after the use of the -v and
2334-vd options.
2335
2336ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
2337
2338----------------------------------------
233914 December 2017. Summary of changes for version 20171214:
2340
2341
23421) ACPICA kernel-resident subsystem:
2343
2344Fixed a regression in the external (public) AcpiEvaluateObjectTyped
2345interface where the optional "pathname" argument had inadvertently become
2346a required argument returning an error if omitted (NULL pointer
2347argument).
2348
2349Fixed two possible memory leaks related to the recently developed "late
2350resolution" of reference objects within ASL Package Object definitions.
2351
2352Added two recently defined _OSI strings: "Windows 2016" and "Windows
23532017". Mario Limonciello.
2354
2355Implemented and deployed a safer version of the C library function
2356strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
2357creation of unterminated strings as a possible result of a standard
2358strncpy.
2359
2360Cleaned up and restructured the global variable file (acglobal.h). There
2361are many changes, but no functional changes.
2362
2363
23642) iASL Compiler/Disassembler and Tools:
2365
2366iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
2367optional OemData field at the end of the table was incorrectly required
2368for proper compilation. It is now correctly an optional field.
2369
2370ASLTS: The entire suite was converted from standard ASL to the ASL+
2371language, using the ASL-to-ASL+ converter which is integrated into the
2372iASL compiler. A binary compare of all output files has verified the
2373correctness of the conversion.
2374
2375iASL: Fixed the source code build for platforms where "char" is unsigned.
2376This affected the iASL lexer only. Jung-uk Kim.
2377
2378----------------------------------------
237910 November 2017. Summary of changes for version 20171110:
2380
2381
23821) ACPICA kernel-resident subsystem:
2383
2384This release implements full support for ACPI 6.2A:
2385    NFIT - Added a new subtable, "Platform Capabilities Structure"
2386No other changes to ACPICA were required, since ACPI 6.2A is primarily an
2387errata release of the specification.
2388
2389Other ACPI table changes:
2390    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
2391    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
2392Linton
2393
2394Utilities: Modified the string/integer conversion functions to use
2395internal 64-bit divide support instead of a native divide. On 32-bit
2396platforms, a 64-bit divide typically requires a library function which
2397may not be present in the build (kernel or otherwise).
2398
2399Implemented a targeted error message for timeouts returned from the
2400Embedded Controller device driver. This is seen frequently enough to
2401special-case an AE_TIME returned from an EC operation region access:
2402    "Timeout from EC hardware or EC device driver"
2403
2404Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
2405runtime error messages have the identical prefix.
2406
2407
24082) iASL Compiler/Disassembler and Tools:
2409
2410AcpiXtract: Fixed a problem with table header detection within the
2411acpidump file. Processing a table could be ended early if a 0x40 (@)
2412appears in the original binary table, resulting in the @ symbol appearing
2413in the decoded ASCII field at the end of the acpidump text line. The
2414symbol caused acpixtract to incorrectly think it had reached the end of
2415the current table and the beginning of a new table.
2416
2417AcpiXtract: Added an option (-f) to ignore some errors during table
2418extraction. This initial implementation ignores non-ASCII and non-
2419printable characters found in the acpidump text file.
2420
2421TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
2422for ASLTS. This feature is used to track memory allocations from
2423different memory caches within the ACPICA code. At the end of an ASLTS
2424run, these memory statistics are recorded and stored in a log file.
2425
2426Debugger (user-space version): Implemented a simple "Background" command.
2427Creates a new thread to execute a control method in the background, while
2428control returns to the debugger prompt to allow additional commands.
2429    Syntax: Background <Namepath> [Arguments]
2430
2431----------------------------------------
243229 September 2017. Summary of changes for version 20170929:
2433
2434
24351) ACPICA kernel-resident subsystem:
2436
2437Redesigned and implemented an improved ASL While() loop timeout
2438mechanism. This mechanism is used to prevent infinite loops in the kernel
2439AML interpreter caused by either non-responsive hardware or incorrect AML
2440code. The new implementation uses AcpiOsGetTimer instead of a simple
2441maximum loop count, and is thus more accurate and constant across
2442different machines. The default timeout is currently 30 seconds, but this
2443may be adjusted later.
2444
2445Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
2446better reflect the new implementation of the loop timeout mechanism.
2447
2448Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
2449and to fix an off-by-one error. Jung-uk Kim.
2450
2451Fixed an EFI build problem by updating the makefiles to for a new file
2452that was added, utstrsuppt.c
2453
2454
24552) iASL Compiler/Disassembler and Tools:
2456
2457Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
2458includes support in the table disassembler, compiler, and template
2459generator.
2460
2461iASL: Added an exception for an illegal type of recursive method
2462invocation. If a method creates named objects, the first recursive call
2463will fail at runtime. This change adds an error detection at compile time
2464to catch the problem up front. Note: Marking such a method as
2465"serialized" will not help with this problem, because the same thread can
2466acquire the method mutex more than once. Example compiler and runtime
2467output:
2468
2469    Method (MTH1)
2470    {
2471        Name (INT1, 1)
2472        MTH1 ()
2473    }
2474
2475    dsdt.asl     22: MTH1 ()
2476    Error    6152 -  ^ Illegal recursive call to method
2477                       that creates named objects (MTH1)
2478
2479Previous runtime exception:
2480    ACPI Error: [INT1] Namespace lookup failure,
2481    AE_ALREADY_EXISTS (20170831/dswload2-465)
2482
2483iASL: Updated support for External() opcodes to improve namespace
2484management and error detection. These changes are related to issues seen
2485with multiple-segment namespace pathnames within External declarations,
2486such as below:
2487
2488    External(\_SB.PCI0.GFX0, DeviceObj)
2489    External(\_SB.PCI0.GFX0.ALSI)
2490
2491iASL: Implemented support for multi-line error/warning messages. This
2492enables more detailed and helpful error messages as below, from the
2493initial deployment for the duplicate names error:
2494
2495    DSDT.iiii   1692:       Device(PEG2) {
2496    Error    6074 -                  ^ Name already exists in scope
2497(PEG2)
2498
2499        Original name creation/declaration below:
2500        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
2501
2502AcpiXtract: Added additional flexibility to support differing input hex
2503dump formats. Specifically, hex dumps that contain partial disassembly
2504and/or comments within the ACPI table data definition. There exist some
2505dump utilities seen in the field that create this type of hex dump (such
2506as Simics). For example:
2507
2508    DSDT @ 0xdfffd0c0 (10999 bytes)
2509        Signature DSDT
2510        Length 10999
2511        Revision 1
2512        Checksum 0xf3 (Ok)
2513        OEM_ID BXPC
2514        OEM_table_id BXDSDT
2515        OEM_revision 1
2516        Creator_id 1280593481
2517        Creator_revision 537399345
2518      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
2519      ...
2520      2af0: 5f 4c 30 46 00 a4 01
2521
2522Test suite: Miscellaneous changes/fixes:
2523    More cleanup and simplification of makefiles
2524    Continue compilation of test cases after a compile failure
2525    Do not perform binary compare unless both files actually exist
2526
2527iASL: Performed some code/module restructuring. Moved all memory
2528allocation functions to new modules. Two new files, aslallocate.c and
2529aslcache.c
2530
2531----------------------------------------
253231 August 2017. Summary of changes for version 20170831:
2533
2534
25351) ACPICA kernel-resident subsystem:
2536
2537Implemented internal support for full 64-bit addresses that appear in all
2538Generic Address Structure (GAS) structures. Previously, only the lower 32
2539bits were used. Affects the use of GAS structures in the FADT and other
2540tables, as well as the GAS structures passed to the AcpiRead and
2541AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
2542
2543Added header support for the PDTT ACPI table (Processor Debug Trigger
2544Table). Full support in the iASL Data Table Compiler and disassembler is
2545forthcoming.
2546
2547
25482) iASL Compiler/Disassembler and Tools:
2549
2550iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
2551Properties Topology Table) where a flag bit was specified in the wrong
2552bit position ("Line Size Valid", bit 6).
2553
2554iASL: Implemented support for Octal integer constants as defined by the
2555ASL language grammar, per the ACPI specification. Any integer constant
2556that starts with a zero is an octal constant. For example,
2557    Store (037777, Local0) /* Octal constant */
2558    Store (0x3FFF, Local0) /* Hex equivalent */
2559    Store (16383,  Local0) /* Decimal equivalent */
2560
2561iASL: Improved overflow detection for 64-bit string conversions during
2562compilation of integer constants. "Overflow" in this case means a string
2563that represents an integer that is too large to fit into a 64-bit value.
2564Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
2565the low-order 32 bits with a warning, as previously implemented. Several
2566new exceptions are defined that indicate a 64-bit overflow, as well as
2567the base (radix) that was used during the attempted conversion. Examples:
2568    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
2569    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
2570    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
2571
2572iASL: Added a warning for the case where a ResourceTemplate is declared
2573with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
2574this case, the resulting template is created with a single END_TAG
2575descriptor, which is essentially useless.
2576
2577iASL: Expanded the -vw option (ignore specific warnings/remarks) to
2578include compilation error codes as well.
2579
2580----------------------------------------
258128 July 2017. Summary of changes for version 20170728:
2582
2583
25841) ACPICA kernel-resident subsystem:
2585
2586Fixed a regression seen with small resource descriptors that could cause
2587an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
2588
2589AML interpreter: Implemented a new feature that allows forward references
2590from individual named references within package objects that are
2591contained within blocks of "module-level code". This provides
2592compatibility with other ACPI implementations and supports existing
2593firmware that depends on this feature. Example:
2594
2595    Name (ABCD, 1)
2596    If (ABCD)                       /* An If() at module-level */
2597    {
2598        Name (PKG1, Package()
2599        {
2600            INT1                    /* Forward reference to object INT1
2601*/
2602        })
2603        Name (INT1, 0x1234)
2604    }
2605
2606AML Interpreter: Fixed a problem with the Alias() operator where aliases
2607to some ASL objects were not handled properly. Objects affected are:
2608Mutex, Event, and OperationRegion.
2609
2610AML Debugger: Enhanced to properly handle AML Alias objects. These
2611objects have one level of indirection which was not fully supported by
2612the debugger.
2613
2614Table Manager: Added support to detect and ignore duplicate SSDTs within
2615the XSDT/RSDT. This error in the XSDT has been seen in the field.
2616
2617EFI and EDK2 support:
2618    Enabled /WX flag for MSVC builds
2619    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
2620    Added local support for 64-bit multiply and shift operations
2621    Added support to compile acpidump.efi on Windows
2622    Added OSL function stubs for interfaces not used under EFI
2623
2624Added additional support for the _DMA predefined name. _DMA returns a
2625buffer containing a resource template. This change add support within the
2626resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
2627resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
2628
2629
26302) iASL Compiler/Disassembler and Tools:
2631
2632iASL: Fixed a problem where the internal input line buffer(s) could
2633overflow if there are very long lines in the input ASL source code file.
2634Implemented buffer management that automatically increases the size of
2635the buffers as necessary.
2636
2637iASL: Added an option (-vx) to "expect" particular remarks, warnings and
2638errors. If the specified exception is not raised during compilation, the
2639compiler emits an error. This is intended to support the ASL test suite,
2640but may be useful in other contexts.
2641
2642iASL: Implemented a new predefined macro, __METHOD__, which returns a
2643string containing the name of the current control method that is being
2644compiled.
2645
2646iASL: Implemented debugger and table compiler support for the SDEI ACPI
2647table (Software Delegated Exception Interface). James Morse
2648<james.morse@arm.com>
2649
2650Unix/Linux makefiles: Added an option to disable compile optimizations.
2651The disable occurs when the NOOPT flag is set to TRUE.
2652theracermaster@gmail.com
2653
2654Acpidump: Added support for multiple DSDT and FACS tables. This can occur
2655when there are different tables for 32-bit versus 64-bit.
2656
2657Enhanced error reporting for the ASL test suite (ASLTS) by removing
2658unnecessary/verbose text, and emit the actual line number where an error
2659has occurred. These changes are intended to improve the usefulness of the
2660test suite.
2661
2662----------------------------------------
266329 June 2017. Summary of changes for version 20170629:
2664
2665
26661) ACPICA kernel-resident subsystem:
2667
2668Tables: Implemented a deferred ACPI table verification. This is useful
2669for operating systems where the tables cannot be verified in the early
2670initialization stage due to early memory mapping limitations on some
2671architectures. Lv Zheng.
2672
2673Tables: Removed the signature validation for dynamically loaded tables.
2674Provides compatibility with other ACPI implementations. Previously, only
2675SSDT tables were allowed, as per the ACPI specification. Now, any table
2676signature can be used via the Load() operator. Lv Zheng.
2677
2678Tables: Fixed several mutex issues that could cause errors during table
2679acquisition. Lv Zheng.
2680
2681Tables: Fixed a problem where an ACPI warning could be generated if a
2682null pointer was passed to the AcpiPutTable interface. Lv Zheng.
2683
2684Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
2685AcpiPutTable interfaces. This applies to the "late stage" table loading
2686when the use of AcpiPutTable is no longer required (since the system
2687memory manager is fully running and available). Lv Zheng.
2688
2689Fixed/Reverted a regression during processing of resource descriptors
2690that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
2691exception in this case.
2692
2693Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
2694I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
2695
2696Interpreter: Fixed a possible fault if an Alias operator with an invalid
2697or duplicate target is encountered during Alias creation in
2698AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
2699
2700Added an option to use designated initializers for function pointers.
2701Kees Cook <keescook@google.com>
2702
2703
27042) iASL Compiler/Disassembler and Tools:
2705
2706iASL: Allow compilation of External declarations with target pathnames
2707that refer to existing named objects within the table. Erik Schmauss.
2708
2709iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
2710FieldUnit name also is declared via External in the same table. Erik
2711Schmauss.
2712
2713iASL: Allow existing scope names within pathnames used in External
2714statements. For example:
2715    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
2716    Device (ABCD)
2717
2718iASL: IORT ACPI table: Implemented changes required to decode the new
2719Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
2720compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
2721
2722Disassembler: Don't abort disassembly on errors from External()
2723statements. Erik Schmauss.
2724
2725Disassembler: fixed a possible fault when one of the Create*Field
2726operators references a Resource Template. ACPICA Bugzilla 1396.
2727
2728iASL: In the source code, resolved some naming inconsistences across the
2729parsing support. Fixes confusion between "Parse Op" and "Parse Node".
2730Adds a new file, aslparseop.c
2731
2732----------------------------------------
273331 May 2017. Summary of changes for version 20170531:
2734
2735
27360) ACPI 6.2 support:
2737
2738The ACPI specification version 6.2 has been released and is available at
2739http://uefi.org/specifications
2740
2741This version of ACPICA fully supports the ACPI 6.2 specification. Changes
2742are summarized below.
2743
2744New ACPI tables (Table Compiler/Disassembler/Templates):
2745    HMAT (Heterogeneous Memory Attributes Table)
2746    WSMT (Windows SMM Security Mitigation Table)
2747    PPTT (Processor Properties Topology Table)
2748
2749New subtables for existing ACPI tables:
2750    HEST (New subtable, Arch-deferred machine check)
2751    SRAT (New subtable, Arch-specific affinity structure)
2752    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
2753
2754Simple updates for existing ACPI tables:
2755    BGRT (two new flag bits)
2756    HEST (New bit defined for several subtables, GHES_ASSIST)
2757
2758New Resource Descriptors and Resource macros (Compiler/Disassembler):
2759    PinConfig()
2760    PinFunction()
2761    PinGroup()
2762    PinGroupConfig()
2763    PinGroupFunction()
2764    New type for hardware error notification (section 18.3.2.9)
2765
2766New predefined names/methods (Compiler/Interpreter):
2767    _HMA (Heterogeneous Memory Attributes)
2768    _LSI (Label Storage Information)
2769    _LSR (Label Storage Read)
2770    _LSW (Label Storage Write)
2771
2772ASL grammar/macro changes (Compiler):
2773    For() ASL macro, implemented with the AML while operator
2774    Extensions to Concatenate operator
2775    Support for multiple definition blocks in same ASL file
2776    Clarification for Buffer operator
2777    Allow executable AML code underneath all scopes (Devices, etc.)
2778    Clarification/change for the _OSI return value
2779    ASL grammar update for reference operators
2780    Allow a zero-length string for AML filename in DefinitionBlock
2781
2782Miscellaneous:
2783    New device object notification value
2784    Remove a notify value (0x0C) for graceful shutdown
2785    New UUIDs for processor/cache properties and
2786        physical package property
2787    New _HID, ACPI0014 (Wireless Power Calibration Device)
2788
2789
27901) ACPICA kernel-resident subsystem:
2791
2792Added support to disable ACPI events on hardware-reduced platforms.
2793Eliminates error messages of the form "Could not enable fixed event". Lv
2794Zheng
2795
2796Fixed a problem using Device/Thermal objects with the ObjectType and
2797DerefOf ASL operators. This support had not been fully/properly
2798implemented.
2799
2800Fixed a problem where if a Buffer object containing a resource template
2801was longer than the actual resource template, an error was generated --
2802even though the AML is legal. This case has been seen in the field.
2803
2804Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2805The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2806
2807Added header file changes for the TPM2 ACPI table. Update to new version
2808of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2809
2810Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2811These interfaces are intended to be used only in conjunction with the
2812predefined _DLM method (Device Lock Method). "This object appears in a
2813device scope when AML access to the device must be synchronized with the
2814OS environment".
2815
2816Example Code and Data Size: These are the sizes for the OS-independent
2817acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2818debug version of the code includes the debug output trace mechanism and
2819has a much larger code and data size.
2820
2821  Current Release:
2822    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
2823    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
2824  Previous Release:
2825    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2826    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2827
2828
28292) iASL Compiler/Disassembler and Tools:
2830
2831iASL: Fixed a problem where an External() declaration could not refer to
2832a Field Unit. Erik Schmauss.
2833
2834Disassembler: Improved support for the Switch/Case operators. This
2835feature will disassemble AML code back to the original Switch operators
2836when possible, instead of an If..Else sequence. David Box
2837
2838iASL and disassembler: Improved the handling of multiple extraneous
2839parentheses for both ASL input and disassembled ASL output.
2840
2841Improved the behavior of the iASL compiler and disassembler to detect
2842improper use of external declarations
2843
2844Disassembler: Now aborts immediately upon detection of an unknown AML
2845opcode. The AML parser has no real way to recover from this, and can
2846result in the creation of an ill-formed parse tree that causes errors
2847later during the disassembly.
2848
2849All tools: Fixed a problem where the Unix application OSL did not handle
2850control-c correctly. For example, a control-c could incorrectly wake the
2851debugger.
2852
2853AcpiExec: Improved the Control-C handling and added a handler for
2854segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2855environments.
2856
2857Reduced the verbosity of the generic unix makefiles. Previously, each
2858compilation displayed the full set of compiler options. This has been
2859eliminated as the options are easily inspected within the makefiles. Each
2860compilation now results in a single line of output.
2861
2862----------------------------------------
286303 March 2017. Summary of changes for version 20170303:
2864
2865
28660) ACPICA licensing:
2867
2868The licensing information at the start of each source code module has
2869been updated. In addition to the Intel license, the dual GPLv2/BSD
2870license has been added for completeness. Now, a single version of the
2871source code should be suitable for all ACPICA customers. This is the
2872major change for this release since it affects all source code modules.
2873
2874
28751) ACPICA kernel-resident subsystem:
2876
2877Fixed two issues with the common asltypes.h header that could cause
2878problems in some environments: (Kim Jung-uk)
2879    Removed typedef for YY_BUFFER_STATE ?
2880       Fixes an error with earlier versions of Flex.
2881    Removed use of FILE typedef (which is only defined in stdio.h)
2882
2883
28842) iASL Compiler/Disassembler and Tools:
2885
2886Disassembler: fixed a regression introduced in 20170224. A fix for a
2887memory leak related to resource descriptor tags (names) could fault when
2888the disassembler was generated with 64-bit compilers.
2889
2890The ASLTS test suite has been updated to implement a new testing
2891architecture. During generation of the suite from ASL source, both the
2892ASL and ASL+ compilers are now validated, as well as the disassembler
2893itself (Erik Schmauss). The architecture executes as follows:
2894
2895    For every ASL source module:
2896        Compile (legacy ASL compilation)
2897        Disassemble the resulting AML to ASL+ source code
2898        Compile the new ASL+ module
2899        Perform a binary compare on the legacy AML and the new ASL+ AML
2900    The ASLTS suite then executes normally using the AML binaries.
2901
2902----------------------------------------
290324 February 2017. Summary of changes for version 20170224:
2904
2905
29061) ACPICA kernel-resident subsystem:
2907
2908Interpreter: Fixed two issues with the control method return value auto-
2909repair feature, where an attempt to double-delete an internal object
2910could result in an ACPICA warning (for _CID repair and others). No fault
2911occurs, however, because the attempted deletion (actually a release to an
2912internal cache) is detected and ignored via object poisoning.
2913
2914Debugger: Fixed an AML interpreter mutex issue during the single stepping
2915of control methods. If certain debugger commands are executed during
2916stepping, a mutex acquire/release error could occur. Lv Zheng.
2917
2918Fixed some issues generating ACPICA with the Intel C compiler by
2919restoring the original behavior and compiler-specific include file in
2920acenv.h. Lv Zheng.
2921
2922Example Code and Data Size: These are the sizes for the OS-independent
2923acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2924debug version of the code includes the debug output trace mechanism and
2925has a much larger code and data size.
2926
2927  Current Release:
2928    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2929    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2930  Previous Release:
2931    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2932    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2933
2934
29352) iASL Compiler/Disassembler and Tools:
2936
2937iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2938tool has been designed, implemented, and included in this release. The
2939key feature of this utility is that the original comments within the
2940input ASL file are preserved during the conversion process, and included
2941within the converted ASL+ file -- thus creating a transparent conversion
2942of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2943
2944    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2945converted code
2946
2947iASL/Disassembler: Improved the detection and correct disassembly of
2948Switch/Case operators. This feature detects sequences of if/elseif/else
2949operators that originated from ASL Switch/Case/Default operators and
2950emits the original operators. David Box.
2951
2952iASL: Improved the IORT ACPI table support in the following areas. Lv
2953Zheng:
2954    Clear MappingOffset if the MappingCount is zero.
2955    Fix the disassembly of the SMMU GSU interrupt offset.
2956    Update the template file for the IORT table.
2957
2958Disassembler: Enhanced the detection and disassembly of resource
2959template/descriptor within a Buffer object. An EndTag descriptor is now
2960required to have a zero second byte, since all known ASL compilers emit
2961this. This helps eliminate incorrect decisions when a buffer is
2962disassembled (false positives on resource templates).
2963
2964----------------------------------------
296519 January 2017. Summary of changes for version 20170119:
2966
2967
29681) General ACPICA software:
2969
2970Entire source code base: Added the 2017 copyright to all source code
2971legal/licensing module headers and utility/tool signons. This includes
2972the standard Linux dual-license header. This affects virtually every file
2973in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2974the ACPICA test suite.
2975
2976
29772) iASL Compiler/Disassembler and Tools:
2978
2979iASL: Removed/fixed an inadvertent remark when a method argument
2980containing a reference is used as a target operand within the method (and
2981never used as a simple argument), as in the example below. Jeffrey Hugo.
2982
2983    dsdt.asl   1507:    Store(0x1, Arg0)
2984    Remark   2146 -                ^ Method Argument is never used (Arg0)
2985
2986All tools: Removed the bit width of the compiler that generated the tool
2987from the common signon for all user space tools. This proved to be
2988confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2989from the generic makefiles (Thomas Petazzoni). Example below.
2990
2991    Old:
2992    ASL+ Optimizing Compiler version 20170119-32
2993    ASL+ Optimizing Compiler version 20170119-64
2994
2995    New:
2996    ASL+ Optimizing Compiler version 20170119
2997
2998----------------------------------------
299922 December 2016. Summary of changes for version 20161222:
3000
3001
30021) ACPICA kernel-resident subsystem:
3003
3004AML Debugger: Implemented a new mechanism to simplify and enhance
3005debugger integration into all environments, including kernel debuggers
3006and user-space utilities, as well as remote debug services. This
3007mechanism essentially consists of new OSL interfaces to support debugger
3008initialization/termination, as well as wait/notify interfaces to perform
3009the debugger handshake with the host. Lv Zheng.
3010
3011    New OSL interfaces:
3012        AcpiOsInitializeDebugger (void)
3013        AcpiOsTerminateDebugger (void)
3014        AcpiOsWaitCommandReady (void)
3015        AcpiOsNotifyCommandComplete (void)
3016
3017    New OS services layer:
3018        osgendbg.c -- Example implementation, and used for AcpiExec
3019
3020Update for Generic Address Space (GAS) support: Although the AccessWidth
3021and/or BitOffset fields of the GAS are not often used, this change now
3022fully supports these fields. This affects the internal support for FADT
3023registers, registers in other ACPI data tables, and the AcpiRead and
3024AcpiWrite public interfaces. Lv Zheng.
3025
3026Sleep support: In order to simplify integration of ACPI sleep for the
3027various host operating systems, a new OSL interface has been introduced.
3028AcpiOsEnterSleep allows the host to perform any required operations
3029before the final write to the sleep control register(s) is performed by
3030ACPICA. Lv Zheng.
3031
3032    New OSL interface:
3033        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
3034
3035    Called from these internal interfaces:
3036        AcpiHwLegacySleep
3037        AcpiHwExtendedSleep
3038
3039EFI support: Added a very small EFI/ACPICA example application. Provides
3040a simple demo for EFI integration, as well as assisting with resolution
3041of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
3042
3043    source/tools/efihello/efihello.c
3044
3045Local C library: Implemented several new functions to enhance ACPICA
3046portability, for environments where these clib functions are not
3047available (such as EFI). Lv Zheng:
3048    putchar
3049    getchar
3050    strpbrk
3051    strtok
3052    memmove
3053
3054Fixed a regression where occasionally a valid resource descriptor was
3055incorrectly detected as invalid at runtime, and a
3056AE_AML_NO_RESOURCE_END_TAG was returned.
3057
3058Fixed a problem with the recently implemented support that enables
3059control method invocations as Target operands to many ASL operators.
3060Warnings of this form: "Needed type [Reference], found [Processor]" were
3061seen at runtime for some method invocations.
3062
3063Example Code and Data Size: These are the sizes for the OS-independent
3064acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3065debug version of the code includes the debug output trace mechanism and
3066has a much larger code and data size.
3067
3068  Current Release:
3069    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
3070    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
3071  Previous Release:
3072    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
3073    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
3074
3075
30762) iASL Compiler/Disassembler and Tools:
3077
3078Disassembler: Enhanced output by adding the capability to detect and
3079disassemble ASL Switch/Case statements back to the original ASL source
3080code instead of if/else blocks. David Box.
3081
3082AcpiHelp: Split a large file into separate files based upon
3083functionality/purpose. New files are:
3084    ahaml.c
3085    ahasl.c
3086
3087----------------------------------------
308817 November 2016. Summary of changes for version 20161117:
3089
3090
30911) ACPICA kernel-resident subsystem:
3092
3093Table Manager: Fixed a regression introduced in 20160729, "FADT support
3094cleanup". This was an attempt to remove all references in the source to
3095the FADT version 2, which never was a legal version number. It was
3096skipped because it was an early version of 64-bit support that was
3097eventually abandoned for the current 64-bit support.
3098
3099Interpreter: Fixed a problem where runtime implicit conversion was
3100incorrectly disabled for the ASL operators below. This brings the
3101behavior into compliance with the ACPI specification:
3102    FromBCD
3103    ToBCD
3104    ToDecimalString
3105    ToHexString
3106    ToInteger
3107    ToBuffer
3108
3109Table Manager: Added a new public interface, AcpiPutTable, used to
3110release and free an ACPI table returned by AcpiGetTable and related
3111interfaces. Lv Zheng.
3112
3113Example Code and Data Size: These are the sizes for the OS-independent
3114acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3115debug version of the code includes the debug output trace mechanism and
3116has a much larger code and data size.
3117
3118  Current Release:
3119    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
3120    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
3121  Previous Release:
3122    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
3123    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
3124
3125
31262) iASL Compiler/Disassembler and Tools:
3127
3128Disassembler: Fixed a regression for disassembly of Resource Template.
3129Detection of templates in the AML stream missed some types of templates.
3130
3131iASL: Fixed a problem where an Access Size error was returned for the PCC
3132address space when the AccessSize of the GAS register is greater than a
3133DWORD. Hoan Tran.
3134
3135iASL: Implemented several grammar changes for the operators below. These
3136changes are slated for the next version of the ACPI specification:
3137    RefOf        - Disallow method invocation as an operand
3138    CondRefOf    - Disallow method invocation as an operand
3139    DerefOf      - Disallow operands that use the result from operators
3140that
3141                   do not return a reference (Changed TermArg to
3142SuperName).
3143
3144iASL: Control method invocations are now allowed for Target operands, as
3145per the ACPI specification. Removed error for using a control method
3146invocation as a Target operand.
3147
3148Disassembler: Improved detection of Resource Templates, Unicode, and
3149Strings within Buffer objects. These subtypes do not contain a specific
3150opcode to indicate the originating ASL code, and they must be detected by
3151other means within the disassembler.
3152
3153iASL: Implemented an optimization improvement for 32-bit ACPI tables
3154(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
3155only after 64-bit to 32-bit truncation. A truncation warning message is
3156still emitted, however.
3157
3158AcpiXtract: Implemented handling for both types of line terminators (LF
3159or CR/LF) so that it can accept AcpiDump output files from any system.
3160Peter Wu.
3161
3162AcpiBin: Added two new options for comparing AML files:
3163    -a: compare and display ALL mismatches
3164    -o: start compare at this offset into the second file
3165
3166----------------------------------------
316730 September 2016. Summary of changes for version 20160930:
3168
3169
31701) ACPICA kernel-resident subsystem:
3171
3172Fixed a regression in the internal AcpiTbFindTable function where a non
3173AE_OK exception could inadvertently be returned even if the function did
3174not fail. This problem affects the following operators:
3175    DataTableRegion
3176    LoadTable
3177
3178Fixed a regression in the LoadTable operator where a load to any
3179namespace location other than the root no longer worked properly.
3180
3181Increased the maximum loop count value that will result in the
3182AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
3183prevent infinite loops within the AML interpreter and thus the host OS
3184kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
31851,048,575).
3186
3187Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
3188acpixf.h file. This allows hosts to easily configure the maximum loop
3189count at runtime.
3190
3191Removed an illegal character in the strtoul64.c file. This character
3192caused errors with some C compilers.
3193
3194Example Code and Data Size: These are the sizes for the OS-independent
3195acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3196debug version of the code includes the debug output trace mechanism and
3197has a much larger code and data size.
3198
3199  Current Release:
3200    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
3201    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
3202  Previous Release:
3203    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
3204    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
3205
3206
32072) iASL Compiler/Disassembler and Tools:
3208
3209Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
3210the simpler ASL ElseIf keyword. During the conversion, a trailing If
3211block could be lost and missing from the disassembled output.
3212
3213iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
3214the missing rule caused a parse error when using the Index operator as an
3215operand to ObjectType. This construct now compiles properly. Example:
3216    ObjectType(PKG1[4]).
3217
3218iASL: Correctly handle unresolved symbols in the hardware map file (-lm
3219option). Previously, unresolved symbols could cause a protection fault.
3220Such symbols are now marked as unresolved in the map file.
3221
3222iASL: Implemented support to allow control method invocations as an
3223operand to the ASL DeRefOf operator. Example:
3224    DeRefOf(MTH1(Local0))
3225
3226Disassembler: Improved support for the ToPLD ASL macro. Detection of a
3227possible _PLD buffer now includes examination of both the normal buffer
3228length (16 or 20) as well as the surrounding AML package length.
3229
3230Disassembler: Fixed a problem with the decoding of complex expressions
3231within the Divide operator for ASL+. For the case where both the quotient
3232and remainder targets are specified, the entire statement cannot be
3233disassembled. Previously, the output incorrectly contained a mix of ASL-
3234and ASL+ operators. This mixed statement causes a syntax error when
3235compiled. Example:
3236    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
3237disassembled to:
3238    Divide (INT1 + 6, 128, RSLT, QUOT)
3239
3240iASL/Tools: Added support to process AML and non-AML ACPI tables
3241consistently. For the disassembler and AcpiExec, allow all types of ACPI
3242tables (AML and data tables). For the iASL -e option, allow only AML
3243tables (DSDT/SSDT).
3244
3245----------------------------------------
324631 August 2016. Summary of changes for version 20160831:
3247
3248
32491) ACPICA kernel-resident subsystem:
3250
3251Improve support for the so-called "module-level code", which is defined
3252to be math, logical and control AML opcodes that appear outside of any
3253control method. This change improves the support by adding more opcodes
3254that can be executed in the manner. Some other issues have been solved,
3255and the ASL grammar changes to support such code under all scope
3256operators (Device, etc.) are complete. Lv Zheng.
3257
3258UEFI support: these OSL functions have been implemented. This is an
3259additional step toward supporting the AcpiExec utility natively (with
3260full hardware access) under UEFI. Marcelo Ferreira.
3261    AcpiOsReadPciConfiguration
3262    AcpiOsWritePciConfiguration
3263
3264Fixed a possible mutex error during control method auto-serialization. Lv
3265Zheng.
3266
3267Updated support for the Generic Address Structure by fully implementing
3268all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
3269Zheng.
3270
3271Updated the return value for the internal _OSI method. Instead of
32720xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
3273for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
3274implementations, and will be reflected and clarified in the next version
3275of the ACPI specification.
3276
3277Implemented two new table events that can be passed to an ACPICA table
3278handler. These events are used to indicate a table installation or
3279uninstallation. These events are used in addition to existed table load
3280and unload events. Lv Zheng.
3281
3282Implemented a cleanup for all internal string-to-integer conversions.
3283Consolidate multiple versions of this functionality and limit possible
3284bases to either 10 or 16 to simplify the code. Adds a new file,
3285utstrtoul64.
3286
3287Cleanup the inclusion order of the various compiler-specific headers.
3288This simplifies build configuration management. The compiler-specific
3289headers are now split out from the host-specific headers. Lv Zheng.
3290
3291Example Code and Data Size: These are the sizes for the OS-independent
3292acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3293debug version of the code includes the debug output trace mechanism and
3294has a much larger code and data size.
3295
3296  Current Release:
3297    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
3298    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
3299
3300
33012) iASL Compiler/Disassembler and Tools:
3302
3303iASL/AcpiExec: Added a command line option to display the build date/time
3304of the tool (-vd). This can be useful to verify that the correct version
3305of the tools are being used.
3306
3307AML Debugger: Implemented a new subcommand ("execute predef") to execute
3308all predefined control methods and names within the current namespace.
3309This can be useful for debugging problems with ACPI tables and the ACPI
3310namespace.
3311
3312----------------------------------------
331329 July 2016. Summary of changes for version 20160729:
3314
3315
33161) ACPICA kernel-resident subsystem:
3317
3318Implemented basic UEFI support for the various ACPICA tools. This
3319includes:
33201) An OSL to implement the various AcpiOs* interfaces on UEFI.
33212) Support to obtain the ACPI tables on UEFI.
33223) Local implementation of required C library functions not available on
3323UEFI.
33244) A front-end (main) function for the tools for UEFI-related
3325initialization.
3326
3327The initial deployment of this support is the AcpiDump utility executing
3328as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
3329Current environments supported are Linux/Unix. MSVC generation is not
3330supported at this time. See the generate/efi/README file for build
3331instructions. Lv Zheng.
3332
3333Future plans include porting the AcpiExec utility to execute natively on
3334the platform with I/O and memory access. This will allow viewing/dump of
3335the platform namespace and native execution of ACPI control methods that
3336access the actual hardware. To fully implement this support, the OSL
3337functions below must be implemented with UEFI interfaces. Any community
3338help in the implementation of these functions would be appreciated:
3339    AcpiOsReadPort
3340    AcpiOsWritePort
3341    AcpiOsReadMemory
3342    AcpiOsWriteMemory
3343    AcpiOsReadPciConfiguration
3344    AcpiOsWritePciConfiguration
3345
3346Restructured and standardized the C library configuration for ACPICA,
3347resulting in the various configuration options below. This includes a
3348global restructuring of the compiler-dependent and platform-dependent
3349include files. These changes may affect the existing platform-dependent
3350configuration files on some hosts. Lv Zheng.
3351
3352The current C library configuration options appear below. For any issues,
3353it may be helpful to examine the existing compiler-dependent and
3354platform-dependent files as examples. Lv Zheng.
3355
33561) Linux kernel:
3357    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3358library.
3359    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
33602) Unix/Windows/BSD applications:
3361    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
3362library.
3363    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
33643) UEFI applications:
3365    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3366library.
3367    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
33684) UEFI applications (EDK2/StdLib):
3369    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
3370    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
3371
3372
3373AML interpreter: "module-level code" support. Allows for execution of so-
3374called "executable" AML code (math/logical operations, etc.) outside of
3375control methods not just at the module level (top level) but also within
3376any scope declared outside of a control method - Scope{}, Device{},
3377Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
3378
3379Simplified the configuration of the "maximum AML loops" global option by
3380adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
3381modified at runtime.
3382
3383
3384Example Code and Data Size: These are the sizes for the OS-independent
3385acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3386debug version of the code includes the debug output trace mechanism and
3387has a much larger code and data size.
3388
3389  Current Release:
3390    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
3391    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
3392
3393
33942) iASL Compiler/Disassembler and Tools:
3395
3396iASL: Add full support for the RASF ACPI table (RAS Features Table).
3397Includes disassembler, data table compiler, and header support.
3398
3399iASL Expand "module-level code" support. Allows for
3400compilation/disassembly of so-called "executable" AML code (math/logical
3401operations, etc.) outside of control methods not just at the module level
3402(top level) but also within any scope declared outside of a control
3403method - Scope{}, Device{}, Processor{}, PowerResource{}, and
3404ThermalZone{}.
3405
3406AcpiDump: Added support for dumping all SSDTs on newer versions of
3407Windows. These tables are now easily available -- SSDTs are not available
3408through the registry on older versions.
3409
3410----------------------------------------
341127 May 2016. Summary of changes for version 20160527:
3412
3413
34141) ACPICA kernel-resident subsystem:
3415
3416Temporarily reverted the new arbitrary bit length/alignment support in
3417AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
3418a number of regressions with the new code that need to be fully resolved
3419and tested before this support can be finally integrated into ACPICA.
3420Apologies for any inconveniences these issues may have caused.
3421
3422The ACPI message macros are not configurable (ACPI_MSG_ERROR,
3423ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
3424and ACPI_MSG_BIOS_WARNING). Lv Zheng.
3425
3426Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
3427option. Adds a new return macro, return_STR. Junk-uk Kim.
3428
3429Example Code and Data Size: These are the sizes for the OS-independent
3430acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3431debug version of the code includes the debug output trace mechanism and
3432has a much larger code and data size.
3433
3434  Current Release:
3435    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
3436    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
3437  Previous Release:
3438    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3439    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
3440
3441----------------------------------------
344222 April 2016. Summary of changes for version 20160422:
3443
34441) ACPICA kernel-resident subsystem:
3445
3446Fixed a regression in the GAS (generic address structure) arbitrary bit
3447support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
3448and incorrect return values. Lv Zheng. ACPICA BZ 1270.
3449
3450ACPI 6.0: Added support for new/renamed resource macros. One new argument
3451was added to each of these macros, and the original name has been
3452deprecated. The AML disassembler will always disassemble to the new
3453names. Support for the new macros was added to iASL, disassembler,
3454resource manager, and the acpihelp utility. ACPICA BZ 1274.
3455
3456    I2cSerialBus  -> I2cSerialBusV2
3457    SpiSerialBus  -> SpiSerialBusV2
3458    UartSerialBus -> UartSerialBusV2
3459
3460ACPI 6.0: Added support for a new integer field that was appended to the
3461package object returned by the _BIX method. This adds iASL compile-time
3462and AML runtime error checking. ACPICA BZ 1273.
3463
3464ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
3465Subspace Type2" (Headers, Disassembler, and data table compiler).
3466
3467Example Code and Data Size: These are the sizes for the OS-independent
3468acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3469debug version of the code includes the debug output trace mechanism and
3470has a much larger code and data size.
3471
3472  Current Release:
3473    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3474    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
3475  Previous Release:
3476    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3477    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
3478
3479
34802) iASL Compiler/Disassembler and Tools:
3481
3482iASL: Implemented an ASL grammar extension to allow/enable executable
3483"module-level code" to be created and executed under the various
3484operators that create new scopes. This type of AML code is already
3485supported in all known AML interpreters, and the grammar change will
3486appear in the next version of the ACPI specification. Simplifies the
3487conditional runtime creation of named objects under these object types:
3488
3489    Device
3490    PowerResource
3491    Processor
3492    Scope
3493    ThermalZone
3494
3495iASL: Implemented a new ASL extension, a "For" loop macro to add greater
3496ease-of-use to the ASL language. The syntax is similar to the
3497corresponding C operator, and is implemented with the existing AML While
3498opcode -- thus requiring no changes to existing AML interpreters.
3499
3500    For (Initialize, Predicate, Update) {TermList}
3501
3502Grammar:
3503    ForTerm :=
3504        For (
3505            Initializer    // Nothing | TermArg => ComputationalData
3506            Predicate      // Nothing | TermArg => ComputationalData
3507            Update         // Nothing | TermArg => ComputationalData
3508        ) {TermList}
3509
3510
3511iASL: The _HID/_ADR detection and validation has been enhanced to search
3512under conditionals in order to allow these objects to be conditionally
3513created at runtime.
3514
3515iASL: Fixed several issues with the constant folding feature. The
3516improvement allows better detection and resolution of statements that can
3517be folded at compile time. ACPICA BZ 1266.
3518
3519iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
3520conversion to the ASL ElseIf operator where incorrect ASL code could be
3521generated.
3522
3523iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
3524sometimes an extra (and extraneous) set of parentheses were emitted for
3525some combinations of operators. Although this did not cause any problems
3526with recompilation of the disassembled code, it made the code more
3527difficult to read. David Box. ACPICA BZ 1231.
3528
3529iASL: Changed to ignore the unreferenced detection for predefined names
3530of resource descriptor elements, when the resource descriptor is
3531created/defined within a control method.
3532
3533iASL: Disassembler: Fix a possible fault with externally declared Buffer
3534objects.
3535
3536----------------------------------------
353718 March 2016. Summary of changes for version 20160318:
3538
35391) ACPICA kernel-resident subsystem:
3540
3541Added support for arbitrary bit lengths and bit offsets for registers
3542defined by the Generic Address Structure. Previously, only aligned bit
3543lengths of 8/16/32/64 were supported. This was sufficient for many years,
3544but recently some machines have been seen that require arbitrary bit-
3545level support. ACPICA BZ 1240. Lv Zheng.
3546
3547Fixed an issue where the \_SB._INI method sometimes must be evaluated
3548before any _REG methods are evaluated. Lv Zheng.
3549
3550Implemented several changes related to ACPI table support
3551(Headers/Disassembler/TableCompiler):
3552NFIT: For ACPI 6.1, updated to add some additional new fields and
3553constants.
3554FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
35556).
3556DMAR: Added new constants per the 10/2014 DMAR spec.
3557IORT: Added new subtable per the 10/2015 IORT spec.
3558HEST: For ACPI 6.1, added new constants and new subtable.
3559DBG2: Added new constants per the 12/2015 DBG2 spec.
3560FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
3561ACPICA BZ 1249.
3562ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
3563
3564Updated header support for the DMAR table to match the current version of
3565the related spec.
3566
3567Added extensions to the ASL Concatenate operator to allow any ACPI object
3568to be passed as an operand. Any object other than Integer/String/Buffer
3569simply returns a string containing the object type. This extends the
3570usefulness of the Printf macros. Previously, Concatenate would abort the
3571control method if a non-data object was encountered.
3572
3573ACPICA source code: Deployed the C "const" keyword across the source code
3574where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
3575
3576Example Code and Data Size: These are the sizes for the OS-independent
3577acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3578debug version of the code includes the debug output trace mechanism and
3579has a much larger code and data size.
3580
3581  Current Release:
3582    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3583    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
3584  Previous Release:
3585    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3586    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3587
3588
35892) iASL Compiler/Disassembler and Tools:
3590
3591iASL/Disassembler: Improved the heuristic used to determine the number of
3592arguments for an externally defined control method (a method in another
3593table). Although this is an improvement, there is no deterministic way to
3594"guess" the number of method arguments. Only the ACPI 6.0 External opcode
3595will completely solve this problem as it is deployed (automatically) in
3596newer BIOS code.
3597
3598iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
3599statements that could cause errors when the disassembled file is
3600compiled. ACPICA BZ 1243. David Box.
3601
3602iASL: Fixed a regression caused by the merger of the two versions of the
3603local strtoul64. Because of a dependency on a global variable, strtoul64
3604could return an error for integers greater than a 32-bit value. ACPICA BZ
36051260.
3606
3607iASL: Fixed a regression where a fault could occur for an ASL Return
3608statement if it invokes a control method that is not resolved. ACPICA BZ
36091264.
3610
3611AcpiXtract: Improved input file validation: detection of binary files and
3612non-acpidump text files.
3613
3614----------------------------------------
361512 February 2016. Summary of changes for version 20160212:
3616
36171) ACPICA kernel-resident subsystem:
3618
3619Implemented full support for the ACPI 6.1 specification (released in
3620January). This version of the specification is available at:
3621http://www.uefi.org/specifications
3622
3623Only a relatively small number of changes were required in ACPICA to
3624support ACPI 6.1, in these areas:
3625- New predefined names
3626- New _HID values
3627- A new subtable for HEST
3628- A few other header changes for new values
3629
3630Ensure \_SB_._INI is executed before any _REG methods are executed. There
3631appears to be existing BIOS code that relies on this behavior. Lv Zheng.
3632
3633Reverted a change made in version 20151218 which enabled method
3634invocations to be targets of various ASL operators (SuperName and Target
3635grammar elements). While the new behavior is supported by the ACPI
3636specification, other AML interpreters do not support this behavior and
3637never will. The ACPI specification will be updated for ACPI 6.2 to remove
3638this support. Therefore, the change was reverted to the original ACPICA
3639behavior.
3640
3641ACPICA now supports the GCC 6 compiler.
3642
3643Current Release: (Note: build changes increased sizes)
3644    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3645    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3646Previous Release:
3647    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3648    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
3649
3650
36512) iASL Compiler/Disassembler and Tools:
3652
3653Completed full support for the ACPI 6.0 External() AML opcode. The
3654compiler emits an external AML opcode for each ASL External statement.
3655This opcode is used by the disassembler to assist with the disassembly of
3656external control methods by specifying the required number of arguments
3657for the method. AML interpreters do not use this opcode. To ensure that
3658interpreters do not even see the opcode, a block of one or more external
3659opcodes is surrounded by an "If(0)" construct. As this feature becomes
3660commonly deployed in BIOS code, the ability of disassemblers to correctly
3661disassemble AML code will be greatly improved. David Box.
3662
3663iASL: Implemented support for an optional cross-reference output file.
3664The -lx option will create a the cross-reference file with the suffix
3665"xrf". Three different types of cross-reference are created in this file:
3666- List of object references made from within each control method
3667- Invocation (caller) list for each user-defined control method
3668- List of references to each non-method object in the namespace
3669
3670iASL: Method invocations as ASL Target operands are now disallowed and
3671flagged as errors in preparation for ACPI 6.2 (see the description of the
3672problem above).
3673
3674----------------------------------------
36758 January 2016. Summary of changes for version 20160108:
3676
36771) ACPICA kernel-resident subsystem:
3678
3679Updated all ACPICA copyrights and signons to 2016: Added the 2016
3680copyright to all source code module headers and utility/tool signons.
3681This includes the standard Linux dual-license header. This affects
3682virtually every file in the ACPICA core subsystem, iASL compiler, all
3683ACPICA utilities, and the ACPICA test suite.
3684
3685Fixed a regression introduced in version 20151218 concerning the
3686execution of so-called module-level ASL/AML code. Namespace objects
3687created under a module-level If() construct were not properly/fully
3688entered into the namespace and could cause an interpreter fault when
3689accessed.
3690
3691Example Code and Data Size: These are the sizes for the OS-independent
3692acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3693debug version of the code includes the debug output trace mechanism and
3694has a much larger code and data size.
3695
3696Current Release:
3697    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3698    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
3699  Previous Release:
3700    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3701    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3702
3703
37042) iASL Compiler/Disassembler and Tools:
3705
3706Fixed a problem with the compilation of the GpioIo and GpioInt resource
3707descriptors. The _PIN field name was incorrectly defined to be an array
3708of 32-bit values, but the _PIN values are in fact 16 bits each. This
3709would cause incorrect bit width warnings when using Word (16-bit) fields
3710to access the descriptors.
3711
3712
3713----------------------------------------
371418 December 2015. Summary of changes for version 20151218:
3715
37161) ACPICA kernel-resident subsystem:
3717
3718Implemented per-AML-table execution of "module-level code" as individual
3719ACPI tables are loaded into the namespace during ACPICA initialization.
3720In other words, any module-level code within an AML table is executed
3721immediately after the table is loaded, instead of batched and executed
3722after all of the tables have been loaded. This provides compatibility
3723with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
3724David Box.
3725
3726To fully support the feature above, the default operation region handlers
3727for the SystemMemory, SystemIO, and PCI_Config address spaces are now
3728installed before any ACPI tables are loaded. This enables module-level
3729code to access these address spaces during the table load and module-
3730level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
3731Box.
3732
3733Implemented several changes to the internal _REG support in conjunction
3734with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
3735utilities for the changes above. Although these tools were changed, host
3736operating systems that simply use the default handlers for SystemMemory,
3737SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
3738
3739For example, in the code below, DEV1 is conditionally added to the
3740namespace by the DSDT via module-level code that accesses an operation
3741region. The SSDT references DEV1 via the Scope operator. DEV1 must be
3742created immediately after the DSDT is loaded in order for the SSDT to
3743successfully reference DEV1. Previously, this code would cause an
3744AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
3745fully supported by ACPICA.
3746
3747    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
3748    {
3749        OperationRegion (OPR1, SystemMemory, 0x400, 32)
3750        Field (OPR1, AnyAcc, NoLock, Preserve)
3751        {
3752            FLD1, 1
3753        }
3754        If (FLD1)
3755        {
3756            Device (\DEV1)
3757            {
3758            }
3759        }
3760    }
3761    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
3762    {
3763        External (\DEV1, DeviceObj)
3764        Scope (\DEV1)
3765        {
3766        }
3767    }
3768
3769Fixed an AML interpreter problem where control method invocations were
3770not handled correctly when the invocation was itself a SuperName argument
3771to another ASL operator. In these cases, the method was not invoked.
3772ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3773argument:
3774    Store
3775    Acquire, Wait
3776    CondRefOf, RefOf
3777    Decrement, Increment
3778    Load, Unload
3779    Notify
3780    Signal, Release, Reset
3781    SizeOf
3782
3783Implemented automatic String-to-ObjectReference conversion support for
3784packages returned by predefined names (such as _DEP). A common BIOS error
3785is to add double quotes around an ObjectReference namepath, which turns
3786the reference into an unexpected string object. This support detects the
3787problem and corrects it before the package is returned to the caller that
3788invoked the method. Lv Zheng.
3789
3790Implemented extensions to the Concatenate operator. Concatenate now
3791accepts any type of object, it is not restricted to simply
3792Integer/String/Buffer. For objects other than these 3 basic data types,
3793the argument is treated as a string containing the name of the object
3794type. This expands the utility of Concatenate and the Printf/Fprintf
3795macros. ACPICA BZ 1222.
3796
3797Cleaned up the output of the ASL Debug object. The timer() value is now
3798optional and no longer emitted by default. Also, the basic data types of
3799Integer/String/Buffer are simply emitted as their values, without a data
3800type string -- since the data type is obvious from the output. ACPICA BZ
38011221.
3802
3803Example Code and Data Size: These are the sizes for the OS-independent
3804acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3805debug version of the code includes the debug output trace mechanism and
3806has a much larger code and data size.
3807
3808  Current Release:
3809    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3810    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3811  Previous Release:
3812    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3813    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3814
3815
38162) iASL Compiler/Disassembler and Tools:
3817
3818iASL: Fixed some issues with the ASL Include() operator. This operator
3819was incorrectly defined in the iASL parser rules, causing a new scope to
3820be opened for the code within the include file. This could lead to
3821several issues, including allowing ASL code that is technically illegal
3822and not supported by AML interpreters. Note, this does not affect the
3823related #include preprocessor operator. ACPICA BZ 1212.
3824
3825iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3826operator is essentially an ASL macro since there is no AML opcode
3827associated with it. The code emitted by the iASL compiler for ElseIf is
3828an Else opcode followed immediately by an If opcode. The disassembler
3829will now emit an ElseIf if it finds an Else immediately followed by an
3830If. This simplifies the decoded ASL, especially for deeply nested
3831If..Else and large Switch constructs. Thus, the disassembled code more
3832closely follows the original source ASL. ACPICA BZ 1211. Example:
3833
3834    Old disassembly:
3835        Else
3836        {
3837            If (Arg0 == 0x02)
3838            {
3839                Local0 = 0x05
3840            }
3841        }
3842
3843    New disassembly:
3844        ElseIf (Arg0 == 0x02)
3845        {
3846            Local0 = 0x05
3847        }
3848
3849AcpiExec: Added support for the new module level code behavior and the
3850early region installation. This required a small change to the
3851initialization, since AcpiExec must install its own operation region
3852handlers.
3853
3854AcpiExec: Added support to make the debug object timer optional. Default
3855is timer disabled. This cleans up the debug object output -- the timer
3856data is rarely used.
3857
3858AcpiExec: Multiple ACPI tables are now loaded in the order that they
3859appear on the command line. This can be important when there are
3860interdependencies/references between the tables.
3861
3862iASL/Templates. Add support to generate template files with multiple
3863SSDTs within a single output file. Also added ommand line support to
3864specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
38651223, 1225.
3866
3867
3868----------------------------------------
386924 November 2015. Summary of changes for version 20151124:
3870
38711) ACPICA kernel-resident subsystem:
3872
3873Fixed a possible regression for a previous update to FADT handling. The
3874FADT no longer has a fixed table ID, causing some issues with code that
3875was hardwired to a specific ID. Lv Zheng.
3876
3877Fixed a problem where the method auto-serialization could interfere with
3878the current SyncLevel. This change makes the auto-serialization support
3879transparent to the SyncLevel support and management.
3880
3881Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3882interface is intended for early access to the namespace during the
3883initial namespace device discovery walk. The _SUB method has been seen to
3884access operation regions in some cases, causing errors because the
3885operation regions are not fully initialized.
3886
3887AML Debugger: Fixed some issues with the terminate/quit/exit commands
3888that can cause faults. Lv Zheng.
3889
3890AML Debugger: Add thread ID support so that single-step mode only applies
3891to the AML Debugger thread. This prevents runtime errors within some
3892kernels. Lv Zheng.
3893
3894Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3895methods that are invoked by this interface are optional, removed warnings
3896emitted for the case where one or more of these methods do not exist.
3897ACPICA BZ 1208, original change by Prarit Bhargava.
3898
3899Made a major pass through the entire ACPICA source code base to
3900standardize formatting that has diverged a bit over time. There are no
3901functional changes, but this will of course cause quite a few code
3902differences from the previous ACPICA release.
3903
3904Example Code and Data Size: These are the sizes for the OS-independent
3905acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3906debug version of the code includes the debug output trace mechanism and
3907has a much larger code and data size.
3908
3909  Current Release:
3910    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3911    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3912  Previous Release:
3913    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3914    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3915
3916
39172) iASL Compiler/Disassembler and Tools:
3918
3919iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3920definition blocks within a single ASL file and the resulting AML file.
3921Support for this type of file was also added to the various tools that
3922use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3923example code below shows two definition blocks within the same file:
3924
3925    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
39260x12345678)
3927    {
3928    }
3929    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3930    {
3931    }
3932
3933iASL: Enhanced typechecking for the Name() operator. All expressions for
3934the value of the named object must be reduced/folded to a single constant
3935at compile time, as per the ACPI specification (the AML definition of
3936Name()).
3937
3938iASL: Fixed some code indentation issues for the -ic and -ia options (C
3939and assembly headers). Now all emitted code correctly begins in column 1.
3940
3941iASL: Added an error message for an attempt to open a Scope() on an
3942object defined in an SSDT. The DSDT is always loaded into the namespace
3943first, so any attempt to open a Scope on an SSDT object will fail at
3944runtime.
3945
3946
3947----------------------------------------
394830 September 2015. Summary of changes for version 20150930:
3949
39501) ACPICA kernel-resident subsystem:
3951
3952Debugger: Implemented several changes and bug fixes to assist support for
3953the in-kernel version of the AML debugger. Lv Zheng.
3954- Fix the "predefined" command for in-kernel debugger.
3955- Do not enter debug command loop for the help and version commands.
3956- Disallow "execute" command during execution/single-step of a method.
3957
3958Interpreter: Updated runtime typechecking for all operators that have
3959target operands. The operand is resolved and validated that it is legal.
3960For example, the target cannot be a non-data object such as a Device,
3961Mutex, ThermalZone, etc., as per the ACPI specification.
3962
3963Debugger: Fixed the double-mutex user I/O handshake to work when local
3964deadlock detection is enabled.
3965
3966Debugger: limited display of method locals and arguments (LocalX and
3967ArgX) to only those that have actually been initialized. This prevents
3968lines of extraneous output.
3969
3970Updated the definition of the NFIT table to correct the bit polarity of
3971one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3972
3973Example Code and Data Size: These are the sizes for the OS-independent
3974acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3975debug version of the code includes the debug output trace mechanism and
3976has a much larger code and data size.
3977
3978  Current Release:
3979    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3980    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3981  Previous Release:
3982    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3983    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3984
3985
39862) iASL Compiler/Disassembler and Tools:
3987
3988iASL: Improved the compile-time typechecking for operands of many of the
3989ASL operators:
3990
3991-- Added an option to disable compiler operand/operator typechecking (-
3992ot).
3993
3994-- For the following operators, the TermArg operands are now validated
3995when possible to be Integer data objects: BankField, OperationRegion,
3996DataTableRegion, Buffer, and Package.
3997
3998-- Store (Source, Target): Both the source and target operands are
3999resolved and checked that the operands are both legal. For example,
4000neither operand can be a non-data object such as a Device, Mutex,
4001ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
4002operator can be used to store an object to any type of target object.
4003
4004-- Store (Source, Target): If the source is a Package object, the target
4005must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
4006is a Package, the source must also be a Package.
4007
4008-- Store (Source, Target): A warning is issued if the source and target
4009resolve to the identical named object.
4010
4011-- Store (Source, <method invocation>): An error is generated for the
4012target method invocation, as this construct is not supported by the AML
4013interpreter.
4014
4015-- For all ASL math and logic operators, the target operand must be a
4016data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
4017includes the function return value also.
4018
4019-- External declarations are also included in the typechecking where
4020possible. External objects defined using the UnknownObj keyword cannot be
4021typechecked, however.
4022
4023iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
4024operator:
4025- Legacy code: Index(PKG1, 3)
4026- New ASL+ code: PKG1[3]
4027This completes the ACPI 6.0 ASL+ support as it was the only operator not
4028supported.
4029
4030iASL: Fixed the file suffix for the preprocessor output file (.i). Two
4031spaces were inadvertently appended to the filename, causing file access
4032and deletion problems on some systems.
4033
4034ASL Test Suite (ASLTS): Updated the master makefile to generate all
4035possible compiler output files when building the test suite -- thus
4036exercising these features of the compiler. These files are automatically
4037deleted when the test suite exits.
4038
4039
4040----------------------------------------
404118 August 2015. Summary of changes for version 20150818:
4042
40431) ACPICA kernel-resident subsystem:
4044
4045Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
4046Zheng. ACPICA BZ 1186.
4047
4048Completed development to ensure that the ACPICA Disassembler and Debugger
4049are fully standalone components of ACPICA. Removed cross-component
4050dependences. Lv Zheng.
4051
4052The max-number-of-AML-loops is now runtime configurable (previously was
4053compile-time only). This is essentially a loop timeout to force-abort
4054infinite AML loops. ACPCIA BZ 1192.
4055
4056Debugger: Cleanup output to dump ACPI names and namepaths without any
4057trailing underscores. Lv Zheng. ACPICA BZ 1135.
4058
4059Removed unnecessary conditional compilations across the Debugger and
4060Disassembler components where entire modules could be left uncompiled.
4061
4062The aapits test is deprecated and has been removed from the ACPICA git
4063tree. The test has never been completed and has not been maintained, thus
4064becoming rather useless. ACPICA BZ 1015, 794.
4065
4066A batch of small changes to close bugzilla and other reports:
4067- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
4068- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
4069- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
4070- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
4071Moore.
4072- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
4073ACPICA BZ 1184.
4074- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
4075operators.
4076- Debugger: Split debugger initialization/termination interfaces. Lv
4077Zheng.
4078- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
4079identification.
4080- AcpiExec: Add debug message during _REG method phase during table
4081load/init.
4082- AcpiNames: Fix a regression where some output was missing and no longer
4083emitted.
4084- Debugger: General cleanup and simplification. Lv Zheng.
4085- Disassembler: Cleanup use of several global option variables. Lv Zheng.
4086
4087Example Code and Data Size: These are the sizes for the OS-independent
4088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4089debug version of the code includes the debug output trace mechanism and
4090has a much larger code and data size.
4091
4092  Current Release:
4093    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
4094    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
4095  Previous Release:
4096    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
4097    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
4098
4099
41002) iASL Compiler/Disassembler and Tools:
4101
4102AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
4103were not handled properly and caused load errors. Now, properly invoke
4104and use the ACPICA auto-reallocate mechanism for ACPI table data
4105structures. ACPICA BZ 1188
4106
4107AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
4108BZ 1190.
4109
4110AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
4111AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
4112executed during initialization. ACPICA BZ 1187, 1189.
4113
4114iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
4115that corresponds to each disassembled ASL statement, to simplify
4116debugging. ACPICA BZ 1191.
4117
4118Debugger: Add option to the "objects" command to display a summary of the
4119current namespace objects (Object type and count). This is displayed if
4120the command is entered with no arguments.
4121
4122AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
4123
4124
4125----------------------------------------
412617 July 2015. Summary of changes for version 20150717:
4127
41281) ACPICA kernel-resident subsystem:
4129
4130Improved the partitioning between the Debugger and Disassembler
4131components. This allows the Debugger to be used standalone within kernel
4132code without the Disassembler (which is used for single stepping also).
4133This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
4134
4135Debugger: Implemented a new command to trace the execution of control
4136methods (Trace). This is especially useful for the in-kernel version of
4137the debugger when file I/O may not be available for method trace output.
4138See the ACPICA reference for more information. Lv Zheng.
4139
4140Moved all C library prototypes (used for the local versions of these
4141functions when requested) to a new header, acclib.h
4142Cleaned up the use of non-ANSI C library functions. These functions are
4143implemented locally in ACPICA. Moved all such functions to a common
4144source file, utnonansi.c
4145
4146Debugger: Fixed a problem with the "!!" command (get last command
4147executed) where the debugger could enter an infinite loop and eventually
4148crash.
4149
4150Removed the use of local macros that were used for some of the standard C
4151library functions to automatically cast input parameters. This mostly
4152affected the is* functions where the input parameter is defined to be an
4153int. This required a few modifications to the main ACPICA source code to
4154provide casting for these functions and eliminate possible compiler
4155warnings for these parameters.
4156
4157Across the source code, added additional status/error checking to resolve
4158issues discovered by static source code analysis tools such as Coverity.
4159
4160Example Code and Data Size: These are the sizes for the OS-independent
4161acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4162debug version of the code includes the debug output trace mechanism and
4163has a much larger code and data size.
4164
4165  Current Release:
4166    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
4167    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
4168  Previous Release:
4169    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
4170    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
4171
4172
41732) iASL Compiler/Disassembler and Tools:
4174
4175iASL: Fixed a regression where the device map file feature no longer
4176worked properly when used in conjunction with the disassembler. It only
4177worked properly with the compiler itself.
4178
4179iASL: Implemented a new warning for method LocalX variables that are set
4180but never used (similar to a C compiler such as gcc). This also applies
4181to ArgX variables that are not defined by the parent method, and are
4182instead (legally) used as local variables.
4183
4184iASL/Preprocessor: Finished the pass-through of line numbers from the
4185preprocessor to the compiler. This ensures that compiler errors/warnings
4186have the correct original line numbers and filenames, regardless of any
4187#include files.
4188
4189iASL/Preprocessor: Fixed a couple of issues with comment handling and the
4190pass-through of comments to the preprocessor output file (which becomes
4191the compiler input file). Also fixed a problem with // comments that
4192appear after a math expression.
4193
4194iASL: Added support for the TCPA server table to the table compiler and
4195template generator. (The client table was already previously supported)
4196
4197iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
4198identify the iASL compiler.
4199
4200Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
4201multiple times. The new names are ACPI_SIGN_NEGATIVE and
4202ACPI_SIGN_POSITIVE.
4203
4204AcpiHelp: Update to expand help messages for the iASL preprocessor
4205directives.
4206
4207
4208----------------------------------------
420919 June 2015. Summary of changes for version 20150619:
4210
4211Two regressions in version 20150616 have been addressed:
4212
4213Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
4214etc.) This update changes ACPICA to only use the standard headers for
4215functions, or the prototypes for the local versions of the C library
4216functions. Across the source code, this required some additional casts
4217for some Clib invocations for portability. Moved all local prototypes to
4218a new file, acclib.h
4219
4220Fixes several problems with recent changes to the handling of the FACS
4221table that could cause some systems not to boot.
4222
4223
4224----------------------------------------
422516 June 2015. Summary of changes for version 20150616:
4226
4227
42281) ACPICA kernel-resident subsystem:
4229
4230Across the entire ACPICA source code base, the various macros for the C
4231library functions (such as ACPI_STRLEN, etc.) have been removed and
4232replaced by the standard C library names (strlen, etc.) The original
4233purpose for these macros is no longer applicable. This simplification
4234reduces the number of macros used in the ACPICA source code
4235significantly, improving readability and maintainability.
4236
4237Implemented support for a new ACPI table, the OSDT. This table, the
4238"override" SDT, can be loaded directly by the host OS at boot time. It
4239enables the replacement of existing namespace objects that were installed
4240via the DSDT and/or SSDTs. The primary purpose for this is to replace
4241buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
4242for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
4243Moore.
4244
4245Added support for systems with (improperly) two FACS tables -- a "32-bit"
4246table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
4247X field). This change will support both automatically. There continues to
4248be systems found with this issue. This support requires a change to the
4249AcpiSetFirmwareWakingVector interface. Also, a public global variable has
4250been added to allow the host to select which FACS is desired
4251(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
4252details Lv Zheng.
4253
4254Added a new feature to allow for systems that do not contain an FACS.
4255Although this is already supported on hardware-reduced platforms, the
4256feature has been extended for all platforms. The reasoning is that we do
4257not want to abort the entire ACPICA initialization just because the
4258system is seriously buggy and has no FACS.
4259
4260Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
4261not correctly transcribed from the ACPI specification in ACPICA version
426220150515.
4263
4264Implemented support for the _CLS object in the AcpiGetObjectInfo external
4265interface.
4266
4267Updated the definitions of the TCPA and TPM2 ACPI tables to the more
4268recent TCG ACPI Specification, December 14, 2014. Table disassembler and
4269compiler also updated. Note: The TCPA "server" table is not supported by
4270the disassembler/table-compiler at this time.
4271
4272ACPI 6.0: Added definitions for the new GIC version field in the MADT.
4273
4274Example Code and Data Size: These are the sizes for the OS-independent
4275acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4276debug version of the code includes the debug output trace mechanism and
4277has a much larger code and data size.
4278
4279  Current Release:
4280    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
4281    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
4282  Previous Release:
4283    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
4284    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
4285
4286
42872) iASL Compiler/Disassembler and Tools:
4288
4289Disassembler: Fixed a problem with the new symbolic operator disassembler
4290where incorrect ASL code could be emitted in some cases for the "non-
4291commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
4292ShiftRight. The actual problem cases seem to be rather unusual in common
4293ASL code, however. David Box.
4294
4295Modified the linux version of acpidump to obtain ACPI tables from not
4296just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
4297Zheng.
4298
4299iASL: Fixed a problem where the user preprocessor output file (.i)
4300contained extra data that was not expected. The compiler was using this
4301file as a temporary file and passed through #line directives in order to
4302keep compiler error messages in sync with the input file and line number
4303across multiple include files. The (.i) is no longer a temporary file as
4304the compiler uses a new, different file for the original purpose.
4305
4306iASL: Fixed a problem where comments within the original ASL source code
4307file were not passed through to the preprocessor output file, nor any
4308listing files.
4309
4310iASL: Fixed some issues for the handling of the "#include" preprocessor
4311directive and the similar (but not the same) "Include" ASL operator.
4312
4313iASL: Add support for the new OSDT in both the disassembler and compiler.
4314
4315iASL: Fixed a problem with the constant folding support where a Buffer
4316object could be incorrectly generated (incorrectly formed) during a
4317conversion to a Store() operator.
4318
4319AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
4320description text for the _REV predefined name. _REV now permanently
4321returns 2, as per the ACPI 6.0 specification.
4322
4323Debugger: Enhanced the output of the Debug ASL object for references
4324produced by the Index operator. For Buffers and strings, only output the
4325actual byte pointed to by the index. For packages, only print the single
4326package element decoded by the index. Previously, the entire
4327buffer/string/package was emitted.
4328
4329iASL/Table-compiler: Fixed a regression where the "generic" data types
4330were no longer recognized, causing errors.
4331
4332
4333----------------------------------------
433415 May 2015. Summary of changes for version 20150515:
4335
4336This release implements most of ACPI 6.0 as described below.
4337
43381) ACPICA kernel-resident subsystem:
4339
4340Implemented runtime argument checking and return value checking for all
4341new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
4342_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
4343
4344Example Code and Data Size: These are the sizes for the OS-independent
4345acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4346debug version of the code includes the debug output trace mechanism and
4347has a much larger code and data size.
4348
4349  Current Release:
4350    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
4351    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
4352  Previous Release:
4353    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4354    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4355
4356
43572) iASL Compiler/Disassembler and Tools:
4358
4359iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
4360names (argument count validation and return value typechecking.)
4361
4362iASL disassembler and table compiler: implemented support for all new
4363ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
4364
4365iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
4366tables: FADT, MADT.
4367
4368iASL preprocessor: Added a new directive to enable inclusion of binary
4369blobs into ASL code. The new directive is #includebuffer. It takes a
4370binary file as input and emits a named ascii buffer object into the ASL
4371code.
4372
4373AcpiHelp: Added support for all new ACPI 6.0 predefined names.
4374
4375AcpiHelp: Added a new option, -d, to display all iASL preprocessor
4376directives.
4377
4378AcpiHelp: Added a new option, -t, to display all known/supported ACPI
4379tables.
4380
4381
4382----------------------------------------
438310 April 2015. Summary of changes for version 20150410:
4384
4385Reverted a change introduced in version 20150408 that caused
4386a regression in the disassembler where incorrect operator
4387symbols could be emitted.
4388
4389
4390----------------------------------------
439108 April 2015. Summary of changes for version 20150408:
4392
4393
43941) ACPICA kernel-resident subsystem:
4395
4396Permanently set the return value for the _REV predefined name. It now
4397returns 2 (was 5). This matches other ACPI implementations. _REV will be
4398deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
4399for ACPI 2.0 and later. It should never be used to differentiate or
4400identify operating systems.
4401
4402Added the "Windows 2015" string to the _OSI support. ACPICA will now
4403return TRUE to a query with this string.
4404
4405Fixed several issues with the local version of the printf function.
4406
4407Added the C99 compiler option (-std=c99) to the Unix makefiles.
4408
4409  Current Release:
4410    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
4411    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
4412  Previous Release:
4413    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4414    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4415
4416
44172) iASL Compiler/Disassembler and Tools:
4418
4419iASL: Implemented an enhancement to the constant folding feature to
4420transform the parse tree to a simple Store operation whenever possible:
4421    Add (2, 3, X) ==> is converted to: Store (5, X)
4422    X = 2 + 3     ==> is converted to: Store (5, X)
4423
4424Updated support for the SLIC table (Software Licensing Description Table)
4425in both the Data Table compiler and the disassembler. The SLIC table
4426support now conforms to "Microsoft Software Licensing Tables (SLIC and
4427MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
4428following the ACPI header is now defined to be "Proprietary Data", and as
4429such, can only be entered or displayed as a hex data block.
4430
4431Implemented full support for the MSDM table as described in the document
4432above. Note: The format of MSDM is similar to SLIC. Any MSDM data
4433following the ACPI header is defined to be "Proprietary Data", and can
4434only be entered or displayed as a hex data block.
4435
4436Implemented the -Pn option for the iASL Table Compiler (was only
4437implemented for the ASL compiler). This option disables the iASL
4438preprocessor.
4439
4440Disassembler: For disassembly of Data Tables, added a comment field
4441around the Ascii equivalent data that is emitted as part of the "Raw
4442Table Data" block. This prevents the iASL Preprocessor from possible
4443confusion if/when the table is compiled.
4444
4445Disassembler: Added an option (-df) to force the disassembler to assume
4446that the table being disassembled contains valid AML. This feature is
4447useful for disassembling AML files that contain ACPI signatures other
4448than DSDT or SSDT (such as OEMx or other signatures).
4449
4450Changes for the EFI version of the tools:
44511) Fixed a build error/issue
44522) Fixed a cast warning
4453
4454iASL: Fixed a path issue with the __FILE__ operator by making the
4455directory prefix optional within the internal SplitInputFilename
4456function.
4457
4458Debugger: Removed some unused global variables.
4459
4460Tests: Updated the makefile for proper generation of the AAPITS suite.
4461
4462
4463----------------------------------------
446404 February 2015. Summary of changes for version 20150204:
4465
4466ACPICA kernel-resident subsystem:
4467
4468Updated all ACPICA copyrights and signons to 2014. Added the 2014
4469copyright to all module headers and signons, including the standard Linux
4470header. This affects virtually every file in the ACPICA core subsystem,
4471iASL compiler, all ACPICA utilities, and the test suites.
4472
4473Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
4474A raw gpe handling mechanism was created to allow better handling of GPE
4475storms that aren't easily managed by the normal handler. The raw handler
4476allows disabling/renabling of the GPE so that interrupt storms can be
4477avoided in cases where events cannot be timely serviced. In this
4478scenario, handlers should use the AcpiSetGpe() API to disable/enable the
4479GPE. This API will leave the reference counts undisturbed, thereby
4480preventing unintentional clearing of the GPE when the intent in only to
4481temporarily disable it. Raw handlers allow enabling and disabling of a
4482GPE by removing GPE register locking. As such, raw handlers much provide
4483their own locks while using GPE API's to protect access to GPE data
4484structures.
4485Lv Zheng
4486
4487Events: Always modify GPE registers under the GPE lock.
4488Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
4489values. Reported as bug by joe.liu@apple.com.
4490
4491Unix makefiles: Separate option to disable optimizations and
4492_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
4493NOOPT disable option and creates a separate flag (NOFORTIFY) for this
4494purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
4495errors when building ACPICA. This allows disabling the option without
4496also having to disable optimazations.
4497David Box
4498
4499  Current Release:
4500    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
4501    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
4502
4503--
4504--------------------------------------
450507 November 2014. Summary of changes for version 20141107:
4506
4507This release is available at https://acpica.org/downloads
4508
4509This release introduces and implements language extensions to ASL that
4510provide support for symbolic ("C-style") operators and expressions. These
4511language extensions are known collectively as ASL+.
4512
4513
45141) iASL Compiler/Disassembler and Tools:
4515
4516Disassembler: Fixed a problem with disassembly of the UartSerialBus
4517macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
4518Box.
4519
4520Disassembler: Fixed the Unicode macro support to add escape sequences.
4521All non-printable ASCII values are emitted as escape sequences, as well
4522as the standard escapes for quote and backslash. Ensures that the
4523disassembled macro can be correctly recompiled.
4524
4525iASL: Added Printf/Fprintf macros for formatted output. These macros are
4526translated to existing AML Concatenate and Store operations. Printf
4527writes to the ASL Debug object. Fprintf allows the specification of an
4528ASL name as the target. Only a single format specifier is required, %o,
4529since the AML interpreter dynamically converts objects to the required
4530type. David E. Box.
4531
4532    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4533                 (Concatenate (Concatenate (Concatenate ("", Arg0),
4534                 ": Unexpected value for "), Arg1), ", "), Arg2),
4535                 " at line "), Arg3), Debug)
4536
4537    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
4538                 Arg0, Arg1, Arg2, Arg3)
4539
4540    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4541                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
4542
4543    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
4544
4545iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
4546ASL parse tree before the AML code is generated. This allows blocks of
4547ASL code to be removed in order to help locate and identify problem
4548devices and/or code. David E. Box.
4549
4550AcpiExec: Added support (-fi) for an optional namespace object
4551initialization file. This file specifies initial values for namespace
4552objects as necessary for debugging and testing different ASL code paths
4553that may be taken as a result of BIOS options.
4554
4555
45562) Overview of symbolic operator support for ASL (ASL+)
4557-------------------------------------------------------
4558
4559As an extension to the ASL language, iASL implements support for symbolic
4560(C-style) operators for math and logical expressions. This can greatly
4561simplify ASL code as well as improve both readability and
4562maintainability. These language extensions can exist concurrently with
4563all legacy ASL code and expressions.
4564
4565The symbolic extensions are 100% compatible with existing AML
4566interpreters, since no new AML opcodes are created. To implement the
4567extensions, the iASL compiler transforms the symbolic expressions into
4568the legacy ASL/AML equivalents at compile time.
4569
4570Full symbolic expressions are supported, along with the standard C
4571precedence and associativity rules.
4572
4573Full disassembler support for the symbolic expressions is provided, and
4574creates an automatic migration path for existing ASL code to ASL+ code
4575via the disassembly process. By default, the disassembler now emits ASL+
4576code with symbolic expressions. An option (-dl) is provided to force the
4577disassembler to emit legacy ASL code if desired.
4578
4579Below is the complete list of the currently supported symbolic operators
4580with examples. See the iASL User Guide for additional information.
4581
4582
4583ASL+ Syntax      Legacy ASL Equivalent
4584-----------      ---------------------
4585
4586    // Math operators
4587
4588Z = X + Y        Add (X, Y, Z)
4589Z = X - Y        Subtract (X, Y, Z)
4590Z = X * Y        Multiply (X, Y, Z)
4591Z = X / Y        Divide (X, Y, , Z)
4592Z = X % Y        Mod (X, Y, Z)
4593Z = X << Y       ShiftLeft (X, Y, Z)
4594Z = X >> Y       ShiftRight (X, Y, Z)
4595Z = X & Y        And (X, Y, Z)
4596Z = X | Y        Or (X, Y, Z)
4597Z = X ^ Y        Xor (X, Y, Z)
4598Z = ~X           Not (X, Z)
4599X++              Increment (X)
4600X--              Decrement (X)
4601
4602    // Logical operators
4603
4604(X == Y)         LEqual (X, Y)
4605(X != Y)         LNotEqual (X, Y)
4606(X < Y)          LLess (X, Y)
4607(X > Y)          LGreater (X, Y)
4608(X <= Y)         LLessEqual (X, Y)
4609(X >= Y)         LGreaterEqual (X, Y)
4610(X && Y)         LAnd (X, Y)
4611(X || Y)         LOr (X, Y)
4612(!X)             LNot (X)
4613
4614    // Assignment and compound assignment operations
4615
4616X = Y           Store (Y, X)
4617X += Y          Add (X, Y, X)
4618X -= Y          Subtract (X, Y, X)
4619X *= Y          Multiply (X, Y, X)
4620X /= Y          Divide (X, Y, , X)
4621X %= Y          Mod (X, Y, X)
4622X <<= Y         ShiftLeft (X, Y, X)
4623X >>= Y         ShiftRight (X, Y, X)
4624X &= Y          And (X, Y, X)
4625X |= Y          Or (X, Y, X)
4626X ^= Y          Xor (X, Y, X)
4627
4628
46293) ASL+ Examples:
4630-----------------
4631
4632Legacy ASL:
4633        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
4634            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
46350x03FB),
4636            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
4637        {
4638            And (MEMB, 0xFFFFFFF0, SRMB)
4639            Store (MEMB, Local2)
4640            Store (PDBM, Local1)
4641            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
4642            Store (SRMB, MEMB)
4643            Or (PDBM, 0x02, PDBM)
4644        }
4645
4646ASL+ version:
4647        If (((R510 & 0x03FB) == 0x02E0) ||
4648            ((R520 & 0x03FB) == 0x02E0) ||
4649            ((R530 & 0x03FB) == 0x02E0) ||
4650            ((R540 & 0x03FB) == 0x02E0))
4651        {
4652            SRMB = (MEMB & 0xFFFFFFF0)
4653            Local2 = MEMB
4654            Local1 = PDBM
4655            PDBM &= 0xFFFFFFFFFFFFFFF9
4656            MEMB = SRMB
4657            PDBM |= 0x02
4658        }
4659
4660Legacy ASL:
4661        Store (0x1234, Local1)
4662        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
4663        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
4664        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
4665        Store (Index (PKG1, 0x03), Local6)
4666        Store (Add (Local3, Local2), Debug)
4667        Add (Local1, 0x0F, Local2)
4668        Add (Local1, Multiply (Local2, Local3), Local2)
4669        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
4670
4671ASL+ version:
4672        Local1 = 0x1234
4673        Local3 = (((Local1 + TEST) + 0x20) * Local2)
4674        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
4675        Local3 = (Local1 + (TEST + (0x20 * Local2)))
4676        Local6 = Index (PKG1, 0x03)
4677        Debug = (Local3 + Local2)
4678        Local2 = (Local1 + 0x0F)
4679        Local2 = (Local1 + (Local2 * Local3))
4680        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
4681
4682
4683----------------------------------------
468426 September 2014. Summary of changes for version 20140926:
4685
46861) ACPICA kernel-resident subsystem:
4687
4688Updated the GPIO operation region handler interface (GeneralPurposeIo).
4689In order to support GPIO Connection objects with multiple pins, along
4690with the related Field objects, the following changes to the interface
4691have been made: The Address is now defined to be the offset in bits of
4692the field unit from the previous invocation of a Connection. It can be
4693viewed as a "Pin Number Index" into the connection resource descriptor.
4694The BitWidth is the exact bit width of the field. It is usually one bit,
4695but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
4696additional information and examples.
4697
4698GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
4699corresponding _Lxx/_Exx methods are disabled (they may have been enabled
4700by the firmware), so that they cannot fire until they are enabled via
4701AcpiUpdateAllGpes. Rafael J. Wysocki.
4702
4703Added a new return flag for the Event/GPE status interfaces --
4704AcpiGetEventStatus and AcpiGetGpeStatus. The new
4705ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
4706GPE currently has a handler associated with it, and can thus actually
4707affect the system. Lv Zheng.
4708
4709Example Code and Data Size: These are the sizes for the OS-independent
4710acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4711debug version of the code includes the debug output trace mechanism and
4712has a much larger code and data size.
4713
4714  Current Release:
4715    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4716    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4717  Previous Release:
4718    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4719    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4720
47212) iASL Compiler/Disassembler and Tools:
4722
4723iASL: Fixed a memory allocation/free regression introduced in 20140828
4724that could cause the compiler to crash. This was introduced inadvertently
4725during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
47261113.
4727
4728iASL: Removed two error messages that have been found to create false
4729positives, until they can be fixed and fully validated (ACPICA BZ 1112):
47301) Illegal forward reference within a method
47312) Illegal reference across two methods
4732
4733iASL: Implemented a new option (-lm) to create a hardware mapping file
4734that summarizes all GPIO, I2C, SPI, and UART connections. This option
4735works for both the compiler and disassembler. See the iASL compiler user
4736guide for additional information and examples (section 6.4.6).
4737
4738AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
4739version 2. This corrects the AE_BAD_HEADER exception seen on systems with
4740a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
4741
4742AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
4743unless STDIN is actually a terminal. Assists with batch-mode processing.
4744ACPICA BZ 1114.
4745
4746Disassembler/AcpiHelp: Added another large group of recognized _HID
4747values.
4748
4749
4750----------------------------------------
475128 August 2014. Summary of changes for version 20140828:
4752
47531) ACPICA kernel-resident subsystem:
4754
4755Fixed a problem related to the internal use of the Timer() operator where
4756a 64-bit divide could cause an attempted link to a double-precision math
4757library. This divide is not actually necessary, so the code was
4758restructured to eliminate it. Lv Zheng.
4759
4760ACPI 5.1: Added support for the runtime validation of the _DSD package
4761(similar to the iASL support).
4762
4763ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
4764SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
4765
4766Example Code and Data Size: These are the sizes for the OS-independent
4767acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4768debug version of the code includes the debug output trace mechanism and
4769has a much larger code and data size.
4770
4771  Current Release:
4772    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4773    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4774  Previous Release:
4775    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
4776    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4777
47782) iASL Compiler/Disassembler and Tools:
4779
4780AcpiExec: Fixed a problem on unix systems where the original terminal
4781state was not always properly restored upon exit. Seen when using the -v
4782option. ACPICA BZ 1104.
4783
4784iASL: Fixed a problem with the validation of the ranges/length within the
4785Memory24 resource descriptor. There was a boundary condition when the
4786range was equal to the (length -1) caused by the fact that these values
4787are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4788
4789Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4790polarity
4791flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4792is
4793now supported properly.
4794
4795ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4796in the disassembler, data table compiler, and table template generator.
4797
4798iASL: Added a requirement for Device() objects that one of either a _HID
4799or _ADR must exist within the scope of a Device, as per the ACPI
4800specification. Remove a similar requirement that was incorrectly in place
4801for the _DSD object.
4802
4803iASL: Added error detection for illegal named references within control
4804methods that would cause runtime failures. Now trapped as errors are: 1)
4805References to objects within a non-parent control method. 2) Forward
4806references (within a method) -- for control methods, AML interpreters use
4807a one-pass parse of control methods. ACPICA BZ 1008.
4808
4809iASL: Added error checking for dependencies related to the _PSx power
4810methods. ACPICA BZ 1029.
48111) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4812_PS3.
48132) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4814scope.
4815
4816iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4817deploying the existing object and string caches and adding new caches for
4818the table compiler.
4819
4820iASL: Split the huge parser source file into multiple subfiles to improve
4821manageability. Generation now requires the M4 macro preprocessor, which
4822is part of the Bison distribution on both unix and windows platforms.
4823
4824AcpiSrc: Fixed and removed all extraneous warnings generated during
4825entire ACPICA source code scan and/or conversion.
4826
4827
4828----------------------------------------
4829
483024 July 2014. Summary of changes for version 20140724:
4831
4832The ACPI 5.1 specification has been released and is available at:
4833http://uefi.org/specs/access
4834
4835
48360) ACPI 5.1 support in ACPICA:
4837
4838ACPI 5.1 is fully supported in ACPICA as of this release.
4839
4840New predefined names. Support includes iASL and runtime ACPICA
4841validation.
4842    _CCA (Cache Coherency Attribute).
4843    _DSD (Device-Specific Data). David Box.
4844
4845Modifications to existing ACPI tables. Support includes headers, iASL
4846Data Table compiler, disassembler, and the template generator.
4847    FADT - New fields and flags. Graeme Gregory.
4848    GTDT - One new subtable and new fields. Tomasz Nowicki.
4849    MADT - Two new subtables. Tomasz Nowicki.
4850    PCCT - One new subtable.
4851
4852Miscellaneous.
4853    New notification type for System Resource Affinity change events.
4854
4855
48561) ACPICA kernel-resident subsystem:
4857
4858Fixed a regression introduced in 20140627 where a fault can happen during
4859the deletion of Alias AML namespace objects. The problem affected both
4860the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4861
4862Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4863simple mechanism to enable wake GPEs that have no associated handler or
4864control method. Rafael Wysocki.
4865
4866Updated the AcpiEnableGpe interface to disallow the enable if there is no
4867handler or control method associated with the particular GPE. This will
4868help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4869
4870Updated GPE handling and dispatch by disabling the GPE before clearing
4871the status bit for edge-triggered GPEs. Lv Zheng.
4872
4873Added Timer() support to the AML Debug object. The current timer value is
4874now displayed with each invocation of (Store to) the debug object to
4875enable simple generation of execution times for AML code (method
4876execution for example.) ACPICA BZ 1093.
4877
4878Example Code and Data Size: These are the sizes for the OS-independent
4879acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4880debug version of the code includes the debug output trace mechanism and
4881has a much larger code and data size.
4882
4883  Current Release:
4884    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
4885    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4886  Previous Release:
4887    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4888    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4889
4890
48912) iASL Compiler/Disassembler and Tools:
4892
4893Fixed an issue with the recently added local printf implementation,
4894concerning width/precision specifiers that could cause incorrect output.
4895Lv Zheng. ACPICA BZ 1094.
4896
4897Disassembler: Added support to detect buffers that contain UUIDs and
4898disassemble them to an invocation of the ToUUID operator. Also emit
4899commented descriptions of known ACPI-related UUIDs.
4900
4901AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4902-u. Adds three new files.
4903
4904iASL: Update table compiler and disassembler for DMAR table changes that
4905were introduced in September 2013. With assistance by David Woodhouse.
4906
4907----------------------------------------
490827 June 2014. Summary of changes for version 20140627:
4909
49101) ACPICA kernel-resident subsystem:
4911
4912Formatted Output: Implemented local versions of standard formatted output
4913utilities such as printf, etc. Over time, it has been discovered that
4914there are in fact many portability issues with printf, and the addition
4915of this feature will fix/prevent these issues once and for all. Some
4916known issues are summarized below:
4917
49181) Output of 64-bit values is not portable. For example, UINT64 is %ull
4919for the Linux kernel and is %uI64 for some MSVC versions.
49202) Invoking printf consistently in a manner that is portable across both
492132-bit and 64-bit platforms is difficult at best in many situations.
49223) The output format for pointers varies from system to system (leading
4923zeros especially), and leads to inconsistent output from ACPICA across
4924platforms.
49254) Certain platform-specific printf formats may conflict with ACPICA use.
49265) If there is no local C library available, ACPICA now has local support
4927for printf.
4928
4929-- To address these printf issues in a complete manner, ACPICA now
4930directly implements a small subset of printf format specifiers, only
4931those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4932
4933Implemented support for ACPICA generation within the EFI environment.
4934Initially, the AcpiDump utility is supported in the UEFI shell
4935environment. Lv Zheng.
4936
4937Added a new external interface, AcpiLogError, to improve ACPICA
4938portability. This allows the host to redirect error messages from the
4939ACPICA utilities. Lv Zheng.
4940
4941Added and deployed new OSL file I/O interfaces to improve ACPICA
4942portability:
4943  AcpiOsOpenFile
4944  AcpiOsCloseFile
4945  AcpiOsReadFile
4946  AcpiOsWriteFile
4947  AcpiOsGetFileOffset
4948  AcpiOsSetFileOffset
4949There are C library implementations of these functions in the new file
4950service_layers/oslibcfs.c -- however, the functions can be implemented by
4951the local host in any way necessary. Lv Zheng.
4952
4953Implemented a mechanism to disable/enable ACPI table checksum validation
4954at runtime. This can be useful when loading tables very early during OS
4955initialization when it may not be possible to map the entire table in
4956order to compute the checksum. Lv Zheng.
4957
4958Fixed a buffer allocation issue for the Generic Serial Bus support.
4959Originally, a fixed buffer length was used. This change allows for
4960variable-length buffers based upon the protocol indicated by the field
4961access attributes. Reported by Lan Tianyu. Lv Zheng.
4962
4963Fixed a problem where an object detached from a namespace node was not
4964properly terminated/cleared and could cause a circular list problem if
4965reattached. ACPICA BZ 1063. David Box.
4966
4967Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4968
4969Fixed a possible memory leak in an error return path within the function
4970AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4971
4972Example Code and Data Size: These are the sizes for the OS-independent
4973acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4974debug version of the code includes the debug output trace mechanism and
4975has a much larger code and data size.
4976
4977  Current Release:
4978    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4979    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4980  Previous Release:
4981    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4982    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4983
4984
49852) iASL Compiler/Disassembler and Tools:
4986
4987Disassembler: Add dump of ASCII equivalent text within a comment at the
4988end of each line of the output for the Buffer() ASL operator.
4989
4990AcpiDump: Miscellaneous changes:
4991  Fixed repetitive table dump in -n mode.
4992  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4993the ACPI 2.0 GUID fails.
4994
4995iASL: Fixed a problem where the compiler could fault if incorrectly given
4996an acpidump output file as input. ACPICA BZ 1088. David Box.
4997
4998AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4999they are invoked without any arguments.
5000
5001Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
50021086. Colin Ian King.
5003
5004Disassembler: Cleaned up a block of code that extracts a parent Op
5005object. Added a comment that explains that the parent is guaranteed to be
5006valid in this case. ACPICA BZ 1069.
5007
5008
5009----------------------------------------
501024 April 2014. Summary of changes for version 20140424:
5011
50121) ACPICA kernel-resident subsystem:
5013
5014Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
5015Some of these tables are known to contain a trailing NULL entry. Lv
5016Zheng.
5017
5018Removed an extraneous error message for the case where there are a large
5019number of system GPEs (> 124). This was the "32-bit FADT register is too
5020long to convert to GAS struct" message, which is irrelevant for GPEs
5021since the GPEx_BLK_LEN fields of the FADT are always used instead of the
5022(limited capacity) GAS bit length. Also, several changes to ensure proper
5023support for GPE numbers > 255, where some "GPE number" fields were 8-bits
5024internally.
5025
5026Implemented and deployed additional configuration support for the public
5027ACPICA external interfaces. Entire classes of interfaces can now be
5028easily modified or configured out, replaced by stubbed inline functions
5029by default. Lv Zheng.
5030
5031Moved all public ACPICA runtime configuration globals to the public
5032ACPICA external interface file for convenience. Also, removed some
5033obsolete/unused globals. See the file acpixf.h. Lv Zheng.
5034
5035Documentation: Added a new section to the ACPICA reference describing the
5036maximum number of GPEs that can be supported by the FADT-defined GPEs in
5037block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
5038reference.
5039
5040Example Code and Data Size: These are the sizes for the OS-independent
5041acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5042debug version of the code includes the debug output trace mechanism and
5043has a much larger code and data size.
5044
5045  Current Release:
5046    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
5047    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
5048  Previous Release:
5049    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
5050    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
5051
5052
50532) iASL Compiler/Disassembler and Tools:
5054
5055iASL and disassembler: Add full support for the LPIT table (Low Power
5056Idle Table). Includes support in the disassembler, data table compiler,
5057and template generator.
5058
5059AcpiDump utility:
50601) Add option to force the use of the RSDT (over the XSDT).
50612) Improve validation of the RSDP signature (use 8 chars instead of 4).
5062
5063iASL: Add check for predefined packages that are too large.  For
5064predefined names that contain subpackages, check if each subpackage is
5065too large. (Check for too small already exists.)
5066
5067Debugger: Updated the GPE command (which simulates a GPE by executing the
5068GPE code paths in ACPICA). The GPE device is now optional, and defaults
5069to the GPE 0/1 FADT-defined blocks.
5070
5071Unix application OSL: Update line-editing support. Add additional error
5072checking and take care not to reset terminal attributes on exit if they
5073were never set. This should help guarantee that the terminal is always
5074left in the previous state on program exit.
5075
5076
5077----------------------------------------
507825 March 2014. Summary of changes for version 20140325:
5079
50801) ACPICA kernel-resident subsystem:
5081
5082Updated the auto-serialize feature for control methods. This feature
5083automatically serializes all methods that create named objects in order
5084to prevent runtime errors. The update adds support to ignore the
5085currently executing AML SyncLevel when invoking such a method, in order
5086to prevent disruption of any existing SyncLevel priorities that may exist
5087in the AML code. Although the use of SyncLevels is relatively rare, this
5088change fixes a regression where an AE_AML_MUTEX_ORDER exception can
5089appear on some machines starting with the 20140214 release.
5090
5091Added a new external interface to allow the host to install ACPI tables
5092very early, before the namespace is even created. AcpiInstallTable gives
5093the host additional flexibility for ACPI table management. Tables can be
5094installed directly by the host as if they had originally appeared in the
5095XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
5096(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
5097with additional internal restructuring and cleanup. See the ACPICA
5098Reference for interface details. Lv Zheng.
5099
5100Added validation of the checksum for all incoming dynamically loaded
5101tables (via external interfaces or via AML Load/LoadTable operators). Lv
5102Zheng.
5103
5104Updated the use of the AcpiOsWaitEventsComplete interface during Notify
5105and GPE handler removal. Restructured calls to eliminate possible race
5106conditions. Lv Zheng.
5107
5108Added a warning for the use/execution of the ASL/AML Unload (table)
5109operator. This will help detect and identify machines that use this
5110operator if and when it is ever used. This operator has never been seen
5111in the field and the usage model and possible side-effects of the drastic
5112runtime action of a full table removal are unknown.
5113
5114Reverted the use of #pragma push/pop which was introduced in the 20140214
5115release. It appears that push and pop are not implemented by enough
5116compilers to make the use of this feature feasible for ACPICA at this
5117time. However, these operators may be deployed in a future ACPICA
5118release.
5119
5120Added the missing EXPORT_SYMBOL macros for the install and remove SCI
5121handler interfaces.
5122
5123Source code generation:
51241) Disabled the use of the "strchr" macro for the gcc-specific
5125generation. For some versions of gcc, this macro can periodically expose
5126a compiler bug which in turn causes compile-time error(s).
51272) Added support for PPC64 compilation. Colin Ian King.
5128
5129Example Code and Data Size: These are the sizes for the OS-independent
5130acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5131debug version of the code includes the debug output trace mechanism and
5132has a much larger code and data size.
5133
5134  Current Release:
5135    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
5136    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
5137  Previous Release:
5138    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
5139    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
5140
5141
51422) iASL Compiler/Disassembler and Tools:
5143
5144Disassembler: Added several new features to improve the readability of
5145the resulting ASL code. Extra information is emitted within comment
5146fields in the ASL code:
51471) Known _HID/_CID values are decoded to descriptive text.
51482) Standard values for the Notify() operator are decoded to descriptive
5149text.
51503) Target operands are expanded to full pathnames (in a comment) when
5151possible.
5152
5153Disassembler: Miscellaneous updates for extern() handling:
51541) Abort compiler if file specified by -fe option does not exist.
51552) Silence unnecessary warnings about argument count mismatches.
51563) Update warning messages concerning unresolved method externals.
51574) Emit "UnknownObj" keyword for externals whose type cannot be
5158determined.
5159
5160AcpiHelp utility:
51611) Added the -a option to display both the ASL syntax and the AML
5162encoding for an input ASL operator. This effectively displays all known
5163information about an ASL operator with one AcpiHelp invocation.
51642) Added substring match support (similar to a wildcard) for the -i
5165(_HID/PNP IDs) option.
5166
5167iASL/Disassembler: Since this tool does not yet support execution on big-
5168endian machines, added detection of endianness and an error message if
5169execution is attempted on big-endian. Support for big-endian within iASL
5170is a feature that is on the ACPICA to-be-done list.
5171
5172AcpiBin utility:
51731) Remove option to extract binary files from an acpidump; this function
5174is made obsolete by the AcpiXtract utility.
51752) General cleanup of open files and allocated buffers.
5176
5177
5178----------------------------------------
517914 February 2014. Summary of changes for version 20140214:
5180
51811) ACPICA kernel-resident subsystem:
5182
5183Implemented a new mechanism to proactively prevent problems with ill-
5184behaved reentrant control methods that create named ACPI objects. This
5185behavior is illegal as per the ACPI specification, but is nonetheless
5186frequently seen in the field. Previously, this could lead to an
5187AE_ALREADY_EXISTS exception if the method was actually entered by more
5188than one thread. This new mechanism detects such methods at table load
5189time and marks them "serialized" to prevent reentrancy. A new global
5190option, AcpiGbl_AutoSerializeMethods, has been added to disable this
5191feature if desired. This mechanism and global option obsoletes and
5192supersedes the previous AcpiGbl_SerializeAllMethods option.
5193
5194Added the "Windows 2013" string to the _OSI support. ACPICA will now
5195respond TRUE to _OSI queries with this string. It is the stated policy of
5196ACPICA to add new strings to the _OSI support as soon as possible after
5197they are defined. See the full ACPICA _OSI policy which has been added to
5198the utilities/utosi.c file.
5199
5200Hardened/updated the _PRT return value auto-repair code:
52011) Do not abort the repair on a single subpackage failure, continue to
5202check all subpackages.
52032) Add check for the minimum subpackage length (4).
52043) Properly handle extraneous NULL package elements.
5205
5206Added support to avoid the possibility of infinite loops when traversing
5207object linked lists. Never allow an infinite loop, even in the face of
5208corrupted object lists.
5209
5210ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
5211pack(pop) directives to ensure that the ACPICA headers are independent of
5212compiler settings or other host headers.
5213
5214Example Code and Data Size: These are the sizes for the OS-independent
5215acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5216debug version of the code includes the debug output trace mechanism and
5217has a much larger code and data size.
5218
5219  Current Release:
5220    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
5221    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
5222  Previous Release:
5223    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
5224    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
5225
5226
52272) iASL Compiler/Disassembler and Tools:
5228
5229iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
5230first reserved field was incorrectly forced to have a value of zero. This
5231change correctly forces the field to have a value of one. ACPICA BZ 1081.
5232
5233Debugger: Added missing support for the "Extra" and "Data" subobjects
5234when displaying object data.
5235
5236Debugger: Added support to display entire object linked lists when
5237displaying object data.
5238
5239iASL: Removed the obsolete -g option to obtain ACPI tables from the
5240Windows registry. This feature has been superseded by the acpidump
5241utility.
5242
5243
5244----------------------------------------
524514 January 2014. Summary of changes for version 20140114:
5246
52471) ACPICA kernel-resident subsystem:
5248
5249Updated all ACPICA copyrights and signons to 2014. Added the 2014
5250copyright to all module headers and signons, including the standard Linux
5251header. This affects virtually every file in the ACPICA core subsystem,
5252iASL compiler, all ACPICA utilities, and the test suites.
5253
5254Improved parameter validation for AcpiInstallGpeBlock. Added the
5255following checks:
52561) The incoming device handle refers to type ACPI_TYPE_DEVICE.
52572) There is not already a GPE block attached to the device.
5258Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
5259device.
5260
5261Correctly support "references" in the ACPI_OBJECT. This change fixes the
5262support to allow references (namespace nodes) to be passed as arguments
5263to control methods via the evaluate object interface. This is probably
5264most useful for testing purposes, however.
5265
5266Improved support for 32/64 bit physical addresses in printf()-like
5267output. This change improves the support for physical addresses in printf
5268debug statements and other output on both 32-bit and 64-bit hosts. It
5269consistently outputs the appropriate number of bytes for each host. The
5270%p specifier is unsatisfactory since it does not emit uniform output on
5271all hosts/clib implementations (on some, leading zeros are not supported,
5272leading to difficult-to-read output).
5273
5274Example Code and Data Size: These are the sizes for the OS-independent
5275acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5276debug version of the code includes the debug output trace mechanism and
5277has a much larger code and data size.
5278
5279  Current Release:
5280    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
5281    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
5282  Previous Release:
5283    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
5284    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
5285
5286
52872) iASL Compiler/Disassembler and Tools:
5288
5289iASL: Fix a possible fault when using the Connection() operator. Fixes a
5290problem if the parent Field definition for the Connection operator refers
5291to an operation region that does not exist. ACPICA BZ 1064.
5292
5293AcpiExec: Load of local test tables is now optional. The utility has the
5294capability to load some various tables to test features of ACPICA.
5295However, there are enough of them that the output of the utility became
5296confusing. With this change, only the required local tables are displayed
5297(RSDP, XSDT, etc.) along with the actual tables loaded via the command
5298line specification. This makes the default output simler and easier to
5299understand. The -el command line option restores the original behavior
5300for testing purposes.
5301
5302AcpiExec: Added support for overlapping operation regions. This change
5303expands the simulation of operation regions by supporting regions that
5304overlap within the given address space. Supports SystemMemory and
5305SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
5306
5307AcpiExec: Added region handler support for PCI_Config and EC spaces. This
5308allows AcpiExec to simulate these address spaces, similar to the current
5309support for SystemMemory and SystemIO.
5310
5311Debugger: Added new command to read/write/compare all namespace objects.
5312The command "test objects" will exercise the entire namespace by writing
5313new values to each data object, and ensuring that the write was
5314successful. The original value is then restored and verified.
5315
5316Debugger: Added the "test predefined" command. This change makes this
5317test public and puts it under the new "test" command. The test executes
5318each and every predefined name within the current namespace.
5319
5320
5321----------------------------------------
532218 December 2013. Summary of changes for version 20131218:
5323
5324Global note: The ACPI 5.0A specification was released this month. There
5325are no changes needed for ACPICA since this release of ACPI is an
5326errata/clarification release. The specification is available at
5327acpi.info.
5328
5329
53301) ACPICA kernel-resident subsystem:
5331
5332Added validation of the XSDT root table if it is present. Some older
5333platforms contain an XSDT that is ill-formed or otherwise invalid (such
5334as containing some or all entries that are NULL pointers). This change
5335adds a new function to validate the XSDT before actually using it. If the
5336XSDT is found to be invalid, ACPICA will now automatically fall back to
5337using the RSDT instead. Original implementation by Zhao Yakui. Ported to
5338ACPICA and enhanced by Lv Zheng and Bob Moore.
5339
5340Added a runtime option to ignore the XSDT and force the use of the RSDT.
5341This change adds a runtime option that will force ACPICA to use the RSDT
5342instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
5343requires that an XSDT be used instead of the RSDT, the XSDT has been
5344found to be corrupt or ill-formed on some machines. Lv Zheng.
5345
5346Added a runtime option to favor 32-bit FADT register addresses over the
534764-bit addresses. This change adds an option to favor 32-bit FADT
5348addresses when there is a conflict between the 32-bit and 64-bit versions
5349of the same register. The default behavior is to use the 64-bit version
5350in accordance with the ACPI specification. This can now be overridden via
5351the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
5352
5353During the change above, the internal "Convert FADT" and "Verify FADT"
5354functions have been merged to simplify the code, making it easier to
5355understand and maintain. ACPICA BZ 933.
5356
5357Improve exception reporting and handling for GPE block installation.
5358Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
5359status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
5360
5361Added helper macros to extract bus/segment numbers from the HEST table.
5362This change adds two macros to extract the encoded bus and segment
5363numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
5364Betty Dall <betty.dall@hp.com>
5365
5366Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
5367by ACPICA. It is not a public macro, so it should have no effect on
5368existing OSV code. Lv Zheng.
5369
5370Example Code and Data Size: These are the sizes for the OS-independent
5371acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5372debug version of the code includes the debug output trace mechanism and
5373has a much larger code and data size.
5374
5375  Current Release:
5376    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
5377    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
5378  Previous Release:
5379    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
5380    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
5381
5382
53832) iASL Compiler/Disassembler and Tools:
5384
5385Disassembler: Improved pathname support for emitted External()
5386statements. This change adds full pathname support for external names
5387that have been resolved internally by the inclusion of additional ACPI
5388tables (via the iASL -e option). Without this change, the disassembler
5389can emit multiple externals for the same object, or it become confused
5390when the Scope() operator is used on an external object. Overall, greatly
5391improves the ability to actually recompile the emitted ASL code when
5392objects a referenced across multiple ACPI tables. Reported by Michael
5393Tsirkin (mst@redhat.com).
5394
5395Tests/ASLTS: Updated functional control suite to execute with no errors.
5396David Box. Fixed several errors related to the testing of the interpreter
5397slack mode. Lv Zheng.
5398
5399iASL: Added support to detect names that are declared within a control
5400method, but are unused (these are temporary names that are only valid
5401during the time the method is executing). A remark is issued for these
5402cases. ACPICA BZ 1022.
5403
5404iASL: Added full support for the DBG2 table. Adds full disassembler,
5405table compiler, and template generator support for the DBG2 table (Debug
5406Port 2 table).
5407
5408iASL: Added full support for the PCCT table, update the table definition.
5409Updates the PCCT table definition in the actbl3.h header and adds table
5410compiler and template generator support.
5411
5412iASL: Added an option to emit only error messages (no warnings/remarks).
5413The -ve option will enable only error messages, warnings and remarks are
5414suppressed. This can simplify debugging when only the errors are
5415important, such as when an ACPI table is disassembled and there are many
5416warnings and remarks -- but only the actual errors are of real interest.
5417
5418Example ACPICA code (source/tools/examples): Updated the example code so
5419that it builds to an actual working program, not just example code. Added
5420ACPI tables and execution of an example control method in the DSDT. Added
5421makefile support for Unix generation.
5422
5423
5424----------------------------------------
542515 November 2013. Summary of changes for version 20131115:
5426
5427This release is available at https://acpica.org/downloads
5428
5429
54301) ACPICA kernel-resident subsystem:
5431
5432Resource Manager: Fixed loop termination for the "get AML length"
5433function. The loop previously had an error termination on a NULL resource
5434pointer, which can never happen since the loop simply increments a valid
5435resource pointer. This fix changes the loop to terminate with an error on
5436an invalid end-of-buffer condition. The problem can be seen as an
5437infinite loop by callers to AcpiSetCurrentResources with an invalid or
5438corrupted resource descriptor, or a resource descriptor that is missing
5439an END_TAG descriptor. Reported by Dan Carpenter
5440<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
5441
5442Table unload and ACPICA termination: Delete all attached data objects
5443during namespace node deletion. This fix updates namespace node deletion
5444to delete the entire list of attached objects (attached via
5445AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
54461024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
5447
5448ACPICA termination: Added support to delete all objects attached to the
5449root namespace node. This fix deletes any and all objects that have been
5450attached to the root node via AcpiAttachData. Previously, none of these
5451objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
5452
5453Debug output: Do not emit the function nesting level for the in-kernel
5454build. The nesting level is really only useful during a single-thread
5455execution. Therefore, only enable this output for the AcpiExec utility.
5456Also, only emit the thread ID when executing under AcpiExec (Context
5457switches are still always detected and a message is emitted). ACPICA BZ
5458972.
5459
5460Example Code and Data Size: These are the sizes for the OS-independent
5461acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5462debug version of the code includes the debug output trace mechanism and
5463has a much larger code and data size.
5464
5465  Current Release:
5466    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
5467    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
5468  Previous Release:
5469    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
5470    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
5471
5472
54732) iASL Compiler/Disassembler and Tools:
5474
5475AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
5476correct portable POSIX header for terminal control functions.
5477
5478Disassembler: Fixed control method invocation issues related to the use
5479of the CondRefOf() operator. The problem is seen in the disassembly where
5480control method invocations may not be disassembled properly if the
5481control method name has been used previously as an argument to CondRefOf.
5482The solution is to not attempt to emit an external declaration for the
5483CondRefOf target (it is not necessary in the first place). This prevents
5484disassembler object type confusion. ACPICA BZ 988.
5485
5486Unix Makefiles: Added an option to disable compiler optimizations and the
5487_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
5488with optimizations (reportedly, gcc 4.4 for example). This change adds a
5489command line option for make (NOOPT) that disables all compiler
5490optimizations and the _FORTIFY_SOURCE compiler flag. The default
5491optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
54921034. Lv Zheng, Bob Moore.
5493
5494Tests/ASLTS: Added options to specify individual test cases and modes.
5495This allows testers running aslts.sh to optionally specify individual
5496test modes and test cases. Also added an option to disable the forced
5497generation of the ACPICA tools from source if desired. Lv Zheng.
5498
5499----------------------------------------
550027 September 2013. Summary of changes for version 20130927:
5501
5502This release is available at https://acpica.org/downloads
5503
5504
55051) ACPICA kernel-resident subsystem:
5506
5507Fixed a problem with store operations to reference objects. This change
5508fixes a problem where a Store operation to an ArgX object that contained
5509a
5510reference to a field object did not complete the automatic dereference
5511and
5512then write to the actual field object. Instead, the object type of the
5513field object was inadvertently changed to match the type of the source
5514operand. The new behavior will actually write to the field object (buffer
5515field or field unit), thus matching the correct ACPI-defined behavior.
5516
5517Implemented support to allow the host to redefine individual OSL
5518prototypes. This change enables the host to redefine OSL prototypes found
5519in the acpiosxf.h file. This allows the host to implement OSL interfaces
5520with a macro or inlined function. Further, it allows the host to add any
5521additional required modifiers such as __iomem, __init, __exit, etc., as
5522necessary on a per-interface basis. Enables maximum flexibility for the
5523OSL interfaces. Lv Zheng.
5524
5525Hardcoded the access width for the FADT-defined reset register. The ACPI
5526specification requires the reset register width to be 8 bits. ACPICA now
5527hardcodes the width to 8 and ignores the FADT width value. This provides
5528compatibility with other ACPI implementations that have allowed BIOS code
5529with bad register width values to go unnoticed. Matthew Garett, Bob
5530Moore,
5531Lv Zheng.
5532
5533Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
5534used
5535in the OSL header (acpiosxf). The change modifies the position of this
5536macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
5537build issues if the OSL defines the implementation of the interface to be
5538an inline stub function. Lv Zheng.
5539
5540Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
5541initialization interfaces. This change adds a new macro for the main init
5542and terminate external interfaces in order to support hosts that require
5543additional or different processing for these functions. Changed from
5544ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
5545Zheng, Bob Moore.
5546
5547Cleaned up the memory allocation macros for configurability. In the
5548common
5549case, the ACPI_ALLOCATE and related macros now resolve directly to their
5550respective AcpiOs* OSL interfaces. Two options:
55511) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
5552default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
55532) For AcpiExec (and for debugging), the macros can optionally be
5554resolved
5555to the local ACPICA interfaces that track each allocation (local tracking
5556is used to immediately detect memory leaks).
5557Lv Zheng.
5558
5559Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
5560to predefine this macro to either TRUE or FALSE during the system build.
5561
5562Replaced __FUNCTION_ with __func__ in the gcc-specific header.
5563
5564Example Code and Data Size: These are the sizes for the OS-independent
5565acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5566debug version of the code includes the debug output trace mechanism and
5567has a much larger code and data size.
5568
5569  Current Release:
5570    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
5571    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
5572  Previous Release:
5573    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5574    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5575
5576
55772) iASL Compiler/Disassembler and Tools:
5578
5579iASL: Implemented wildcard support for the -e option. This simplifies use
5580when there are many SSDTs that must be included to resolve external
5581method
5582declarations. ACPICA BZ 1041. Example:
5583    iasl -e ssdt*.dat -d dsdt.dat
5584
5585AcpiExec: Add history/line-editing for Unix/Linux systems. This change
5586adds a portable module that implements full history and limited line
5587editing for Unix and Linux systems. It does not use readline() due to
5588portability issues. Instead it uses the POSIX termio interface to put the
5589terminal in raw input mode so that the various special keys can be
5590trapped
5591(such as up/down-arrow for history support and left/right-arrow for line
5592editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
5593
5594AcpiXtract: Add support to handle (ignore) "empty" lines containing only
5595one or more spaces. This provides compatible with early or different
5596versions of the AcpiDump utility. ACPICA BZ 1044.
5597
5598AcpiDump: Do not ignore tables that contain only an ACPI table header.
5599Apparently, some BIOSs create SSDTs that contain an ACPI table header but
5600no other data. This change adds support to dump these tables. Any tables
5601shorter than the length of an ACPI table header remain in error (an error
5602message is emitted). Reported by Yi Li.
5603
5604Debugger: Echo actual command along with the "unknown command" message.
5605
5606----------------------------------------
560723 August 2013. Summary of changes for version 20130823:
5608
56091) ACPICA kernel-resident subsystem:
5610
5611Implemented support for host-installed System Control Interrupt (SCI)
5612handlers. Certain ACPI functionality requires the host to handle raw
5613SCIs. For example, the "SCI Doorbell" that is defined for memory power
5614state support requires the host device driver to handle SCIs to examine
5615if the doorbell has been activated. Multiple SCI handlers can be
5616installed to allow for future expansion. New external interfaces are
5617AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
5618details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
5619
5620Operation region support: Never locally free the handler "context"
5621pointer. This change removes some dangerous code that attempts to free
5622the handler context pointer in some (rare) circumstances. The owner of
5623the handler owns this pointer and the ACPICA code should never touch it.
5624Although not seen to be an issue in any kernel, it did show up as a
5625problem (fault) under AcpiExec. Also, set the internal storage field for
5626the context pointer to zero when the region is deactivated, simply for
5627sanity. David Box. ACPICA BZ 1039.
5628
5629AcpiRead: On error, do not modify the return value target location. If an
5630error happens in the middle of a split 32/32 64-bit I/O operation, do not
5631modify the target of the return value pointer. Makes the code consistent
5632with the rest of ACPICA. Bjorn Helgaas.
5633
5634Example Code and Data Size: These are the sizes for the OS-independent
5635acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5636debug version of the code includes the debug output trace mechanism and
5637has a much larger code and data size.
5638
5639  Current Release:
5640    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5641    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5642  Previous Release:
5643    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5644    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
5645
5646
56472) iASL Compiler/Disassembler and Tools:
5648
5649AcpiDump: Implemented several new features and fixed some problems:
56501) Added support to dump the RSDP, RSDT, and XSDT tables.
56512) Added support for multiple table instances (SSDT, UEFI).
56523) Added option to dump "customized" (overridden) tables (-c).
56534) Fixed a problem where some table filenames were improperly
5654constructed.
56555) Improved some error messages, removed some unnecessary messages.
5656
5657iASL: Implemented additional support for disassembly of ACPI tables that
5658contain invocations of external control methods. The -fe<file> option
5659allows the import of a file that specifies the external methods along
5660with the required number of arguments for each -- allowing for the
5661correct disassembly of the table. This is a workaround for a limitation
5662of AML code where the disassembler often cannot determine the number of
5663arguments required for an external control method and generates incorrect
5664ASL code. See the iASL reference for details. ACPICA BZ 1030.
5665
5666Debugger: Implemented a new command (paths) that displays the full
5667pathnames (namepaths) and object types of all objects in the namespace.
5668This is an alternative to the namespace command.
5669
5670Debugger: Implemented a new command (sci) that invokes the SCI dispatch
5671mechanism and any installed handlers.
5672
5673iASL: Fixed a possible segfault for "too many parent prefixes" condition.
5674This can occur if there are too many parent prefixes in a namepath (for
5675example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
5676
5677Application OSLs: Set the return value for the PCI read functions. These
5678functions simply return AE_OK, but should set the return value to zero
5679also. This change implements this. ACPICA BZ 1038.
5680
5681Debugger: Prevent possible command line buffer overflow. Increase the
5682size of a couple of the debugger line buffers, and ensure that overflow
5683cannot happen. ACPICA BZ 1037.
5684
5685iASL: Changed to abort immediately on serious errors during the parsing
5686phase. Due to the nature of ASL, there is no point in attempting to
5687compile these types of errors, and they typically end up causing a
5688cascade of hundreds of errors which obscure the original problem.
5689
5690----------------------------------------
569125 July 2013. Summary of changes for version 20130725:
5692
56931) ACPICA kernel-resident subsystem:
5694
5695Fixed a problem with the DerefOf operator where references to FieldUnits
5696and BufferFields incorrectly returned the parent object, not the actual
5697value of the object. After this change, a dereference of a FieldUnit
5698reference results in a read operation on the field to get the value, and
5699likewise, the appropriate BufferField value is extracted from the target
5700buffer.
5701
5702Fixed a problem where the _WAK method could cause a fault under these
5703circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
5704method returned no value. The problem is rarely seen because most kernels
5705run ACPICA in slack mode.
5706
5707For the DerefOf operator, a fatal error now results if an attempt is made
5708to dereference a reference (created by the Index operator) to a NULL
5709package element. Provides compatibility with other ACPI implementations,
5710and this behavior will be added to a future version of the ACPI
5711specification.
5712
5713The ACPI Power Management Timer (defined in the FADT) is now optional.
5714This provides compatibility with other ACPI implementations and will
5715appear in the next version of the ACPI specification. If there is no PM
5716Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
5717zero in the FADT indicates no PM timer.
5718
5719Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
5720allows the host to globally enable/disable all vendor strings, all
5721feature strings, or both. Intended to be primarily used for debugging
5722purposes only. Lv Zheng.
5723
5724Expose the collected _OSI data to the host via a global variable. This
5725data tracks the highest level vendor ID that has been invoked by the BIOS
5726so that the host (and potentially ACPICA itself) can change behaviors
5727based upon the age of the BIOS.
5728
5729Example Code and Data Size: These are the sizes for the OS-independent
5730acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5731debug version of the code includes the debug output trace mechanism and
5732has a much larger code and data size.
5733
5734  Current Release:
5735    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5736    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5737  Previous Release:
5738    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5739    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5740
5741
57422) iASL Compiler/Disassembler and Tools:
5743
5744iASL: Created the following enhancements for the -so option (create
5745offset table):
57461)Add offsets for the last nameseg in each namepath for every supported
5747object type
57482)Add support for Processor, Device, Thermal Zone, and Scope objects
57493)Add the actual AML opcode for the parent object of every supported
5750object type
57514)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
5752
5753Disassembler: Emit all unresolved external symbols in a single block.
5754These are external references to control methods that could not be
5755resolved, and thus, the disassembler had to make a guess at the number of
5756arguments to parse.
5757
5758iASL: The argument to the -T option (create table template) is now
5759optional. If not specified, the default table is a DSDT, typically the
5760most common case.
5761
5762----------------------------------------
576326 June 2013. Summary of changes for version 20130626:
5764
57651) ACPICA kernel-resident subsystem:
5766
5767Fixed an issue with runtime repair of the _CST object. Null or invalid
5768elements were not always removed properly. Lv Zheng.
5769
5770Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5771FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5772the maximum number of GPEs is 1016. Use of multiple GPE block devices
5773makes the system-wide number of GPEs essentially unlimited.
5774
5775Example Code and Data Size: These are the sizes for the OS-independent
5776acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5777debug version of the code includes the debug output trace mechanism and
5778has a much larger code and data size.
5779
5780  Current Release:
5781    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5782    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5783  Previous Release:
5784    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5785    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5786
5787
57882) iASL Compiler/Disassembler and Tools:
5789
5790Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5791hosts. Now supports Linux, FreeBSD, and Windows.
5792
5793Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5794Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5795
5796iASL/Preprocessor: Implemented full support for nested
5797#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5798
5799Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5800max. The original purpose of this constraint was to limit the amount of
5801debug output. However, the string function in question (UtPrintString) is
5802now used for the disassembler also, where 256 bytes is insufficient.
5803Reported by RehabMan@GitHub.
5804
5805iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5806tables. ACPICA BZ 999. Lv Zheng.
5807
5808iASL: Fixed a couple of error exit issues that could result in a "Could
5809not delete <file>" message during ASL compilation.
5810
5811AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5812the actual signatures for these tables are "FACP" and "APIC",
5813respectively.
5814
5815AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5816tables are allowed to have multiple instances.
5817
5818----------------------------------------
581917 May 2013. Summary of changes for version 20130517:
5820
58211) ACPICA kernel-resident subsystem:
5822
5823Fixed a regression introduced in version 20130328 for _INI methods. This
5824change fixes a problem introduced in 20130328 where _INI methods are no
5825longer executed properly because of a memory block that was not
5826initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5827<tomasz.nowicki@linaro.org>.
5828
5829Fixed a possible problem with the new extended sleep registers in the
5830ACPI
58315.0 FADT. Do not use these registers (even if populated) unless the HW-
5832reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
58331020. Lv Zheng.
5834
5835Implemented return value repair code for _CST predefined objects: Sort
5836the
5837list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5838
5839Implemented a debug-only option to disable loading of SSDTs from the
5840RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5841ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5842acglobal.h - ACPICA BZ 1005. Lv Zheng.
5843
5844Fixed some issues in the ACPICA initialization and termination code:
5845Tomasz Nowicki <tomasz.nowicki@linaro.org>
58461) Clear events initialized flag upon event component termination. ACPICA
5847BZ 1013.
58482) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
58493) Delete global lock pending lock during termination. ACPICA BZ 1012.
58504) Clear debug buffer global on termination to prevent possible multiple
5851delete. ACPICA BZ 1010.
5852
5853Standardized all switch() blocks across the entire source base. After
5854many
5855years, different formatting for switch() had crept in. This change makes
5856the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5857
5858Split some files to enhance ACPICA modularity and configurability:
58591) Split buffer dump routines into utilities/utbuffer.c
58602) Split internal error message routines into utilities/uterror.c
58613) Split table print utilities into tables/tbprint.c
58624) Split iASL command-line option processing into asloptions.c
5863
5864Makefile enhancements:
58651) Support for all new files above.
58662) Abort make on errors from any subcomponent. Chao Guan.
58673) Add build support for Apple Mac OS X. Liang Qi.
5868
5869Example Code and Data Size: These are the sizes for the OS-independent
5870acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5871debug version of the code includes the debug output trace mechanism and
5872has a much larger code and data size.
5873
5874  Current Release:
5875    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5876    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5877  Previous Release:
5878    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5879    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5880
5881
58822) iASL Compiler/Disassembler and Tools:
5883
5884New utility: Implemented an easily portable version of the acpidump
5885utility to extract ACPI tables from the system (or a file) in an ASCII
5886hex
5887dump format. The top-level code implements the various command line
5888options, file I/O, and table dump routines. To port to a new host, only
5889three functions need to be implemented to get tables -- since this
5890functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5891the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
58921) The Windows version obtains the ACPI tables from the Registry.
58932) The Linux version is under development.
58943) Other hosts - If an OS-dependent module is submitted, it will be
5895distributed with ACPICA.
5896
5897iASL: Fixed a regression for -D preprocessor option (define symbol). A
5898restructuring/change to the initialization sequence caused this option to
5899no longer work properly.
5900
5901iASL: Implemented a mechanism to disable specific warnings and remarks.
5902Adds a new command line option, "-vw <messageid> as well as "#pragma
5903disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5904
5905iASL: Fix for too-strict package object validation. The package object
5906validation for return values from the predefined names is a bit too
5907strict, it does not allow names references within the package (which will
5908be resolved at runtime.) These types of references cannot be validated at
5909compile time. This change ignores named references within package objects
5910for names that return or define static packages.
5911
5912Debugger: Fixed the 80-character command line limitation for the History
5913command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5914
5915iASL: Added control method and package support for the -so option
5916(generates AML offset table for BIOS support.)
5917
5918iASL: issue a remark if a non-serialized method creates named objects. If
5919a thread blocks within the method for any reason, and another thread
5920enters the method, the method will fail because an attempt will be made
5921to
5922create the same (named) object twice. In this case, issue a remark that
5923the method should be marked serialized. NOTE: may become a warning later.
5924ACPICA BZ 909.
5925
5926----------------------------------------
592718 April 2013. Summary of changes for version 20130418:
5928
59291) ACPICA kernel-resident subsystem:
5930
5931Fixed a possible buffer overrun during some rare but specific field unit
5932read operations. This overrun can only happen if the DSDT version is 1 --
5933meaning that all AML integers are 32 bits -- and the field length is
5934between 33 and 55 bits long. During the read, an internal buffer object
5935is
5936created for the field unit because the field is larger than an integer
5937(32
5938bits). However, in this case, the buffer will be incorrectly written
5939beyond the end because the buffer length is less than the internal
5940minimum
5941of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5942long, but a full 8 bytes will be written.
5943
5944Updated the Embedded Controller "orphan" _REG method support. This refers
5945to _REG methods under the EC device that have no corresponding operation
5946region. This is allowed by the ACPI specification. This update removes a
5947dependency on the existence an ECDT table. It will execute an orphan _REG
5948method as long as the operation region handler for the EC is installed at
5949the EC device node and not the namespace root. Rui Zhang (original
5950update), Bob Moore (update/integrate).
5951
5952Implemented run-time argument typechecking for all predefined ACPI names
5953(_STA, _BIF, etc.) This change performs object typechecking on all
5954incoming arguments for all predefined names executed via
5955AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5956passing correct object types as well as the correct number of arguments
5957(therefore identifying any issues immediately). Also, the ASL/namespace
5958definition of the predefined name is checked against the ACPI
5959specification for the proper argument count. Adds one new file,
5960nsarguments.c
5961
5962Changed an exception code for the ASL UnLoad() operator. Changed the
5963exception code for the case where the input DdbHandle is invalid, from
5964AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5965
5966Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5967global makefile. The use of this flag causes compiler errors on earlier
5968versions of GCC, so it has been removed for compatibility.
5969
5970Miscellaneous cleanup:
59711) Removed some unused/obsolete macros
59722) Fixed a possible memory leak in the _OSI support
59733) Removed an unused variable in the predefined name support
59744) Windows OSL: remove obsolete reference to a memory list field
5975
5976Example Code and Data Size: These are the sizes for the OS-independent
5977acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5978debug version of the code includes the debug output trace mechanism and
5979has a much larger code and data size.
5980
5981  Current Release:
5982    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5983    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5984  Previous Release:
5985    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5986    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5987
5988
59892) iASL Compiler/Disassembler and Tools:
5990
5991AcpiExec: Added installation of a handler for the SystemCMOS address
5992space. This prevents control method abort if a method accesses this
5993space.
5994
5995AcpiExec: Added support for multiple EC devices, and now install EC
5996operation region handler(s) at the actual EC device instead of the
5997namespace root. This reflects the typical behavior of host operating
5998systems.
5999
6000AcpiExec: Updated to ensure that all operation region handlers are
6001installed before the _REG methods are executed. This prevents a _REG
6002method from aborting if it accesses an address space has no handler.
6003AcpiExec installs a handler for every possible address space.
6004
6005Debugger: Enhanced the "handlers" command to display non-root handlers.
6006This change enhances the handlers command to display handlers associated
6007with individual devices throughout the namespace, in addition to the
6008currently supported display of handlers associated with the root
6009namespace
6010node.
6011
6012ASL Test Suite: Several test suite errors have been identified and
6013resolved, reducing the total error count during execution. Chao Guan.
6014
6015----------------------------------------
601628 March 2013. Summary of changes for version 20130328:
6017
60181) ACPICA kernel-resident subsystem:
6019
6020Fixed several possible race conditions with the internal object reference
6021counting mechanism. Some of the external ACPICA interfaces update object
6022reference counts without holding the interpreter or namespace lock. This
6023change adds a spinlock to protect reference count updates on the internal
6024ACPICA objects. Reported by and with assistance from Andriy Gapon
6025(avg@FreeBSD.org).
6026
6027FADT support: Removed an extraneous warning for very large GPE register
6028sets. This change removes a size mismatch warning if the legacy length
6029field for a GPE register set is larger than the 64-bit GAS structure can
6030accommodate. GPE register sets can be larger than the 255-bit width
6031limitation of the GAS structure. Linn Crosetto (linn@hp.com).
6032
6033_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
6034return from this interface. Handles a possible timeout case if
6035ACPI_WAIT_FOREVER is modified by the host to be a value less than
6036"forever". Jung-uk Kim.
6037
6038Predefined name support: Add allowed/required argument type information
6039to
6040the master predefined info table. This change adds the infrastructure to
6041enable typechecking on incoming arguments for all predefined
6042methods/objects. It does not actually contain the code that will fully
6043utilize this information, this is still under development. Also condenses
6044some duplicate code for the predefined names into a new module,
6045utilities/utpredef.c
6046
6047Example Code and Data Size: These are the sizes for the OS-independent
6048acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6049debug version of the code includes the debug output trace mechanism and
6050has a much larger code and data size.
6051
6052  Previous Release:
6053    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
6054    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
6055  Current Release:
6056    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
6057    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
6058
6059
60602) iASL Compiler/Disassembler and Tools:
6061
6062iASL: Implemented a new option to simplify the development of ACPI-
6063related
6064BIOS code. Adds support for a new "offset table" output file. The -so
6065option will create a C table containing the AML table offsets of various
6066named objects in the namespace so that BIOS code can modify them easily
6067at
6068boot time. This can simplify BIOS runtime code by eliminating expensive
6069searches for "magic values", enhancing boot times and adding greater
6070reliability. With assistance from Lee Hamel.
6071
6072iASL: Allow additional predefined names to return zero-length packages.
6073Now, all predefined names that are defined by the ACPI specification to
6074return a "variable-length package of packages" are allowed to return a
6075zero length top-level package. This allows the BIOS to tell the host that
6076the requested feature is not supported, and supports existing BIOS/ASL
6077code and practices.
6078
6079iASL: Changed the "result not used" warning to an error. This is the case
6080where an ASL operator is effectively a NOOP because the result of the
6081operation is not stored anywhere. For example:
6082    Add (4, Local0)
6083There is no target (missing 3rd argument), nor is the function return
6084value used. This is potentially a very serious problem -- since the code
6085was probably intended to do something, but for whatever reason, the value
6086was not stored. Therefore, this issue has been upgraded from a warning to
6087an error.
6088
6089AcpiHelp: Added allowable/required argument types to the predefined names
6090info display. This feature utilizes the recent update to the predefined
6091names table (above).
6092
6093----------------------------------------
609414 February 2013. Summary of changes for version 20130214:
6095
60961) ACPICA Kernel-resident Subsystem:
6097
6098Fixed a possible regression on some hosts: Reinstated the safe return
6099macros (return_ACPI_STATUS, etc.) that ensure that the argument is
6100evaluated only once. Although these macros are not needed for the ACPICA
6101code itself, they are often used by ACPI-related host device drivers
6102where
6103the safe feature may be necessary.
6104
6105Fixed several issues related to the ACPI 5.0 reduced hardware support
6106(SOC): Now ensure that if the platform declares itself as hardware-
6107reduced
6108via the FADT, the following functions become NOOPs (and always return
6109AE_OK) because ACPI is always enabled by definition on these machines:
6110  AcpiEnable
6111  AcpiDisable
6112  AcpiHwGetMode
6113  AcpiHwSetMode
6114
6115Dynamic Object Repair: Implemented additional runtime repairs for
6116predefined name return values. Both of these repairs can simplify code in
6117the related device drivers that invoke these methods:
61181) For the _STR and _MLS names, automatically repair/convert an ASCII
6119string to a Unicode buffer.
61202) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
6121a
6122lone end tag descriptor in the following cases: A Return(0) was executed,
6123a null buffer was returned, or no object at all was returned (non-slack
6124mode only). Adds a new file, nsconvert.c
6125ACPICA BZ 998. Bob Moore, Lv Zheng.
6126
6127Resource Manager: Added additional code to prevent possible infinite
6128loops
6129while traversing corrupted or ill-formed resource template buffers. Check
6130for zero-length resource descriptors in all code that loops through
6131resource templates (the length field is used to index through the
6132template). This change also hardens the external AcpiWalkResources and
6133AcpiWalkResourceBuffer interfaces.
6134
6135Local Cache Manager: Enhanced the main data structure to eliminate an
6136unnecessary mechanism to access the next object in the list. Actually
6137provides a small performance enhancement for hosts that use the local
6138ACPICA cache manager. Jung-uk Kim.
6139
6140Example Code and Data Size: These are the sizes for the OS-independent
6141acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6142debug version of the code includes the debug output trace mechanism and
6143has a much larger code and data size.
6144
6145  Previous Release:
6146    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
6147    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
6148  Current Release:
6149    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
6150    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
6151
6152
61532) iASL Compiler/Disassembler and Tools:
6154
6155iASL/Disassembler: Fixed several issues with the definition of the ACPI
61565.0 RASF table (RAS Feature Table). This change incorporates late changes
6157that were made to the ACPI 5.0 specification.
6158
6159iASL/Disassembler: Added full support for the following new ACPI tables:
6160  1) The MTMR table (MID Timer Table)
6161  2) The VRTC table (Virtual Real Time Clock Table).
6162Includes header file, disassembler, table compiler, and template support
6163for both tables.
6164
6165iASL: Implemented compile-time validation of package objects returned by
6166predefined names. This new feature validates static package objects
6167returned by the various predefined names defined to return packages. Both
6168object types and package lengths are validated, for both parent packages
6169and sub-packages, if any. The code is similar in structure and behavior
6170to
6171the runtime repair mechanism within the AML interpreter and uses the
6172existing predefined name information table. Adds a new file, aslprepkg.c.
6173ACPICA BZ 938.
6174
6175iASL: Implemented auto-detection of binary ACPI tables for disassembly.
6176This feature detects a binary file with a valid ACPI table header and
6177invokes the disassembler automatically. Eliminates the need to
6178specifically invoke the disassembler with the -d option. ACPICA BZ 862.
6179
6180iASL/Disassembler: Added several warnings for the case where there are
6181unresolved control methods during the disassembly. This can potentially
6182cause errors when the output file is compiled, because the disassembler
6183assumes zero method arguments in these cases (it cannot determine the
6184actual number of arguments without resolution/definition of the method).
6185
6186Debugger: Added support to display all resources with a single command.
6187Invocation of the resources command with no arguments will now display
6188all
6189resources within the current namespace.
6190
6191AcpiHelp: Added descriptive text for each ACPICA exception code displayed
6192via the -e option.
6193
6194----------------------------------------
619517 January 2013. Summary of changes for version 20130117:
6196
61971) ACPICA Kernel-resident Subsystem:
6198
6199Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
6200return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
6201objects to return a package containing one integer, most BIOS code
6202returns
6203two integers and the previous code reflects that. However, we also need
6204to
6205support BIOS code that actually implements to the ACPI spec, and this
6206change reflects this.
6207
6208Fixed two issues with the ACPI_DEBUG_PRINT macros:
62091) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
6210C compilers that require this support.
62112) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
6212ACPI_DEBUG is already used by many of the various hosts.
6213
6214Updated all ACPICA copyrights and signons to 2013. Added the 2013
6215copyright to all module headers and signons, including the standard Linux
6216header. This affects virtually every file in the ACPICA core subsystem,
6217iASL compiler, all ACPICA utilities, and the test suites.
6218
6219Example Code and Data Size: These are the sizes for the OS-independent
6220acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6221debug version of the code includes the debug output trace mechanism and
6222has a much larger code and data size.
6223
6224  Previous Release:
6225    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
6226    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
6227  Current Release:
6228    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
6229    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
6230
6231
62322) iASL Compiler/Disassembler and Tools:
6233
6234Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
6235prevent a possible fault on some hosts. Some C libraries modify the arg
6236pointer parameter to vfprintf making it difficult to call it twice in the
6237AcpiOsVprintf function. Use a local buffer to workaround this issue. This
6238does not affect the Windows OSL since the Win C library does not modify
6239the arg pointer. Chao Guan, Bob Moore.
6240
6241iASL: Fixed a possible infinite loop when the maximum error count is
6242reached. If an output file other than the .AML file is specified (such as
6243a listing file), and the maximum number of errors is reached, do not
6244attempt to flush data to the output file(s) as the compiler is aborting.
6245This can cause an infinite loop as the max error count code essentially
6246keeps calling itself.
6247
6248iASL/Disassembler: Added an option (-in) to ignore NOOP
6249opcodes/operators.
6250Implemented for both the compiler and the disassembler. Often, the NOOP
6251opcode is used as padding for packages that are changed dynamically by
6252the
6253BIOS. When disassembled and recompiled, these NOOPs will cause syntax
6254errors. This option causes the disassembler to ignore all NOOP opcodes
6255(0xA3), and it also causes the compiler to ignore all ASL source code
6256NOOP
6257statements as well.
6258
6259Debugger: Enhanced the Sleep command to execute all sleep states. This
6260change allows Sleep to be invoked with no arguments and causes the
6261debugger to execute all of the sleep states, 0-5, automatically.
6262
6263----------------------------------------
626420 December 2012. Summary of changes for version 20121220:
6265
62661) ACPICA Kernel-resident Subsystem:
6267
6268Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
6269alternate entry point for AcpiWalkResources and improves the usability of
6270the resource manager by accepting as input a buffer containing the output
6271of either a _CRS, _PRS, or _AEI method. The key functionality is that the
6272input buffer is not deleted by this interface so that it can be used by
6273the host later. See the ACPICA reference for details.
6274
6275Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
6276(DSDT version < 2). The constant will be truncated and this warning
6277reflects that behavior.
6278
6279Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
6280ExtendedInterrupt, and GpioInt descriptors. This change adds support to
6281both get and set the new wake bit in these descriptors, separately from
6282the existing share bit. Reported by Aaron Lu.
6283
6284Interpreter: Fix Store() when an implicit conversion is not possible. For
6285example, in the cases such as a store of a string to an existing package
6286object, implement the store as a CopyObject(). This is a small departure
6287from the ACPI specification which states that the control method should
6288be
6289aborted in this case. However, the ASLTS suite depends on this behavior.
6290
6291Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
6292macros: check if debug output is currently enabled as soon as possible to
6293minimize performance impact if debug is in fact not enabled.
6294
6295Source code restructuring: Cleanup to improve modularity. The following
6296new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
6297psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
6298Associated makefiles and project files have been updated.
6299
6300Changed an exception code for LoadTable operator. For the case where one
6301of the input strings is too long, change the returned exception code from
6302AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
6303
6304Fixed a possible memory leak in dispatcher error path. On error, delete
6305the mutex object created during method mutex creation. Reported by
6306tim.gardner@canonical.com.
6307
6308Example Code and Data Size: These are the sizes for the OS-independent
6309acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6310debug version of the code includes the debug output trace mechanism and
6311has a much larger code and data size.
6312
6313  Previous Release:
6314    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
6315    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6316  Current Release:
6317    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
6318    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
6319
6320
63212) iASL Compiler/Disassembler and Tools:
6322
6323iASL: Disallow a method call as argument to the ObjectType ASL operator.
6324This change tracks an errata to the ACPI 5.0 document. The AML grammar
6325will not allow the interpreter to differentiate between a method and a
6326method invocation when these are used as an argument to the ObjectType
6327operator. The ACPI specification change is to disallow a method
6328invocation
6329(UserTerm) for the ObjectType operator.
6330
6331Finish support for the TPM2 and CSRT tables in the headers, table
6332compiler, and disassembler.
6333
6334Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
6335always expires immediately if the semaphore is not available. The
6336original
6337code was using a relative-time timeout, but sem_timedwait requires the
6338use
6339of an absolute time.
6340
6341iASL: Added a remark if the Timer() operator is used within a 32-bit
6342table. This operator returns a 64-bit time value that will be truncated
6343within a 32-bit table.
6344
6345iASL Source code restructuring: Cleanup to improve modularity. The
6346following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
6347aslmethod.c, and aslfileio.c. Associated makefiles and project files have
6348been updated.
6349
6350
6351----------------------------------------
635214 November 2012. Summary of changes for version 20121114:
6353
63541) ACPICA Kernel-resident Subsystem:
6355
6356Implemented a performance enhancement for ACPI/AML Package objects. This
6357change greatly increases the performance of Package objects within the
6358interpreter. It changes the processing of reference counts for packages
6359by
6360optimizing for the most common case where the package sub-objects are
6361either Integers, Strings, or Buffers. Increases the overall performance
6362of
6363the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
63642X.)
6365Chao Guan. ACPICA BZ 943.
6366
6367Implemented and deployed common macros to extract flag bits from resource
6368descriptors. Improves readability and maintainability of the code. Fixes
6369a
6370problem with the UART serial bus descriptor for the number of data bits
6371flags (was incorrectly 2 bits, should be 3).
6372
6373Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
6374of the macros and changed the SETx macros to the style of (destination,
6375source). Also added ACPI_CASTx companion macros. Lv Zheng.
6376
6377Example Code and Data Size: These are the sizes for the OS-independent
6378acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6379debug version of the code includes the debug output trace mechanism and
6380has a much larger code and data size.
6381
6382  Previous Release:
6383    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
6384    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6385  Current Release:
6386    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
6387    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6388
6389
63902) iASL Compiler/Disassembler and Tools:
6391
6392Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
6393adds the ShareAndWake and ExclusiveAndWake flags which were added to the
6394Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
6395
6396Disassembler: Fixed a problem with external declaration generation. Fixes
6397a problem where an incorrect pathname could be generated for an external
6398declaration if the original reference to the object includes leading
6399carats (^). ACPICA BZ 984.
6400
6401Debugger: Completed a major update for the Disassemble<method> command.
6402This command was out-of-date and did not properly disassemble control
6403methods that had any reasonable complexity. This fix brings the command
6404up
6405to the same level as the rest of the disassembler. Adds one new file,
6406dmdeferred.c, which is existing code that is now common with the main
6407disassembler and the debugger disassemble command. ACPICA MZ 978.
6408
6409iASL: Moved the parser entry prototype to avoid a duplicate declaration.
6410Newer versions of Bison emit this prototype, so moved the prototype out
6411of
6412the iASL header to where it is actually used in order to avoid a
6413duplicate
6414declaration.
6415
6416iASL/Tools: Standardized use of the stream I/O functions:
6417  1) Ensure check for I/O error after every fopen/fread/fwrite
6418  2) Ensure proper order of size/count arguments for fread/fwrite
6419  3) Use test of (Actual != Requested) after all fwrite, and most fread
6420  4) Standardize I/O error messages
6421Improves reliability and maintainability of the code. Bob Moore, Lv
6422Zheng.
6423ACPICA BZ 981.
6424
6425Disassembler: Prevent duplicate External() statements. During generation
6426of external statements, detect similar pathnames that are actually
6427duplicates such as these:
6428  External (\ABCD)
6429  External (ABCD)
6430Remove all leading '\' characters from pathnames during the external
6431statement generation so that duplicates will be detected and tossed.
6432ACPICA BZ 985.
6433
6434Tools: Replace low-level I/O with stream I/O functions. Replace
6435open/read/write/close with the stream I/O equivalents
6436fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
6437Moore.
6438
6439AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
6440name header so that AcpiXtract recognizes the output file/table.
6441
6442iASL: Remove obsolete -2 option flag. Originally intended to force the
6443compiler/disassembler into an ACPI 2.0 mode, this was never implemented
6444and the entire concept is now obsolete.
6445
6446----------------------------------------
644718 October 2012. Summary of changes for version 20121018:
6448
6449
64501) ACPICA Kernel-resident Subsystem:
6451
6452Updated support for the ACPI 5.0 MPST table. Fixes some problems
6453introduced by late changes to the table as it was added to the ACPI 5.0
6454specification. Includes header, disassembler, and data table compiler
6455support as well as a new version of the MPST template.
6456
6457AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
64585.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
6459methods: _HID, _CID, and _UID.
6460
6461Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
6462ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
6463name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
6464names for their various drivers. Affects the AcpiGetObjectInfo external
6465interface, and other internal interfaces as well.
6466
6467Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
6468This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
6469on machines that support non-aligned transfers. Optimizes for this case
6470rather than using a strncpy. With assistance from Zheng Lv.
6471
6472Resource Manager: Small fix for buffer size calculation. Fixed a one byte
6473error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
6474
6475Added a new debug print message for AML mutex objects that are force-
6476released. At control method termination, any currently acquired mutex
6477objects are force-released. Adds a new debug-only message for each one
6478that is released.
6479
6480Audited/updated all ACPICA return macros and the function debug depth
6481counter: 1) Ensure that all functions that use the various TRACE macros
6482also use the appropriate ACPICA return macros. 2) Ensure that all normal
6483return statements surround the return expression (value) with parens to
6484ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
6485Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
6486
6487Global source code changes/maintenance: All extra lines at the start and
6488end of each source file have been removed for consistency. Also, within
6489comments, all new sentences start with a single space instead of a double
6490space, again for consistency across the code base.
6491
6492Example Code and Data Size: These are the sizes for the OS-independent
6493acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6494debug version of the code includes the debug output trace mechanism and
6495has a much larger code and data size.
6496
6497  Previous Release:
6498    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6499    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6500  Current Release:
6501    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
6502    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6503
6504
65052) iASL Compiler/Disassembler and Tools:
6506
6507AcpiExec: Improved the algorithm used for memory leak/corruption
6508detection. Added some intelligence to the code that maintains the global
6509list of allocated memory. The list is now ordered by allocated memory
6510address, significantly improving performance. When running AcpiExec on
6511the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
6512on the platform and/or the environment. Note, this performance
6513enhancement affects the AcpiExec utility only, not the kernel-resident
6514ACPICA code.
6515
6516Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
6517the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
6518incorrect table offset reported for invalid opcodes. Report the original
651932-bit value for bad ACPI_NAMEs (as well as the repaired name.)
6520
6521Disassembler: Enhanced the -vt option to emit the binary table data in
6522hex format to assist with debugging.
6523
6524Fixed a potential filename buffer overflow in osunixdir.c. Increased the
6525size of file structure. Colin Ian King.
6526
6527----------------------------------------
652813 September 2012. Summary of changes for version 20120913:
6529
6530
65311) ACPICA Kernel-resident Subsystem:
6532
6533ACPI 5.0: Added two new notify types for the Hardware Error Notification
6534Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
6535and
6536MCE(6).
6537
6538Table Manager: Merged/removed duplicate code in the root table resize
6539functions. One function is external, the other is internal. Lv Zheng,
6540ACPICA
6541BZ 846.
6542
6543Makefiles: Completely removed the obsolete "Linux" makefiles under
6544acpica/generate/linux. These makefiles are obsolete and have been
6545replaced
6546by
6547the generic unix makefiles under acpica/generate/unix.
6548
6549Makefiles: Ensure that binary files always copied properly. Minor rule
6550change
6551to ensure that the final binary output files are always copied up to the
6552appropriate binary directory (bin32 or bin64.)
6553
6554Example Code and Data Size: These are the sizes for the OS-independent
6555acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6556debug
6557version of the code includes the debug output trace mechanism and has a
6558much
6559larger code and data size.
6560
6561  Previous Release:
6562    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6563    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6564  Current Release:
6565    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6566    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6567
6568
65692) iASL Compiler/Disassembler and Tools:
6570
6571Disassembler: Fixed a possible fault during the disassembly of resource
6572descriptors when a second parse is required because of the invocation of
6573external control methods within the table. With assistance from
6574adq@lidskialf.net. ACPICA BZ 976.
6575
6576iASL: Fixed a namepath optimization problem. An error can occur if the
6577parse
6578node that contains the namepath to be optimized does not have a parent
6579node
6580that is a named object. This change fixes the problem.
6581
6582iASL: Fixed a regression where the AML file is not deleted on errors. The
6583AML
6584output file should be deleted if there are any errors during the
6585compiler.
6586The
6587only exception is if the -f (force output) option is used. ACPICA BZ 974.
6588
6589iASL: Added a feature to automatically increase internal line buffer
6590sizes.
6591Via realloc(), automatically increase the internal line buffer sizes as
6592necessary to support very long source code lines. The current version of
6593the
6594preprocessor requires a buffer long enough to contain full source code
6595lines.
6596This change increases the line buffer(s) if the input lines go beyond the
6597current buffer size. This eliminates errors that occurred when a source
6598code
6599line was longer than the buffer.
6600
6601iASL: Fixed a problem with constant folding in method declarations. The
6602SyncLevel term is a ByteConstExpr, and incorrect code would be generated
6603if a
6604Type3 opcode was used.
6605
6606Debugger: Improved command help support. For incorrect argument count,
6607display
6608full help for the command. For help command itself, allow an argument to
6609specify a command.
6610
6611Test Suites: Several bug fixes for the ASLTS suite reduces the number of
6612errors during execution of the suite. Guan Chao.
6613
6614----------------------------------------
661516 August 2012. Summary of changes for version 20120816:
6616
6617
66181) ACPICA Kernel-resident Subsystem:
6619
6620Removed all use of the deprecated _GTS and _BFS predefined methods. The
6621_GTS
6622(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
6623deprecated and will probably be removed from the ACPI specification.
6624Windows
6625does not invoke them, and reportedly never will. The final nail in the
6626coffin
6627is that the ACPI specification states that these methods must be run with
6628interrupts off, which is not going to happen in a kernel interpreter.
6629Note:
6630Linux has removed all use of the methods also. It was discovered that
6631invoking these functions caused failures on some machines, probably
6632because
6633they were never tested since Windows does not call them. Affects two
6634external
6635interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
6636ACPICA BZ 969.
6637
6638Implemented support for complex bit-packed buffers returned from the _PLD
6639(Physical Location of Device) predefined method. Adds a new external
6640interface, AcpiDecodePldBuffer that parses the buffer into a more usable
6641C
6642structure. Note: C Bitfields cannot be used for this type of predefined
6643structure since the memory layout of individual bitfields is not defined
6644by
6645the C language. In addition, there are endian concerns where a compiler
6646will
6647change the bitfield ordering based on the machine type. The new ACPICA
6648interface eliminates these issues, and should be called after _PLD is
6649executed. ACPICA BZ 954.
6650
6651Implemented a change to allow a scope change to root (via "Scope (\)")
6652during
6653execution of module-level ASL code (code that is executed at table load
6654time.) Lin Ming.
6655
6656Added the Windows8/Server2012 string for the _OSI method. This change
6657adds
6658a
6659new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
66602012.
6661
6662Added header support for the new ACPI tables DBG2 (Debug Port Table Type
66632)
6664and CSRT (Core System Resource Table).
6665
6666Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
6667names. This simplifies access to the buffers returned by these predefined
6668names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
6669
6670GPE support: Removed an extraneous parameter from the various low-level
6671internal GPE functions. Tang Feng.
6672
6673Removed the linux makefiles from the unix packages. The generate/linux
6674makefiles are obsolete and have been removed from the unix tarball
6675release
6676packages. The replacement makefiles are under generate/unix, and there is
6677a
6678top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
6679
6680Updates for Unix makefiles:
66811) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
66822) Update linker flags (move to end of command line) for AcpiExec
6683utility.
6684Guan Chao.
6685
6686Split ACPICA initialization functions to new file, utxfinit.c. Split from
6687utxface.c to improve modularity and reduce file size.
6688
6689Example Code and Data Size: These are the sizes for the OS-independent
6690acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6691debug version of the code includes the debug output trace mechanism and
6692has a
6693much larger code and data size.
6694
6695  Previous Release:
6696    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6697    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6698  Current Release:
6699    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6700    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6701
6702
67032) iASL Compiler/Disassembler and Tools:
6704
6705iASL: Fixed a problem with constant folding for fixed-length constant
6706expressions. The constant-folding code was not being invoked for constant
6707expressions that allow the use of type 3/4/5 opcodes to generate
6708constants
6709for expressions such as ByteConstExpr, WordConstExpr, etc. This could
6710result
6711in the generation of invalid AML bytecode. ACPICA BZ 970.
6712
6713iASL: Fixed a generation issue on newer versions of Bison. Newer versions
6714apparently automatically emit some of the necessary externals. This
6715change
6716handles these versions in order to eliminate generation warnings.
6717
6718Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
6719
6720Disassembler: Add support to decode _PLD buffers. The decoded buffer
6721appears
6722within comments in the output file.
6723
6724Debugger: Fixed a regression with the "Threads" command where
6725AE_BAD_PARAMETER was always returned.
6726
6727----------------------------------------
672811 July 2012. Summary of changes for version 20120711:
6729
67301) ACPICA Kernel-resident Subsystem:
6731
6732Fixed a possible fault in the return package object repair code. Fixes a
6733problem that can occur when a lone package object is wrapped with an
6734outer
6735package object in order to force conformance to the ACPI specification.
6736Can
6737affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
6738_DLM,
6739_CSD, _PSD, _TSD.
6740
6741Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
6742PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
6743ARB_DIS bit must be implemented in the host-dependent C3 processor power
6744state
6745support. Note, ARB_DIS is obsolete and only applies to older chipsets,
6746both
6747Intel and other vendors. (for Intel: ICH4-M and earlier)
6748
6749This change removes the code to disable/enable bus master arbitration
6750during
6751suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
6752causes
6753resume problems on some machines. The change has been in use for over
6754seven
6755years within Linux.
6756
6757Implemented two new external interfaces to support host-directed dynamic
6758ACPI
6759table load and unload. They are intended to simplify the host
6760implementation
6761of hot-plug support:
6762  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
6763  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
6764table.
6765See the ACPICA reference for additional details. Adds one new file,
6766components/tables/tbxfload.c
6767
6768Implemented and deployed two new interfaces for errors and warnings that
6769are
6770known to be caused by BIOS/firmware issues:
6771  AcpiBiosError: Prints "ACPI Firmware Error" message.
6772  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6773Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6774table
6775and FADT errors. Additional deployment to be completed as appropriate in
6776the
6777future. The associated conditional macros are ACPI_BIOS_ERROR and
6778ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6779ACPICA
6780BZ
6781843.
6782
6783Implicit notify support: ensure that no memory allocation occurs within a
6784critical region. This fix moves a memory allocation outside of the time
6785that a
6786spinlock is held. Fixes issues on systems that do not allow this
6787behavior.
6788Jung-uk Kim.
6789
6790Split exception code utilities and tables into a new file,
6791utilities/utexcep.c
6792
6793Example Code and Data Size: These are the sizes for the OS-independent
6794acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6795debug
6796version of the code includes the debug output trace mechanism and has a
6797much
6798larger code and data size.
6799
6800  Previous Release:
6801    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6802    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6803  Current Release:
6804    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6805    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6806
6807
68082) iASL Compiler/Disassembler and Tools:
6809
6810iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6811of
68120. Jung-uk Kim.
6813
6814Debugger: Enhanced the "tables" command to emit additional information
6815about
6816the current set of ACPI tables, including the owner ID and flags decode.
6817
6818Debugger: Reimplemented the "unload" command to use the new
6819AcpiUnloadParentTable external interface. This command was disable
6820previously
6821due to need for an unload interface.
6822
6823AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6824option
6825will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6826
6827----------------------------------------
682820 June 2012. Summary of changes for version 20120620:
6829
6830
68311) ACPICA Kernel-resident Subsystem:
6832
6833Implemented support to expand the "implicit notify" feature to allow
6834multiple
6835devices to be notified by a single GPE. This feature automatically
6836generates a
6837runtime device notification in the absence of a BIOS-provided GPE control
6838method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6839notify is
6840provided by ACPICA for Windows compatibility, and is a workaround for
6841BIOS
6842AML
6843code errors. See the description of the AcpiSetupGpeForWake interface in
6844the
6845APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6846
6847Changed some comments and internal function names to simplify and ensure
6848correctness of the Linux code translation. No functional changes.
6849
6850Example Code and Data Size: These are the sizes for the OS-independent
6851acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6852debug
6853version of the code includes the debug output trace mechanism and has a
6854much
6855larger code and data size.
6856
6857  Previous Release:
6858    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6859    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6860  Current Release:
6861    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6862    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6863
6864
68652) iASL Compiler/Disassembler and Tools:
6866
6867Disassembler: Added support to emit short, commented descriptions for the
6868ACPI
6869predefined names in order to improve the readability of the disassembled
6870output. ACPICA BZ 959. Changes include:
6871  1) Emit descriptions for all standard predefined names (_INI, _STA,
6872_PRW,
6873etc.)
6874  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6875  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6876etc.)
6877
6878AcpiSrc: Fixed several long-standing Linux code translation issues.
6879Argument
6880descriptions in function headers are now translated properly to lower
6881case
6882and
6883underscores. ACPICA BZ 961. Also fixes translation problems such as
6884these:
6885(old -> new)
6886  i_aSL -> iASL
6887  00-7_f -> 00-7F
6888  16_k -> 16K
6889  local_fADT -> local_FADT
6890  execute_oSI -> execute_OSI
6891
6892iASL: Fixed a problem where null bytes were inadvertently emitted into
6893some
6894listing files.
6895
6896iASL: Added the existing debug options to the standard help screen. There
6897are
6898no longer two different help screens. ACPICA BZ 957.
6899
6900AcpiHelp: Fixed some typos in the various predefined name descriptions.
6901Also
6902expand some of the descriptions where appropriate.
6903
6904iASL: Fixed the -ot option (display compile times/statistics). Was not
6905working
6906properly for standard output; only worked for the debug file case.
6907
6908----------------------------------------
690918 May 2012. Summary of changes for version 20120518:
6910
6911
69121) ACPICA Core Subsystem:
6913
6914Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6915defined
6916to block until asynchronous events such as notifies and GPEs have
6917completed.
6918Within ACPICA, it is only called before a notify or GPE handler is
6919removed/uninstalled. It also may be useful for the host OS within related
6920drivers such as the Embedded Controller driver. See the ACPICA reference
6921for
6922additional information. ACPICA BZ 868.
6923
6924ACPI Tables: Added a new error message for a possible overflow failure
6925during
6926the conversion of FADT 32-bit legacy register addresses to internal
6927common
692864-
6929bit GAS structure representation. The GAS has a one-byte "bit length"
6930field,
6931thus limiting the register length to 255 bits. ACPICA BZ 953.
6932
6933Example Code and Data Size: These are the sizes for the OS-independent
6934acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6935debug
6936version of the code includes the debug output trace mechanism and has a
6937much
6938larger code and data size.
6939
6940  Previous Release:
6941    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6942    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6943  Current Release:
6944    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6945    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6946
6947
69482) iASL Compiler/Disassembler and Tools:
6949
6950iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6951macro.
6952This keyword was added late in the ACPI 5.0 release cycle and was not
6953implemented until now.
6954
6955Disassembler: Added support for Operation Region externals. Adds missing
6956support for operation regions that are defined in another table, and
6957referenced locally via a Field or BankField ASL operator. Now generates
6958the
6959correct External statement.
6960
6961Disassembler: Several additional fixes for the External() statement
6962generation
6963related to some ASL operators. Also, order the External() statements
6964alphabetically in the disassembler output. Fixes the External()
6965generation
6966for
6967the Create* field, Alias, and Scope operators:
6968 1) Create* buffer field operators - fix type mismatch warning on
6969disassembly
6970 2) Alias - implement missing External support
6971 3) Scope - fix to make sure all necessary externals are emitted.
6972
6973iASL: Improved pathname support. For include files, merge the prefix
6974pathname
6975with the file pathname and eliminate unnecessary components. Convert
6976backslashes in all pathnames to forward slashes, for readability. Include
6977file
6978pathname changes affect both #include and Include() type operators.
6979
6980iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6981end
6982of a valid line by inserting a newline and then returning the EOF during
6983the
6984next call to GetNextLine. Prevents the line from being ignored due to EOF
6985condition.
6986
6987iASL: Implemented some changes to enhance the IDE support (-vi option.)
6988Error
6989and Warning messages are now correctly recognized for both the source
6990code
6991browser and the global error and warning counts.
6992
6993----------------------------------------
699420 April 2012. Summary of changes for version 20120420:
6995
6996
69971) ACPICA Core Subsystem:
6998
6999Implemented support for multiple notify handlers. This change adds
7000support
7001to
7002allow multiple system and device notify handlers on Device, Thermal Zone,
7003and
7004Processor objects. This can simplify the host OS notification
7005implementation.
7006Also re-worked and restructured the entire notify support code to
7007simplify
7008handler installation, handler removal, notify event queuing, and notify
7009dispatch to handler(s). Note: there can still only be two global notify
7010handlers - one for system notifies and one for device notifies. There are
7011no
7012changes to the existing handler install/remove interfaces. Lin Ming, Bob
7013Moore, Rafael Wysocki.
7014
7015Fixed a regression in the package repair code where the object reference
7016count was calculated incorrectly. Regression was introduced in the commit
7017"Support to add Package wrappers".
7018
7019Fixed a couple possible memory leaks in the AML parser, in the error
7020recovery
7021path. Jesper Juhl, Lin Ming.
7022
7023Example Code and Data Size: These are the sizes for the OS-independent
7024acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7025debug version of the code includes the debug output trace mechanism and
7026has a
7027much larger code and data size.
7028
7029  Previous Release:
7030    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
7031    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7032  Current Release:
7033    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
7034    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
7035
7036
70372) iASL Compiler/Disassembler and Tools:
7038
7039iASL: Fixed a problem with the resource descriptor support where the
7040length
7041of the StartDependentFn and StartDependentFnNoPrio descriptors were not
7042included in cumulative descriptor offset, resulting in incorrect values
7043for
7044resource tags within resource descriptors appearing after a
7045StartDependent*
7046descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
7047
7048iASL and Preprocessor: Implemented full support for the #line directive
7049to
7050correctly track original source file line numbers through the .i
7051preprocessor
7052output file - for error and warning messages.
7053
7054iASL: Expand the allowable byte constants for address space IDs.
7055Previously,
7056the allowable range was 0x80-0xFF (user-defined spaces), now the range is
70570x0A-0xFF to allow for custom and new IDs without changing the compiler.
7058
7059iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
7060
7061iASL: Add option to completely disable the preprocessor (-Pn).
7062
7063iASL: Now emit all error/warning messages to standard error (stderr) by
7064default (instead of the previous stdout).
7065
7066ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
7067Update
7068for resource descriptor offset fix above. Update/cleanup error output
7069routines. Enable and send iASL errors/warnings to an error logfile
7070(error.txt). Send all other iASL output to a logfile (compiler.txt).
7071Fixed
7072several extraneous "unrecognized operator" messages.
7073
7074----------------------------------------
707520 March 2012. Summary of changes for version 20120320:
7076
7077
70781) ACPICA Core Subsystem:
7079
7080Enhanced the sleep/wake interfaces to optionally execute the _GTS method
7081(Going To Sleep) and the _BFS method (Back From Sleep). Windows
7082apparently
7083does not execute these methods, and therefore these methods are often
7084untested. It has been seen on some systems where the execution of these
7085methods causes errors and also prevents the machine from entering S5. It
7086is
7087therefore suggested that host operating systems do not execute these
7088methods
7089by default. In the future, perhaps these methods can be optionally
7090executed
7091based on the age of the system and/or what is the newest version of
7092Windows
7093that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
7094and
7095AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
7096Ming.
7097
7098Fixed a problem where the length of the local/common FADT was set too
7099early.
7100The local FADT table length cannot be set to the common length until the
7101original length has been examined. There is code that checks the table
7102length
7103and sets various fields appropriately. This can affect older machines
7104with
7105early FADT versions. For example, this can cause inadvertent writes to
7106the
7107CST_CNT register. Julian Anastasov.
7108
7109Fixed a mapping issue related to a physical table override. Use the
7110deferred
7111mapping mechanism for tables loaded via the physical override OSL
7112interface.
7113This allows for early mapping before the virtual memory manager is
7114available.
7115Thomas Renninger, Bob Moore.
7116
7117Enhanced the automatic return-object repair code: Repair a common problem
7118with
7119predefined methods that are defined to return a variable-length Package
7120of
7121sub-objects. If there is only one sub-object, some BIOS ASL code
7122mistakenly
7123simply returns the single object instead of a Package with one sub-
7124object.
7125This new support will repair this error by wrapping a Package object
7126around
7127the original object, creating the correct and expected Package with one
7128sub-
7129object. Names that can be repaired in this manner include: _ALR, _CSD,
7130_HPX,
7131_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
7132939.
7133
7134Changed the exception code returned for invalid ACPI paths passed as
7135parameters to external interfaces such as AcpiEvaluateObject. Was
7136AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
7137
7138Example Code and Data Size: These are the sizes for the OS-independent
7139acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7140debug
7141version of the code includes the debug output trace mechanism and has a
7142much
7143larger code and data size.
7144
7145  Previous Release:
7146    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
7147    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7148  Current Release:
7149    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
7150    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7151
7152
71532) iASL Compiler/Disassembler and Tools:
7154
7155iASL: Added the infrastructure and initial implementation of a integrated
7156C-
7157like preprocessor. This will simplify BIOS development process by
7158eliminating
7159the need for a separate preprocessing step during builds. On Windows, it
7160also
7161eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
7162features including full #define() macro support are still under
7163development.
7164These preprocessor directives are supported:
7165    #define
7166    #elif
7167    #else
7168    #endif
7169    #error
7170    #if
7171    #ifdef
7172    #ifndef
7173    #include
7174    #pragma message
7175    #undef
7176    #warning
7177In addition, these new command line options are supported:
7178    -D <symbol> Define symbol for preprocessor use
7179    -li         Create preprocessed output file (*.i)
7180    -P          Preprocess only and create preprocessor output file (*.i)
7181
7182Table Compiler: Fixed a problem where the equals operator within an
7183expression
7184did not work properly.
7185
7186Updated iASL to use the current versions of Bison/Flex. Updated the
7187Windows
7188project file to invoke these tools from the standard location. ACPICA BZ
7189904.
7190Versions supported:
7191    Flex for Windows:  V2.5.4
7192    Bison for Windows: V2.4.1
7193
7194----------------------------------------
719515 February 2012. Summary of changes for version 20120215:
7196
7197
71981) ACPICA Core Subsystem:
7199
7200There have been some major changes to the sleep/wake support code, as
7201described below (a - e).
7202
7203a) The AcpiLeaveSleepState has been split into two interfaces, similar to
7204AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
7205AcpiLeaveSleepStatePrep. This allows the host to perform actions between
7206the
7207time the _BFS method is called and the _WAK method is called. NOTE: all
7208hosts
7209must update their wake/resume code or else sleep/wake will not work
7210properly.
7211Rafael Wysocki.
7212
7213b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
7214_WAK
7215method. Some machines require that the GPEs are enabled before the _WAK
7216method
7217is executed. Thomas Renninger.
7218
7219c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
7220bit.
7221Some BIOS code assumes that WAK_STS will be cleared on resume and use it
7222to
7223determine whether the system is rebooting or resuming. Matthew Garrett.
7224
7225d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
7226Sleep) to
7227match the ACPI specification requirement. Rafael Wysocki.
7228
7229e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
7230registers within the V5 FADT. This support adds two new files:
7231hardware/hwesleep.c implements the support for the new registers. Moved
7232all
7233sleep/wake external interfaces to hardware/hwxfsleep.c.
7234
7235
7236Added a new OSL interface for ACPI table overrides,
7237AcpiOsPhysicalTableOverride. This interface allows the host to override a
7238table via a physical address, instead of the logical address required by
7239AcpiOsTableOverride. This simplifies the host implementation. Initial
7240implementation by Thomas Renninger. The ACPICA implementation creates a
7241single
7242shared function for table overrides that attempts both a logical and a
7243physical override.
7244
7245Expanded the OSL memory read/write interfaces to 64-bit data
7246(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
7247transfer support for GAS register structures passed to AcpiRead and
7248AcpiWrite.
7249
7250Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
7251custom
7252build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
7253model.
7254See the ACPICA reference for details. ACPICA BZ 942. This option removes
7255about
725610% of the code and 5% of the static data, and the following hardware
7257ACPI
7258features become unavailable:
7259    PM Event and Control registers
7260    SCI interrupt (and handler)
7261    Fixed Events
7262    General Purpose Events (GPEs)
7263    Global Lock
7264    ACPI PM timer
7265
7266Updated the unix tarball directory structure to match the ACPICA git
7267source
7268tree. This ensures that the generic unix makefiles work properly (in
7269generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
7270867.
7271
7272Updated the return value of the _REV predefined method to integer value 5
7273to
7274reflect ACPI 5.0 support.
7275
7276Moved the external ACPI PM timer interface prototypes to the public
7277acpixf.h
7278file where they belong.
7279
7280Example Code and Data Size: These are the sizes for the OS-independent
7281acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7282debug
7283version of the code includes the debug output trace mechanism and has a
7284much
7285larger code and data size.
7286
7287  Previous Release:
7288    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
7289    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
7290  Current Release:
7291    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
7292    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7293
7294
72952) iASL Compiler/Disassembler and Tools:
7296
7297Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
7298descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
7299incorrectly displayed.
7300
7301AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
7302specification.
7303
7304----------------------------------------
730511 January 2012. Summary of changes for version 20120111:
7306
7307
73081) ACPICA Core Subsystem:
7309
7310Implemented a new mechanism to allow host device drivers to check for
7311address
7312range conflicts with ACPI Operation Regions. Both SystemMemory and
7313SystemIO
7314address spaces are supported. A new external interface,
7315AcpiCheckAddressRange,
7316allows drivers to check an address range against the ACPI namespace. See
7317the
7318ACPICA reference for additional details. Adds one new file,
7319utilities/utaddress.c. Lin Ming, Bob Moore.
7320
7321Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
7322Control
7323and
7324Status registers, update the ACPI 5.0 flags, and update internal data
7325structures to handle an FADT larger than 256 bytes. The size of the ACPI
73265.0
7327FADT is 268 bytes.
7328
7329Updated all ACPICA copyrights and signons to 2012. Added the 2012
7330copyright to
7331all module headers and signons, including the standard Linux header. This
7332affects virtually every file in the ACPICA core subsystem, iASL compiler,
7333and
7334all ACPICA utilities.
7335
7336Example Code and Data Size: These are the sizes for the OS-independent
7337acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7338debug
7339version of the code includes the debug output trace mechanism and has a
7340much
7341larger code and data size.
7342
7343  Previous Release:
7344    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
7345    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
7346  Current Release:
7347    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
7348    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
7349
7350
73512) iASL Compiler/Disassembler and Tools:
7352
7353Disassembler: fixed a problem with the automatic resource tag generation
7354support. Fixes a problem where the resource tags are inadvertently not
7355constructed if the table being disassembled contains external references
7356to
7357control methods. Moved the actual construction of the tags to after the
7358final
7359namespace is constructed (after 2nd parse is invoked due to external
7360control
7361method references.) ACPICA BZ 941.
7362
7363Table Compiler: Make all "generic" operators caseless. These are the
7364operators
7365like UINT8, String, etc. Making these caseless improves ease-of-use.
7366ACPICA BZ
7367934.
7368
7369----------------------------------------
737023 November 2011. Summary of changes for version 20111123:
7371
73720) ACPI 5.0 Support:
7373
7374This release contains full support for the ACPI 5.0 specification, as
7375summarized below.
7376
7377Reduced Hardware Support:
7378-------------------------
7379
7380This support allows for ACPI systems without the usual ACPI hardware.
7381This
7382support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
7383will
7384not attempt to initialize or use any of the usual ACPI hardware. Note,
7385when
7386this flag is set, all of the following ACPI hardware is assumed to be not
7387present and is not initialized or accessed:
7388
7389    General Purpose Events (GPEs)
7390    Fixed Events (PM1a/PM1b and PM Control)
7391    Power Management Timer and Console Buttons (power/sleep)
7392    Real-time Clock Alarm
7393    Global Lock
7394    System Control Interrupt (SCI)
7395    The FACS is assumed to be non-existent
7396
7397ACPI Tables:
7398------------
7399
7400All new tables and updates to existing tables are fully supported in the
7401ACPICA headers (for use by device drivers), the disassembler, and the
7402iASL
7403Data Table Compiler. ACPI 5.0 defines these new tables:
7404
7405    BGRT        /* Boot Graphics Resource Table */
7406    DRTM        /* Dynamic Root of Trust for Measurement table */
7407    FPDT        /* Firmware Performance Data Table */
7408    GTDT        /* Generic Timer Description Table */
7409    MPST        /* Memory Power State Table */
7410    PCCT        /* Platform Communications Channel Table */
7411    PMTT        /* Platform Memory Topology Table */
7412    RASF        /* RAS Feature table */
7413
7414Operation Regions/SpaceIDs:
7415---------------------------
7416
7417All new operation regions are fully supported by the iASL compiler, the
7418disassembler, and the ACPICA runtime code (for dispatch to region
7419handlers.)
7420The new operation region Space IDs are:
7421
7422    GeneralPurposeIo
7423    GenericSerialBus
7424
7425Resource Descriptors:
7426---------------------
7427
7428All new ASL resource descriptors are fully supported by the iASL
7429compiler,
7430the
7431ASL/AML disassembler, and the ACPICA runtime Resource Manager code
7432(including
7433all new predefined resource tags). New descriptors are:
7434
7435    FixedDma
7436    GpioIo
7437    GpioInt
7438    I2cSerialBus
7439    SpiSerialBus
7440    UartSerialBus
7441
7442ASL/AML Operators, New and Modified:
7443------------------------------------
7444
7445One new operator is added, the Connection operator, which is used to
7446associate
7447a GeneralPurposeIo or GenericSerialBus resource descriptor with
7448individual
7449field objects within an operation region. Several new protocols are
7450associated
7451with the AccessAs operator. All are fully supported by the iASL compiler,
7452disassembler, and runtime ACPICA AML interpreter:
7453
7454    Connection                      // Declare Field Connection
7455attributes
7456    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
7457    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
7458Protocol
7459    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
7460    RawDataBuffer                       // Data type for Vendor Data
7461fields
7462
7463Predefined ASL/AML Objects:
7464---------------------------
7465
7466All new predefined objects/control-methods are supported by the iASL
7467compiler
7468and the ACPICA runtime validation/repair (arguments and return values.)
7469New
7470predefined names include the following:
7471
7472Standard Predefined Names (Objects or Control Methods):
7473    _AEI, _CLS, _CPC, _CWS, _DEP,
7474    _DLM, _EVT, _GCP, _CRT, _GWS,
7475    _HRV, _PRE, _PSE, _SRT, _SUB.
7476
7477Resource Tags (Names used to access individual fields within resource
7478descriptors):
7479    _DBT, _DPL, _DRS, _END, _FLC,
7480    _IOR, _LIN, _MOD, _PAR, _PHA,
7481    _PIN, _PPI, _POL, _RXL, _SLV,
7482    _SPE, _STB, _TXL, _VEN.
7483
7484ACPICA External Interfaces:
7485---------------------------
7486
7487Several new interfaces have been defined for use by ACPI-related device
7488drivers and other host OS services:
7489
7490AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
7491to
7492acquire and release AML mutexes that are defined in the DSDT/SSDT tables
7493provided by the BIOS. They are intended to be used in conjunction with
7494the
7495ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
7496mutual exclusion with the AML code/interpreter.
7497
7498AcpiGetEventResources: Returns the (formatted) resource descriptors as
7499defined
7500by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
7501provides
7502resource descriptors associated with hardware-reduced platform events,
7503similar
7504to the AcpiGetCurrentResources interface.
7505
7506Operation Region Handlers: For General Purpose IO and Generic Serial Bus
7507operation regions, information about the Connection() object and any
7508optional
7509length information is passed to the region handler within the Context
7510parameter.
7511
7512AcpiBufferToResource: This interface converts a raw AML buffer containing
7513a
7514resource template or resource descriptor to the ACPI_RESOURCE internal
7515format
7516suitable for use by device drivers. Can be used by an operation region
7517handler
7518to convert the Connection() buffer object into a ACPI_RESOURCE.
7519
7520Miscellaneous/Tools/TestSuites:
7521-------------------------------
7522
7523Support for extended _HID names (Four alpha characters instead of three).
7524Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
7525Support for ACPI 5.0 features in the ASLTS test suite.
7526Fully updated documentation (ACPICA and iASL reference documents.)
7527
7528ACPI Table Definition Language:
7529-------------------------------
7530
7531Support for this language was implemented and released as a subsystem of
7532the
7533iASL compiler in 2010. (See the iASL compiler User Guide.)
7534
7535
7536Non-ACPI 5.0 changes for this release:
7537--------------------------------------
7538
75391) ACPICA Core Subsystem:
7540
7541Fix a problem with operation region declarations where a failure can
7542occur
7543if
7544the region name and an argument that evaluates to an object (such as the
7545region address) are in different namespace scopes. Lin Ming, ACPICA BZ
7546937.
7547
7548Do not abort an ACPI table load if an invalid space ID is found within.
7549This
7550will be caught later if the offending method is executed. ACPICA BZ 925.
7551
7552Fixed an issue with the FFixedHW space ID where the ID was not always
7553recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
7554
7555Fixed a problem with the 32-bit generation of the unix-specific OSL
7556(osunixxf.c). Lin Ming, ACPICA BZ 936.
7557
7558Several changes made to enable generation with the GCC 4.6 compiler.
7559ACPICA BZ
7560935.
7561
7562New error messages: Unsupported I/O requests (not 8/16/32 bit), and
7563Index/Bank
7564field registers out-of-range.
7565
75662) iASL Compiler/Disassembler and Tools:
7567
7568iASL: Implemented the __PATH__ operator, which returns the full pathname
7569of
7570the current source file.
7571
7572AcpiHelp: Automatically display expanded keyword information for all ASL
7573operators.
7574
7575Debugger: Add "Template" command to disassemble/dump resource template
7576buffers.
7577
7578Added a new master script to generate and execute the ASLTS test suite.
7579Automatically handles 32- and 64-bit generation. See tests/aslts.sh
7580
7581iASL: Fix problem with listing generation during processing of the
7582Switch()
7583operator where AML listing was disabled until the entire Switch block was
7584completed.
7585
7586iASL: Improve support for semicolon statement terminators. Fix "invalid
7587character" message for some cases when the semicolon is used. Semicolons
7588are
7589now allowed after every <Term> grammar element. ACPICA BZ 927.
7590
7591iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
7592923.
7593
7594Disassembler: Fix problem with disassembly of the DataTableRegion
7595operator
7596where an inadvertent "Unhandled deferred opcode" message could be
7597generated.
7598
75993) Example Code and Data Size
7600
7601These are the sizes for the OS-independent acpica.lib produced by the
7602Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7603includes the debug output trace mechanism and has a much larger code and
7604data
7605size.
7606
7607  Previous Release:
7608    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7609    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7610  Current Release:
7611    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
7612    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
7613
7614----------------------------------------
761522 September 2011. Summary of changes for version 20110922:
7616
76170) ACPI 5.0 News:
7618
7619Support for ACPI 5.0 in ACPICA has been underway for several months and
7620will
7621be released at the same time that ACPI 5.0 is officially released.
7622
7623The ACPI 5.0 specification is on track for release in the next few
7624months.
7625
76261) ACPICA Core Subsystem:
7627
7628Fixed a problem where the maximum sleep time for the Sleep() operator was
7629intended to be limited to two seconds, but was inadvertently limited to
763020
7631seconds instead.
7632
7633Linux and Unix makefiles: Added header file dependencies to ensure
7634correct
7635generation of ACPICA core code and utilities. Also simplified the
7636makefiles
7637considerably through the use of the vpath variable to specify search
7638paths.
7639ACPICA BZ 924.
7640
76412) iASL Compiler/Disassembler and Tools:
7642
7643iASL: Implemented support to check the access length for all fields
7644created to
7645access named Resource Descriptor fields. For example, if a resource field
7646is
7647defined to be two bits, a warning is issued if a CreateXxxxField() is
7648used
7649with an incorrect bit length. This is implemented for all current
7650resource
7651descriptor names. ACPICA BZ 930.
7652
7653Disassembler: Fixed a byte ordering problem with the output of 24-bit and
765456-
7655bit integers.
7656
7657iASL: Fixed a couple of issues associated with variable-length package
7658objects. 1) properly handle constants like One, Ones, Zero -- do not make
7659a
7660VAR_PACKAGE when these are used as a package length. 2) Allow the
7661VAR_PACKAGE
7662opcode (in addition to PACKAGE) when validating object types for
7663predefined
7664names.
7665
7666iASL: Emit statistics for all output files (instead of just the ASL input
7667and
7668AML output). Includes listings, hex files, etc.
7669
7670iASL: Added -G option to the table compiler to allow the compilation of
7671custom
7672ACPI tables. The only part of a table that is required is the standard
767336-
7674byte
7675ACPI header.
7676
7677AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
7678headers),
7679which also adds correct 64-bit support. Also, now all output filenames
7680are
7681completely lower case.
7682
7683AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
7684loading table files. A warning is issued for any such tables. The only
7685exception is an FADT. This also fixes a possible fault when attempting to
7686load
7687non-AML tables. ACPICA BZ 932.
7688
7689AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
7690a
7691missing table terminator could cause a fault when using the -p option.
7692
7693AcpiSrc: Fixed a possible divide-by-zero fault when generating file
7694statistics.
7695
76963) Example Code and Data Size
7697
7698These are the sizes for the OS-independent acpica.lib produced by the
7699Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7700includes the debug output trace mechanism and has a much larger code and
7701data
7702size.
7703
7704  Previous Release (VC 9.0):
7705    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7706    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7707  Current Release (VC 9.0):
7708    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7709    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7710
7711
7712----------------------------------------
771323 June 2011. Summary of changes for version 20110623:
7714
77151) ACPI CA Core Subsystem:
7716
7717Updated the predefined name repair mechanism to not attempt repair of a
7718_TSS
7719return object if a _PSS object is present. We can only sort the _TSS
7720return
7721package if there is no _PSS within the same scope. This is because if
7722_PSS
7723is
7724present, the ACPI specification dictates that the _TSS Power Dissipation
7725field
7726is to be ignored, and therefore some BIOSs leave garbage values in the
7727_TSS
7728Power field(s). In this case, it is best to just return the _TSS package
7729as-
7730is. Reported by, and fixed with assistance from Fenghua Yu.
7731
7732Added an option to globally disable the control method return value
7733validation
7734and repair. This runtime option can be used to disable return value
7735repair
7736if
7737this is causing a problem on a particular machine. Also added an option
7738to
7739AcpiExec (-dr) to set this disable flag.
7740
7741All makefiles and project files: Major changes to improve generation of
7742ACPICA
7743tools. ACPICA BZ 912:
7744    Reduce default optimization levels to improve compatibility
7745    For Linux, add strict-aliasing=0 for gcc 4
7746    Cleanup and simplify use of command line defines
7747    Cleanup multithread library support
7748    Improve usage messages
7749
7750Linux-specific header: update handling of THREAD_ID and pthread. For the
775132-
7752bit case, improve casting to eliminate possible warnings, especially with
7753the
7754acpica tools.
7755
7756Example Code and Data Size: These are the sizes for the OS-independent
7757acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7758debug
7759version of the code includes the debug output trace mechanism and has a
7760much
7761larger code and data size.
7762
7763  Previous Release (VC 9.0):
7764    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7765    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7766  Current Release (VC 9.0):
7767    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7768    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7769
77702) iASL Compiler/Disassembler and Tools:
7771
7772With this release, a new utility named "acpihelp" has been added to the
7773ACPICA
7774package. This utility summarizes the ACPI specification chapters for the
7775ASL
7776and AML languages. It generates under Linux/Unix as well as Windows, and
7777provides the following functionality:
7778    Find/display ASL operator(s) -- with description and syntax.
7779    Find/display ASL keyword(s) -- with exact spelling and descriptions.
7780    Find/display ACPI predefined name(s) -- with description, number
7781        of arguments, and the return value data type.
7782    Find/display AML opcode name(s) -- with opcode, arguments, and
7783grammar.
7784    Decode/display AML opcode -- with opcode name, arguments, and
7785grammar.
7786
7787Service Layers: Make multi-thread support configurable. Conditionally
7788compile
7789the multi-thread support so that threading libraries will not be linked
7790if
7791not
7792necessary. The only tool that requires multi-thread support is AcpiExec.
7793
7794iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7795of
7796Bison appear to want the interface to yyerror to be a const char * (or at
7797least this is a problem when generating iASL on some systems.) ACPICA BZ
7798923
7799Pierre Lejeune.
7800
7801Tools: Fix for systems where O_BINARY is not defined. Only used for
7802Windows
7803versions of the tools.
7804
7805----------------------------------------
780627 May 2011. Summary of changes for version 20110527:
7807
78081) ACPI CA Core Subsystem:
7809
7810ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7811table
7812signature. Now, only allow SSDT, OEMx, and a null signature. History:
7813    1) Originally, we checked the table signature for "SSDT" or "PSDT".
7814       (PSDT is now obsolete.)
7815    2) We added support for OEMx tables, signature "OEM" plus a fourth
7816       "don't care" character.
7817    3) Valid tables were encountered with a null signature, so we just
7818       gave up on validating the signature, (05/2008).
7819    4) We encountered non-AML tables such as the MADT, which caused
7820       interpreter errors and kernel faults. So now, we once again allow
7821       only SSDT, OEMx, and now, also a null signature. (05/2011).
7822
7823Added the missing _TDL predefined name to the global name list in order
7824to
7825enable validation. Affects both the core ACPICA code and the iASL
7826compiler.
7827
7828Example Code and Data Size: These are the sizes for the OS-independent
7829acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7830debug
7831version of the code includes the debug output trace mechanism and has a
7832much
7833larger code and data size.
7834
7835  Previous Release (VC 9.0):
7836    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7837    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7838  Current Release (VC 9.0):
7839    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7840    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7841
78422) iASL Compiler/Disassembler and Tools:
7843
7844Debugger/AcpiExec: Implemented support for "complex" method arguments on
7845the
7846debugger command line. This adds support beyond simple integers --
7847including
7848Strings, Buffers, and Packages. Includes support for nested packages.
7849Increased the default command line buffer size to accommodate these
7850arguments.
7851See the ACPICA reference for details and syntax. ACPICA BZ 917.
7852
7853Debugger/AcpiExec: Implemented support for "default" method arguments for
7854the
7855Execute/Debug command. Now, the debugger will always invoke a control
7856method
7857with the required number of arguments -- even if the command line
7858specifies
7859none or insufficient arguments. It uses default integer values for any
7860missing
7861arguments. Also fixes a bug where only six method arguments maximum were
7862supported instead of the required seven.
7863
7864Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7865and
7866also return status in order to prevent buffer overruns. See the ACPICA
7867reference for details and syntax. ACPICA BZ 921
7868
7869iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7870makefiles to simplify support for the two different but similar parser
7871generators, bison and yacc.
7872
7873Updated the generic unix makefile for gcc 4. The default gcc version is
7874now
7875expected to be 4 or greater, since options specific to gcc 4 are used.
7876
7877----------------------------------------
787813 April 2011. Summary of changes for version 20110413:
7879
78801) ACPI CA Core Subsystem:
7881
7882Implemented support to execute a so-called "orphan" _REG method under the
7883EC
7884device. This change will force the execution of a _REG method underneath
7885the
7886EC
7887device even if there is no corresponding operation region of type
7888EmbeddedControl. Fixes a problem seen on some machines and apparently is
7889compatible with Windows behavior. ACPICA BZ 875.
7890
7891Added more predefined methods that are eligible for automatic NULL
7892package
7893element removal. This change adds another group of predefined names to
7894the
7895list
7896of names that can be repaired by having NULL package elements dynamically
7897removed. This group are those methods that return a single variable-
7898length
7899package containing simple data types such as integers, buffers, strings.
7900This
7901includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7902_PSL,
7903_Sx,
7904and _TZD. ACPICA BZ 914.
7905
7906Split and segregated all internal global lock functions to a new file,
7907evglock.c.
7908
7909Updated internal address SpaceID for DataTable regions. Moved this
7910internal
7911space
7912id in preparation for ACPI 5.0 changes that will include some new space
7913IDs.
7914This
7915change should not affect user/host code.
7916
7917Example Code and Data Size: These are the sizes for the OS-independent
7918acpica.lib
7919produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7920version of
7921the code includes the debug output trace mechanism and has a much larger
7922code
7923and
7924data size.
7925
7926  Previous Release (VC 9.0):
7927    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7928    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7929  Current Release (VC 9.0):
7930    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7931    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7932
79332) iASL Compiler/Disassembler and Tools:
7934
7935iASL/DTC: Major update for new grammar features. Allow generic data types
7936in
7937custom ACPI tables. Field names are now optional. Any line can be split
7938to
7939multiple lines using the continuation char (\). Large buffers now use
7940line-
7941continuation character(s) and no colon on the continuation lines. See the
7942grammar
7943update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7944Moore.
7945
7946iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7947statements.
7948Since the parser stuffs a "zero" as the return value for these statements
7949(due
7950to
7951the underlying AML grammar), they were seen as "return with value" by the
7952iASL
7953semantic checking. They are now seen correctly as "null" return
7954statements.
7955
7956iASL: Check if a_REG declaration has a corresponding Operation Region.
7957Adds a
7958check for each _REG to ensure that there is in fact a corresponding
7959operation
7960region declaration in the same scope. If not, the _REG method is not very
7961useful
7962since it probably won't be executed. ACPICA BZ 915.
7963
7964iASL/DTC: Finish support for expression evaluation. Added a new
7965expression
7966parser
7967that implements c-style operator precedence and parenthesization. ACPICA
7968bugzilla
7969908.
7970
7971Disassembler/DTC: Remove support for () and <> style comments in data
7972tables.
7973Now
7974that DTC has full expression support, we don't want to have comment
7975strings
7976that
7977start with a parentheses or a less-than symbol. Now, only the standard /*
7978and
7979//
7980comments are supported, as well as the bracket [] comments.
7981
7982AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7983"unusual"
7984headers in the acpidump file. Update the header validation to support
7985these
7986tables. Problem introduced in previous AcpiXtract version in the change
7987to
7988support "wrong checksum" error messages emitted by acpidump utility.
7989
7990iASL: Add a * option to generate all template files (as a synonym for
7991ALL)
7992as
7993in
7994"iasl -T *" or "iasl -T ALL".
7995
7996iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7997completely
7998abort the compiler on "fatal" errors, simply should abort the current
7999compile.
8000This allows multiple compiles with a single (possibly wildcard) compiler
8001invocation.
8002
8003----------------------------------------
800416 March 2011. Summary of changes for version 20110316:
8005
80061) ACPI CA Core Subsystem:
8007
8008Fixed a problem caused by a _PRW method appearing at the namespace root
8009scope
8010during the setup of wake GPEs. A fault could occur if a _PRW directly
8011under
8012the
8013root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
8014
8015Implemented support for "spurious" Global Lock interrupts. On some
8016systems, a
8017global lock interrupt can occur without the pending flag being set. Upon
8018a
8019GL
8020interrupt, we now ensure that a thread is actually waiting for the lock
8021before
8022signaling GL availability. Rafael Wysocki, Bob Moore.
8023
8024Example Code and Data Size: These are the sizes for the OS-independent
8025acpica.lib
8026produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
8027version of
8028the code includes the debug output trace mechanism and has a much larger
8029code
8030and
8031data size.
8032
8033  Previous Release (VC 9.0):
8034    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8035    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8036  Current Release (VC 9.0):
8037    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
8038    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
8039
80402) iASL Compiler/Disassembler and Tools:
8041
8042Implemented full support for the "SLIC" ACPI table. Includes support in
8043the
8044header files, disassembler, table compiler, and template generator. Bob
8045Moore,
8046Lin Ming.
8047
8048AcpiXtract: Correctly handle embedded comments and messages from
8049AcpiDump.
8050Apparently some or all versions of acpidump will occasionally emit a
8051comment
8052like
8053"Wrong checksum", etc., into the dump file. This was causing problems for
8054AcpiXtract. ACPICA BZ 905.
8055
8056iASL: Fix the Linux makefile by removing an inadvertent double file
8057inclusion.
8058ACPICA BZ 913.
8059
8060AcpiExec: Update installation of operation region handlers. Install one
8061handler
8062for a user-defined address space. This is used by the ASL test suite
8063(ASLTS).
8064
8065----------------------------------------
806611 February 2011. Summary of changes for version 20110211:
8067
80681) ACPI CA Core Subsystem:
8069
8070Added a mechanism to defer _REG methods for some early-installed
8071handlers.
8072Most user handlers should be installed before call to
8073AcpiEnableSubsystem.
8074However, Event handlers and region handlers should be installed after
8075AcpiInitializeObjects. Override handlers for the "default" regions should
8076be
8077installed early, however. This change executes all _REG methods for the
8078default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
8079chicken/egg issues between them. ACPICA BZ 848.
8080
8081Implemented an optimization for GPE detection. This optimization will
8082simply
8083ignore GPE registers that contain no enabled GPEs -- there is no need to
8084read the register since this information is available internally. This
8085becomes more important on machines with a large GPE space. ACPICA
8086bugzilla
8087884. Lin Ming. Suggestion from Joe Liu.
8088
8089Removed all use of the highly unreliable FADT revision field. The
8090revision
8091number in the FADT has been found to be completely unreliable and cannot
8092be
8093trusted. Only the actual table length can be used to infer the version.
8094This
8095change updates the ACPICA core and the disassembler so that both no
8096longer
8097even look at the FADT version and instead depend solely upon the FADT
8098length.
8099
8100Fix an unresolved name issue for the no-debug and no-error-message source
8101generation cases. The _AcpiModuleName was left undefined in these cases,
8102but
8103it is actually needed as a parameter to some interfaces. Define
8104_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
8105
8106Split several large files (makefiles and project files updated)
8107  utglobal.c   -> utdecode.c
8108  dbcomds.c    -> dbmethod.c dbnames.c
8109  dsopcode.c   -> dsargs.c dscontrol.c
8110  dsload.c     -> dsload2.c
8111  aslanalyze.c -> aslbtypes.c aslwalks.c
8112
8113Example Code and Data Size: These are the sizes for the OS-independent
8114acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8115debug version of the code includes the debug output trace mechanism and
8116has
8117a much larger code and data size.
8118
8119  Previous Release (VC 9.0):
8120    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8121    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8122  Current Release (VC 9.0):
8123    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8124    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8125
81262) iASL Compiler/Disassembler and Tools:
8127
8128iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
8129These are useful C-style macros with the standard definitions. ACPICA
8130bugzilla 898.
8131
8132iASL/DTC: Added support for integer expressions and labels. Support for
8133full
8134expressions for all integer fields in all ACPI tables. Support for labels
8135in
8136"generic" portions of tables such as UEFI. See the iASL reference manual.
8137
8138Debugger: Added a command to display the status of global handlers. The
8139"handlers" command will display op region, fixed event, and miscellaneous
8140global handlers. installation status -- and for op regions, whether
8141default
8142or user-installed handler will be used.
8143
8144iASL: Warn if reserved method incorrectly returns a value. Many
8145predefined
8146names are defined such that they do not return a value. If implemented as
8147a
8148method, issue a warning if such a name explicitly returns a value. ACPICA
8149Bugzilla 855.
8150
8151iASL: Added detection of GPE method name conflicts. Detects a conflict
8152where
8153there are two GPE methods of the form _Lxy and _Exy in the same scope.
8154(For
8155example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
8156
8157iASL/DTC: Fixed a couple input scanner issues with comments and line
8158numbers. Comment remover could get confused and miss a comment ending.
8159Fixed
8160a problem with line counter maintenance.
8161
8162iASL/DTC: Reduced the severity of some errors from fatal to error. There
8163is
8164no need to abort on simple errors within a field definition.
8165
8166Debugger: Simplified the output of the help command. All help output now
8167in
8168a single screen, instead of help subcommands. ACPICA Bugzilla 897.
8169
8170----------------------------------------
817112 January 2011. Summary of changes for version 20110112:
8172
81731) ACPI CA Core Subsystem:
8174
8175Fixed a race condition between method execution and namespace walks that
8176can
8177possibly cause a fault. The problem was apparently introduced in version
817820100528 as a result of a performance optimization that reduces the
8179number
8180of
8181namespace walks upon method exit by using the delete_namespace_subtree
8182function instead of the delete_namespace_by_owner function used
8183previously.
8184Bug is a missing namespace lock in the delete_namespace_subtree function.
8185dana.myers@oracle.com
8186
8187Fixed several issues and a possible fault with the automatic "serialized"
8188method support. History: This support changes a method to "serialized" on
8189the
8190fly if the method generates an AE_ALREADY_EXISTS error, indicating the
8191possibility that it cannot handle reentrancy. This fix repairs a couple
8192of
8193issues seen in the field, especially on machines with many cores:
8194
8195    1) Delete method children only upon the exit of the last thread,
8196       so as to not delete objects out from under other running threads
8197      (and possibly causing a fault.)
8198    2) Set the "serialized" bit for the method only upon the exit of the
8199       Last thread, so as to not cause deadlock when running threads
8200       attempt to exit.
8201    3) Cleanup the use of the AML "MethodFlags" and internal method flags
8202       so that there is no longer any confusion between the two.
8203
8204    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
8205
8206Debugger: Now lock the namespace for duration of a namespace dump.
8207Prevents
8208issues if the namespace is changing dynamically underneath the debugger.
8209Especially affects temporary namespace nodes, since the debugger displays
8210these also.
8211
8212Updated the ordering of include files. The ACPICA headers should appear
8213before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
8214set
8215any necessary compiler-specific defines, etc. Affects the ACPI-related
8216tools
8217and utilities.
8218
8219Updated all ACPICA copyrights and signons to 2011. Added the 2011
8220copyright
8221to all module headers and signons, including the Linux header. This
8222affects
8223virtually every file in the ACPICA core subsystem, iASL compiler, and all
8224utilities.
8225
8226Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
8227project files for VC++ 6.0 are now obsolete. New project files can be
8228found
8229under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
8230details.
8231
8232Example Code and Data Size: These are the sizes for the OS-independent
8233acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8234debug version of the code includes the debug output trace mechanism and
8235has a
8236much larger code and data size.
8237
8238  Previous Release (VC 6.0):
8239    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
8240    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
8241  Current Release (VC 9.0):
8242    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8243    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8244
82452) iASL Compiler/Disassembler and Tools:
8246
8247iASL: Added generic data types to the Data Table compiler. Add "generic"
8248data
8249types such as UINT32, String, Unicode, etc., to simplify the generation
8250of
8251platform-defined tables such as UEFI. Lin Ming.
8252
8253iASL: Added listing support for the Data Table Compiler. Adds listing
8254support
8255(-l) to display actual binary output for each line of input code.
8256
8257----------------------------------------
825809 December 2010. Summary of changes for version 20101209:
8259
82601) ACPI CA Core Subsystem:
8261
8262Completed the major overhaul of the GPE support code that was begun in
8263July
82642010. Major features include: removal of _PRW execution in ACPICA (host
8265executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
8266changes to existing interfaces, simplification of GPE handler operation,
8267and
8268a handful of new interfaces:
8269
8270    AcpiUpdateAllGpes
8271    AcpiFinishGpe
8272    AcpiSetupGpeForWake
8273    AcpiSetGpeWakeMask
8274    One new file, evxfgpe.c to consolidate all external GPE interfaces.
8275
8276See the ACPICA Programmer Reference for full details and programming
8277information. See the new section 4.4 "General Purpose Event (GPE)
8278Support"
8279for a full overview, and section 8.7 "ACPI General Purpose Event
8280Management"
8281for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
8282Ming,
8283Bob Moore, Rafael Wysocki.
8284
8285Implemented a new GPE feature for Windows compatibility, the "Implicit
8286Wake
8287GPE Notify". This feature will automatically issue a Notify(2) on a
8288device
8289when a Wake GPE is received if there is no corresponding GPE method or
8290handler. ACPICA BZ 870.
8291
8292Fixed a problem with the Scope() operator during table parse and load
8293phase.
8294During load phase (table load or method execution), the scope operator
8295should
8296not enter the target into the namespace. Instead, it should open a new
8297scope
8298at the target location. Linux BZ 19462, ACPICA BZ 882.
8299
8300Example Code and Data Size: These are the sizes for the OS-independent
8301acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8302debug version of the code includes the debug output trace mechanism and
8303has a
8304much larger code and data size.
8305
8306  Previous Release:
8307    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
8308    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
8309  Current Release:
8310    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8311    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8312
83132) iASL Compiler/Disassembler and Tools:
8314
8315iASL: Relax the alphanumeric restriction on _CID strings. These strings
8316are
8317"bus-specific" per the ACPI specification, and therefore any characters
8318are
8319acceptable. The only checks that can be performed are for a null string
8320and
8321perhaps for a leading asterisk. ACPICA BZ 886.
8322
8323iASL: Fixed a problem where a syntax error that caused a premature EOF
8324condition on the source file emitted a very confusing error message. The
8325premature EOF is now detected correctly. ACPICA BZ 891.
8326
8327Disassembler: Decode the AccessSize within a Generic Address Structure
8328(byte
8329access, word access, etc.) Note, this field does not allow arbitrary bit
8330access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
8331
8332New: AcpiNames utility - Example namespace dump utility. Shows an example
8333of
8334ACPICA configuration for a minimal namespace dump utility. Uses table and
8335namespace managers, but no AML interpreter. Does not add any
8336functionality
8337over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
8338partition and configure ACPICA. ACPICA BZ 883.
8339
8340AML Debugger: Increased the debugger buffer size for method return
8341objects.
8342Was 4K, increased to 16K. Also enhanced error messages for debugger
8343method
8344execution, including the buffer overflow case.
8345
8346----------------------------------------
834713 October 2010. Summary of changes for version 20101013:
8348
83491) ACPI CA Core Subsystem:
8350
8351Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
8352now
8353clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
8354HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
8355
8356Changed the type of the predefined namespace object _TZ from ThermalZone
8357to
8358Device. This was found to be confusing to the host software that
8359processes
8360the various thermal zones, since _TZ is not really a ThermalZone.
8361However,
8362a
8363Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
8364Zhang.
8365
8366Added Windows Vista SP2 to the list of supported _OSI strings. The actual
8367string is "Windows 2006 SP2".
8368
8369Eliminated duplicate code in AcpiUtExecute* functions. Now that the
8370nsrepair
8371code automatically repairs _HID-related strings, this type of code is no
8372longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
8373878.
8374
8375Example Code and Data Size: These are the sizes for the OS-independent
8376acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8377debug version of the code includes the debug output trace mechanism and
8378has a
8379much larger code and data size.
8380
8381  Previous Release:
8382    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8383    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8384  Current Release:
8385    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8386    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8387
83882) iASL Compiler/Disassembler and Tools:
8389
8390iASL: Implemented additional compile-time validation for _HID strings.
8391The
8392non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
8393length
8394of
8395the string must be exactly seven or eight characters. For both _HID and
8396_CID
8397strings, all characters must be alphanumeric. ACPICA BZ 874.
8398
8399iASL: Allow certain "null" resource descriptors. Some BIOS code creates
8400descriptors that are mostly or all zeros, with the expectation that they
8401will
8402be filled in at runtime. iASL now allows this as long as there is a
8403"resource
8404tag" (name) associated with the descriptor, which gives the ASL a handle
8405needed to modify the descriptor. ACPICA BZ 873.
8406
8407Added single-thread support to the generic Unix application OSL.
8408Primarily
8409for iASL support, this change removes the use of semaphores in the
8410single-
8411threaded ACPICA tools/applications - increasing performance. The
8412_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
8413option. ACPICA BZ 879.
8414
8415AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
8416support
8417for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
8418
8419iASL: Moved all compiler messages to a new file, aslmessages.h.
8420
8421----------------------------------------
842215 September 2010. Summary of changes for version 20100915:
8423
84241) ACPI CA Core Subsystem:
8425
8426Removed the AcpiOsDerivePciId OSL interface. The various host
8427implementations
8428of this function were not OS-dependent and are now obsolete and can be
8429removed from all host OSLs. This function has been replaced by
8430AcpiHwDerivePciId, which is now part of the ACPICA core code.
8431AcpiHwDerivePciId has been implemented without recursion. Adds one new
8432module, hwpci.c. ACPICA BZ 857.
8433
8434Implemented a dynamic repair for _HID and _CID strings. The following
8435problems are now repaired at runtime: 1) Remove a leading asterisk in the
8436string, and 2) the entire string is uppercased. Both repairs are in
8437accordance with the ACPI specification and will simplify host driver
8438code.
8439ACPICA BZ 871.
8440
8441The ACPI_THREAD_ID type is no longer configurable, internally it is now
8442always UINT64. This simplifies the ACPICA code, especially any printf
8443output.
8444UINT64 is the only common data type for all thread_id types across all
8445operating systems. It is now up to the host OSL to cast the native
8446thread_id
8447type to UINT64 before returning the value to ACPICA (via
8448AcpiOsGetThreadId).
8449Lin Ming, Bob Moore.
8450
8451Added the ACPI_INLINE type to enhance the ACPICA configuration. The
8452"inline"
8453keyword is not standard across compilers, and this type allows inline to
8454be
8455configured on a per-compiler basis. Lin Ming.
8456
8457Made the system global AcpiGbl_SystemAwakeAndRunning publicly
8458available.
8459Added an extern for this boolean in acpixf.h. Some hosts utilize this
8460value
8461during suspend/restore operations. ACPICA BZ 869.
8462
8463All code that implements error/warning messages with the "ACPI:" prefix
8464has
8465been moved to a new module, utxferror.c.
8466
8467The UINT64_OVERLAY was moved to utmath.c, which is the only module where
8468it
8469is used. ACPICA BZ 829. Lin Ming, Bob Moore.
8470
8471Example Code and Data Size: These are the sizes for the OS-independent
8472acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8473debug version of the code includes the debug output trace mechanism and
8474has a
8475much larger code and data size.
8476
8477  Previous Release:
8478    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
8479    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
8480  Current Release:
8481    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8482    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8483
84842) iASL Compiler/Disassembler and Tools:
8485
8486iASL/Disassembler: Write ACPI errors to stderr instead of the output
8487file.
8488This keeps the output files free of random error messages that may
8489originate
8490from within the namespace/interpreter code. Used this opportunity to
8491merge
8492all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
8493866. Lin Ming, Bob Moore.
8494
8495Tools: update some printfs for ansi warnings on size_t. Handle width
8496change
8497of size_t on 32-bit versus 64-bit generations. Lin Ming.
8498
8499----------------------------------------
850006 August 2010. Summary of changes for version 20100806:
8501
85021) ACPI CA Core Subsystem:
8503
8504Designed and implemented a new host interface to the _OSI support code.
8505This
8506will allow the host to dynamically add or remove multiple _OSI strings,
8507as
8508well as install an optional handler that is called for each _OSI
8509invocation.
8510Also added a new AML debugger command, 'osi' to display and modify the
8511global
8512_OSI string table, and test support in the AcpiExec utility. See the
8513ACPICA
8514reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
8515New Functions:
8516    AcpiInstallInterface - Add an _OSI string.
8517    AcpiRemoveInterface - Delete an _OSI string.
8518    AcpiInstallInterfaceHandler - Install optional _OSI handler.
8519Obsolete Functions:
8520    AcpiOsValidateInterface - no longer used.
8521New Files:
8522    source/components/utilities/utosi.c
8523
8524Re-introduced the support to enable multi-byte transfers for Embedded
8525Controller (EC) operation regions. A reported problem was found to be a
8526bug
8527in the host OS, not in the multi-byte support. Previously, the maximum
8528data
8529size passed to the EC operation region handler was a single byte. There
8530are
8531often EC Fields larger than one byte that need to be transferred, and it
8532is
8533useful for the EC driver to lock these as a single transaction. This
8534change
8535enables single transfers larger than 8 bits. This effectively changes the
8536access to the EC space from ByteAcc to AnyAcc, and will probably require
8537changes to the host OS Embedded Controller driver to enable 16/32/64/256-
8538bit
8539transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
8540
8541Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
8542prototype in acpiosxf.h had the output value pointer as a (void *).
8543It should be a (UINT64 *). This may affect some host OSL code.
8544
8545Fixed a couple problems with the recently modified Linux makefiles for
8546iASL
8547and AcpiExec. These new makefiles place the generated object files in the
8548local directory so that there can be no collisions between the files that
8549are
8550shared between them that are compiled with different options.
8551
8552Example Code and Data Size: These are the sizes for the OS-independent
8553acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8554debug version of the code includes the debug output trace mechanism and
8555has a
8556much larger code and data size.
8557
8558  Previous Release:
8559    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8560    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8561  Current Release:
8562    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
8563    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
8564
85652) iASL Compiler/Disassembler and Tools:
8566
8567iASL/Disassembler: Added a new option (-da, "disassemble all") to load
8568the
8569namespace from and disassemble an entire group of AML files. Useful for
8570loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
8571and
8572disassembling with one simple command. ACPICA BZ 865. Lin Ming.
8573
8574iASL: Allow multiple invocations of -e option. This change allows
8575multiple
8576uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
8577834.
8578Lin Ming.
8579
8580----------------------------------------
858102 July 2010. Summary of changes for version 20100702:
8582
85831) ACPI CA Core Subsystem:
8584
8585Implemented several updates to the recently added GPE reference count
8586support. The model for "wake" GPEs is changing to give the host OS
8587complete
8588control of these GPEs. Eventually, the ACPICA core will not execute any
8589_PRW
8590methods, since the host already must execute them. Also, additional
8591changes
8592were made to help ensure that the reference counts are kept in proper
8593synchronization with reality. Rafael J. Wysocki.
8594
85951) Ensure that GPEs are not enabled twice during initialization.
85962) Ensure that GPE enable masks stay in sync with the reference count.
85973) Do not inadvertently enable GPEs when writing GPE registers.
85984) Remove the internal wake reference counter and add new AcpiGpeWakeup
8599interface. This interface will set or clear individual GPEs for wakeup.
86005) Remove GpeType argument from AcpiEnable and AcpiDisable. These
8601interfaces
8602are now used for "runtime" GPEs only.
8603
8604Changed the behavior of the GPE install/remove handler interfaces. The
8605GPE
8606is
8607no longer disabled during this process, as it was found to cause problems
8608on
8609some machines. Rafael J. Wysocki.
8610
8611Reverted a change introduced in version 20100528 to enable Embedded
8612Controller multi-byte transfers. This change was found to cause problems
8613with
8614Index Fields and possibly Bank Fields. It will be reintroduced when these
8615problems have been resolved.
8616
8617Fixed a problem with references to Alias objects within Package Objects.
8618A
8619reference to an Alias within the definition of a Package was not always
8620resolved properly. Aliases to objects like Processors, Thermal zones,
8621etc.
8622were resolved to the actual object instead of a reference to the object
8623as
8624it
8625should be. Package objects are only allowed to contain integer, string,
8626buffer, package, and reference objects. Redhat bugzilla 608648.
8627
8628Example Code and Data Size: These are the sizes for the OS-independent
8629acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8630debug version of the code includes the debug output trace mechanism and
8631has a
8632much larger code and data size.
8633
8634  Previous Release:
8635    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8636    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8637  Current Release:
8638    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8639    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8640
86412) iASL Compiler/Disassembler and Tools:
8642
8643iASL: Implemented a new compiler subsystem to allow definition and
8644compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
8645These
8646are called "ACPI Data Tables", and the new compiler is the "Data Table
8647Compiler". This compiler is intended to simplify the existing error-prone
8648process of creating these tables for the BIOS, as well as allowing the
8649disassembly, modification, recompilation, and override of existing ACPI
8650data
8651tables. See the iASL User Guide for detailed information.
8652
8653iASL: Implemented a new Template Generator option in support of the new
8654Data
8655Table Compiler. This option will create examples of all known ACPI tables
8656that can be used as the basis for table development. See the iASL
8657documentation and the -T option.
8658
8659Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
8660Descriptor Table).
8661
8662Updated the Linux makefiles for iASL and AcpiExec to place the generated
8663object files in the local directory so that there can be no collisions
8664between the shared files between them that are generated with different
8665options.
8666
8667Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
8668Use
8669the #define __APPLE__ to enable this support.
8670
8671----------------------------------------
867228 May 2010. Summary of changes for version 20100528:
8673
8674Note: The ACPI 4.0a specification was released on April 5, 2010 and is
8675available at www.acpi.info. This is primarily an errata release.
8676
86771) ACPI CA Core Subsystem:
8678
8679Undefined ACPI tables: We are looking for the definitions for the
8680following
8681ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
8682
8683Implemented support to enable multi-byte transfers for Embedded
8684Controller
8685(EC) operation regions. Previously, the maximum data size passed to the
8686EC
8687operation region handler was a single byte. There are often EC Fields
8688larger
8689than one byte that need to be transferred, and it is useful for the EC
8690driver
8691to lock these as a single transaction. This change enables single
8692transfers
8693larger than 8 bits. This effectively changes the access to the EC space
8694from
8695ByteAcc to AnyAcc, and will probably require changes to the host OS
8696Embedded
8697Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
8698bit
8699transfers. Alexey Starikovskiy, Lin Ming
8700
8701Implemented a performance enhancement for namespace search and access.
8702This
8703change enhances the performance of namespace searches and walks by adding
8704a
8705backpointer to the parent in each namespace node. On large namespaces,
8706this
8707change can improve overall ACPI performance by up to 9X. Adding a pointer
8708to
8709each namespace node increases the overall size of the internal namespace
8710by
8711about 5%, since each namespace entry usually consists of both a namespace
8712node and an ACPI operand object. However, this is the first growth of the
8713namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
8714
8715Implemented a performance optimization that reduces the number of
8716namespace
8717walks. On control method exit, only walk the namespace if the method is
8718known
8719to have created namespace objects outside of its local scope. Previously,
8720the
8721entire namespace was traversed on each control method exit. This change
8722can
8723improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
8724Moore.
8725
8726Added support to truncate I/O addresses to 16 bits for Windows
8727compatibility.
8728Some ASL code has been seen in the field that inadvertently has bits set
8729above bit 15. This feature is optional and is enabled if the BIOS
8730requests
8731any Windows OSI strings. It can also be enabled by the host OS. Matthew
8732Garrett, Bob Moore.
8733
8734Added support to limit the maximum time for the ASL Sleep() operator. To
8735prevent accidental deep sleeps, limit the maximum time that Sleep() will
8736actually sleep. Configurable, the default maximum is two seconds. ACPICA
8737bugzilla 854.
8738
8739Added run-time validation support for the _WDG and_WED Microsoft
8740predefined
8741methods. These objects are defined by "Windows Instrumentation", and are
8742not
8743part of the ACPI spec. ACPICA BZ 860.
8744
8745Expanded all statistic counters used during namespace and device
8746initialization from 16 to 32 bits in order to support very large
8747namespaces.
8748
8749Replaced all instances of %d in printf format specifiers with %u since
8750nearly
8751all integers in ACPICA are unsigned.
8752
8753Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
8754returned
8755as AE_NO_HANDLER.
8756
8757Example Code and Data Size: These are the sizes for the OS-independent
8758acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8759debug version of the code includes the debug output trace mechanism and
8760has a
8761much larger code and data size.
8762
8763  Previous Release:
8764    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8765    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8766  Current Release:
8767    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8768    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8769
87702) iASL Compiler/Disassembler and Tools:
8771
8772iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8773methods. These objects are defined by "Windows Instrumentation", and are
8774not
8775part of the ACPI spec. ACPICA BZ 860.
8776
8777AcpiExec: added option to disable the memory tracking mechanism. The -dt
8778option will disable the tracking mechanism, which improves performance
8779considerably.
8780
8781AcpiExec: Restructured the command line options into -d (disable) and -e
8782(enable) options.
8783
8784----------------------------------------
878528 April 2010. Summary of changes for version 20100428:
8786
87871) ACPI CA Core Subsystem:
8788
8789Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8790including FADT-based and GPE Block Devices, execute any _PRW methods in
8791the
8792new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8793runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8794immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8795Devices. Provides compatibility with other ACPI implementations. Two new
8796files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8797Moore.
8798
8799Fixed a regression introduced in version 20100331 within the table
8800manager
8801where initial table loading could fail. This was introduced in the fix
8802for
8803AcpiReallocateRootTable. Also, renamed some of fields in the table
8804manager
8805data structures to clarify their meaning and use.
8806
8807Fixed a possible allocation overrun during internal object copy in
8808AcpiUtCopySimpleObject. The original code did not correctly handle the
8809case
8810where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8811847.
8812
8813Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8814possible access beyond end-of-allocation. Also, now fully validate
8815descriptor
8816(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8817
8818Example Code and Data Size: These are the sizes for the OS-independent
8819acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8820debug version of the code includes the debug output trace mechanism and
8821has a
8822much larger code and data size.
8823
8824  Previous Release:
8825    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8826    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8827  Current Release:
8828    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8829    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8830
88312) iASL Compiler/Disassembler and Tools:
8832
8833iASL: Implemented Min/Max/Len/Gran validation for address resource
8834descriptors. This change implements validation for the address fields
8835that
8836are common to all address-type resource descriptors. These checks are
8837implemented: Checks for valid Min/Max, length within the Min/Max window,
8838valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8839per
8840table 6-40 in the ACPI 4.0a specification. Also split the large
8841aslrestype1.c
8842and aslrestype2.c files into five new files. ACPICA BZ 840.
8843
8844iASL: Added support for the _Wxx predefined names. This support was
8845missing
8846and these names were not recognized by the compiler as valid predefined
8847names. ACPICA BZ 851.
8848
8849iASL: Added an error for all predefined names that are defined to return
8850no
8851value and thus must be implemented as Control Methods. These include all
8852of
8853the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8854names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8855
8856iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8857an
8858ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8859be
8860dynamically loaded via the Load() operator. Also cleaned up output for
8861the
8862-
8863ta and -tc options. ACPICA BZ 853.
8864
8865Tests: Added a new file with examples of extended iASL error checking.
8866Demonstrates the advanced error checking ability of the iASL compiler.
8867Available at tests/misc/badcode.asl.
8868
8869----------------------------------------
887031 March 2010. Summary of changes for version 20100331:
8871
88721) ACPI CA Core Subsystem:
8873
8874Completed a major update for the GPE support in order to improve support
8875for
8876shared GPEs and to simplify both host OS and ACPICA code. Added a
8877reference
8878count mechanism to support shared GPEs that require multiple device
8879drivers.
8880Several external interfaces have changed. One external interface has been
8881removed. One new external interface was added. Most of the GPE external
8882interfaces now use the GPE spinlock instead of the events mutex (and the
8883Flags parameter for many GPE interfaces has been removed.) See the
8884updated
8885ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8886Rafael
8887Wysocki. ACPICA BZ 831.
8888
8889Changed:
8890    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8891Removed:
8892    AcpiSetGpeType
8893New:
8894    AcpiSetGpe
8895
8896Implemented write support for DataTable operation regions. These regions
8897are
8898defined via the DataTableRegion() operator. Previously, only read support
8899was
8900implemented. The ACPI specification allows DataTableRegions to be
8901read/write,
8902however.
8903
8904Implemented a new subsystem option to force a copy of the DSDT to local
8905memory. Optionally copy the entire DSDT to local memory (instead of
8906simply
8907mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8908replace
8909the original DSDT, creating the need for this option. Default is FALSE,
8910do
8911not copy the DSDT.
8912
8913Implemented detection of a corrupted or replaced DSDT. This change adds
8914support to detect a DSDT that has been corrupted and/or replaced from
8915outside
8916the OS (by firmware). This is typically catastrophic for the system, but
8917has
8918been seen on some machines. Once this problem has been detected, the DSDT
8919copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8920
8921Fixed two problems with AcpiReallocateRootTable during the root table
8922copy.
8923When copying the root table to the new allocation, the length used was
8924incorrect. The new size was used instead of the current table size,
8925meaning
8926too much data was copied. Also, the count of available slots for ACPI
8927tables
8928was not set correctly. Alexey Starikovskiy, Bob Moore.
8929
8930Example Code and Data Size: These are the sizes for the OS-independent
8931acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8932debug version of the code includes the debug output trace mechanism and
8933has a
8934much larger code and data size.
8935
8936  Previous Release:
8937    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8938    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8939  Current Release:
8940    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8941    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8942
89432) iASL Compiler/Disassembler and Tools:
8944
8945iASL: Implement limited typechecking for values returned from predefined
8946control methods. The type of any returned static (unnamed) object is now
8947validated. For example, Return(1). ACPICA BZ 786.
8948
8949iASL: Fixed a predefined name object verification regression. Fixes a
8950problem
8951introduced in version 20100304. An error is incorrectly generated if a
8952predefined name is declared as a static named object with a value defined
8953using the keywords "Zero", "One", or "Ones". Lin Ming.
8954
8955iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8956by
8957reducing the requested registry access rights. ACPICA BZ 842.
8958
8959Disassembler: fixed a possible fault when generating External()
8960statements.
8961Introduced in commit ae7d6fd: Properly handle externals with parent-
8962prefix
8963(carat). Fixes a string length allocation calculation. Lin Ming.
8964
8965----------------------------------------
896604 March 2010. Summary of changes for version 20100304:
8967
89681) ACPI CA Core Subsystem:
8969
8970Fixed a possible problem with the AML Mutex handling function
8971AcpiExReleaseMutex where the function could fault under the very rare
8972condition when the interpreter has blocked, the interpreter lock is
8973released,
8974the interpreter is then reentered via the same thread, and attempts to
8975acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8976Lin
8977Ming.
8978
8979Implemented additional configuration support for the AML "Debug Object".
8980Output from the debug object can now be enabled via a global variable,
8981AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8982debugging.
8983This debug output is now available in the release version of ACPICA
8984instead
8985of just the debug version. Also, the entire debug output module can now
8986be
8987configured out of the ACPICA build if desired. One new file added,
8988executer/exdebug.c. Lin Ming, Bob Moore.
8989
8990Added header support for the ACPI MCHI table (Management Controller Host
8991Interface Table). This table was added in ACPI 4.0, but the defining
8992document
8993has only recently become available.
8994
8995Standardized output of integer values for ACPICA warnings/errors. Always
8996use
89970x prefix for hex output, always use %u for unsigned integer decimal
8998output.
8999Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
9000400
9001invocations.) These invocations were converted from the original
9002ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
9003
9004Example Code and Data Size: These are the sizes for the OS-independent
9005acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9006debug version of the code includes the debug output trace mechanism and
9007has a
9008much larger code and data size.
9009
9010  Previous Release:
9011    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
9012    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
9013  Current Release:
9014    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
9015    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
9016
90172) iASL Compiler/Disassembler and Tools:
9018
9019iASL: Implemented typechecking support for static (non-control method)
9020predefined named objects that are declared with the Name() operator. For
9021example, the type of this object is now validated to be of type Integer:
9022Name(_BBN, 1). This change migrates the compiler to using the core
9023predefined
9024name table instead of maintaining a local version. Added a new file,
9025aslpredef.c. ACPICA BZ 832.
9026
9027Disassembler: Added support for the ACPI 4.0 MCHI table.
9028
9029----------------------------------------
903021 January 2010. Summary of changes for version 20100121:
9031
90321) ACPI CA Core Subsystem:
9033
9034Added the 2010 copyright to all module headers and signons. This affects
9035virtually every file in the ACPICA core subsystem, the iASL compiler, the
9036tools/utilities, and the test suites.
9037
9038Implemented a change to the AcpiGetDevices interface to eliminate
9039unnecessary
9040invocations of the _STA method. In the case where a specific _HID is
9041requested, do not run _STA until a _HID match is found. This eliminates
9042potentially dozens of _STA calls during a search for a particular
9043device/HID,
9044which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
9045
9046Implemented an additional repair for predefined method return values.
9047Attempt
9048to repair unexpected NULL elements within returned Package objects.
9049Create
9050an
9051Integer of value zero, a NULL String, or a zero-length Buffer as
9052appropriate.
9053ACPICA BZ 818. Lin Ming, Bob Moore.
9054
9055Removed the obsolete ACPI_INTEGER data type. This type was introduced as
9056the
9057code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
9058(with
905964-bit AML integers). It is now obsolete and this change removes it from
9060the
9061ACPICA code base, replaced by UINT64. The original typedef has been
9062retained
9063for now for compatibility with existing device driver code. ACPICA BZ
9064824.
9065
9066Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
9067in
9068the parse tree object.
9069
9070Added additional warning options for the gcc-4 generation. Updated the
9071source
9072accordingly. This includes some code restructuring to eliminate
9073unreachable
9074code, elimination of some gotos, elimination of unused return values,
9075some
9076additional casting, and removal of redundant declarations.
9077
9078Example Code and Data Size: These are the sizes for the OS-independent
9079acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9080debug version of the code includes the debug output trace mechanism and
9081has a
9082much larger code and data size.
9083
9084  Previous Release:
9085    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
9086    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
9087  Current Release:
9088    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
9089    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
9090
90912) iASL Compiler/Disassembler and Tools:
9092
9093No functional changes for this release.
9094
9095----------------------------------------
909614 December 2009. Summary of changes for version 20091214:
9097
90981) ACPI CA Core Subsystem:
9099
9100Enhanced automatic data type conversions for predefined name repairs.
9101This
9102change expands the automatic repairs/conversions for predefined name
9103return
9104values to make Integers, Strings, and Buffers fully interchangeable.
9105Also,
9106a
9107Buffer can be converted to a Package of Integers if necessary. The
9108nsrepair.c
9109module was completely restructured. Lin Ming, Bob Moore.
9110
9111Implemented automatic removal of null package elements during predefined
9112name
9113repairs. This change will automatically remove embedded and trailing NULL
9114package elements from returned package objects that are defined to
9115contain
9116a
9117variable number of sub-packages. The driver is then presented with a
9118package
9119with no null elements to deal with. ACPICA BZ 819.
9120
9121Implemented a repair for the predefined _FDE and _GTM names. The expected
9122return value for both names is a Buffer of 5 DWORDs. This repair fixes
9123two
9124possible problems (both seen in the field), where a package of integers
9125is
9126returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
9127Kim.
9128
9129Implemented additional module-level code support. This change will
9130properly
9131execute module-level code that is not at the root of the namespace (under
9132a
9133Device object, etc.). Now executes the code within the current scope
9134instead
9135of the root. ACPICA BZ 762. Lin Ming.
9136
9137Fixed possible mutex acquisition errors when running _REG methods. Fixes
9138a
9139problem where mutex errors can occur when running a _REG method that is
9140in
9141the same scope as a method-defined operation region or an operation
9142region
9143under a module-level IF block. This type of code is rare, so the problem
9144has
9145not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
9146
9147Fixed a possible memory leak during module-level code execution. An
9148object
9149could be leaked for each block of executed module-level code if the
9150interpreter slack mode is enabled This change deletes any implicitly
9151returned
9152object from the module-level code block. Lin Ming.
9153
9154Removed messages for successful predefined repair(s). The repair
9155mechanism
9156was considered too wordy. Now, messages are only unconditionally emitted
9157if
9158the return object cannot be repaired. Existing messages for successful
9159repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
9160827.
9161
9162Example Code and Data Size: These are the sizes for the OS-independent
9163acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9164debug version of the code includes the debug output trace mechanism and
9165has a
9166much larger code and data size.
9167
9168  Previous Release:
9169    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
9170    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
9171  Current Release:
9172    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
9173    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
9174
91752) iASL Compiler/Disassembler and Tools:
9176
9177iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
9178files
9179were no longer automatically removed at the termination of the compile.
9180
9181acpiexec: Implemented the -f option to specify default region fill value.
9182This option specifies the value used to initialize buffers that simulate
9183operation regions. Default value is zero. Useful for debugging problems
9184that
9185depend on a specific initial value for a region or field.
9186
9187----------------------------------------
918812 November 2009. Summary of changes for version 20091112:
9189
91901) ACPI CA Core Subsystem:
9191
9192Implemented a post-order callback to AcpiWalkNamespace. The existing
9193interface only has a pre-order callback. This change adds an additional
9194parameter for a post-order callback which will be more useful for bus
9195scans.
9196ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
9197
9198Modified the behavior of the operation region memory mapping cache for
9199SystemMemory. Ensure that the memory mappings created for operation
9200regions
9201do not cross 4K page boundaries. Crossing a page boundary while mapping
9202regions can cause kernel warnings on some hosts if the pages have
9203different
9204attributes. Such regions are probably BIOS bugs, and this is the
9205workaround.
9206Linux BZ 14445. Lin Ming.
9207
9208Implemented an automatic repair for predefined methods that must return
9209sorted lists. This change will repair (by sorting) packages returned by
9210_ALR,
9211_PSS, and _TSS. Drivers can now assume that the packages are correctly
9212sorted
9213and do not contain NULL package elements. Adds one new file,
9214namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
9215
9216Fixed a possible fault during predefined name validation if a return
9217Package
9218object contains NULL elements. Also adds a warning if a NULL element is
9219followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
9220may
9221include repair or removal of all such NULL elements where possible.
9222
9223Implemented additional module-level executable AML code support. This
9224change
9225will execute module-level code that is not at the root of the namespace
9226(under a Device object, etc.) at table load time. Module-level executable
9227AML
9228code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
9229
9230Implemented a new internal function to create Integer objects. This
9231function
9232simplifies miscellaneous object creation code. ACPICA BZ 823.
9233
9234Reduced the severity of predefined repair messages, Warning to Info.
9235Since
9236the object was successfully repaired, a warning is too severe. Reduced to
9237an
9238info message for now. These messages may eventually be changed to debug-
9239only.
9240ACPICA BZ 812.
9241
9242Example Code and Data Size: These are the sizes for the OS-independent
9243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9244debug version of the code includes the debug output trace mechanism and
9245has a
9246much larger code and data size.
9247
9248  Previous Release:
9249    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
9250    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
9251  Current Release:
9252    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
9253    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
9254
92552) iASL Compiler/Disassembler and Tools:
9256
9257iASL: Implemented Switch() with While(1) so that Break works correctly.
9258This
9259change correctly implements the Switch operator with a surrounding
9260While(1)
9261so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
9262
9263iASL: Added a message if a package initializer list is shorter than
9264package
9265length. Adds a new remark for a Package() declaration if an initializer
9266list
9267exists, but is shorter than the declared length of the package. Although
9268technically legal, this is probably a coding error and it is seen in the
9269field. ACPICA BZ 815. Lin Ming, Bob Moore.
9270
9271iASL: Fixed a problem where the compiler could fault after the maximum
9272number
9273of errors was reached (200).
9274
9275acpixtract: Fixed a possible warning for pointer cast if the compiler
9276warning
9277level set very high.
9278
9279----------------------------------------
928013 October 2009. Summary of changes for version 20091013:
9281
92821) ACPI CA Core Subsystem:
9283
9284Fixed a problem where an Operation Region _REG method could be executed
9285more
9286than once. If a custom address space handler is installed by the host
9287before
9288the "initialize operation regions" phase of the ACPICA initialization,
9289any
9290_REG methods for that address space could be executed twice. This change
9291fixes the problem. ACPICA BZ 427. Lin Ming.
9292
9293Fixed a possible memory leak for the Scope() ASL operator. When the exact
9294invocation of "Scope(\)" is executed (change scope to root), one internal
9295operand object was leaked. Lin Ming.
9296
9297Implemented a run-time repair for the _MAT predefined method. If the _MAT
9298return value is defined as a Field object in the AML, and the field
9299size is less than or equal to the default width of an integer (32 or
930064),_MAT
9301can incorrectly return an Integer instead of a Buffer. ACPICA now
9302automatically repairs this problem. ACPICA BZ 810.
9303
9304Implemented a run-time repair for the _BIF and _BIX predefined methods.
9305The
9306"OEM Information" field is often incorrectly returned as an Integer with
9307value zero if the field is not supported by the platform. This is due to
9308an
9309ambiguity in the ACPI specification. The field should always be a string.
9310ACPICA now automatically repairs this problem by returning a NULL string
9311within the returned Package. ACPICA BZ 807.
9312
9313Example Code and Data Size: These are the sizes for the OS-independent
9314acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9315debug version of the code includes the debug output trace mechanism and
9316has a
9317much larger code and data size.
9318
9319  Previous Release:
9320    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
9321    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
9322  Current Release:
9323    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
9324    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
9325
93262) iASL Compiler/Disassembler and Tools:
9327
9328Disassembler: Fixed a problem where references to external symbols that
9329contained one or more parent-prefixes (carats) were not handled
9330correctly,
9331possibly causing a fault. ACPICA BZ 806. Lin Ming.
9332
9333Disassembler: Restructured the code so that all functions that handle
9334external symbols are in a single module. One new file is added,
9335common/dmextern.c.
9336
9337AML Debugger: Added a max count argument for the Batch command (which
9338executes multiple predefined methods within the namespace.)
9339
9340iASL: Updated the compiler documentation (User Reference.) Available at
9341http://www.acpica.org/documentation/. ACPICA BZ 750.
9342
9343AcpiXtract: Updated for Lint and other formatting changes. Close all open
9344files.
9345
9346----------------------------------------
934703 September 2009. Summary of changes for version 20090903:
9348
93491) ACPI CA Core Subsystem:
9350
9351For Windows Vista compatibility, added the automatic execution of an _INI
9352method located at the namespace root (\_INI). This method is executed at
9353table load time. This support is in addition to the automatic execution
9354of
9355\_SB._INI. Lin Ming.
9356
9357Fixed a possible memory leak in the interpreter for AML package objects
9358if
9359the package initializer list is longer than the defined size of the
9360package.
9361This apparently can only happen if the BIOS changes the package size on
9362the
9363fly (seen in a _PSS object), as ASL compilers do not allow this. The
9364interpreter will truncate the package to the defined size (and issue an
9365error
9366message), but previously could leave the extra objects undeleted if they
9367were
9368pre-created during the argument processing (such is the case if the
9369package
9370consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
9371
9372Fixed a problem seen when a Buffer or String is stored to itself via ASL.
9373This has been reported in the field. Previously, ACPICA would zero out
9374the
9375buffer/string. Now, the operation is treated as a noop. Provides Windows
9376compatibility. ACPICA BZ 803. Lin Ming.
9377
9378Removed an extraneous error message for ASL constructs of the form
9379Store(LocalX,LocalX) when LocalX is uninitialized. These curious
9380statements
9381are seen in many BIOSs and are once again treated as NOOPs and no error
9382is
9383emitted when they are encountered. ACPICA BZ 785.
9384
9385Fixed an extraneous warning message if a _DSM reserved method returns a
9386Package object. _DSM can return any type of object, so validation on the
9387return type cannot be performed. ACPICA BZ 802.
9388
9389Example Code and Data Size: These are the sizes for the OS-independent
9390acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9391debug version of the code includes the debug output trace mechanism and
9392has a
9393much larger code and data size.
9394
9395  Previous Release:
9396    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
9397    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
9398  Current Release:
9399    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
9400    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
9401
94022) iASL Compiler/Disassembler and Tools:
9403
9404iASL: Fixed a problem with the use of the Alias operator and Resource
9405Templates. The correct alias is now constructed and no error is emitted.
9406ACPICA BZ 738.
9407
9408iASL: Implemented the -I option to specify additional search directories
9409for
9410include files. Allows multiple additional search paths for include files.
9411Directories are searched in the order specified on the command line
9412(after
9413the local directory is searched.) ACPICA BZ 800.
9414
9415iASL: Fixed a problem where the full pathname for include files was not
9416emitted for warnings/errors. This caused the IDE support to not work
9417properly. ACPICA BZ 765.
9418
9419iASL: Implemented the -@ option to specify a Windows-style response file
9420containing additional command line options. ACPICA BZ 801.
9421
9422AcpiExec: Added support to load multiple AML files simultaneously (such
9423as
9424a
9425DSDT and multiple SSDTs). Also added support for wildcards within the AML
9426pathname. These features allow all machine tables to be easily loaded and
9427debugged together. ACPICA BZ 804.
9428
9429Disassembler: Added missing support for disassembly of HEST table Error
9430Bank
9431subtables.
9432
9433----------------------------------------
943430 July 2009. Summary of changes for version 20090730:
9435
9436The ACPI 4.0 implementation for ACPICA is complete with this release.
9437
94381) ACPI CA Core Subsystem:
9439
9440ACPI 4.0: Added header file support for all new and changed ACPI tables.
9441Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
9442new
9443for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
9444BERT,
9445EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
9446There
9447have been some ACPI 4.0 changes to other existing tables. Split the large
9448actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
9449
9450ACPI 4.0: Implemented predefined name validation for all new names. There
9451are
945231 new names in ACPI 4.0. The predefined validation module was split into
9453two
9454files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
9455
9456Implemented support for so-called "module-level executable code". This is
9457executable AML code that exists outside of any control method and is
9458intended
9459to be executed at table load time. Although illegal since ACPI 2.0, this
9460type
9461of code still exists and is apparently still being created. Blocks of
9462this
9463code are now detected and executed as intended. Currently, the code
9464blocks
9465must exist under either an If, Else, or While construct; these are the
9466typical cases seen in the field. ACPICA BZ 762. Lin Ming.
9467
9468Implemented an automatic dynamic repair for predefined names that return
9469nested Package objects. This applies to predefined names that are defined
9470to
9471return a variable-length Package of sub-packages. If the number of sub-
9472packages is one, BIOS code is occasionally seen that creates a simple
9473single
9474package with no sub-packages. This code attempts to fix the problem by
9475wrapping a new package object around the existing package. These methods
9476can
9477be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
9478BZ
9479790.
9480
9481Fixed a regression introduced in 20090625 for the AcpiGetDevices
9482interface.
9483The _HID/_CID matching was broken and no longer matched IDs correctly.
9484ACPICA
9485BZ 793.
9486
9487Fixed a problem with AcpiReset where the reset would silently fail if the
9488register was one of the protected I/O ports. AcpiReset now bypasses the
9489port
9490validation mechanism. This may eventually be driven into the
9491AcpiRead/Write
9492interfaces.
9493
9494Fixed a regression related to the recent update of the AcpiRead/Write
9495interfaces. A sleep/suspend could fail if the optional PM2 Control
9496register
9497does not exist during an attempt to write the Bus Master Arbitration bit.
9498(However, some hosts already delete the code that writes this bit, and
9499the
9500code may in fact be obsolete at this date.) ACPICA BZ 799.
9501
9502Fixed a problem where AcpiTerminate could fault if inadvertently called
9503twice
9504in succession. ACPICA BZ 795.
9505
9506Example Code and Data Size: These are the sizes for the OS-independent
9507acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9508debug version of the code includes the debug output trace mechanism and
9509has a
9510much larger code and data size.
9511
9512  Previous Release:
9513    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9514    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9515  Current Release:
9516    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
9517    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
9518
95192) iASL Compiler/Disassembler and Tools:
9520
9521ACPI 4.0: Implemented disassembler support for all new ACPI tables and
9522changes to existing tables. ACPICA BZ 775.
9523
9524----------------------------------------
952525 June 2009. Summary of changes for version 20090625:
9526
9527The ACPI 4.0 Specification was released on June 16 and is available at
9528www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
9529continue for the next few releases.
9530
95311) ACPI CA Core Subsystem:
9532
9533ACPI 4.0: Implemented interpreter support for the IPMI operation region
9534address space. Includes support for bi-directional data buffers and an
9535IPMI
9536address space handler (to be installed by an IPMI device driver.) ACPICA
9537BZ
9538773. Lin Ming.
9539
9540ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
9541Includes
9542support in both the header files and the disassembler.
9543
9544Completed a major update for the AcpiGetObjectInfo external interface.
9545Changes include:
9546 - Support for variable, unlimited length HID, UID, and CID strings.
9547 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
9548etc.)
9549 - Call the _SxW power methods on behalf of a device object.
9550 - Determine if a device is a PCI root bridge.
9551 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
9552These changes will require an update to all callers of this interface.
9553See
9554the updated ACPICA Programmer Reference for details. One new source file
9555has
9556been added - utilities/utids.c. ACPICA BZ 368, 780.
9557
9558Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
9559transfers. The Value parameter has been extended from 32 bits to 64 bits
9560in
9561order to support new ACPI 4.0 tables. These changes will require an
9562update
9563to
9564all callers of these interfaces. See the ACPICA Programmer Reference for
9565details. ACPICA BZ 768.
9566
9567Fixed several problems with AcpiAttachData. The handler was not invoked
9568when
9569the host node was deleted. The data sub-object was not automatically
9570deleted
9571when the host node was deleted. The interface to the handler had an
9572unused
9573parameter, this was removed. ACPICA BZ 778.
9574
9575Enhanced the function that dumps ACPI table headers. All non-printable
9576characters in the string fields are now replaced with '?' (Signature,
9577OemId,
9578OemTableId, and CompilerId.) ACPI tables with non-printable characters in
9579these fields are occasionally seen in the field. ACPICA BZ 788.
9580
9581Fixed a problem with predefined method repair code where the code that
9582attempts to repair/convert an object of incorrect type is only executed
9583on
9584the first time the predefined method is called. The mechanism that
9585disables
9586warnings on subsequent calls was interfering with the repair mechanism.
9587ACPICA BZ 781.
9588
9589Fixed a possible memory leak in the predefined validation/repair code
9590when
9591a
9592buffer is automatically converted to an expected string object.
9593
9594Removed obsolete 16-bit files from the distribution and from the current
9595git
9596tree head. ACPICA BZ 776.
9597
9598Example Code and Data Size: These are the sizes for the OS-independent
9599acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9600debug version of the code includes the debug output trace mechanism and
9601has a
9602much larger code and data size.
9603
9604  Previous Release:
9605    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9606    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9607  Current Release:
9608    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9609    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9610
96112) iASL Compiler/Disassembler and Tools:
9612
9613ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
9614operation region keyword. ACPICA BZ 771, 772. Lin Ming.
9615
9616ACPI 4.0: iASL - implemented compile-time validation support for all new
9617predefined names and control methods (31 total). ACPICA BZ 769.
9618
9619----------------------------------------
962021 May 2009. Summary of changes for version 20090521:
9621
96221) ACPI CA Core Subsystem:
9623
9624Disabled the preservation of the SCI enable bit in the PM1 control
9625register.
9626The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
9627to
9628be
9629a "preserved" bit - "OSPM always preserves this bit position", section
96304.7.3.2.1. However, some machines fail if this bit is in fact preserved
9631because the bit needs to be explicitly set by the OS as a workaround. No
9632machines fail if the bit is not preserved. Therefore, ACPICA no longer
9633attempts to preserve this bit.
9634
9635Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
9636incorrectly formed _PRT package could cause a fault. Added validation to
9637ensure that each package element is actually a sub-package.
9638
9639Implemented a new interface to install or override a single control
9640method,
9641AcpiInstallMethod. This interface is useful when debugging in order to
9642repair
9643an existing method or to install a missing method without having to
9644override
9645the entire ACPI table. See the ACPICA Programmer Reference for use and
9646examples. Lin Ming, Bob Moore.
9647
9648Fixed several reference count issues with the DdbHandle object that is
9649created from a Load or LoadTable operator. Prevent premature deletion of
9650the
9651object. Also, mark the object as invalid once the table has been
9652unloaded.
9653This is needed because the handle itself may not be deleted after the
9654table
9655unload, depending on whether it has been stored in a named object by the
9656caller. Lin Ming.
9657
9658Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
9659mutexes of the same sync level are acquired but then not released in
9660strict
9661opposite order, the internally maintained Current Sync Level becomes
9662confused
9663and can cause subsequent execution errors. ACPICA BZ 471.
9664
9665Changed the allowable release order for ASL mutex objects. The ACPI 4.0
9666specification has been changed to make the SyncLevel for mutex objects
9667more
9668useful. When releasing a mutex, the SyncLevel of the mutex must now be
9669the
9670same as the current sync level. This makes more sense than the previous
9671rule
9672(SyncLevel less than or equal). This change updates the code to match the
9673specification.
9674
9675Fixed a problem with the local version of the AcpiOsPurgeCache function.
9676The
9677(local) cache must be locked during all cache object deletions. Andrew
9678Baumann.
9679
9680Updated the Load operator to use operation region interfaces. This
9681replaces
9682direct memory mapping with region access calls. Now, all region accesses
9683go
9684through the installed region handler as they should.
9685
9686Simplified and optimized the NsGetNextNode function. Reduced parameter
9687count
9688and reduced code for this frequently used function.
9689
9690Example Code and Data Size: These are the sizes for the OS-independent
9691acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9692debug version of the code includes the debug output trace mechanism and
9693has a
9694much larger code and data size.
9695
9696  Previous Release:
9697    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9698    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9699  Current Release:
9700    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9701    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9702
97032) iASL Compiler/Disassembler and Tools:
9704
9705Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
9706problems
9707with sub-table disassembly and handling invalid sub-tables. Attempt
9708recovery
9709after an invalid sub-table ID.
9710
9711----------------------------------------
971222 April 2009. Summary of changes for version 20090422:
9713
97141) ACPI CA Core Subsystem:
9715
9716Fixed a compatibility issue with the recently released I/O port
9717protection
9718mechanism. For windows compatibility, 1) On a port protection violation,
9719simply ignore the request and do not return an exception (allow the
9720control
9721method to continue execution.) 2) If only part of the request overlaps a
9722protected port, read/write the individual ports that are not protected.
9723Linux
9724BZ 13036. Lin Ming
9725
9726Enhanced the execution of the ASL/AML BreakPoint operator so that it
9727actually
9728breaks into the AML debugger if the debugger is present. This matches the
9729ACPI-defined behavior.
9730
9731Fixed several possible warnings related to the use of the configurable
9732ACPI_THREAD_ID. This type can now be configured as either an integer or a
9733pointer with no warnings. Also fixes several warnings in printf-like
9734statements for the 64-bit build when the type is configured as a pointer.
9735ACPICA BZ 766, 767.
9736
9737Fixed a number of possible warnings when compiling with gcc 4+ (depending
9738on
9739warning options.) Examples include printf formats, aliasing, unused
9740globals,
9741missing prototypes, missing switch default statements, use of non-ANSI
9742library functions, use of non-ANSI constructs. See generate/unix/Makefile
9743for
9744a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
9745
9746Example Code and Data Size: These are the sizes for the OS-independent
9747acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9748debug version of the code includes the debug output trace mechanism and
9749has a
9750much larger code and data size.
9751
9752  Previous Release:
9753    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9754    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9755  Current Release:
9756    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9757    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9758
97592) iASL Compiler/Disassembler and Tools:
9760
9761iASL: Fixed a generation warning from Bison 2.3 and fixed several
9762warnings
9763on
9764the 64-bit build.
9765
9766iASL: Fixed a problem where the Unix/Linux versions of the compiler could
9767not
9768correctly digest Windows/DOS formatted files (with CR/LF).
9769
9770iASL: Added a new option for "quiet mode" (-va) that produces only the
9771compilation summary, not individual errors and warnings. Useful for large
9772batch compilations.
9773
9774AcpiExec: Implemented a new option (-z) to enable a forced
9775semaphore/mutex
9776timeout that can be used to detect hang conditions during execution of
9777AML
9778code (includes both internal semaphores and AML-defined mutexes and
9779events.)
9780
9781Added new makefiles for the generation of acpica in a generic unix-like
9782environment. These makefiles are intended to generate the acpica tools
9783and
9784utilities from the original acpica git source tree structure.
9785
9786Test Suites: Updated and cleaned up the documentation files. Updated the
9787copyrights to 2009, affecting all source files. Use the new version of
9788iASL
9789with quiet mode. Increased the number of available semaphores in the
9790Windows
9791OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9792added
9793an alternate implementation of the semaphore timeout to allow aslts to
9794execute fully on Cygwin.
9795
9796----------------------------------------
979720 March 2009. Summary of changes for version 20090320:
9798
97991) ACPI CA Core Subsystem:
9800
9801Fixed a possible race condition between AcpiWalkNamespace and dynamic
9802table
9803unloads. Added a reader/writer locking mechanism to allow multiple
9804concurrent
9805namespace walks (readers), but block a dynamic table unload until it can
9806gain
9807exclusive write access to the namespace. This fixes a problem where a
9808table
9809unload could (possibly catastrophically) delete the portion of the
9810namespace
9811that is currently being examined by a walk. Adds a new file, utlock.c,
9812that
9813implements the reader/writer lock mechanism. ACPICA BZ 749.
9814
9815Fixed a regression introduced in version 20090220 where a change to the
9816FADT
9817handling could cause the ACPICA subsystem to access non-existent I/O
9818ports.
9819
9820Modified the handling of FADT register and table (FACS/DSDT) addresses.
9821The
9822FADT can contain both 32-bit and 64-bit versions of these addresses.
9823Previously, the 64-bit versions were favored, meaning that if both 32 and
982464
9825versions were valid, but not equal, the 64-bit version was used. This was
9826found to cause some machines to fail. Now, in this case, the 32-bit
9827version
9828is used instead. This now matches the Windows behavior.
9829
9830Implemented a new mechanism to protect certain I/O ports. Provides
9831Microsoft
9832compatibility and protects the standard PC I/O ports from access via AML
9833code. Adds a new file, hwvalid.c
9834
9835Fixed a possible extraneous warning message from the FADT support. The
9836message warns of a 32/64 length mismatch between the legacy and GAS
9837definitions for a register.
9838
9839Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9840is
9841made obsolete by the port protection mechanism above. It was previously
9842used
9843to validate the entire address range of an operation region, which could
9844be
9845incorrect if the range included illegal ports, but fields within the
9846operation region did not actually access those ports. Validation is now
9847performed on a per-field basis instead of the entire region.
9848
9849Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9850Ignored bits must be "preserved" according to the ACPI spec. Usually,
9851this
9852means a read/modify/write when writing to the register. However, for
9853status
9854registers, writing a one means clear the event. Writing a zero means
9855preserve
9856the event (do not clear.) This behavior is clarified in the ACPI 4.0
9857spec,
9858and the ACPICA code now simply always writes a zero to the ignored bit.
9859
9860Modified the handling of ignored bits for the PM1 A/B Control Registers.
9861As
9862per the ACPI specification, for the control registers, preserve
9863(read/modify/write) all bits that are defined as either reserved or
9864ignored.
9865
9866Updated the handling of write-only bits in the PM1 A/B Control Registers.
9867When reading the register, zero the write-only bits as per the ACPI spec.
9868ACPICA BZ 443. Lin Ming.
9869
9870Removed "Linux" from the list of supported _OSI strings. Linux no longer
9871wants to reply true to this request. The Windows strings are the only
9872paths
9873through the AML that are tested and known to work properly.
9874
9875  Previous Release:
9876    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9877    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9878  Current Release:
9879    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9880    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9881
98822) iASL Compiler/Disassembler and Tools:
9883
9884Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9885and
9886aetables.c
9887
9888----------------------------------------
988920 February 2009. Summary of changes for version 20090220:
9890
98911) ACPI CA Core Subsystem:
9892
9893Optimized the ACPI register locking. Removed locking for reads from the
9894ACPI
9895bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9896is
9897not required when reading the single-bit registers. The
9898AcpiGetRegisterUnlocked function is no longer needed and has been
9899removed.
9900This will improve performance for reads on these registers. ACPICA BZ
9901760.
9902
9903Fixed the parameter validation for AcpiRead/Write. Now return
9904AE_BAD_PARAMETER if the input register pointer is null, and
9905AE_BAD_ADDRESS
9906if
9907the register has an address of zero. Previously, these cases simply
9908returned
9909AE_OK. For optional registers such as PM1B status/enable/control, the
9910caller
9911should check for a valid register address before calling. ACPICA BZ 748.
9912
9913Renamed the external ACPI bit register access functions. Renamed
9914AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9915functions. The new names are AcpiReadBitRegister and
9916AcpiWriteBitRegister.
9917Also, restructured the code for these functions by simplifying the code
9918path
9919and condensing duplicate code to reduce code size.
9920
9921Added new functions to transparently handle the possibly split PM1 A/B
9922registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9923functions
9924now handle the split registers for PM1 Status, Enable, and Control.
9925ACPICA
9926BZ
9927746.
9928
9929Added a function to handle the PM1 control registers,
9930AcpiHwWritePm1Control.
9931This function writes both of the PM1 control registers (A/B). These
9932registers
9933are different than the PM1 A/B status and enable registers in that
9934different
9935values can be written to the A/B registers. Most notably, the SLP_TYP
9936bits
9937can be different, as per the values returned from the _Sx predefined
9938methods.
9939
9940Removed an extra register write within AcpiHwClearAcpiStatus. This
9941function
9942was writing an optional PM1B status register twice. The existing call to
9943the
9944low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9945A/B
9946register. ACPICA BZ 751.
9947
9948Split out the PM1 Status registers from the FADT. Added new globals for
9949these
9950registers (A/B), similar to the way the PM1 Enable registers are handled.
9951Instead of overloading the FADT Event Register blocks. This makes the
9952code
9953clearer and less prone to error.
9954
9955Fixed the warning message for when the platform contains too many ACPI
9956tables
9957for the default size of the global root table data structure. The
9958calculation
9959for the truncation value was incorrect.
9960
9961Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9962obsolete macro, since it is now a simple reference to ->common.type.
9963There
9964were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9965
9966Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9967TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9968simply SLEEP_TYPE. ACPICA BZ 754.
9969
9970Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9971function is only needed on 64-bit host operating systems and is thus not
9972included for 32-bit hosts.
9973
9974Debug output: print the input and result for invocations of the _OSI
9975reserved
9976control method via the ACPI_LV_INFO debug level. Also, reduced some of
9977the
9978verbosity of this debug level. Len Brown.
9979
9980Example Code and Data Size: These are the sizes for the OS-independent
9981acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9982debug version of the code includes the debug output trace mechanism and
9983has a
9984much larger code and data size.
9985
9986  Previous Release:
9987    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9988    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9989  Current Release:
9990    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9991    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9992
99932) iASL Compiler/Disassembler and Tools:
9994
9995Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9996various legal performance profiles.
9997
9998----------------------------------------
999923 January 2009. Summary of changes for version 20090123:
10000
100011) ACPI CA Core Subsystem:
10002
10003Added the 2009 copyright to all module headers and signons. This affects
10004virtually every file in the ACPICA core subsystem, the iASL compiler, and
10005the tools/utilities.
10006
10007Implemented a change to allow the host to override any ACPI table,
10008including
10009dynamically loaded tables. Previously, only the DSDT could be replaced by
10010the
10011host. With this change, the AcpiOsTableOverride interface is called for
10012each
10013table found in the RSDT/XSDT during ACPICA initialization, and also
10014whenever
10015a table is dynamically loaded via the AML Load operator.
10016
10017Updated FADT flag definitions, especially the Boot Architecture flags.
10018
10019Debugger: For the Find command, automatically pad the input ACPI name
10020with
10021underscores if the name is shorter than 4 characters. This enables a
10022match
10023with the actual namespace entry which is itself padded with underscores.
10024
10025Example Code and Data Size: These are the sizes for the OS-independent
10026acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10027debug version of the code includes the debug output trace mechanism and
10028has a
10029much larger code and data size.
10030
10031  Previous Release:
10032    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
10033    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
10034  Current Release:
10035    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
10036    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
10037
100382) iASL Compiler/Disassembler and Tools:
10039
10040Fix build error under Bison-2.4.
10041
10042Disassembler: Enhanced FADT support. Added decoding of the Boot
10043Architecture
10044flags. Now decode all flags, regardless of the FADT version. Flag output
10045includes the FADT version which first defined each flag.
10046
10047The iASL -g option now dumps the RSDT to a file (in addition to the FADT
10048and
10049DSDT). Windows only.
10050
10051----------------------------------------
1005204 December 2008. Summary of changes for version 20081204:
10053
100541) ACPI CA Core Subsystem:
10055
10056The ACPICA Programmer Reference has been completely updated and revamped
10057for
10058this release. This includes updates to the external interfaces, OSL
10059interfaces, the overview sections, and the debugger reference.
10060
10061Several new ACPICA interfaces have been implemented and documented in the
10062programmer reference:
10063AcpiReset - Writes the reset value to the FADT-defined reset register.
10064AcpiDisableAllGpes - Disable all available GPEs.
10065AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
10066AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
10067AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
10068AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
10069AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
10070
10071Most of the public ACPI hardware-related interfaces have been moved to a
10072new
10073file, components/hardware/hwxface.c
10074
10075Enhanced the FADT parsing and low-level ACPI register access: The ACPI
10076register lengths within the FADT are now used, and the low level ACPI
10077register access no longer hardcodes the ACPI register lengths. Given that
10078there may be some risk in actually trusting the FADT register lengths, a
10079run-
10080time option was added to fall back to the default hardcoded lengths if
10081the
10082FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
10083option is set to true for now, and a warning is issued if a suspicious
10084FADT
10085register length is overridden with the default value.
10086
10087Fixed a reference count issue in NsRepairObject. This problem was
10088introduced
10089in version 20081031 as part of a fix to repair Buffer objects within
10090Packages. Lin Ming.
10091
10092Added semaphore support to the Linux/Unix application OS-services layer
10093(OSL). ACPICA BZ 448. Lin Ming.
10094
10095Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
10096will
10097be implemented in the OSL, or will binary semaphores be used instead.
10098
10099Example Code and Data Size: These are the sizes for the OS-independent
10100acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10101debug version of the code includes the debug output trace mechanism and
10102has a
10103much larger code and data size.
10104
10105  Previous Release:
10106    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
10107    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
10108  Current Release:
10109    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
10110    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
10111
101122) iASL Compiler/Disassembler and Tools:
10113
10114iASL: Completed the '-e' option to include additional ACPI tables in
10115order
10116to
10117aid with disassembly and External statement generation. ACPICA BZ 742.
10118Lin
10119Ming.
10120
10121iASL: Removed the "named object in while loop" error. The compiler cannot
10122determine how many times a loop will execute. ACPICA BZ 730.
10123
10124Disassembler: Implemented support for FADT revision 2 (MS extension).
10125ACPICA
10126BZ 743.
10127
10128Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
10129MCFG).
10130
10131----------------------------------------
1013231 October 2008. Summary of changes for version 20081031:
10133
101341) ACPI CA Core Subsystem:
10135
10136Restructured the ACPICA header files into public/private. acpi.h now
10137includes
10138only the "public" acpica headers. All other acpica headers are "private"
10139and
10140should not be included by acpica users. One new file, accommon.h is used
10141to
10142include the commonly used private headers for acpica code generation.
10143Future
10144plans include moving all private headers to a new subdirectory.
10145
10146Implemented an automatic Buffer->String return value conversion for
10147predefined ACPI methods. For these methods (such as _BIF), added
10148automatic
10149conversion for return objects that are required to be a String, but a
10150Buffer
10151was found instead. This can happen when reading string battery data from
10152an
10153operation region, because it used to be difficult to convert the data
10154from
10155buffer to string from within the ASL. Ensures that the host OS is
10156provided
10157with a valid null-terminated string. Linux BZ 11822.
10158
10159Updated the FACS waking vector interfaces. Split
10160AcpiSetFirmwareWakingVector
10161into two: one for the 32-bit vector, another for the 64-bit vector. This
10162is
10163required because the host OS must setup the wake much differently for
10164each
10165vector (real vs. protected mode, etc.) and the interface itself should
10166not
10167be
10168deciding which vector to use. Also, eliminated the
10169GetFirmwareWakingVector
10170interface, as it served no purpose (only the firmware reads the vector,
10171OS
10172only writes the vector.) ACPICA BZ 731.
10173
10174Implemented a mechanism to escape infinite AML While() loops. Added a
10175loop
10176counter to force exit from AML While loops if the count becomes too
10177large.
10178This can occur in poorly written AML when the hardware does not respond
10179within a while loop and the loop does not implement a timeout. The
10180maximum
10181loop count is configurable. A new exception code is returned when a loop
10182is
10183broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
10184
10185Optimized the execution of AML While loops. Previously, a control state
10186object was allocated and freed for each execution of the loop. The
10187optimization is to simply reuse the control state for each iteration.
10188This
10189speeds up the raw loop execution time by about 5%.
10190
10191Enhanced the implicit return mechanism. For Windows compatibility, return
10192an
10193implicit integer of value zero for methods that contain no executable
10194code.
10195Such methods are seen in the field as stubs (presumably), and can cause
10196drivers to fail if they expect a return value. Lin Ming.
10197
10198Allow multiple backslashes as root prefixes in namepaths. In a fully
10199qualified namepath, allow multiple backslash prefixes. This can happen
10200(and
10201is seen in the field) because of the use of a double-backslash in strings
10202(since backslash is the escape character) causing confusion. ACPICA BZ
10203739
10204Lin Ming.
10205
10206Emit a warning if two different FACS or DSDT tables are discovered in the
10207FADT. Checks if there are two valid but different addresses for the FACS
10208and
10209DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
10210
10211Consolidated the method argument count validation code. Merged the code
10212that
10213validates control method argument counts into the predefined validation
10214module. Eliminates possible multiple warnings for incorrect argument
10215counts.
10216
10217Implemented ACPICA example code. Includes code for ACPICA initialization,
10218handler installation, and calling a control method. Available at
10219source/tools/examples.
10220
10221Added a global pointer for FACS table to simplify internal FACS access.
10222Use
10223the global pointer instead of using AcpiGetTableByIndex for each FACS
10224access.
10225This simplifies the code for the Global Lock and the Firmware Waking
10226Vector(s).
10227
10228Example Code and Data Size: These are the sizes for the OS-independent
10229acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10230debug version of the code includes the debug output trace mechanism and
10231has a
10232much larger code and data size.
10233
10234  Previous Release:
10235    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
10236    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
10237  Current Release:
10238    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
10239    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
10240
102412) iASL Compiler/Disassembler and Tools:
10242
10243iASL: Improved disassembly of external method calls. Added the -e option
10244to
10245allow the inclusion of additional ACPI tables to help with the
10246disassembly
10247of
10248method invocations and the generation of external declarations during the
10249disassembly. Certain external method invocations cannot be disassembled
10250properly without the actual declaration of the method. Use the -e option
10251to
10252include the table where the external method(s) are actually declared.
10253Most
10254useful for disassembling SSDTs that make method calls back to the master
10255DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
10256-d
10257-e dsdt.aml ssdt1.aml
10258
10259iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
10260problem where the use of an alias within a namepath would result in a not
10261found error or cause the compiler to fault. Also now allows forward
10262references from the Alias operator itself. ACPICA BZ 738.
10263
10264----------------------------------------
1026526 September 2008. Summary of changes for version 20080926:
10266
102671) ACPI CA Core Subsystem:
10268
10269Designed and implemented a mechanism to validate predefined ACPI methods
10270and
10271objects. This code validates the predefined ACPI objects (objects whose
10272names
10273start with underscore) that appear in the namespace, at the time they are
10274evaluated. The argument count and the type of the returned object are
10275validated against the ACPI specification. The purpose of this validation
10276is
10277to detect problems with the BIOS-implemented predefined ACPI objects
10278before
10279the results are returned to the ACPI-related drivers. Future enhancements
10280may
10281include actual repair of incorrect return objects where possible. Two new
10282files are nspredef.c and acpredef.h.
10283
10284Fixed a fault in the AML parser if a memory allocation fails during the
10285Op
10286completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
10287
10288Fixed an issue with implicit return compatibility. This change improves
10289the
10290implicit return mechanism to be more compatible with the MS interpreter.
10291Lin
10292Ming, ACPICA BZ 349.
10293
10294Implemented support for zero-length buffer-to-string conversions. Allow
10295zero
10296length strings during interpreter buffer-to-string conversions. For
10297example,
10298during the ToDecimalString and ToHexString operators, as well as implicit
10299conversions. Fiodor Suietov, ACPICA BZ 585.
10300
10301Fixed two possible memory leaks in the error exit paths of
10302AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
10303are
10304similar in that they use a stack of state objects in order to eliminate
10305recursion. The stack must be fully unwound and deallocated if an error
10306occurs. Lin Ming. ACPICA BZ 383.
10307
10308Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
10309global
10310ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
10311Moore ACPICA BZ 442.
10312
10313Removed the obsolete version number in module headers. Removed the
10314"$Revision" number that appeared in each module header. This version
10315number
10316was useful under SourceSafe and CVS, but has no meaning under git. It is
10317not
10318only incorrect, it could also be misleading.
10319
10320Example Code and Data Size: These are the sizes for the OS-independent
10321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10322debug version of the code includes the debug output trace mechanism and
10323has a
10324much larger code and data size.
10325
10326  Previous Release:
10327    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10328    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
10329  Current Release:
10330    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
10331    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
10332
10333----------------------------------------
1033429 August 2008. Summary of changes for version 20080829:
10335
103361) ACPI CA Core Subsystem:
10337
10338Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
10339Reference. Changes include the elimination of cheating on the Object
10340field
10341for the DdbHandle subtype, addition of a reference class field to
10342differentiate the various reference types (instead of an AML opcode), and
10343the
10344cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
10345
10346Reduce an error to a warning for an incorrect method argument count.
10347Previously aborted with an error if too few arguments were passed to a
10348control method via the external ACPICA interface. Now issue a warning
10349instead
10350and continue. Handles the case where the method inadvertently declares
10351too
10352many arguments, but does not actually use the extra ones. Applies mainly
10353to
10354the predefined methods. Lin Ming. Linux BZ 11032.
10355
10356Disallow the evaluation of named object types with no intrinsic value.
10357Return
10358AE_TYPE for objects that have no value and therefore evaluation is
10359undefined:
10360Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
10361of
10362these types were allowed, but an exception would be generated at some
10363point
10364during the evaluation. Now, the error is generated up front.
10365
10366Fixed a possible memory leak in the AcpiNsGetExternalPathname function
10367(nsnames.c). Fixes a leak in the error exit path.
10368
10369Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
10370debug
10371levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
10372ACPI_EXCEPTION
10373interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
10374ACPI_LV_EVENTS.
10375
10376Removed obsolete and/or unused exception codes from the acexcep.h header.
10377There is the possibility that certain device drivers may be affected if
10378they
10379use any of these exceptions.
10380
10381The ACPICA documentation has been added to the public git source tree,
10382under
10383acpica/documents. Included are the ACPICA programmer reference, the iASL
10384compiler reference, and the changes.txt release logfile.
10385
10386Example Code and Data Size: These are the sizes for the OS-independent
10387acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10388debug version of the code includes the debug output trace mechanism and
10389has a
10390much larger code and data size.
10391
10392  Previous Release:
10393    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10394    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
10395  Current Release:
10396    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10397    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
10398
103992) iASL Compiler/Disassembler and Tools:
10400
10401Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
10402defines _SCP with 3 arguments. Previous versions defined it with only 1
10403argument. iASL now allows both definitions.
10404
10405iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
10406zero-
10407length subtables when disassembling ACPI tables. Also fixed a couple of
10408errors where a full 16-bit table type field was not extracted from the
10409input
10410properly.
10411
10412acpisrc: Improve comment counting mechanism for generating source code
10413statistics. Count first and last lines of multi-line comments as
10414whitespace,
10415not comment lines. Handle Linux legal header in addition to standard
10416acpica
10417header.
10418
10419----------------------------------------
10420
1042129 July 2008. Summary of changes for version 20080729:
10422
104231) ACPI CA Core Subsystem:
10424
10425Fix a possible deadlock in the GPE dispatch. Remove call to
10426AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
10427attempt
10428to acquire the GPE lock but can deadlock since the GPE lock is already
10429held
10430at dispatch time. This code was introduced in version 20060831 as a
10431response
10432to Linux BZ 6881 and has since been removed from Linux.
10433
10434Add a function to dereference returned reference objects. Examines the
10435return
10436object from a call to AcpiEvaluateObject. Any Index or RefOf references
10437are
10438automatically dereferenced in an attempt to return something useful
10439(these
10440reference types cannot be converted into an external ACPI_OBJECT.)
10441Provides
10442MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
10443
10444x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
10445subtables for the MADT and one new subtable for the SRAT. Includes
10446disassembler and AcpiSrc support. Data from the Intel 64 Architecture
10447x2APIC
10448Specification, June 2008.
10449
10450Additional error checking for pathname utilities. Add error check after
10451all
10452calls to AcpiNsGetPathnameLength. Add status return from
10453AcpiNsBuildExternalPath and check after all calls. Add parameter
10454validation
10455to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
10456
10457Return status from the global init function AcpiUtGlobalInitialize. This
10458is
10459used by both the kernel subsystem and the utilities such as iASL
10460compiler.
10461The function could possibly fail when the caches are initialized. Yang
10462Yi.
10463
10464Add a function to decode reference object types to strings. Created for
10465improved error messages.
10466
10467Improve object conversion error messages. Better error messages during
10468object
10469conversion from internal to the external ACPI_OBJECT. Used for external
10470calls
10471to AcpiEvaluateObject.
10472
10473Example Code and Data Size: These are the sizes for the OS-independent
10474acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10475debug version of the code includes the debug output trace mechanism and
10476has a
10477much larger code and data size.
10478
10479  Previous Release:
10480    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
10481    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10482  Current Release:
10483    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10484    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
10485
104862) iASL Compiler/Disassembler and Tools:
10487
10488Debugger: fix a possible hang when evaluating non-methods. Fixes a
10489problem
10490introduced in version 20080701. If the object being evaluated (via
10491execute
10492command) is not a method, the debugger can hang while trying to obtain
10493non-
10494existent parameters.
10495
10496iASL: relax error for using reserved "_T_x" identifiers. These names can
10497appear in a disassembled ASL file if they were emitted by the original
10498compiler. Instead of issuing an error or warning and forcing the user to
10499manually change these names, issue a remark instead.
10500
10501iASL: error if named object created in while loop. Emit an error if any
10502named
10503object is created within a While loop. If allowed, this code will
10504generate
10505a
10506run-time error on the second iteration of the loop when an attempt is
10507made
10508to
10509create the same named object twice. ACPICA bugzilla 730.
10510
10511iASL: Support absolute pathnames for include files. Add support for
10512absolute
10513pathnames within the Include operator. previously, only relative
10514pathnames
10515were supported.
10516
10517iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
10518Descriptor.
10519The ACPI spec requires one interrupt minimum. BZ 423
10520
10521iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
10522Handles the case for the Interrupt Resource Descriptor where
10523the ResourceSource argument is omitted but ResourceSourceIndex
10524is present. Now leave room for the Index. BZ 426
10525
10526iASL: Prevent error message if CondRefOf target does not exist. Fixes
10527cases
10528where an error message is emitted if the target does not exist. BZ 516
10529
10530iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
10531(get ACPI tables on Windows). This was apparently broken in version
1053220070919.
10533
10534AcpiXtract: Handle EOF while extracting data. Correctly handle the case
10535where
10536the EOF happens immediately after the last table in the input file. Print
10537completion message. Previously, no message was displayed in this case.
10538
10539----------------------------------------
1054001 July 2008. Summary of changes for version 20080701:
10541
105420) Git source tree / acpica.org
10543
10544Fixed a problem where a git-clone from http would not transfer the entire
10545source tree.
10546
105471) ACPI CA Core Subsystem:
10548
10549Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
10550enable bit. Now performs a read-change-write of the enable register
10551instead
10552of simply writing out the cached enable mask. This will prevent
10553inadvertent
10554enabling of GPEs if a rogue GPE is received during initialization (before
10555GPE
10556handlers are installed.)
10557
10558Implemented a copy for dynamically loaded tables. Previously, dynamically
10559loaded tables were simply mapped - but on some machines this memory is
10560corrupted after suspend. Now copy the table to a local buffer. For the
10561OpRegion case, added checksum verify. Use the table length from the table
10562header, not the region length. For the Buffer case, use the table length
10563also. Dennis Noordsij, Bob Moore. BZ 10734
10564
10565Fixed a problem where the same ACPI table could not be dynamically loaded
10566and
10567unloaded more than once. Without this change, a table cannot be loaded
10568again
10569once it has been loaded/unloaded one time. The current mechanism does not
10570unregister a table upon an unload. During a load, if the same table is
10571found,
10572this no longer returns an exception. BZ 722
10573
10574Fixed a problem where the wrong descriptor length was calculated for the
10575EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
10576EndTag
10577are calculated as 12 bytes long, but the actual length in the internal
10578descriptor is 16 because of the round-up to 8 on the 64-bit build.
10579Reported
10580by Linn Crosetto. BZ 728
10581
10582Fixed a possible memory leak in the Unload operator. The DdbHandle
10583returned
10584by Load() did not have its reference count decremented during unload,
10585leading
10586to a memory leak. Lin Ming. BZ 727
10587
10588Fixed a possible memory leak when deleting thermal/processor objects. Any
10589associated notify handlers (and objects) were not being deleted. Fiodor
10590Suietov. BZ 506
10591
10592Fixed the ordering of the ASCII names in the global mutex table to match
10593the
10594actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
10595only.
10596Vegard Nossum. BZ 726
10597
10598Enhanced the AcpiGetObjectInfo interface to return the number of required
10599arguments if the object is a control method. Added this call to the
10600debugger
10601so the proper number of default arguments are passed to a method. This
10602prevents a warning when executing methods from AcpiExec.
10603
10604Added a check for an invalid handle in AcpiGetObjectInfo. Return
10605AE_BAD_PARAMETER if input handle is invalid. BZ 474
10606
10607Fixed an extraneous warning from exconfig.c on the 64-bit build.
10608
10609Example Code and Data Size: These are the sizes for the OS-independent
10610acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10611debug version of the code includes the debug output trace mechanism and
10612has a
10613much larger code and data size.
10614
10615  Previous Release:
10616    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10617    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10618  Current Release:
10619    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
10620    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10621
106222) iASL Compiler/Disassembler and Tools:
10623
10624iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
10625resource descriptor names.
10626
10627iASL: Detect invalid ASCII characters in input (windows version). Removed
10628the
10629"-CF" flag from the flex compile, enables correct detection of non-ASCII
10630characters in the input. BZ 441
10631
10632iASL: Eliminate warning when result of LoadTable is not used. Eliminate
10633the
10634"result of operation not used" warning when the DDB handle returned from
10635LoadTable is not used. The warning is not needed. BZ 590
10636
10637AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
10638method
10639to
10640pass address of table to the AML. Added option to disable OpRegion
10641simulation
10642to allow creation of an OpRegion with a real address that was passed to
10643_CFG.
10644All of this allows testing of the Load and Unload operators from
10645AcpiExec.
10646
10647Debugger: update tables command for unloaded tables. Handle unloaded
10648tables
10649and use the standard table header output routine.
10650
10651----------------------------------------
1065209 June 2008. Summary of changes for version 20080609:
10653
106541) ACPI CA Core Subsystem:
10655
10656Implemented a workaround for reversed _PRT entries. A significant number
10657of
10658BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
10659change dynamically detects and repairs this problem. Provides
10660compatibility
10661with MS ACPI. BZ 6859
10662
10663Simplified the internal ACPI hardware interfaces to eliminate the locking
10664flag parameter from Register Read/Write. Added a new external interface,
10665AcpiGetRegisterUnlocked.
10666
10667Fixed a problem where the invocation of a GPE control method could hang.
10668This
10669was a regression introduced in 20080514. The new method argument count
10670validation mechanism can enter an infinite loop when a GPE method is
10671dispatched. Problem fixed by removing the obsolete code that passed GPE
10672block
10673information to the notify handler via the control method parameter
10674pointer.
10675
10676Fixed a problem where the _SST execution status was incorrectly returned
10677to
10678the caller of AcpiEnterSleepStatePrep. This was a regression introduced
10679in
1068020080514. _SST is optional and a NOT_FOUND exception should never be
10681returned. BZ 716
10682
10683Fixed a problem where a deleted object could be accessed from within the
10684AML
10685parser. This was a regression introduced in version 20080123 as a fix for
10686the
10687Unload operator. Lin Ming. BZ 10669
10688
10689Cleaned up the debug operand dump mechanism. Eliminated unnecessary
10690operands
10691and eliminated the use of a negative index in a loop. Operands are now
10692displayed in the correct order, not backwards. This also fixes a
10693regression
10694introduced in 20080514 on 64-bit systems where the elimination of
10695ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
10696715
10697
10698Fixed a possible memory leak in EvPciConfigRegionSetup where the error
10699exit
10700path did not delete a locally allocated structure.
10701
10702Updated definitions for the DMAR and SRAT tables to synchronize with the
10703current specifications. Includes disassembler support.
10704
10705Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
10706loop termination value was used. Loop terminated on iteration early,
10707missing
10708one mutex. Linn Crosetto
10709
10710Example Code and Data Size: These are the sizes for the OS-independent
10711acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10712debug version of the code includes the debug output trace mechanism and
10713has a
10714much larger code and data size.
10715
10716  Previous Release:
10717    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10718    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10719  Current Release:
10720    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10721    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10722
107232) iASL Compiler/Disassembler and Tools:
10724
10725Disassembler: Implemented support for EisaId() within _CID objects. Now
10726disassemble integer _CID objects back to EisaId invocations, including
10727multiple integers within _CID packages. Includes single-step support for
10728debugger also.
10729
10730Disassembler: Added support for DMAR and SRAT table definition changes.
10731
10732----------------------------------------
1073314 May 2008. Summary of changes for version 20080514:
10734
107351) ACPI CA Core Subsystem:
10736
10737Fixed a problem where GPEs were enabled too early during the ACPICA
10738initialization. This could lead to "handler not installed" errors on some
10739machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
10740This
10741ensures that all operation regions and devices throughout the namespace
10742have
10743been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
10744
10745Implemented a change to the enter sleep code. Moved execution of the _GTS
10746method to just before setting sleep enable bit. The execution was moved
10747from
10748AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
10749immediately before the SLP_EN bit is set, as per the ACPI specification.
10750Luming Yu, BZ 1653.
10751
10752Implemented a fix to disable unknown GPEs (2nd version). Now always
10753disable
10754the GPE, even if ACPICA thinks that that it is already disabled. It is
10755possible that the AML or some other code has enabled the GPE unbeknownst
10756to
10757the ACPICA code.
10758
10759Fixed a problem with the Field operator where zero-length fields would
10760return
10761an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
10762ASL
10763field declarations in Field(), BankField(), and IndexField(). BZ 10606.
10764
10765Implemented a fix for the Load operator, now load the table at the
10766namespace
10767root. This reverts a change introduced in version 20071019. The table is
10768now
10769loaded at the namespace root even though this goes against the ACPI
10770specification. This provides compatibility with other ACPI
10771implementations.
10772The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10773Ming.
10774
10775Fixed a problem where ACPICA would not Load() tables with unusual
10776signatures.
10777Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10778acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10779Therefore, signature validation is worthless. Apparently MS ACPI accepts
10780such
10781signatures, ACPICA must be compatible. BZ 10454.
10782
10783Fixed a possible negative array index in AcpiUtValidateException. Added
10784NULL
10785fields to the exception string arrays to eliminate a -1 subtraction on
10786the
10787SubStatus field.
10788
10789Updated the debug tracking macros to reduce overall code and data size.
10790Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10791instead of pointers to static strings. Jan Beulich and Bob Moore.
10792
10793Implemented argument count checking in control method invocation via
10794AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10795too
10796many. This applies only to extern programmatic control method execution,
10797not
10798method-to-method calls within the AML. Lin Ming.
10799
10800Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10801no
10802longer needed, especially with the removal of 16-bit support. It was
10803replaced
10804mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10805bit
10806on
1080732/64-bit platforms is required.
10808
10809Added the C const qualifier for appropriate string constants -- mostly
10810MODULE_NAME and printf format strings. Jan Beulich.
10811
10812Example Code and Data Size: These are the sizes for the OS-independent
10813acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10814debug version of the code includes the debug output trace mechanism and
10815has a
10816much larger code and data size.
10817
10818  Previous Release:
10819    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10820    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10821  Current Release:
10822    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10823    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10824
108252) iASL Compiler/Disassembler and Tools:
10826
10827Implemented ACPI table revision ID validation in the disassembler. Zero
10828is
10829always invalid. For DSDTs, the ID controls the interpreter integer width.
108301
10831means 32-bit and this is unusual. 2 or greater is 64-bit.
10832
10833----------------------------------------
1083421 March 2008. Summary of changes for version 20080321:
10835
108361) ACPI CA Core Subsystem:
10837
10838Implemented an additional change to the GPE support in order to suppress
10839spurious or stray GPEs. The AcpiEvDisableGpe function will now
10840permanently
10841disable incoming GPEs that are neither enabled nor disabled -- meaning
10842that
10843the GPE is unknown to the system. This should prevent future interrupt
10844floods
10845from that GPE. BZ 6217 (Zhang Rui)
10846
10847Fixed a problem where NULL package elements were not returned to the
10848AcpiEvaluateObject interface correctly. The element was simply ignored
10849instead of returning a NULL ACPI_OBJECT package element, potentially
10850causing
10851a buffer overflow and/or confusing the caller who expected a fixed number
10852of
10853elements. BZ 10132 (Lin Ming, Bob Moore)
10854
10855Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10856Dword,
10857Qword), Field, BankField, and IndexField operators when invoked from
10858inside
10859an executing control method. In this case, these operators created
10860namespace
10861nodes that were incorrectly left marked as permanent nodes instead of
10862temporary nodes. This could cause a problem if there is race condition
10863between an exiting control method and a running namespace walk. (Reported
10864by
10865Linn Crosetto)
10866
10867Fixed a problem where the CreateField and CreateXXXField operators would
10868incorrectly allow duplicate names (the name of the field) with no
10869exception
10870generated.
10871
10872Implemented several changes for Notify handling. Added support for new
10873Notify
10874values (ACPI 2.0+) and improved the Notify debug output. Notify on
10875PowerResource objects is no longer allowed, as per the ACPI
10876specification.
10877(Bob Moore, Zhang Rui)
10878
10879All Reference Objects returned via the AcpiEvaluateObject interface are
10880now
10881marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10882for
10883NULL objects - either NULL package elements or unresolved named
10884references.
10885
10886Fixed a problem where an extraneous debug message was produced for
10887package
10888objects (when debugging enabled). The message "Package List length larger
10889than NumElements count" is now produced in the correct case, and is now
10890an
10891error message rather than a debug message. Added a debug message for the
10892opposite case, where NumElements is larger than the Package List (the
10893package
10894will be padded out with NULL elements as per the ACPI spec.)
10895
10896Implemented several improvements for the output of the ASL "Debug" object
10897to
10898clarify and keep all data for a given object on one output line.
10899
10900Fixed two size calculation issues with the variable-length Start
10901Dependent
10902resource descriptor.
10903
10904Example Code and Data Size: These are the sizes for the OS-independent
10905acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10906debug version of the code includes the debug output trace mechanism and
10907has
10908a much larger code and data size.
10909
10910  Previous Release:
10911    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10912    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10913  Current Release:
10914    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10915    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10916
109172) iASL Compiler/Disassembler and Tools:
10918
10919Fixed a problem with the use of the Switch operator where execution of
10920the
10921containing method by multiple concurrent threads could cause an
10922AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10923actual Switch opcode, it must be simulated with local named temporary
10924variables and if/else pairs. The solution chosen was to mark any method
10925that
10926uses Switch as Serialized, thus preventing multiple thread entries. BZ
10927469.
10928
10929----------------------------------------
1093013 February 2008. Summary of changes for version 20080213:
10931
109321) ACPI CA Core Subsystem:
10933
10934Implemented another MS compatibility design change for GPE/Notify
10935handling.
10936GPEs are now cleared/enabled asynchronously to allow all pending notifies
10937to
10938complete first. It is expected that the OSL will queue the enable request
10939behind all pending notify requests (may require changes to the local host
10940OSL
10941in AcpiOsExecute). Alexey Starikovskiy.
10942
10943Fixed a problem where buffer and package objects passed as arguments to a
10944control method via the external AcpiEvaluateObject interface could cause
10945an
10946AE_AML_INTERNAL exception depending on the order and type of operators
10947executed by the target control method.
10948
10949Fixed a problem where resource descriptor size optimization could cause a
10950problem when a _CRS resource template is passed to a _SRS method. The
10951_SRS
10952resource template must use the same descriptors (with the same size) as
10953returned from _CRS. This change affects the following resource
10954descriptors:
10955IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
109569487)
10957
10958Fixed a problem where a CopyObject to RegionField, BankField, and
10959IndexField
10960objects did not perform an implicit conversion as it should. These types
10961must
10962retain their initial type permanently as per the ACPI specification.
10963However,
10964a CopyObject to all other object types should not perform an implicit
10965conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10966
10967Fixed a problem with the AcpiGetDevices interface where the mechanism to
10968match device CIDs did not examine the entire list of available CIDs, but
10969instead aborted on the first non-matching CID. Andrew Patterson.
10970
10971Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10972was
10973inadvertently changed to return a 16-bit value instead of a 32-bit value,
10974truncating the upper dword of a 64-bit value. This macro is only used to
10975display debug output, so no incorrect calculations were made. Also,
10976reimplemented the macro so that a 64-bit shift is not performed by
10977inefficient compilers.
10978
10979Added missing va_end statements that should correspond with each va_start
10980statement.
10981
10982Example Code and Data Size: These are the sizes for the OS-independent
10983acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10984debug version of the code includes the debug output trace mechanism and
10985has
10986a much larger code and data size.
10987
10988  Previous Release:
10989    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10990    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10991  Current Release:
10992    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10993    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10994
109952) iASL Compiler/Disassembler and Tools:
10996
10997Implemented full disassembler support for the following new ACPI tables:
10998BERT, EINJ, and ERST. Implemented partial disassembler support for the
10999complicated HEST table. These tables support the Windows Hardware Error
11000Architecture (WHEA).
11001
11002----------------------------------------
1100323 January 2008. Summary of changes for version 20080123:
11004
110051) ACPI CA Core Subsystem:
11006
11007Added the 2008 copyright to all module headers and signons. This affects
11008virtually every file in the ACPICA core subsystem, the iASL compiler, and
11009the tools/utilities.
11010
11011Fixed a problem with the SizeOf operator when used with Package and
11012Buffer
11013objects. These objects have deferred execution for some arguments, and
11014the
11015execution is now completed before the SizeOf is executed. This problem
11016caused
11017unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
11018BZ
110199558
11020
11021Implemented an enhancement to the interpreter "slack mode". In the
11022absence
11023of
11024an explicit return or an implicitly returned object from the last
11025executed
11026opcode, a control method will now implicitly return an integer of value 0
11027for
11028Microsoft compatibility. (Lin Ming) BZ 392
11029
11030Fixed a problem with the Load operator where an exception was not
11031returned
11032in
11033the case where the table is already loaded. (Lin Ming) BZ 463
11034
11035Implemented support for the use of DDBHandles as an Indexed Reference, as
11036per
11037the ACPI spec. (Lin Ming) BZ 486
11038
11039Implemented support for UserTerm (Method invocation) for the Unload
11040operator
11041as per the ACPI spec. (Lin Ming) BZ 580
11042
11043Fixed a problem with the LoadTable operator where the OemId and
11044OemTableId
11045input strings could cause unexpected failures if they were shorter than
11046the
11047maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
11048
11049Implemented support for UserTerm (Method invocation) for the Unload
11050operator
11051as per the ACPI spec. (Lin Ming) BZ 580
11052
11053Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
11054HEST,
11055IBFT, UEFI, WDAT. Disassembler support is forthcoming.
11056
11057Example Code and Data Size: These are the sizes for the OS-independent
11058acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11059debug version of the code includes the debug output trace mechanism and
11060has
11061a much larger code and data size.
11062
11063  Previous Release:
11064    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
11065    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
11066  Current Release:
11067    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
11068    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
11069
110702) iASL Compiler/Disassembler and Tools:
11071
11072Implemented support in the disassembler for checksum validation on
11073incoming
11074binary DSDTs and SSDTs. If incorrect, a message is displayed within the
11075table
11076header dump at the start of the disassembly.
11077
11078Implemented additional debugging information in the namespace listing
11079file
11080created during compilation. In addition to the namespace hierarchy, the
11081full
11082pathname to each namespace object is displayed.
11083
11084Fixed a problem with the disassembler where invalid ACPI tables could
11085cause
11086faults or infinite loops.
11087
11088Fixed an unexpected parse error when using the optional "parameter types"
11089list in a control method declaration. (Lin Ming) BZ 397
11090
11091Fixed a problem where two External declarations with the same name did
11092not
11093cause an error (Lin Ming) BZ 509
11094
11095Implemented support for full TermArgs (adding Argx, Localx and method
11096invocation) for the ParameterData parameter to the LoadTable operator.
11097(Lin
11098Ming) BZ 583,587
11099
11100----------------------------------------
1110119 December 2007. Summary of changes for version 20071219:
11102
111031) ACPI CA Core Subsystem:
11104
11105Implemented full support for deferred execution for the TermArg string
11106arguments for DataTableRegion. This enables forward references and full
11107operand resolution for the three string arguments. Similar to
11108OperationRegion
11109deferred argument execution.) Lin Ming. BZ 430
11110
11111Implemented full argument resolution support for the BankValue argument
11112to
11113BankField. Previously, only constants were supported, now any TermArg may
11114be
11115used. Lin Ming BZ 387, 393
11116
11117Fixed a problem with AcpiGetDevices where the search of a branch of the
11118device tree could be terminated prematurely. In accordance with the ACPI
11119specification, the search down the current branch is terminated if a
11120device
11121is both not present and not functional (instead of just not present.)
11122Yakui
11123Zhao.
11124
11125Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
11126if
11127the underlying AML code changed the GPE enable registers. Now, any
11128unknown
11129incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
11130disabled
11131instead of simply ignored. Rui Zhang.
11132
11133Fixed a problem with Index Fields where the Index register was
11134incorrectly
11135limited to a maximum of 32 bits. Now any size may be used.
11136
11137Fixed a couple memory leaks associated with "implicit return" objects
11138when
11139the AML Interpreter slack mode is enabled. Lin Ming BZ 349
11140
11141Example Code and Data Size: These are the sizes for the OS-independent
11142acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11143debug version of the code includes the debug output trace mechanism and
11144has
11145a much larger code and data size.
11146
11147  Previous Release:
11148    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
11149    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
11150  Current Release:
11151    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
11152    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
11153
11154----------------------------------------
1115514 November 2007. Summary of changes for version 20071114:
11156
111571) ACPI CA Core Subsystem:
11158
11159Implemented event counters for each of the Fixed Events, the ACPI SCI
11160(interrupt) itself, and control methods executed. Named
11161AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
11162These
11163should be useful for debugging and statistics.
11164
11165Implemented a new external interface, AcpiGetStatistics, to retrieve the
11166contents of the various event counters. Returns the current values for
11167AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
11168AcpiMethodCount. The interface can be expanded in the future if new
11169counters
11170are added. Device drivers should use this interface rather than access
11171the
11172counters directly.
11173
11174Fixed a problem with the FromBCD and ToBCD operators. With some
11175compilers,
11176the ShortDivide function worked incorrectly, causing problems with the
11177BCD
11178functions with large input values. A truncation from 64-bit to 32-bit
11179inadvertently occurred. Internal BZ 435. Lin Ming
11180
11181Fixed a problem with Index references passed as method arguments.
11182References
11183passed as arguments to control methods were dereferenced immediately
11184(before
11185control was passed to the called method). The references are now
11186correctly
11187passed directly to the called method. BZ 5389. Lin Ming
11188
11189Fixed a problem with CopyObject used in conjunction with the Index
11190operator.
11191The reference was incorrectly dereferenced before the copy. The reference
11192is
11193now correctly copied. BZ 5391. Lin Ming
11194
11195Fixed a problem with Control Method references within Package objects.
11196These
11197references are now correctly generated. This completes the package
11198construction overhaul that began in version 20071019.
11199
11200Example Code and Data Size: These are the sizes for the OS-independent
11201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11202debug version of the code includes the debug output trace mechanism and
11203has
11204a much larger code and data size.
11205
11206  Previous Release:
11207    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
11208    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
11209  Current Release:
11210    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
11211    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
11212
11213
112142) iASL Compiler/Disassembler and Tools:
11215
11216The AcpiExec utility now installs handlers for all of the predefined
11217Operation Region types. New types supported are: PCI_Config, CMOS, and
11218PCIBARTarget.
11219
11220Fixed a problem with the 64-bit version of AcpiExec where the extended
11221(64-
11222bit) address fields for the DSDT and FACS within the FADT were not being
11223used, causing truncation of the upper 32-bits of these addresses. Lin
11224Ming
11225and Bob Moore
11226
11227----------------------------------------
1122819 October 2007. Summary of changes for version 20071019:
11229
112301) ACPI CA Core Subsystem:
11231
11232Fixed a problem with the Alias operator when the target of the alias is a
11233named ASL operator that opens a new scope -- Scope, Device,
11234PowerResource,
11235Processor, and ThermalZone. In these cases, any children of the original
11236operator could not be accessed via the alias, potentially causing
11237unexpected
11238AE_NOT_FOUND exceptions. (BZ 9067)
11239
11240Fixed a problem with the Package operator where all named references were
11241created as object references and left otherwise unresolved. According to
11242the
11243ACPI specification, a Package can only contain Data Objects or references
11244to
11245control methods. The implication is that named references to Data Objects
11246(Integer, Buffer, String, Package, BufferField, Field) should be resolved
11247immediately upon package creation. This is the approach taken with this
11248change. References to all other named objects (Methods, Devices, Scopes,
11249etc.) are all now properly created as reference objects. (BZ 5328)
11250
11251Reverted a change to Notify handling that was introduced in version
1125220070508. This version changed the Notify handling from asynchronous to
11253fully synchronous (Device driver Notify handling with respect to the
11254Notify
11255ASL operator). It was found that this change caused more problems than it
11256solved and was removed by most users.
11257
11258Fixed a problem with the Increment and Decrement operators where the type
11259of
11260the target object could be unexpectedly and incorrectly changed. (BZ 353)
11261Lin Ming.
11262
11263Fixed a problem with the Load and LoadTable operators where the table
11264location within the namespace was ignored. Instead, the table was always
11265loaded into the root or current scope. Lin Ming.
11266
11267Fixed a problem with the Load operator when loading a table from a buffer
11268object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
11269
11270Fixed a problem with the Debug object where a store of a DdbHandle
11271reference
11272object to the Debug object could cause a fault.
11273
11274Added a table checksum verification for the Load operator, in the case
11275where
11276the load is from a buffer. (BZ 578).
11277
11278Implemented additional parameter validation for the LoadTable operator.
11279The
11280length of the input strings SignatureString, OemIdString, and OemTableId
11281are
11282now checked for maximum lengths. (BZ 582) Lin Ming.
11283
11284Example Code and Data Size: These are the sizes for the OS-independent
11285acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11286debug version of the code includes the debug output trace mechanism and
11287has
11288a much larger code and data size.
11289
11290  Previous Release:
11291    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
11292    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
11293  Current Release:
11294    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
11295    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
11296
11297
112982) iASL Compiler/Disassembler:
11299
11300Fixed a problem where if a single file was specified and the file did not
11301exist, no error message was emitted. (Introduced with wildcard support in
11302version 20070917.)
11303
11304----------------------------------------
1130519 September 2007. Summary of changes for version 20070919:
11306
113071) ACPI CA Core Subsystem:
11308
11309Designed and implemented new external interfaces to install and remove
11310handlers for ACPI table-related events. Current events that are defined
11311are
11312LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
11313they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
11314AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
11315
11316Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
11317(acpi_serialized option on Linux) could cause some systems to hang during
11318initialization. (Bob Moore) BZ 8171
11319
11320Fixed a problem where objects of certain types (Device, ThermalZone,
11321Processor, PowerResource) can be not found if they are declared and
11322referenced from within the same control method (Lin Ming) BZ 341
11323
11324Example Code and Data Size: These are the sizes for the OS-independent
11325acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11326debug version of the code includes the debug output trace mechanism and
11327has
11328a much larger code and data size.
11329
11330  Previous Release:
11331    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
11332    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
11333  Current Release:
11334    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
11335    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
11336
11337
113382) iASL Compiler/Disassembler:
11339
11340Implemented support to allow multiple files to be compiled/disassembled
11341in
11342a
11343single invocation. This includes command line wildcard support for both
11344the
11345Windows and Unix versions of the compiler. This feature simplifies the
11346disassembly and compilation of multiple ACPI tables in a single
11347directory.
11348
11349----------------------------------------
1135008 May 2007. Summary of changes for version 20070508:
11351
113521) ACPI CA Core Subsystem:
11353
11354Implemented a Microsoft compatibility design change for the handling of
11355the
11356Notify AML operator. Previously, notify handlers were dispatched and
11357executed completely asynchronously in a deferred thread. The new design
11358still executes the notify handlers in a different thread, but the
11359original
11360thread that executed the Notify() now waits at a synchronization point
11361for
11362the notify handler to complete. Some machines depend on a synchronous
11363Notify
11364operator in order to operate correctly.
11365
11366Implemented support to allow Package objects to be passed as method
11367arguments to the external AcpiEvaluateObject interface. Previously, this
11368would return the AE_NOT_IMPLEMENTED exception. This feature had not been
11369implemented since there were no reserved control methods that required it
11370until recently.
11371
11372Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
11373that
11374contained invalid non-zero values in reserved fields could cause later
11375failures because these fields have meaning in later revisions of the
11376FADT.
11377For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
11378fields
11379are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
11380
11381Fixed a problem where the Global Lock handle was not properly updated if
11382a
11383thread that acquired the Global Lock via executing AML code then
11384attempted
11385to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
11386Joe
11387Liu.
11388
11389Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
11390could be corrupted if the interrupt being removed was at the head of the
11391list. Reported by Linn Crosetto.
11392
11393Example Code and Data Size: These are the sizes for the OS-independent
11394acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11395debug version of the code includes the debug output trace mechanism and
11396has
11397a much larger code and data size.
11398
11399  Previous Release:
11400    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11401    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
11402  Current Release:
11403    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
11404    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
11405
11406----------------------------------------
1140720 March 2007. Summary of changes for version 20070320:
11408
114091) ACPI CA Core Subsystem:
11410
11411Implemented a change to the order of interpretation and evaluation of AML
11412operand objects within the AML interpreter. The interpreter now evaluates
11413operands in the order that they appear in the AML stream (and the
11414corresponding ASL code), instead of in the reverse order (after the
11415entire
11416operand list has been parsed). The previous behavior caused several
11417subtle
11418incompatibilities with the Microsoft AML interpreter as well as being
11419somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
11420
11421Implemented a change to the ACPI Global Lock support. All interfaces to
11422the
11423global lock now allow the same thread to acquire the lock multiple times.
11424This affects the AcpiAcquireGlobalLock external interface to the global
11425lock
11426as well as the internal use of the global lock to support AML fields -- a
11427control method that is holding the global lock can now simultaneously
11428access
11429AML fields that require global lock protection. Previously, in both
11430cases,
11431this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
11432to
11433AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
11434Controller. There is no change to the behavior of the AML Acquire
11435operator,
11436as this can already be used to acquire a mutex multiple times by the same
11437thread. BZ 8066. With assistance from Alexey Starikovskiy.
11438
11439Fixed a problem where invalid objects could be referenced in the AML
11440Interpreter after error conditions. During operand evaluation, ensure
11441that
11442the internal "Return Object" field is cleared on error and only valid
11443pointers are stored there. Caused occasional access to deleted objects
11444that
11445resulted in "large reference count" warning messages. Valery Podrezov.
11446
11447Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
11448on
11449deeply nested control method invocations. BZ 7873, local BZ 487. Valery
11450Podrezov.
11451
11452Fixed an internal problem with the handling of result objects on the
11453interpreter result stack. BZ 7872. Valery Podrezov.
11454
11455Removed obsolete code that handled the case where AML_NAME_OP is the
11456target
11457of a reference (Reference.Opcode). This code was no longer necessary. BZ
114587874. Valery Podrezov.
11459
11460Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
11461was
11462a
11463remnant from the previously discontinued 16-bit support.
11464
11465Example Code and Data Size: These are the sizes for the OS-independent
11466acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11467debug version of the code includes the debug output trace mechanism and
11468has
11469a much larger code and data size.
11470
11471  Previous Release:
11472    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11473    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11474  Current Release:
11475    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11476    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
11477
11478----------------------------------------
1147926 January 2007. Summary of changes for version 20070126:
11480
114811) ACPI CA Core Subsystem:
11482
11483Added the 2007 copyright to all module headers and signons. This affects
11484virtually every file in the ACPICA core subsystem, the iASL compiler, and
11485the utilities.
11486
11487Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
11488during a table load. A bad pointer was passed in the case where the DSDT
11489is
11490overridden, causing a fault in this case.
11491
11492Example Code and Data Size: These are the sizes for the OS-independent
11493acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11494debug version of the code includes the debug output trace mechanism and
11495has
11496a much larger code and data size.
11497
11498  Previous Release:
11499    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11500    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11501  Current Release:
11502    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11503    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11504
11505----------------------------------------
1150615 December 2006. Summary of changes for version 20061215:
11507
115081) ACPI CA Core Subsystem:
11509
11510Support for 16-bit ACPICA has been completely removed since it is no
11511longer
11512necessary and it clutters the code. All 16-bit macros, types, and
11513conditional compiles have been removed, cleaning up and simplifying the
11514code
11515across the entire subsystem. DOS support is no longer needed since the
11516bootable Linux firmware kit is now available.
11517
11518The handler for the Global Lock is now removed during AcpiTerminate to
11519enable a clean subsystem restart, via the implementation of the
11520AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
11521HP)
11522
11523Implemented enhancements to the multithreading support within the
11524debugger
11525to enable improved multithreading debugging and evaluation of the
11526subsystem.
11527(Valery Podrezov)
11528
11529Debugger: Enhanced the Statistics/Memory command to emit the total
11530(maximum)
11531memory used during the execution, as well as the maximum memory consumed
11532by
11533each of the various object types. (Valery Podrezov)
11534
11535Example Code and Data Size: These are the sizes for the OS-independent
11536acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11537debug version of the code includes the debug output trace mechanism and
11538has
11539a much larger code and data size.
11540
11541  Previous Release:
11542    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11543    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11544  Current Release:
11545    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11546    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11547
11548
115492) iASL Compiler/Disassembler and Tools:
11550
11551AcpiExec: Implemented a new option (-m) to display full memory use
11552statistics upon subsystem/program termination. (Valery Podrezov)
11553
11554----------------------------------------
1155509 November 2006. Summary of changes for version 20061109:
11556
115571) ACPI CA Core Subsystem:
11558
11559Optimized the Load ASL operator in the case where the source operand is
11560an
11561operation region. Simply map the operation region memory, instead of
11562performing a bytewise read. (Region must be of type SystemMemory, see
11563below.)
11564
11565Fixed the Load ASL operator for the case where the source operand is a
11566region field. A buffer object is also allowed as the source operand. BZ
11567480
11568
11569Fixed a problem where the Load ASL operator allowed the source operand to
11570be
11571an operation region of any type. It is now restricted to regions of type
11572SystemMemory, as per the ACPI specification. BZ 481
11573
11574Additional cleanup and optimizations for the new Table Manager code.
11575
11576AcpiEnable will now fail if all of the required ACPI tables are not
11577loaded
11578(FADT, FACS, DSDT). BZ 477
11579
11580Added #pragma pack(8/4) to acobject.h to ensure that the structures in
11581this
11582header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
11583manually optimized to be aligned and will not work if it is byte-packed.
11584
11585Example Code and Data Size: These are the sizes for the OS-independent
11586acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11587debug version of the code includes the debug output trace mechanism and
11588has
11589a much larger code and data size.
11590
11591  Previous Release:
11592    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11593    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11594  Current Release:
11595    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11596    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11597
11598
115992) iASL Compiler/Disassembler and Tools:
11600
11601Fixed a problem where the presence of the _OSI predefined control method
11602within complex expressions could cause an internal compiler error.
11603
11604AcpiExec: Implemented full region support for multiple address spaces.
11605SpaceId is now part of the REGION object. BZ 429
11606
11607----------------------------------------
1160811 October 2006. Summary of changes for version 20061011:
11609
116101) ACPI CA Core Subsystem:
11611
11612Completed an AML interpreter performance enhancement for control method
11613execution. Previously a 2-pass parse/execution, control methods are now
11614completely parsed and executed in a single pass. This improves overall
11615interpreter performance by ~25%, reduces code size, and reduces CPU stack
11616use. (Valery Podrezov + interpreter changes in version 20051202 that
11617eliminated namespace loading during the pass one parse.)
11618
11619Implemented _CID support for PCI Root Bridge detection. If the _HID does
11620not
11621match the predefined PCI Root Bridge IDs, the _CID list (if present) is
11622now
11623obtained and also checked for an ID match.
11624
11625Implemented additional support for the PCI _ADR execution: upsearch until
11626a
11627device scope is found before executing _ADR. This allows PCI_Config
11628operation regions to be declared locally within control methods
11629underneath
11630PCI device objects.
11631
11632Fixed a problem with a possible race condition between threads executing
11633AcpiWalkNamespace and the AML interpreter. This condition was removed by
11634modifying AcpiWalkNamespace to (by default) ignore all temporary
11635namespace
11636entries created during any concurrent control method execution. An
11637additional namespace race condition is known to exist between
11638AcpiWalkNamespace and the Load/Unload ASL operators and is still under
11639investigation.
11640
11641Restructured the AML ParseLoop function, breaking it into several
11642subfunctions in order to reduce CPU stack use and improve
11643maintainability.
11644(Mikhail Kouzmich)
11645
11646AcpiGetHandle: Fix for parameter validation to detect invalid
11647combinations
11648of prefix handle and pathname. BZ 478
11649
11650Example Code and Data Size: These are the sizes for the OS-independent
11651acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11652debug version of the code includes the debug output trace mechanism and
11653has
11654a much larger code and data size.
11655
11656  Previous Release:
11657    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11658    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11659  Current Release:
11660    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11661    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11662
116632) iASL Compiler/Disassembler and Tools:
11664
11665Ported the -g option (get local ACPI tables) to the new ACPICA Table
11666Manager
11667to restore original behavior.
11668
11669----------------------------------------
1167027 September 2006. Summary of changes for version 20060927:
11671
116721) ACPI CA Core Subsystem:
11673
11674Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
11675These functions now use a spinlock for mutual exclusion and the interrupt
11676level indication flag is not needed.
11677
11678Fixed a problem with the Global Lock where the lock could appear to be
11679obtained before it is actually obtained. The global lock semaphore was
11680inadvertently created with one unit instead of zero units. (BZ 464)
11681Fiodor
11682Suietov.
11683
11684Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
11685during
11686a read from a buffer or region field. (BZ 458) Fiodor Suietov.
11687
11688Example Code and Data Size: These are the sizes for the OS-independent
11689acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11690debug version of the code includes the debug output trace mechanism and
11691has
11692a much larger code and data size.
11693
11694  Previous Release:
11695    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11696    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11697  Current Release:
11698    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11699    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11700
11701
117022) iASL Compiler/Disassembler and Tools:
11703
11704Fixed a compilation problem with the pre-defined Resource Descriptor
11705field
11706names where an "object does not exist" error could be incorrectly
11707generated
11708if the parent ResourceTemplate pathname places the template within a
11709different namespace scope than the current scope. (BZ 7212)
11710
11711Fixed a problem where the compiler could hang after syntax errors
11712detected
11713in an ElseIf construct. (BZ 453)
11714
11715Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
11716operator. An incorrect output filename was produced when this parameter
11717was
11718a null string (""). Now, the original input filename is used as the AML
11719output filename, with an ".aml" extension.
11720
11721Implemented a generic batch command mode for the AcpiExec utility
11722(execute
11723any AML debugger command) (Valery Podrezov).
11724
11725----------------------------------------
1172612 September 2006. Summary of changes for version 20060912:
11727
117281) ACPI CA Core Subsystem:
11729
11730Enhanced the implementation of the "serialized mode" of the interpreter
11731(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
11732specified, instead of creating a serialization semaphore per control
11733method,
11734the interpreter lock is simply no longer released before a blocking
11735operation during control method execution. This effectively makes the AML
11736Interpreter single-threaded. The overhead of a semaphore per-method is
11737eliminated.
11738
11739Fixed a regression where an error was no longer emitted if a control
11740method
11741attempts to create 2 objects of the same name. This once again returns
11742AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
11743that
11744will dynamically serialize the control method to possible prevent future
11745errors. (BZ 440)
11746
11747Integrated a fix for a problem with PCI Express HID detection in the PCI
11748Config Space setup procedure. (BZ 7145)
11749
11750Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
11751AcpiHwInitialize function - the FADT registers are now validated when the
11752table is loaded.
11753
11754Added two new warnings during FADT verification - 1) if the FADT is
11755larger
11756than the largest known FADT version, and 2) if there is a mismatch
11757between
11758a
1175932-bit block address and the 64-bit X counterpart (when both are non-
11760zero.)
11761
11762Example Code and Data Size: These are the sizes for the OS-independent
11763acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11764debug version of the code includes the debug output trace mechanism and
11765has
11766a much larger code and data size.
11767
11768  Previous Release:
11769    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11770    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11771  Current Release:
11772    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11773    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11774
11775
117762) iASL Compiler/Disassembler and Tools:
11777
11778Fixed a problem with the implementation of the Switch() operator where
11779the
11780temporary variable was declared too close to the actual Switch, instead
11781of
11782at method level. This could cause a problem if the Switch() operator is
11783within a while loop, causing an error on the second iteration. (BZ 460)
11784
11785Disassembler - fix for error emitted for unknown type for target of scope
11786operator. Now, ignore it and continue.
11787
11788Disassembly of an FADT now verifies the input FADT and reports any errors
11789found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11790
11791Disassembly of raw data buffers with byte initialization data now
11792prefixes
11793each output line with the current buffer offset.
11794
11795Disassembly of ASF! table now includes all variable-length data fields at
11796the end of some of the subtables.
11797
11798The disassembler now emits a comment if a buffer appears to be a
11799ResourceTemplate, but cannot be disassembled as such because the EndTag
11800does
11801not appear at the very end of the buffer.
11802
11803AcpiExec - Added the "-t" command line option to enable the serialized
11804mode
11805of the AML interpreter.
11806
11807----------------------------------------
1180831 August 2006. Summary of changes for version 20060831:
11809
118101) ACPI CA Core Subsystem:
11811
11812Miscellaneous fixes for the Table Manager:
11813- Correctly initialize internal common FADT for all 64-bit "X" fields
11814- Fixed a couple table mapping issues during table load
11815- Fixed a couple alignment issues for IA64
11816- Initialize input array to zero in AcpiInitializeTables
11817- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
11818AcpiGetTableByIndex
11819
11820Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11821now
11822immediately disabled to prevent the waking GPE from firing again and to
11823prevent other wake GPEs from interrupting the wake process.
11824
11825Added the AcpiGpeCount global that tracks the number of processed GPEs,
11826to
11827be used for debugging systems with a large number of ACPI interrupts.
11828
11829Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11830both the ACPICA headers and the disassembler.
11831
11832Example Code and Data Size: These are the sizes for the OS-independent
11833acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11834debug version of the code includes the debug output trace mechanism and
11835has
11836a much larger code and data size.
11837
11838  Previous Release:
11839    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11840    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11841  Current Release:
11842    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11843    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11844
11845
118462) iASL Compiler/Disassembler and Tools:
11847
11848Disassembler support for the DMAR ACPI table.
11849
11850----------------------------------------
1185123 August 2006. Summary of changes for version 20060823:
11852
118531) ACPI CA Core Subsystem:
11854
11855The Table Manager component has been completely redesigned and
11856reimplemented. The new design is much simpler, and reduces the overall
11857code
11858and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11859is
11860now possible to obtain the ACPI tables very early during kernel
11861initialization, even before dynamic memory management is initialized.
11862(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11863
11864Obsolete ACPICA interfaces:
11865
11866- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11867init
11868time).
11869- AcpiLoadTable: Not needed.
11870- AcpiUnloadTable: Not needed.
11871
11872New ACPICA interfaces:
11873
11874- AcpiInitializeTables: Must be called before the table manager can be
11875used.
11876- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11877allocated memory after it becomes available.
11878- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11879tables
11880in the RSDT/XSDT.
11881
11882Other ACPICA changes:
11883
11884- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11885Use
11886AcpiOsUnmapMemory to free this mapping.
11887- AcpiGetTable returns the actual mapped table. The mapping is managed
11888internally and must not be deleted by the caller. Use of this interface
11889causes no additional dynamic memory allocation.
11890- AcpiFindRootPointer: Support for physical addressing has been
11891eliminated,
11892it appeared to be unused.
11893- The interface to AcpiOsMapMemory has changed to be consistent with the
11894other allocation interfaces.
11895- The interface to AcpiOsGetRootPointer has changed to eliminate
11896unnecessary
11897parameters.
11898- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1189964-
11900bit platforms. Was previously 64 bits on all platforms.
11901- The interface to the ACPI Global Lock acquire/release macros have
11902changed
11903slightly since ACPICA no longer keeps a local copy of the FACS with a
11904constructed pointer to the actual global lock.
11905
11906Porting to the new table manager:
11907
11908- AcpiInitializeTables: Must be called once, and can be called anytime
11909during the OS initialization process. It allows the host to specify an
11910area
11911of memory to be used to store the internal version of the RSDT/XSDT (root
11912table). This allows the host to access ACPI tables before memory
11913management
11914is initialized and running.
11915- AcpiReallocateRootTable: Can be called after memory management is
11916running
11917to copy the root table to a dynamically allocated array, freeing up the
11918scratch memory specified in the call to AcpiInitializeTables.
11919- AcpiSubsystemInitialize: This existing interface is independent of the
11920Table Manager, and does not have to be called before the Table Manager
11921can
11922be used, it only must be called before the rest of ACPICA can be used.
11923- ACPI Tables: Some changes have been made to the names and structure of
11924the
11925actbl.h and actbl1.h header files and may require changes to existing
11926code.
11927For example, bitfields have been completely removed because of their lack
11928of
11929portability across C compilers.
11930- Update interfaces to the Global Lock acquire/release macros if local
11931versions are used. (see acwin.h)
11932
11933Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11934
11935New files: tbfind.c
11936
11937Example Code and Data Size: These are the sizes for the OS-independent
11938acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11939debug version of the code includes the debug output trace mechanism and
11940has
11941a much larger code and data size.
11942
11943  Previous Release:
11944    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11945    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11946  Current Release:
11947    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11948    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11949
11950
119512) iASL Compiler/Disassembler and Tools:
11952
11953No changes for this release.
11954
11955----------------------------------------
1195621 July 2006. Summary of changes for version 20060721:
11957
119581) ACPI CA Core Subsystem:
11959
11960The full source code for the ASL test suite used to validate the iASL
11961compiler and the ACPICA core subsystem is being released with the ACPICA
11962source for the first time. The source is contained in a separate package
11963and
11964consists of over 1100 files that exercise all ASL/AML operators. The
11965package
11966should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11967Fiodor
11968Suietov)
11969
11970Completed a new design and implementation for support of the ACPI Global
11971Lock. On the OS side, the global lock is now treated as a standard AML
11972mutex. Previously, multiple OS threads could "acquire" the global lock
11973simultaneously. However, this could cause the BIOS to be starved out of
11974the
11975lock - especially in cases such as the Embedded Controller driver where
11976there is a tight coupling between the OS and the BIOS.
11977
11978Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11979The Global Lock interrupt handler no longer queues the execution of a
11980separate thread to signal the global lock semaphore. Instead, the
11981semaphore
11982is signaled directly from the interrupt handler.
11983
11984Implemented support within the AML interpreter for package objects that
11985contain a larger AML length (package list length) than the package
11986element
11987count. In this case, the length of the package is truncated to match the
11988package element count. Some BIOS code apparently modifies the package
11989length
11990on the fly, and this change supports this behavior. Provides
11991compatibility
11992with the MS AML interpreter. (With assistance from Fiodor Suietov)
11993
11994Implemented a temporary fix for the BankValue parameter of a Bank Field
11995to
11996support all constant values, now including the Zero and One opcodes.
11997Evaluation of this parameter must eventually be converted to a full
11998TermArg
11999evaluation. A not-implemented error is now returned (temporarily) for
12000non-
12001constant values for this parameter.
12002
12003Fixed problem reports (Fiodor Suietov) integrated:
12004- Fix for premature object deletion after CopyObject on Operation Region
12005(BZ
12006350)
12007
12008Example Code and Data Size: These are the sizes for the OS-independent
12009acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12010debug version of the code includes the debug output trace mechanism and
12011has
12012a much larger code and data size.
12013
12014  Previous Release:
12015    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
12016    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
12017  Current Release:
12018    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
12019    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
12020
12021
120222) iASL Compiler/Disassembler and Tools:
12023
12024No changes for this release.
12025
12026----------------------------------------
1202707 July 2006. Summary of changes for version 20060707:
12028
120291) ACPI CA Core Subsystem:
12030
12031Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
12032that do not allow the initialization of address pointers within packed
12033structures - even though the hardware itself may support misaligned
12034transfers. Some of the debug data structures are packed by default to
12035minimize size.
12036
12037Added an error message for the case where AcpiOsGetThreadId() returns
12038zero.
12039A non-zero value is required by the core ACPICA code to ensure the proper
12040operation of AML mutexes and recursive control methods.
12041
12042The DSDT is now the only ACPI table that determines whether the AML
12043interpreter is in 32-bit or 64-bit mode. Not really a functional change,
12044but
12045the hooks for per-table 32/64 switching have been removed from the code.
12046A
12047clarification to the ACPI specification is forthcoming in ACPI 3.0B.
12048
12049Fixed a possible leak of an OwnerID in the error path of
12050AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
12051deletion to a single place in AcpiTbUninstallTable to correct possible
12052leaks
12053when using the AcpiTbDeleteTablesByType interface (with assistance from
12054Lance Ortiz.)
12055
12056Fixed a problem with Serialized control methods where the semaphore
12057associated with the method could be over-signaled after multiple method
12058invocations.
12059
12060Fixed two issues with the locking of the internal namespace data
12061structure.
12062Both the Unload() operator and AcpiUnloadTable interface now lock the
12063namespace during the namespace deletion associated with the table unload
12064(with assistance from Linn Crosetto.)
12065
12066Fixed problem reports (Valery Podrezov) integrated:
12067- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
12068
12069Fixed problem reports (Fiodor Suietov) integrated:
12070- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
12071- On Address Space handler deletion, needless deactivation call (BZ 374)
12072- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
12073375)
12074- Possible memory leak, Notify sub-objects of Processor, Power,
12075ThermalZone
12076(BZ 376)
12077- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
12078- Minimum Length of RSDT should be validated (BZ 379)
12079- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
12080Handler (BZ (380)
12081- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
12082loaded
12083(BZ 381)
12084
12085Example Code and Data Size: These are the sizes for the OS-independent
12086acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12087debug version of the code includes the debug output trace mechanism and
12088has
12089a much larger code and data size.
12090
12091  Previous Release:
12092    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
12093    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
12094  Current Release:
12095    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
12096    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
12097
12098
120992) iASL Compiler/Disassembler and Tools:
12100
12101Fixed problem reports:
12102Compiler segfault when ASL contains a long (>1024) String declaration (BZ
12103436)
12104
12105----------------------------------------
1210623 June 2006. Summary of changes for version 20060623:
12107
121081) ACPI CA Core Subsystem:
12109
12110Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
12111allows the type to be customized to the host OS for improved efficiency
12112(since a spinlock is usually a very small object.)
12113
12114Implemented support for "ignored" bits in the ACPI registers. According
12115to
12116the ACPI specification, these bits should be preserved when writing the
12117registers via a read/modify/write cycle. There are 3 bits preserved in
12118this
12119manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
12120
12121Implemented the initial deployment of new OSL mutex interfaces. Since
12122some
12123host operating systems have separate mutex and semaphore objects, this
12124feature was requested. The base code now uses mutexes (and the new mutex
12125interfaces) wherever a binary semaphore was used previously. However, for
12126the current release, the mutex interfaces are defined as macros to map
12127them
12128to the existing semaphore interfaces. Therefore, no OSL changes are
12129required
12130at this time. (See acpiosxf.h)
12131
12132Fixed several problems with the support for the control method SyncLevel
12133parameter. The SyncLevel now works according to the ACPI specification
12134and
12135in concert with the Mutex SyncLevel parameter, since the current
12136SyncLevel
12137is a property of the executing thread. Mutual exclusion for control
12138methods
12139is now implemented with a mutex instead of a semaphore.
12140
12141Fixed three instances of the use of the C shift operator in the bitfield
12142support code (exfldio.c) to avoid the use of a shift value larger than
12143the
12144target data width. The behavior of C compilers is undefined in this case
12145and
12146can cause unpredictable results, and therefore the case must be detected
12147and
12148avoided. (Fiodor Suietov)
12149
12150Added an info message whenever an SSDT or OEM table is loaded dynamically
12151via the Load() or LoadTable() ASL operators. This should improve
12152debugging
12153capability since it will show exactly what tables have been loaded
12154(beyond
12155the tables present in the RSDT/XSDT.)
12156
12157Example Code and Data Size: These are the sizes for the OS-independent
12158acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12159debug version of the code includes the debug output trace mechanism and
12160has
12161a much larger code and data size.
12162
12163  Previous Release:
12164    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
12165    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
12166  Current Release:
12167    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
12168    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
12169
12170
121712) iASL Compiler/Disassembler and Tools:
12172
12173No changes for this release.
12174
12175----------------------------------------
1217608 June 2006. Summary of changes for version 20060608:
12177
121781) ACPI CA Core Subsystem:
12179
12180Converted the locking mutex used for the ACPI hardware to a spinlock.
12181This
12182change should eliminate all problems caused by attempting to acquire a
12183semaphore at interrupt level, and it means that all ACPICA external
12184interfaces that directly access the ACPI hardware can be safely called
12185from
12186interrupt level. OSL code that implements the semaphore interfaces should
12187be
12188able to eliminate any workarounds for being called at interrupt level.
12189
12190Fixed a regression introduced in 20060526 where the ACPI device
12191initialization could be prematurely aborted with an AE_NOT_FOUND if a
12192device
12193did not have an optional _INI method.
12194
12195Fixed an IndexField issue where a write to the Data Register should be
12196limited in size to the AccessSize (width) of the IndexField itself. (BZ
12197433,
12198Fiodor Suietov)
12199
12200Fixed problem reports (Valery Podrezov) integrated:
12201- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
12202
12203Fixed problem reports (Fiodor Suietov) integrated:
12204- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
12205
12206Removed four global mutexes that were obsolete and were no longer being
12207used.
12208
12209Example Code and Data Size: These are the sizes for the OS-independent
12210acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12211debug version of the code includes the debug output trace mechanism and
12212has
12213a much larger code and data size.
12214
12215  Previous Release:
12216    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
12217    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
12218  Current Release:
12219    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
12220    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
12221
12222
122232) iASL Compiler/Disassembler and Tools:
12224
12225Fixed a fault when using -g option (get tables from registry) on Windows
12226machines.
12227
12228Fixed problem reports integrated:
12229- Generate error if CreateField NumBits parameter is zero. (BZ 405)
12230- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
12231Suietov)
12232- Global table revision override (-r) is ignored (BZ 413)
12233
12234----------------------------------------
1223526 May 2006. Summary of changes for version 20060526:
12236
122371) ACPI CA Core Subsystem:
12238
12239Restructured, flattened, and simplified the internal interfaces for
12240namespace object evaluation - resulting in smaller code, less CPU stack
12241use,
12242and fewer interfaces. (With assistance from Mikhail Kouzmich)
12243
12244Fixed a problem with the CopyObject operator where the first parameter
12245was
12246not typed correctly for the parser, interpreter, compiler, and
12247disassembler.
12248Caused various errors and unexpected behavior.
12249
12250Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
12251produced incorrect results with some C compilers. Since the behavior of C
12252compilers when the shift value is larger than the datatype width is
12253apparently not well defined, the interpreter now detects this condition
12254and
12255simply returns zero as expected in all such cases. (BZ 395)
12256
12257Fixed problem reports (Valery Podrezov) integrated:
12258- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
12259- Allow interpreter to handle nested method declarations (BZ 5361)
12260
12261Fixed problem reports (Fiodor Suietov) integrated:
12262- AcpiTerminate doesn't free debug memory allocation list objects (BZ
12263355)
12264- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
12265356)
12266- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
12267- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
12268- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
12269- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
12270- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
12271- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
12272- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
12273365)
12274- Status of the Global Initialization Handler call not used (BZ 366)
12275- Incorrect object parameter to Global Initialization Handler (BZ 367)
12276
12277Example Code and Data Size: These are the sizes for the OS-independent
12278acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12279debug version of the code includes the debug output trace mechanism and
12280has
12281a much larger code and data size.
12282
12283  Previous Release:
12284    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
12285    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
12286  Current Release:
12287    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
12288    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
12289
12290
122912) iASL Compiler/Disassembler and Tools:
12292
12293Modified the parser to allow the names IO, DMA, and IRQ to be used as
12294namespace identifiers with no collision with existing resource descriptor
12295macro names. This provides compatibility with other ASL compilers and is
12296most useful for disassembly/recompilation of existing tables without
12297parse
12298errors. (With assistance from Thomas Renninger)
12299
12300Disassembler: fixed an incorrect disassembly problem with the
12301DataTableRegion and CopyObject operators. Fixed a possible fault during
12302disassembly of some Alias operators.
12303
12304----------------------------------------
1230512 May 2006. Summary of changes for version 20060512:
12306
123071) ACPI CA Core Subsystem:
12308
12309Replaced the AcpiOsQueueForExecution interface with a new interface named
12310AcpiOsExecute. The major difference is that the new interface does not
12311have
12312a Priority parameter, this appeared to be useless and has been replaced
12313by
12314a
12315Type parameter. The Type tells the host what type of execution is being
12316requested, such as global lock handler, notify handler, GPE handler, etc.
12317This allows the host to queue and execute the request as appropriate for
12318the
12319request type, possibly using different work queues and different
12320priorities
12321for the various request types. This enables fixes for multithreading
12322deadlock problems such as BZ #5534, and will require changes to all
12323existing
12324OS interface layers. (Alexey Starikovskiy and Bob Moore)
12325
12326Fixed a possible memory leak associated with the support for the so-
12327called
12328"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
12329Suietov)
12330
12331Fixed a problem with the Load() operator where a table load from an
12332operation region could overwrite an internal table buffer by up to 7
12333bytes
12334and cause alignment faults on IPF systems. (With assistance from Luming
12335Yu)
12336
12337Example Code and Data Size: These are the sizes for the OS-independent
12338acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12339debug version of the code includes the debug output trace mechanism and
12340has
12341a much larger code and data size.
12342
12343  Previous Release:
12344    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
12345    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
12346  Current Release:
12347    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
12348    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
12349
12350
12351
123522) iASL Compiler/Disassembler and Tools:
12353
12354Disassembler: Implemented support to cross reference the internal
12355namespace
12356and automatically generate ASL External() statements for symbols not
12357defined
12358within the current table being disassembled. This will simplify the
12359disassembly and recompilation of interdependent tables such as SSDTs
12360since
12361these statements will no longer have to be added manually.
12362
12363Disassembler: Implemented experimental support to automatically detect
12364invocations of external control methods and generate appropriate
12365External()
12366statements. This is problematic because the AML cannot be correctly
12367parsed
12368until the number of arguments for each control method is known.
12369Currently,
12370standalone method invocations and invocations as the source operand of a
12371Store() statement are supported.
12372
12373Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
12374LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
12375LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
12376more readable and likely closer to the original ASL source.
12377
12378----------------------------------------
1237921 April 2006. Summary of changes for version 20060421:
12380
123811) ACPI CA Core Subsystem:
12382
12383Removed a device initialization optimization introduced in 20051216 where
12384the _STA method was not run unless an _INI was also present for the same
12385device. This optimization could cause problems because it could allow
12386_INI
12387methods to be run within a not-present device subtree. (If a not-present
12388device had no _INI, _STA would not be run, the not-present status would
12389not
12390be discovered, and the children of the device would be incorrectly
12391traversed.)
12392
12393Implemented a new _STA optimization where namespace subtrees that do not
12394contain _INI are identified and ignored during device initialization.
12395Selectively running _STA can significantly improve boot time on large
12396machines (with assistance from Len Brown.)
12397
12398Implemented support for the device initialization case where the returned
12399_STA flags indicate a device not-present but functioning. In this case,
12400_INI
12401is not run, but the device children are examined for presence, as per the
12402ACPI specification.
12403
12404Implemented an additional change to the IndexField support in order to
12405conform to MS behavior. The value written to the Index Register is not
12406simply a byte offset, it is a byte offset in units of the access width of
12407the parent Index Field. (Fiodor Suietov)
12408
12409Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
12410interface is called during the creation of all AML operation regions, and
12411allows the host OS to exert control over what addresses it will allow the
12412AML code to access. Operation Regions whose addresses are disallowed will
12413cause a runtime exception when they are actually accessed (will not
12414affect
12415or abort table loading.) See oswinxf or osunixxf for an example
12416implementation.
12417
12418Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
12419interface allows the host OS to match the various "optional"
12420interface/behavior strings for the _OSI predefined control method as
12421appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
12422for an example implementation.
12423
12424Restructured and corrected various problems in the exception handling
12425code
12426paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
12427(with assistance from Takayoshi Kochi.)
12428
12429Modified the Linux source converter to ignore quoted string literals
12430while
12431converting identifiers from mixed to lower case. This will correct
12432problems
12433with the disassembler and other areas where such strings must not be
12434modified.
12435
12436The ACPI_FUNCTION_* macros no longer require quotes around the function
12437name. This allows the Linux source converter to convert the names, now
12438that
12439the converter ignores quoted strings.
12440
12441Example Code and Data Size: These are the sizes for the OS-independent
12442acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12443debug version of the code includes the debug output trace mechanism and
12444has
12445a much larger code and data size.
12446
12447  Previous Release:
12448
12449    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
12450    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
12451  Current Release:
12452    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
12453    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
12454
12455
124562) iASL Compiler/Disassembler and Tools:
12457
12458Implemented 3 new warnings for iASL, and implemented multiple warning
12459levels
12460(w2 flag).
12461
124621) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
12463not
12464WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
12465check for the possible timeout, a warning is issued.
12466
124672) Useless operators: If an ASL operator does not specify an optional
12468target
12469operand and it also does not use the function return value from the
12470operator, a warning is issued since the operator effectively does
12471nothing.
12472
124733) Unreferenced objects: If a namespace object is created, but never
12474referenced, a warning is issued. This is a warning level 2 since there
12475are
12476cases where this is ok, such as when a secondary table is loaded that
12477uses
12478the unreferenced objects. Even so, care is taken to only flag objects
12479that
12480don't look like they will ever be used. For example, the reserved methods
12481(starting with an underscore) are usually not referenced because it is
12482expected that the OS will invoke them.
12483
12484----------------------------------------
1248531 March 2006. Summary of changes for version 20060331:
12486
124871) ACPI CA Core Subsystem:
12488
12489Implemented header file support for the following additional ACPI tables:
12490ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
12491support,
12492all current and known ACPI tables are now defined in the ACPICA headers
12493and
12494are available for use by device drivers and other software.
12495
12496Implemented support to allow tables that contain ACPI names with invalid
12497characters to be loaded. Previously, this would cause the table load to
12498fail, but since there are several known cases of such tables on existing
12499machines, this change was made to enable ACPI support for them. Also,
12500this
12501matches the behavior of the Microsoft ACPI implementation.
12502
12503Fixed a couple regressions introduced during the memory optimization in
12504the
1250520060317 release. The namespace node definition required additional
12506reorganization and an internal datatype that had been changed to 8-bit
12507was
12508restored to 32-bit. (Valery Podrezov)
12509
12510Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
12511could be passed through to AcpiOsReleaseObject which is unexpected. Such
12512null pointers are now trapped and ignored, matching the behavior of the
12513previous implementation before the deployment of AcpiOsReleaseObject.
12514(Valery Podrezov, Fiodor Suietov)
12515
12516Fixed a memory mapping leak during the deletion of a SystemMemory
12517operation
12518region where a cached memory mapping was not deleted. This became a
12519noticeable problem for operation regions that are defined within
12520frequently
12521used control methods. (Dana Meyers)
12522
12523Reorganized the ACPI table header files into two main files: one for the
12524ACPI tables consumed by the ACPICA core, and another for the
12525miscellaneous
12526ACPI tables that are consumed by the drivers and other software. The
12527various
12528FADT definitions were merged into one common section and three different
12529tables (ACPI 1.0, 1.0+, and 2.0)
12530
12531Example Code and Data Size: These are the sizes for the OS-independent
12532acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12533debug version of the code includes the debug output trace mechanism and
12534has
12535a much larger code and data size.
12536
12537  Previous Release:
12538    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12539    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12540  Current Release:
12541    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
12542    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
12543
12544
125452) iASL Compiler/Disassembler and Tools:
12546
12547Disassembler: Implemented support to decode and format all non-AML ACPI
12548tables (tables other than DSDTs and SSDTs.) This includes the new tables
12549added to the ACPICA headers, therefore all current and known ACPI tables
12550are
12551supported.
12552
12553Disassembler: The change to allow ACPI names with invalid characters also
12554enables the disassembly of such tables. Invalid characters within names
12555are
12556changed to '*' to make the name printable; the iASL compiler will still
12557generate an error for such names, however, since this is an invalid ACPI
12558character.
12559
12560Implemented an option for AcpiXtract (-a) to extract all tables found in
12561the
12562input file. The default invocation extracts only the DSDTs and SSDTs.
12563
12564Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
12565makefile for the AcpiXtract utility.
12566
12567----------------------------------------
1256817 March 2006. Summary of changes for version 20060317:
12569
125701) ACPI CA Core Subsystem:
12571
12572Implemented the use of a cache object for all internal namespace nodes.
12573Since there are about 1000 static nodes in a typical system, this will
12574decrease memory use for cache implementations that minimize per-
12575allocation
12576overhead (such as a slab allocator.)
12577
12578Removed the reference count mechanism for internal namespace nodes, since
12579it
12580was deemed unnecessary. This reduces the size of each namespace node by
12581about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
12582case,
12583and 32 bytes for the 64-bit case.
12584
12585Optimized several internal data structures to reduce object size on 64-
12586bit
12587platforms by packing data within the 64-bit alignment. This includes the
12588frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
12589instances corresponding to the namespace objects.
12590
12591Added two new strings for the predefined _OSI method: "Windows 2001.1
12592SP1"
12593and "Windows 2006".
12594
12595Split the allocation tracking mechanism out to a separate file, from
12596utalloc.c to uttrack.c. This mechanism appears to be only useful for
12597application-level code. Kernels may wish to not include uttrack.c in
12598distributions.
12599
12600Removed all remnants of the obsolete ACPI_REPORT_* macros and the
12601associated
12602code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
12603macros.)
12604
12605Code and Data Size: These are the sizes for the acpica.lib produced by
12606the
12607Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12608ACPI
12609driver or OSPM code. The debug version of the code includes the debug
12610output
12611trace mechanism and has a much larger code and data size. Note that these
12612values will vary depending on the efficiency of the compiler and the
12613compiler options used during generation.
12614
12615  Previous Release:
12616    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12617    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12618  Current Release:
12619    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12620    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12621
12622
126232) iASL Compiler/Disassembler and Tools:
12624
12625Implemented an ANSI C version of the acpixtract utility. This version
12626will
12627automatically extract the DSDT and all SSDTs from the input acpidump text
12628file and dump the binary output to separate files. It can also display a
12629summary of the input file including the headers for each table found and
12630will extract any single ACPI table, with any signature. (See
12631source/tools/acpixtract)
12632
12633----------------------------------------
1263410 March 2006. Summary of changes for version 20060310:
12635
126361) ACPI CA Core Subsystem:
12637
12638Tagged all external interfaces to the subsystem with the new
12639ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
12640assist
12641kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
12642macro. The default definition is NULL.
12643
12644Added the ACPI_THREAD_ID type for the return value from
12645AcpiOsGetThreadId.
12646This allows the host to define this as necessary to simplify kernel
12647integration. The default definition is ACPI_NATIVE_UINT.
12648
12649Fixed two interpreter problems related to error processing, the deletion
12650of
12651objects, and placing invalid pointers onto the internal operator result
12652stack. BZ 6028, 6151 (Valery Podrezov)
12653
12654Increased the reference count threshold where a warning is emitted for
12655large
12656reference counts in order to eliminate unnecessary warnings on systems
12657with
12658large namespaces (especially 64-bit.) Increased the value from 0x400 to
126590x800.
12660
12661Due to universal disagreement as to the meaning of the 'c' in the
12662calloc()
12663function, the ACPI_MEM_CALLOCATE macro has been renamed to
12664ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
12665ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
12666ACPI_FREE.
12667
12668Code and Data Size: These are the sizes for the acpica.lib produced by
12669the
12670Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12671ACPI
12672driver or OSPM code. The debug version of the code includes the debug
12673output
12674trace mechanism and has a much larger code and data size. Note that these
12675values will vary depending on the efficiency of the compiler and the
12676compiler options used during generation.
12677
12678  Previous Release:
12679    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12680    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12681  Current Release:
12682    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12683    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12684
12685
126862) iASL Compiler/Disassembler:
12687
12688Disassembler: implemented support for symbolic resource descriptor
12689references. If a CreateXxxxField operator references a fixed offset
12690within
12691a
12692resource descriptor, a name is assigned to the descriptor and the offset
12693is
12694translated to the appropriate resource tag and pathname. The addition of
12695this support brings the disassembled code very close to the original ASL
12696source code and helps eliminate run-time errors when the disassembled
12697code
12698is modified (and recompiled) in such a way as to invalidate the original
12699fixed offsets.
12700
12701Implemented support for a Descriptor Name as the last parameter to the
12702ASL
12703Register() macro. This parameter was inadvertently left out of the ACPI
12704specification, and will be added for ACPI 3.0b.
12705
12706Fixed a problem where the use of the "_OSI" string (versus the full path
12707"\_OSI") caused an internal compiler error. ("No back ptr to op")
12708
12709Fixed a problem with the error message that occurs when an invalid string
12710is
12711used for a _HID object (such as one with an embedded asterisk:
12712"*PNP010A".)
12713The correct message is now displayed.
12714
12715----------------------------------------
1271617 February 2006. Summary of changes for version 20060217:
12717
127181) ACPI CA Core Subsystem:
12719
12720Implemented a change to the IndexField support to match the behavior of
12721the
12722Microsoft AML interpreter. The value written to the Index register is now
12723a
12724byte offset, no longer an index based upon the width of the Data
12725register.
12726This should fix IndexField problems seen on some machines where the Data
12727register is not exactly one byte wide. The ACPI specification will be
12728clarified on this point.
12729
12730Fixed a problem where several resource descriptor types could overrun the
12731internal descriptor buffer due to size miscalculation: VendorShort,
12732VendorLong, and Interrupt. This was noticed on IA64 machines, but could
12733affect all platforms.
12734
12735Fixed a problem where individual resource descriptors were misaligned
12736within
12737the internal buffer, causing alignment faults on IA64 platforms.
12738
12739Code and Data Size: These are the sizes for the acpica.lib produced by
12740the
12741Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12742ACPI
12743driver or OSPM code. The debug version of the code includes the debug
12744output
12745trace mechanism and has a much larger code and data size. Note that these
12746values will vary depending on the efficiency of the compiler and the
12747compiler options used during generation.
12748
12749  Previous Release:
12750    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12751    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12752  Current Release:
12753    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12754    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12755
12756
127572) iASL Compiler/Disassembler:
12758
12759Implemented support for new reserved names: _WDG and _WED are Microsoft
12760extensions for Windows Instrumentation Management, _TDL is a new ACPI-
12761defined method (Throttling Depth Limit.)
12762
12763Fixed a problem where a zero-length VendorShort or VendorLong resource
12764descriptor was incorrectly emitted as a descriptor of length one.
12765
12766----------------------------------------
1276710 February 2006. Summary of changes for version 20060210:
12768
127691) ACPI CA Core Subsystem:
12770
12771Removed a couple of extraneous ACPI_ERROR messages that appeared during
12772normal execution. These became apparent after the conversion from
12773ACPI_DEBUG_PRINT.
12774
12775Fixed a problem where the CreateField operator could hang if the BitIndex
12776or
12777NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12778
12779Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12780failed with an exception. This also fixes a couple of related RefOf and
12781DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12782
12783Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12784of
12785AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12786BZ
127875480)
12788
12789Implemented a memory cleanup at the end of the execution of each
12790iteration
12791of an AML While() loop, preventing the accumulation of outstanding
12792objects.
12793(Valery Podrezov, BZ 5427)
12794
12795Eliminated a chunk of duplicate code in the object resolution code.
12796(Valery
12797Podrezov, BZ 5336)
12798
12799Fixed several warnings during the 64-bit code generation.
12800
12801The AcpiSrc source code conversion tool now inserts one line of
12802whitespace
12803after an if() statement that is followed immediately by a comment,
12804improving
12805readability of the Linux code.
12806
12807Code and Data Size: The current and previous library sizes for the core
12808subsystem are shown below. These are the code and data sizes for the
12809acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12810These
12811values do not include any ACPI driver or OSPM code. The debug version of
12812the
12813code includes the debug output trace mechanism and has a much larger code
12814and data size. Note that these values will vary depending on the
12815efficiency
12816of the compiler and the compiler options used during generation.
12817
12818  Previous Release:
12819    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12820    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12821  Current Release:
12822    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12823    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12824
12825
128262) iASL Compiler/Disassembler:
12827
12828Fixed a problem with the disassembly of a BankField operator with a
12829complex
12830expression for the BankValue parameter.
12831
12832----------------------------------------
1283327 January 2006. Summary of changes for version 20060127:
12834
128351) ACPI CA Core Subsystem:
12836
12837Implemented support in the Resource Manager to allow unresolved
12838namestring
12839references within resource package objects for the _PRT method. This
12840support
12841is in addition to the previously implemented unresolved reference support
12842within the AML parser. If the interpreter slack mode is enabled, these
12843unresolved references will be passed through to the caller as a NULL
12844package
12845entry.
12846
12847Implemented and deployed new macros and functions for error and warning
12848messages across the subsystem. These macros are simpler and generate less
12849code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12850ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12851macros remain defined to allow ACPI drivers time to migrate to the new
12852macros.
12853
12854Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12855the
12856Acquire/Release Lock OSL interfaces.
12857
12858Fixed a problem where Alias ASL operators are sometimes not correctly
12859resolved, in both the interpreter and the iASL compiler.
12860
12861Fixed several problems with the implementation of the
12862ConcatenateResTemplate
12863ASL operator. As per the ACPI specification, zero length buffers are now
12864treated as a single EndTag. One-length buffers always cause a fatal
12865exception. Non-zero length buffers that do not end with a full 2-byte
12866EndTag
12867cause a fatal exception.
12868
12869Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12870interface. (With assistance from Thomas Renninger)
12871
12872Code and Data Size: The current and previous library sizes for the core
12873subsystem are shown below. These are the code and data sizes for the
12874acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12875These
12876values do not include any ACPI driver or OSPM code. The debug version of
12877the
12878code includes the debug output trace mechanism and has a much larger code
12879and data size. Note that these values will vary depending on the
12880efficiency
12881of the compiler and the compiler options used during generation.
12882
12883  Previous Release:
12884    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12885    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12886  Current Release:
12887    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12888    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12889
12890
128912) iASL Compiler/Disassembler:
12892
12893Fixed an internal error that was generated for any forward references to
12894ASL
12895Alias objects.
12896
12897----------------------------------------
1289813 January 2006. Summary of changes for version 20060113:
12899
129001) ACPI CA Core Subsystem:
12901
12902Added 2006 copyright to all module headers and signons. This affects
12903virtually every file in the ACPICA core subsystem, iASL compiler, and the
12904utilities.
12905
12906Enhanced the ACPICA error reporting in order to simplify user migration
12907to
12908the non-debug version of ACPICA. Replaced all instances of the
12909ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12910debug
12911levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12912respectively. This preserves all error and warning messages in the non-
12913debug
12914version of the ACPICA code (this has been referred to as the "debug lite"
12915option.) Over 200 cases were converted to create a total of over 380
12916error/warning messages across the ACPICA code. This increases the code
12917and
12918data size of the default non-debug version of the code somewhat (about
1291913K),
12920but all error/warning reporting may be disabled if desired (and code
12921eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12922configuration option. The size of the debug version of ACPICA remains
12923about
12924the same.
12925
12926Fixed a memory leak within the AML Debugger "Set" command. One object was
12927not properly deleted for every successful invocation of the command.
12928
12929Code and Data Size: The current and previous library sizes for the core
12930subsystem are shown below. These are the code and data sizes for the
12931acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12932These
12933values do not include any ACPI driver or OSPM code. The debug version of
12934the
12935code includes the debug output trace mechanism and has a much larger code
12936and data size. Note that these values will vary depending on the
12937efficiency
12938of the compiler and the compiler options used during generation.
12939
12940  Previous Release:
12941    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12942    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12943  Current Release:
12944    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12945    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12946
12947
129482) iASL Compiler/Disassembler:
12949
12950The compiler now officially supports the ACPI 3.0a specification that was
12951released on December 30, 2005. (Specification is available at
12952www.acpi.info)
12953
12954----------------------------------------
1295516 December 2005. Summary of changes for version 20051216:
12956
129571) ACPI CA Core Subsystem:
12958
12959Implemented optional support to allow unresolved names within ASL Package
12960objects. A null object is inserted in the package when a named reference
12961cannot be located in the current namespace. Enabled via the interpreter
12962slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12963machines
12964that contain such code.
12965
12966Implemented an optimization to the initialization sequence that can
12967improve
12968boot time. During ACPI device initialization, the _STA method is now run
12969if
12970and only if the _INI method exists. The _STA method is used to determine
12971if
12972the device is present; An _INI can only be run if _STA returns present,
12973but
12974it is a waste of time to run the _STA method if the _INI does not exist.
12975(Prototype and assistance from Dong Wei)
12976
12977Implemented use of the C99 uintptr_t for the pointer casting macros if it
12978is
12979available in the current compiler. Otherwise, the default (void *) cast
12980is
12981used as before.
12982
12983Fixed some possible memory leaks found within the execution path of the
12984Break, Continue, If, and CreateField operators. (Valery Podrezov)
12985
12986Fixed a problem introduced in the 20051202 release where an exception is
12987generated during method execution if a control method attempts to declare
12988another method.
12989
12990Moved resource descriptor string constants that are used by both the AML
12991disassembler and AML debugger to the common utilities directory so that
12992these components are independent.
12993
12994Implemented support in the AcpiExec utility (-e switch) to globally
12995ignore
12996exceptions during control method execution (method is not aborted.)
12997
12998Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12999generation.
13000
13001Code and Data Size: The current and previous library sizes for the core
13002subsystem are shown below. These are the code and data sizes for the
13003acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13004These
13005values do not include any ACPI driver or OSPM code. The debug version of
13006the
13007code includes the debug output trace mechanism and has a much larger code
13008and data size. Note that these values will vary depending on the
13009efficiency
13010of the compiler and the compiler options used during generation.
13011
13012  Previous Release:
13013    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
13014    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
13015  Current Release:
13016    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
13017    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
13018
13019
130202) iASL Compiler/Disassembler:
13021
13022Fixed a problem where a CPU stack overflow fault could occur if a
13023recursive
13024method call was made from within a Return statement.
13025
13026----------------------------------------
1302702 December 2005. Summary of changes for version 20051202:
13028
130291) ACPI CA Core Subsystem:
13030
13031Modified the parsing of control methods to no longer create namespace
13032objects during the first pass of the parse. Objects are now created only
13033during the execute phase, at the moment the namespace creation operator
13034is
13035encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
13036This
13037should eliminate ALREADY_EXISTS exceptions seen on some machines where
13038reentrant control methods are protected by an AML mutex. The mutex will
13039now
13040correctly block multiple threads from attempting to create the same
13041object
13042more than once.
13043
13044Increased the number of available Owner Ids for namespace object tracking
13045from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
13046on
13047some machines with a large number of ACPI tables (either static or
13048dynamic).
13049
13050Fixed a problem with the AcpiExec utility where a fault could occur when
13051the
13052-b switch (batch mode) is used.
13053
13054Enhanced the namespace dump routine to output the owner ID for each
13055namespace object.
13056
13057Code and Data Size: The current and previous library sizes for the core
13058subsystem are shown below. These are the code and data sizes for the
13059acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13060These
13061values do not include any ACPI driver or OSPM code. The debug version of
13062the
13063code includes the debug output trace mechanism and has a much larger code
13064and data size. Note that these values will vary depending on the
13065efficiency
13066of the compiler and the compiler options used during generation.
13067
13068  Previous Release:
13069    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
13070    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13071  Current Release:
13072    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
13073    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
13074
13075
130762) iASL Compiler/Disassembler:
13077
13078Fixed a parse error during compilation of certain Switch/Case constructs.
13079To
13080simplify the parse, the grammar now allows for multiple Default
13081statements
13082and this error is now detected and flagged during the analysis phase.
13083
13084Disassembler: The disassembly now includes the contents of the original
13085table header within a comment at the start of the file. This includes the
13086name and version of the original ASL compiler.
13087
13088----------------------------------------
1308917 November 2005. Summary of changes for version 20051117:
13090
130911) ACPI CA Core Subsystem:
13092
13093Fixed a problem in the AML parser where the method thread count could be
13094decremented below zero if any errors occurred during the method parse
13095phase.
13096This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
13097machines.
13098This also fixed a related regression with the mechanism that detects and
13099corrects methods that cannot properly handle reentrancy (related to the
13100deployment of the new OwnerId mechanism.)
13101
13102Eliminated the pre-parsing of control methods (to detect errors) during
13103table load. Related to the problem above, this was causing unwind issues
13104if
13105any errors occurred during the parse, and it seemed to be overkill. A
13106table
13107load should not be aborted if there are problems with any single control
13108method, thus rendering this feature rather pointless.
13109
13110Fixed a problem with the new table-driven resource manager where an
13111internal
13112buffer overflow could occur for small resource templates.
13113
13114Implemented a new external interface, AcpiGetVendorResource. This
13115interface
13116will find and return a vendor-defined resource descriptor within a _CRS
13117or
13118_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
13119Helgaas.
13120
13121Removed the length limit (200) on string objects as per the upcoming ACPI
131223.0A specification. This affects the following areas of the interpreter:
131231)
13124any implicit conversion of a Buffer to a String, 2) a String object
13125result
13126of the ASL Concatenate operator, 3) the String object result of the ASL
13127ToString operator.
13128
13129Fixed a problem in the Windows OS interface layer (OSL) where a
13130WAIT_FOREVER
13131on a semaphore object would incorrectly timeout. This allows the
13132multithreading features of the AcpiExec utility to work properly under
13133Windows.
13134
13135Updated the Linux makefiles for the iASL compiler and AcpiExec to include
13136the recently added file named "utresrc.c".
13137
13138Code and Data Size: The current and previous library sizes for the core
13139subsystem are shown below. These are the code and data sizes for the
13140acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13141These
13142values do not include any ACPI driver or OSPM code. The debug version of
13143the
13144code includes the debug output trace mechanism and has a much larger code
13145and data size. Note that these values will vary depending on the
13146efficiency
13147of the compiler and the compiler options used during generation.
13148
13149  Previous Release:
13150    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
13151    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13152  Current Release:
13153    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
13154    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13155
13156
131572) iASL Compiler/Disassembler:
13158
13159Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
13160specification. For the iASL compiler, this means that string literals
13161within
13162the source ASL can be of any length.
13163
13164Enhanced the listing output to dump the AML code for resource descriptors
13165immediately after the ASL code for each descriptor, instead of in a block
13166at
13167the end of the entire resource template.
13168
13169Enhanced the compiler debug output to dump the entire original parse tree
13170constructed during the parse phase, before any transforms are applied to
13171the
13172tree. The transformed tree is dumped also.
13173
13174----------------------------------------
1317502 November 2005. Summary of changes for version 20051102:
13176
131771) ACPI CA Core Subsystem:
13178
13179Modified the subsystem initialization sequence to improve GPE support.
13180The
13181GPE initialization has been split into two parts in order to defer
13182execution
13183of the _PRW methods (Power Resources for Wake) until after the hardware
13184is
13185fully initialized and the SCI handler is installed. This allows the _PRW
13186methods to access fields protected by the Global Lock. This will fix
13187systems
13188where a NO_GLOBAL_LOCK exception has been seen during initialization.
13189
13190Converted the ACPI internal object disassemble and display code within
13191the
13192AML debugger to fully table-driven operation, reducing code size and
13193increasing maintainability.
13194
13195Fixed a regression with the ConcatenateResTemplate() ASL operator
13196introduced
13197in the 20051021 release.
13198
13199Implemented support for "local" internal ACPI object types within the
13200debugger "Object" command and the AcpiWalkNamespace external interfaces.
13201These local types include RegionFields, BankFields, IndexFields, Alias,
13202and
13203reference objects.
13204
13205Moved common AML resource handling code into a new file, "utresrc.c".
13206This
13207code is shared by both the Resource Manager and the AML Debugger.
13208
13209Code and Data Size: The current and previous library sizes for the core
13210subsystem are shown below. These are the code and data sizes for the
13211acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13212These
13213values do not include any ACPI driver or OSPM code. The debug version of
13214the
13215code includes the debug output trace mechanism and has a much larger code
13216and data size. Note that these values will vary depending on the
13217efficiency
13218of the compiler and the compiler options used during generation.
13219
13220  Previous Release:
13221    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
13222    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
13223  Current Release:
13224    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
13225    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13226
13227
132282) iASL Compiler/Disassembler:
13229
13230Fixed a problem with very large initializer lists (more than 4000
13231elements)
13232for both Buffer and Package objects where the parse stack could overflow.
13233
13234Enhanced the pre-compile source code scan for non-ASCII characters to
13235ignore
13236characters within comment fields. The scan is now always performed and is
13237no
13238longer optional, detecting invalid characters within a source file
13239immediately rather than during the parse phase or later.
13240
13241Enhanced the ASL grammar definition to force early reductions on all
13242list-
13243style grammar elements so that the overall parse stack usage is greatly
13244reduced. This should improve performance and reduce the possibility of
13245parse
13246stack overflow.
13247
13248Eliminated all reduce/reduce conflicts in the iASL parser generation.
13249Also,
13250with the addition of a %expected statement, the compiler generates from
13251source with no warnings.
13252
13253Fixed a possible segment fault in the disassembler if the input filename
13254does not contain a "dot" extension (Thomas Renninger).
13255
13256----------------------------------------
1325721 October 2005. Summary of changes for version 20051021:
13258
132591) ACPI CA Core Subsystem:
13260
13261Implemented support for the EM64T and other x86-64 processors. This
13262essentially entails recognizing that these processors support non-aligned
13263memory transfers. Previously, all 64-bit processors were assumed to lack
13264hardware support for non-aligned transfers.
13265
13266Completed conversion of the Resource Manager to nearly full table-driven
13267operation. Specifically, the resource conversion code (convert AML to
13268internal format and the reverse) and the debug code to dump internal
13269resource descriptors are fully table-driven, reducing code and data size
13270and
13271improving maintainability.
13272
13273The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
13274word
13275on 64-bit processors instead of a fixed 32-bit word. (With assistance
13276from
13277Alexey Starikovskiy)
13278
13279Implemented support within the resource conversion code for the Type-
13280Specific byte within the various ACPI 3.0 *WordSpace macros.
13281
13282Fixed some issues within the resource conversion code for the type-
13283specific
13284flags for both Memory and I/O address resource descriptors. For Memory,
13285implemented support for the MTP and TTP flags. For I/O, split the TRS and
13286TTP flags into two separate fields.
13287
13288Code and Data Size: The current and previous library sizes for the core
13289subsystem are shown below. These are the code and data sizes for the
13290acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13291These
13292values do not include any ACPI driver or OSPM code. The debug version of
13293the
13294code includes the debug output trace mechanism and has a much larger code
13295and data size. Note that these values will vary depending on the
13296efficiency
13297of the compiler and the compiler options used during generation.
13298
13299  Previous Release:
13300    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
13301    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
13302  Current Release:
13303    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
13304    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
13305
13306
13307
133082) iASL Compiler/Disassembler:
13309
13310Relaxed a compiler restriction that disallowed a ResourceIndex byte if
13311the
13312corresponding ResourceSource string was not also present in a resource
13313descriptor declaration. This restriction caused problems with existing
13314AML/ASL code that includes the Index byte without the string. When such
13315AML
13316was disassembled, it could not be compiled without modification. Further,
13317the modified code created a resource template with a different size than
13318the
13319original, breaking code that used fixed offsets into the resource
13320template
13321buffer.
13322
13323Removed a recent feature of the disassembler to ignore a lone
13324ResourceIndex
13325byte. This byte is now emitted if present so that the exact AML can be
13326reproduced when the disassembled code is recompiled.
13327
13328Improved comments and text alignment for the resource descriptor code
13329emitted by the disassembler.
13330
13331Implemented disassembler support for the ACPI 3.0 AccessSize field within
13332a
13333Register() resource descriptor.
13334
13335----------------------------------------
1333630 September 2005. Summary of changes for version 20050930:
13337
133381) ACPI CA Core Subsystem:
13339
13340Completed a major overhaul of the Resource Manager code - specifically,
13341optimizations in the area of the AML/internal resource conversion code.
13342The
13343code has been optimized to simplify and eliminate duplicated code, CPU
13344stack
13345use has been decreased by optimizing function parameters and local
13346variables, and naming conventions across the manager have been
13347standardized
13348for clarity and ease of maintenance (this includes function, parameter,
13349variable, and struct/typedef names.) The update may force changes in some
13350driver code, depending on how resources are handled by the host OS.
13351
13352All Resource Manager dispatch and information tables have been moved to a
13353single location for clarity and ease of maintenance. One new file was
13354created, named "rsinfo.c".
13355
13356The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
13357guarantee that the argument is not evaluated twice, making them less
13358prone
13359to macro side-effects. However, since there exists the possibility of
13360additional stack use if a particular compiler cannot optimize them (such
13361as
13362in the debug generation case), the original macros are optionally
13363available.
13364Note that some invocations of the return_VALUE macro may now cause size
13365mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
13366to
13367eliminate these. (From Randy Dunlap)
13368
13369Implemented a new mechanism to enable debug tracing for individual
13370control
13371methods. A new external interface, AcpiDebugTrace, is provided to enable
13372this mechanism. The intent is to allow the host OS to easily enable and
13373disable tracing for problematic control methods. This interface can be
13374easily exposed to a user or debugger interface if desired. See the file
13375psxface.c for details.
13376
13377AcpiUtCallocate will now return a valid pointer if a length of zero is
13378specified - a length of one is used and a warning is issued. This matches
13379the behavior of AcpiUtAllocate.
13380
13381Code and Data Size: The current and previous library sizes for the core
13382subsystem are shown below. These are the code and data sizes for the
13383acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13384These
13385values do not include any ACPI driver or OSPM code. The debug version of
13386the
13387code includes the debug output trace mechanism and has a much larger code
13388and data size. Note that these values will vary depending on the
13389efficiency
13390of the compiler and the compiler options used during generation.
13391
13392  Previous Release:
13393    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
13394    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
13395  Current Release:
13396    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
13397    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
13398
13399
134002) iASL Compiler/Disassembler:
13401
13402A remark is issued if the effective compile-time length of a package or
13403buffer is zero. Previously, this was a warning.
13404
13405----------------------------------------
1340616 September 2005. Summary of changes for version 20050916:
13407
134081) ACPI CA Core Subsystem:
13409
13410Fixed a problem within the Resource Manager where support for the Generic
13411Register descriptor was not fully implemented. This descriptor is now
13412fully
13413recognized, parsed, disassembled, and displayed.
13414
13415Completely restructured the Resource Manager code to utilize table-driven
13416dispatch and lookup, eliminating many of the large switch() statements.
13417This
13418reduces overall subsystem code size and code complexity. Affects the
13419resource parsing and construction, disassembly, and debug dump output.
13420
13421Cleaned up and restructured the debug dump output for all resource
13422descriptors. Improved readability of the output and reduced code size.
13423
13424Fixed a problem where changes to internal data structures caused the
13425optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
13426
13427Code and Data Size: The current and previous library sizes for the core
13428subsystem are shown below. These are the code and data sizes for the
13429acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13430These
13431values do not include any ACPI driver or OSPM code. The debug version of
13432the
13433code includes the debug output trace mechanism and has a much larger code
13434and data size. Note that these values will vary depending on the
13435efficiency
13436of the compiler and the compiler options used during generation.
13437
13438  Previous Release:
13439    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
13440    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
13441  Current Release:
13442    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
13443    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
13444
13445
134462) iASL Compiler/Disassembler:
13447
13448Updated the disassembler to automatically insert an EndDependentFn()
13449macro
13450into the ASL stream if this macro is missing in the original AML code,
13451simplifying compilation of the resulting ASL module.
13452
13453Fixed a problem in the disassembler where a disassembled ResourceSource
13454string (within a large resource descriptor) was not surrounded by quotes
13455and
13456not followed by a comma, causing errors when the resulting ASL module was
13457compiled. Also, escape sequences within a ResourceSource string are now
13458handled correctly (especially "\\")
13459
13460----------------------------------------
1346102 September 2005. Summary of changes for version 20050902:
13462
134631) ACPI CA Core Subsystem:
13464
13465Fixed a problem with the internal Owner ID allocation and deallocation
13466mechanisms for control method execution and recursive method invocation.
13467This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
13468messages seen on some systems. Recursive method invocation depth is
13469currently limited to 255. (Alexey Starikovskiy)
13470
13471Completely eliminated all vestiges of support for the "module-level
13472executable code" until this support is fully implemented and debugged.
13473This
13474should eliminate the NO_RETURN_VALUE exceptions seen during table load on
13475some systems that invoke this support.
13476
13477Fixed a problem within the resource manager code where the transaction
13478flags
13479for a 64-bit address descriptor were handled incorrectly in the type-
13480specific flag byte.
13481
13482Consolidated duplicate code within the address descriptor resource
13483manager
13484code, reducing overall subsystem code size.
13485
13486Fixed a fault when using the AML debugger "disassemble" command to
13487disassemble individual control methods.
13488
13489Removed references to the "release_current" directory within the Unix
13490release package.
13491
13492Code and Data Size: The current and previous core subsystem library sizes
13493are shown below. These are the code and data sizes for the acpica.lib
13494produced by the Microsoft Visual C++ 6.0 compiler. These values do not
13495include any ACPI driver or OSPM code. The debug version of the code
13496includes
13497the debug output trace mechanism and has a much larger code and data
13498size.
13499Note that these values will vary depending on the efficiency of the
13500compiler
13501and the compiler options used during generation.
13502
13503  Previous Release:
13504    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13505    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13506  Current Release:
13507    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
13508    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
13509
13510
135112) iASL Compiler/Disassembler:
13512
13513Implemented an error check for illegal duplicate values in the interrupt
13514and
13515dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
13516Interrupt().
13517
13518Implemented error checking for the Irq() and IrqNoFlags() macros to
13519detect
13520too many values in the interrupt list (16 max) and invalid values in the
13521list (range 0 - 15)
13522
13523The maximum length string literal within an ASL file is now restricted to
13524200 characters as per the ACPI specification.
13525
13526Fixed a fault when using the -ln option (generate namespace listing).
13527
13528Implemented an error check to determine if a DescriptorName within a
13529resource descriptor has already been used within the current scope.
13530
13531----------------------------------------
1353215 August 2005.  Summary of changes for version 20050815:
13533
135341) ACPI CA Core Subsystem:
13535
13536Implemented a full bytewise compare to determine if a table load request
13537is
13538attempting to load a duplicate table. The compare is performed if the
13539table
13540signatures and table lengths match. This will allow different tables with
13541the same OEM Table ID and revision to be loaded - probably against the
13542ACPI
13543specification, but discovered in the field nonetheless.
13544
13545Added the changes.txt logfile to each of the zipped release packages.
13546
13547Code and Data Size: Current and previous core subsystem library sizes are
13548shown below. These are the code and data sizes for the acpica.lib
13549produced
13550by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13551any ACPI driver or OSPM code. The debug version of the code includes the
13552debug output trace mechanism and has a much larger code and data size.
13553Note
13554that these values will vary depending on the efficiency of the compiler
13555and
13556the compiler options used during generation.
13557
13558  Previous Release:
13559    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13560    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13561  Current Release:
13562    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13563    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13564
13565
135662) iASL Compiler/Disassembler:
13567
13568Fixed a problem where incorrect AML code could be generated for Package
13569objects if optimization is disabled (via the -oa switch).
13570
13571Fixed a problem with where incorrect AML code is generated for variable-
13572length packages when the package length is not specified and the number
13573of
13574initializer values is greater than 255.
13575
13576
13577----------------------------------------
1357829 July 2005.  Summary of changes for version 20050729:
13579
135801) ACPI CA Core Subsystem:
13581
13582Implemented support to ignore an attempt to install/load a particular
13583ACPI
13584table more than once. Apparently there exists BIOS code that repeatedly
13585attempts to load the same SSDT upon certain events. With assistance from
13586Venkatesh Pallipadi.
13587
13588Restructured the main interface to the AML parser in order to correctly
13589handle all exceptional conditions. This will prevent leakage of the
13590OwnerId
13591resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
13592some
13593machines. With assistance from Alexey Starikovskiy.
13594
13595Support for "module level code" has been disabled in this version due to
13596a
13597number of issues that have appeared on various machines. The support can
13598be
13599enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
13600compilation. When the issues are fully resolved, the code will be enabled
13601by
13602default again.
13603
13604Modified the internal functions for debug print support to define the
13605FunctionName parameter as a (const char *) for compatibility with
13606compiler
13607built-in macros such as __FUNCTION__, etc.
13608
13609Linted the entire ACPICA source tree for both 32-bit and 64-bit.
13610
13611Implemented support to display an object count summary for the AML
13612Debugger
13613commands Object and Methods.
13614
13615Code and Data Size: Current and previous core subsystem library sizes are
13616shown below. These are the code and data sizes for the acpica.lib
13617produced
13618by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13619any ACPI driver or OSPM code. The debug version of the code includes the
13620debug output trace mechanism and has a much larger code and data size.
13621Note
13622that these values will vary depending on the efficiency of the compiler
13623and
13624the compiler options used during generation.
13625
13626  Previous Release:
13627    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13628    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13629  Current Release:
13630    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13631    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13632
13633
136342) iASL Compiler/Disassembler:
13635
13636Fixed a regression that appeared in the 20050708 version of the compiler
13637where an error message was inadvertently emitted for invocations of the
13638_OSI
13639reserved control method.
13640
13641----------------------------------------
1364208 July 2005.  Summary of changes for version 20050708:
13643
136441) ACPI CA Core Subsystem:
13645
13646The use of the CPU stack in the debug version of the subsystem has been
13647considerably reduced. Previously, a debug structure was declared in every
13648function that used the debug macros. This structure has been removed in
13649favor of declaring the individual elements as parameters to the debug
13650functions. This reduces the cumulative stack use during nested execution
13651of
13652ACPI function calls at the cost of a small increase in the code size of
13653the
13654debug version of the subsystem. With assistance from Alexey Starikovskiy
13655and
13656Len Brown.
13657
13658Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
13659headers to define a macro that will return the current function name at
13660runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
13661by
13662the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
13663compiler-dependent header, the function name is saved on the CPU stack
13664(one
13665pointer per function.) This mechanism is used because apparently there
13666exists no standard ANSI-C defined macro that that returns the function
13667name.
13668
13669Redesigned and reimplemented the "Owner ID" mechanism used to track
13670namespace objects created/deleted by ACPI tables and control method
13671execution. A bitmap is now used to allocate and free the IDs, thus
13672solving
13673the wraparound problem present in the previous implementation. The size
13674of
13675the namespace node descriptor was reduced by 2 bytes as a result (Alexey
13676Starikovskiy).
13677
13678Removed the UINT32_BIT and UINT16_BIT types that were used for the
13679bitfield
13680flag definitions within the headers for the predefined ACPI tables. These
13681have been replaced by UINT8_BIT in order to increase the code portability
13682of
13683the subsystem. If the use of UINT8 remains a problem, we may be forced to
13684eliminate bitfields entirely because of a lack of portability.
13685
13686Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
13687This
13688is a frequently used function and this improvement increases the
13689performance
13690of the entire subsystem (Alexey Starikovskiy).
13691
13692Fixed several possible memory leaks and the inverse - premature object
13693deletion (Alexey Starikovskiy).
13694
13695Code and Data Size: Current and previous core subsystem library sizes are
13696shown below. These are the code and data sizes for the acpica.lib
13697produced
13698by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13699any ACPI driver or OSPM code. The debug version of the code includes the
13700debug output trace mechanism and has a much larger code and data size.
13701Note
13702that these values will vary depending on the efficiency of the compiler
13703and
13704the compiler options used during generation.
13705
13706  Previous Release:
13707    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13708    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13709  Current Release:
13710    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13711    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13712
13713----------------------------------------
1371424 June 2005.  Summary of changes for version 20050624:
13715
137161) ACPI CA Core Subsystem:
13717
13718Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
13719the host-defined cache object. This allows the OSL implementation to
13720define
13721and type this object in any manner desired, simplifying the OSL
13722implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
13723Linux, and should be defined in the OS-specific header file for other
13724operating systems as required.
13725
13726Changed the interface to AcpiOsAcquireObject to directly return the
13727requested object as the function return (instead of ACPI_STATUS.) This
13728change was made for performance reasons, since this is the purpose of the
13729interface in the first place. AcpiOsAcquireObject is now similar to the
13730AcpiOsAllocate interface.
13731
13732Implemented a new AML debugger command named Businfo. This command
13733displays
13734information about all devices that have an associate _PRT object. The
13735_ADR,
13736_HID, _UID, and _CID are displayed for these devices.
13737
13738Modified the initialization sequence in AcpiInitializeSubsystem to call
13739the
13740OSL interface AcpiOslInitialize first, before any local initialization.
13741This
13742change was required because the global initialization now calls OSL
13743interfaces.
13744
13745Enhanced the Dump command to display the entire contents of Package
13746objects
13747(including all sub-objects and their values.)
13748
13749Restructured the code base to split some files because of size and/or
13750because the code logically belonged in a separate file. New files are
13751listed
13752below. All makefiles and project files included in the ACPI CA release
13753have
13754been updated.
13755    utilities/utcache.c           /* Local cache interfaces */
13756    utilities/utmutex.c           /* Local mutex support */
13757    utilities/utstate.c           /* State object support */
13758    interpreter/parser/psloop.c   /* Main AML parse loop */
13759
13760Code and Data Size: Current and previous core subsystem library sizes are
13761shown below. These are the code and data sizes for the acpica.lib
13762produced
13763by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13764any ACPI driver or OSPM code. The debug version of the code includes the
13765debug output trace mechanism and has a much larger code and data size.
13766Note
13767that these values will vary depending on the efficiency of the compiler
13768and
13769the compiler options used during generation.
13770
13771  Previous Release:
13772    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13773    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13774  Current Release:
13775    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13776    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13777
13778
137792) iASL Compiler/Disassembler:
13780
13781Fixed a regression introduced in version 20050513 where the use of a
13782Package
13783object within a Case() statement caused a compile time exception. The
13784original behavior has been restored (a Match() operator is emitted.)
13785
13786----------------------------------------
1378717 June 2005.  Summary of changes for version 20050617:
13788
137891) ACPI CA Core Subsystem:
13790
13791Moved the object cache operations into the OS interface layer (OSL) to
13792allow
13793the host OS to handle these operations if desired (for example, the Linux
13794OSL will invoke the slab allocator). This support is optional; the
13795compile
13796time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13797cache
13798code in the ACPI CA core. The new OSL interfaces are shown below. See
13799utalloc.c for an example implementation, and acpiosxf.h for the exact
13800interface definitions. With assistance from Alexey Starikovskiy.
13801    AcpiOsCreateCache
13802    AcpiOsDeleteCache
13803    AcpiOsPurgeCache
13804    AcpiOsAcquireObject
13805    AcpiOsReleaseObject
13806
13807Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13808return
13809and restore a flags parameter. This fits better with many OS lock models.
13810Note: the current execution state (interrupt handler or not) is no longer
13811passed to these interfaces. If necessary, the OSL must determine this
13812state
13813by itself, a simple and fast operation. With assistance from Alexey
13814Starikovskiy.
13815
13816Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13817present if the revision of the RSDP was 2 or greater. According to the
13818ACPI
13819specification, the XSDT is optional in all cases, and the table manager
13820therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13821Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13822contain
13823only the RSDT.
13824
13825Fixed an interpreter problem with the Mid() operator in the case of an
13826input
13827string where the resulting output string is of zero length. It now
13828correctly
13829returns a valid, null terminated string object instead of a string object
13830with a null pointer.
13831
13832Fixed a problem with the control method argument handling to allow a
13833store
13834to an Arg object that already contains an object of type Device. The
13835Device
13836object is now correctly overwritten. Previously, an error was returned.
13837
13838
13839Enhanced the debugger Find command to emit object values in addition to
13840the
13841found object pathnames. The output format is the same as the dump
13842namespace
13843command.
13844
13845Enhanced the debugger Set command. It now has the ability to set the
13846value
13847of any Named integer object in the namespace (Previously, only method
13848locals
13849and args could be set.)
13850
13851Code and Data Size: Current and previous core subsystem library sizes are
13852shown below. These are the code and data sizes for the acpica.lib
13853produced
13854by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13855any ACPI driver or OSPM code. The debug version of the code includes the
13856debug output trace mechanism and has a much larger code and data size.
13857Note
13858that these values will vary depending on the efficiency of the compiler
13859and
13860the compiler options used during generation.
13861
13862  Previous Release:
13863    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13864    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13865  Current Release:
13866    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13867    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13868
13869
138702) iASL Compiler/Disassembler:
13871
13872Fixed a regression in the disassembler where if/else/while constructs
13873were
13874output incorrectly. This problem was introduced in the previous release
13875(20050526). This problem also affected the single-step disassembly in the
13876debugger.
13877
13878Fixed a problem where compiling the reserved _OSI method would randomly
13879(but
13880rarely) produce compile errors.
13881
13882Enhanced the disassembler to emit compilable code in the face of
13883incorrect
13884AML resource descriptors. If the optional ResourceSourceIndex is present,
13885but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13886disassembly. Otherwise, the resulting code cannot be compiled without
13887errors.
13888
13889----------------------------------------
1389026 May 2005.  Summary of changes for version 20050526:
13891
138921) ACPI CA Core Subsystem:
13893
13894Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13895the module level (not within a control method.) These opcodes are
13896executed
13897exactly once at the time the table is loaded. This type of code was legal
13898up
13899until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13900in
13901order to provide backwards compatibility with earlier BIOS
13902implementations.
13903This eliminates the "Encountered executable code at module level" warning
13904that was previously generated upon detection of such code.
13905
13906Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13907inadvertently be generated during the lookup of namespace objects in the
13908second pass parse of ACPI tables and control methods. It appears that
13909this
13910problem could occur during the resolution of forward references to
13911namespace
13912objects.
13913
13914Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13915corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13916allows the deadlock detection debug code to be compiled out in the normal
13917case, improving mutex performance (and overall subsystem performance)
13918considerably.
13919
13920Implemented a handful of miscellaneous fixes for possible memory leaks on
13921error conditions and error handling control paths. These fixes were
13922suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13923
13924Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13925(tbxfroot.c)
13926to prevent a fault in this error case.
13927
13928Code and Data Size: Current and previous core subsystem library sizes are
13929shown below. These are the code and data sizes for the acpica.lib
13930produced
13931by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13932any ACPI driver or OSPM code. The debug version of the code includes the
13933debug output trace mechanism and has a much larger code and data size.
13934Note
13935that these values will vary depending on the efficiency of the compiler
13936and
13937the compiler options used during generation.
13938
13939  Previous Release:
13940    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13941    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13942  Current Release:
13943    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13944    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13945
13946
139472) iASL Compiler/Disassembler:
13948
13949Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13950the module level (not within a control method.) These operators will be
13951executed once at the time the table is loaded. This type of code was
13952legal
13953up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13954compiler in order to provide backwards compatibility with earlier BIOS
13955ASL
13956code.
13957
13958The ACPI integer width (specified via the table revision ID or the -r
13959override, 32 or 64 bits) is now used internally during compile-time
13960constant
13961folding to ensure that constants are truncated to 32 bits if necessary.
13962Previously, the revision ID value was only emitted in the AML table
13963header.
13964
13965An error message is now generated for the Mutex and Method operators if
13966the
13967SyncLevel parameter is outside the legal range of 0 through 15.
13968
13969Fixed a problem with the Method operator ParameterTypes list handling
13970(ACPI
139713.0). Previously, more than 2 types or 2 arguments generated a syntax
13972error.
13973The actual underlying implementation of method argument typechecking is
13974still under development, however.
13975
13976----------------------------------------
1397713 May 2005.  Summary of changes for version 20050513:
13978
139791) ACPI CA Core Subsystem:
13980
13981Implemented support for PCI Express root bridges -- added support for
13982device
13983PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13984
13985The interpreter now automatically truncates incoming 64-bit constants to
1398632
13987bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13988This
13989also affects the iASL compiler constant folding. (Note: as per below, the
13990iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13991
13992Fixed a problem where string and buffer objects with "static" pointers
13993(pointers to initialization data within an ACPI table) were not handled
13994consistently. The internal object copy operation now always copies the
13995data
13996to a newly allocated buffer, regardless of whether the source object is
13997static or not.
13998
13999Fixed a problem with the FromBCD operator where an implicit result
14000conversion was improperly performed while storing the result to the
14001target
14002operand. Since this is an "explicit conversion" operator, the implicit
14003conversion should never be performed on the output.
14004
14005Fixed a problem with the CopyObject operator where a copy to an existing
14006named object did not always completely overwrite the existing object
14007stored
14008at name. Specifically, a buffer-to-buffer copy did not delete the
14009existing
14010buffer.
14011
14012Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
14013and
14014structs for consistency.
14015
14016Code and Data Size: Current and previous core subsystem library sizes are
14017shown below. These are the code and data sizes for the acpica.lib
14018produced
14019by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14020any ACPI driver or OSPM code. The debug version of the code includes the
14021debug output trace mechanism and has a much larger code and data size.
14022Note
14023that these values will vary depending on the efficiency of the compiler
14024and
14025the compiler options used during generation.
14026
14027  Previous Release:
14028    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
14029    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
14030  Current Release: (Same sizes)
14031    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
14032    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
14033
14034
140352) iASL Compiler/Disassembler:
14036
14037The compiler now emits a warning if an attempt is made to generate a 64-
14038bit
14039integer constant from within a 32-bit ACPI table (Revision < 2). The
14040integer
14041is truncated to 32 bits.
14042
14043Fixed a problem with large package objects: if the static length of the
14044package is greater than 255, the "variable length package" opcode is
14045emitted. Previously, this caused an error. This requires an update to the
14046ACPI spec, since it currently (incorrectly) states that packages larger
14047than
14048255 elements are not allowed.
14049
14050The disassembler now correctly handles variable length packages and
14051packages
14052larger than 255 elements.
14053
14054----------------------------------------
1405508 April 2005.  Summary of changes for version 20050408:
14056
140571) ACPI CA Core Subsystem:
14058
14059Fixed three cases in the interpreter where an "index" argument to an ASL
14060function was still (internally) 32 bits instead of the required 64 bits.
14061This was the Index argument to the Index, Mid, and Match operators.
14062
14063The "strupr" function is now permanently local (AcpiUtStrupr), since this
14064is
14065not a POSIX-defined function and not present in most kernel-level C
14066libraries. All references to the C library strupr function have been
14067removed
14068from the headers.
14069
14070Completed the deployment of static functions/prototypes. All prototypes
14071with
14072the static attribute have been moved from the headers to the owning C
14073file.
14074
14075Implemented an extract option (-e) for the AcpiBin utility (AML binary
14076utility). This option allows the utility to extract individual ACPI
14077tables
14078from the output of AcpiDmp. It provides the same functionality of the
14079acpixtract.pl perl script without the worry of setting the correct perl
14080options. AcpiBin runs on Windows and has not yet been generated/validated
14081in
14082the Linux/Unix environment (but should be soon).
14083
14084Updated and fixed the table dump option for AcpiBin (-d). This option
14085converts a single ACPI table to a hex/ascii file, similar to the output
14086of
14087AcpiDmp.
14088
14089Code and Data Size: Current and previous core subsystem library sizes are
14090shown below. These are the code and data sizes for the acpica.lib
14091produced
14092by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14093any ACPI driver or OSPM code. The debug version of the code includes the
14094debug output trace mechanism and has a much larger code and data size.
14095Note
14096that these values will vary depending on the efficiency of the compiler
14097and
14098the compiler options used during generation.
14099
14100  Previous Release:
14101    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
14102    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
14103  Current Release:
14104    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
14105    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
14106
14107
141082) iASL Compiler/Disassembler:
14109
14110Disassembler fix: Added a check to ensure that the table length found in
14111the
14112ACPI table header within the input file is not longer than the actual
14113input
14114file size. This indicates some kind of file or table corruption.
14115
14116----------------------------------------
1411729 March 2005.  Summary of changes for version 20050329:
14118
141191) ACPI CA Core Subsystem:
14120
14121An error is now generated if an attempt is made to create a Buffer Field
14122of
14123length zero (A CreateField with a length operand of zero.)
14124
14125The interpreter now issues a warning whenever executable code at the
14126module
14127level is detected during ACPI table load. This will give some idea of the
14128prevalence of this type of code.
14129
14130Implemented support for references to named objects (other than control
14131methods) within package objects.
14132
14133Enhanced package object output for the debug object. Package objects are
14134now
14135completely dumped, showing all elements.
14136
14137Enhanced miscellaneous object output for the debug object. Any object can
14138now be written to the debug object (for example, a device object can be
14139written, and the type of the object will be displayed.)
14140
14141The "static" qualifier has been added to all local functions across both
14142the
14143core subsystem and the iASL compiler.
14144
14145The number of "long" lines (> 80 chars) within the source has been
14146significantly reduced, by about 1/3.
14147
14148Cleaned up all header files to ensure that all CA/iASL functions are
14149prototyped (even static functions) and the formatting is consistent.
14150
14151Two new header files have been added, acopcode.h and acnames.h.
14152
14153Removed several obsolete functions that were no longer used.
14154
14155Code and Data Size: Current and previous core subsystem library sizes are
14156shown below. These are the code and data sizes for the acpica.lib
14157produced
14158by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14159any ACPI driver or OSPM code. The debug version of the code includes the
14160debug output trace mechanism and has a much larger code and data size.
14161Note
14162that these values will vary depending on the efficiency of the compiler
14163and
14164the compiler options used during generation.
14165
14166  Previous Release:
14167    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14168    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
14169  Current Release:
14170    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
14171    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
14172
14173
14174
141752) iASL Compiler/Disassembler:
14176
14177Fixed a problem with the resource descriptor generation/support. For the
14178ResourceSourceIndex and the ResourceSource fields, both must be present,
14179or
14180both must be not present - can't have one without the other.
14181
14182The compiler now returns non-zero from the main procedure if any errors
14183have
14184occurred during the compilation.
14185
14186
14187----------------------------------------
1418809 March 2005.  Summary of changes for version 20050309:
14189
141901) ACPI CA Core Subsystem:
14191
14192The string-to-buffer implicit conversion code has been modified again
14193after
14194a change to the ACPI specification.  In order to match the behavior of
14195the
14196other major ACPI implementation, the target buffer is no longer truncated
14197if
14198the source string is smaller than an existing target buffer. This change
14199requires an update to the ACPI spec, and should eliminate the recent
14200AE_AML_BUFFER_LIMIT issues.
14201
14202The "implicit return" support was rewritten to a new algorithm that
14203solves
14204the general case. Rather than attempt to determine when a method is about
14205to
14206exit, the result of every ASL operator is saved momentarily until the
14207very
14208next ASL operator is executed. Therefore, no matter how the method exits,
14209there will always be a saved implicit return value. This feature is only
14210enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
14211eliminate
14212AE_AML_NO_RETURN_VALUE errors when enabled.
14213
14214Implemented implicit conversion support for the predicate (operand) of
14215the
14216If, Else, and While operators. String and Buffer arguments are
14217automatically
14218converted to Integers.
14219
14220Changed the string-to-integer conversion behavior to match the new ACPI
14221errata: "If no integer object exists, a new integer is created. The ASCII
14222string is interpreted as a hexadecimal constant. Each string character is
14223interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
14224with the first character as the most significant digit, and ending with
14225the
14226first non-hexadecimal character or end-of-string." This means that the
14227first
14228non-hex character terminates the conversion and this is the code that was
14229changed.
14230
14231Fixed a problem where the ObjectType operator would fail (fault) when
14232used
14233on an Index of a Package which pointed to a null package element. The
14234operator now properly returns zero (Uninitialized) in this case.
14235
14236Fixed a problem where the While operator used excessive memory by not
14237properly popping the result stack during execution. There was no memory
14238leak
14239after execution, however. (Code provided by Valery Podrezov.)
14240
14241Fixed a problem where references to control methods within Package
14242objects
14243caused the method to be invoked, instead of producing a reference object
14244pointing to the method.
14245
14246Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
14247to
14248improve performance and reduce code size. (Code provided by Alexey
14249Starikovskiy.)
14250
14251Code and Data Size: Current and previous core subsystem library sizes are
14252shown below. These are the code and data sizes for the acpica.lib
14253produced
14254by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14255any ACPI driver or OSPM code. The debug version of the code includes the
14256debug output trace mechanism and has a much larger code and data size.
14257Note
14258that these values will vary depending on the efficiency of the compiler
14259and
14260the compiler options used during generation.
14261
14262  Previous Release:
14263    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14264    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
14265  Current Release:
14266    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14267    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
14268
14269
142702) iASL Compiler/Disassembler:
14271
14272Fixed a problem with the Return operator with no arguments. Since the AML
14273grammar for the byte encoding requires an operand for the Return opcode,
14274the
14275compiler now emits a Return(Zero) for this case.  An ACPI specification
14276update has been written for this case.
14277
14278For tables other than the DSDT, namepath optimization is automatically
14279disabled. This is because SSDTs can be loaded anywhere in the namespace,
14280the
14281compiler has no knowledge of where, and thus cannot optimize namepaths.
14282
14283Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
14284inadvertently omitted from the ACPI specification, and will require an
14285update to the spec.
14286
14287The source file scan for ASCII characters is now optional (-a). This
14288change
14289was made because some vendors place non-ascii characters within comments.
14290However, the scan is simply a brute-force byte compare to ensure all
14291characters in the file are in the range 0x00 to 0x7F.
14292
14293Fixed a problem with the CondRefOf operator where the compiler was
14294inappropriately checking for the existence of the target. Since the point
14295of
14296the operator is to check for the existence of the target at run-time, the
14297compiler no longer checks for the target existence.
14298
14299Fixed a problem where errors generated from the internal AML interpreter
14300during constant folding were not handled properly, causing a fault.
14301
14302Fixed a problem with overly aggressive range checking for the Stall
14303operator. The valid range (max 255) is now only checked if the operand is
14304of
14305type Integer. All other operand types cannot be statically checked.
14306
14307Fixed a problem where control method references within the RefOf,
14308DeRefOf,
14309and ObjectType operators were not treated properly. They are now treated
14310as
14311actual references, not method invocations.
14312
14313Fixed and enhanced the "list namespace" option (-ln). This option was
14314broken
14315a number of releases ago.
14316
14317Improved error handling for the Field, IndexField, and BankField
14318operators.
14319The compiler now cleanly reports and recovers from errors in the field
14320component (FieldUnit) list.
14321
14322Fixed a disassembler problem where the optional ResourceDescriptor fields
14323TRS and TTP were not always handled correctly.
14324
14325Disassembler - Comments in output now use "//" instead of "/*"
14326
14327----------------------------------------
1432828 February 2005.  Summary of changes for version 20050228:
14329
143301) ACPI CA Core Subsystem:
14331
14332Fixed a problem where the result of an Index() operator (an object
14333reference) must increment the reference count on the target object for
14334the
14335life of the object reference.
14336
14337Implemented AML Interpreter and Debugger support for the new ACPI 3.0
14338Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
14339WordSpace
14340resource descriptors.
14341
14342Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
14343Space Descriptor" string, indicating interpreter support for the
14344descriptors
14345above.
14346
14347Implemented header support for the new ACPI 3.0 FADT flag bits.
14348
14349Implemented header support for the new ACPI 3.0 PCI Express bits for the
14350PM1
14351status/enable registers.
14352
14353Updated header support for the MADT processor local Apic struct and MADT
14354platform interrupt source struct for new ACPI 3.0 fields.
14355
14356Implemented header support for the SRAT and SLIT ACPI tables.
14357
14358Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
14359flag
14360at runtime.
14361
14362Code and Data Size: Current and previous core subsystem library sizes are
14363shown below. These are the code and data sizes for the acpica.lib
14364produced
14365by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14366any ACPI driver or OSPM code. The debug version of the code includes the
14367debug output trace mechanism and has a much larger code and data size.
14368Note
14369that these values will vary depending on the efficiency of the compiler
14370and
14371the compiler options used during generation.
14372
14373  Previous Release:
14374    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
14375    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
14376  Current Release:
14377    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14378    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
14379
14380
143812) iASL Compiler/Disassembler:
14382
14383Fixed a problem with the internal 64-bit String-to-integer conversion
14384with
14385strings less than two characters long.
14386
14387Fixed a problem with constant folding where the result of the Index()
14388operator can not be considered a constant. This means that Index() cannot
14389be
14390a type3 opcode and this will require an update to the ACPI specification.
14391
14392Disassembler: Implemented support for the TTP, MTP, and TRS resource
14393descriptor fields. These fields were inadvertently ignored and not output
14394in
14395the disassembly of the resource descriptor.
14396
14397
14398 ----------------------------------------
1439911 February 2005.  Summary of changes for version 20050211:
14400
144011) ACPI CA Core Subsystem:
14402
14403Implemented ACPI 3.0 support for implicit conversion within the Match()
14404operator. MatchObjects can now be of type integer, buffer, or string
14405instead
14406of just type integer.  Package elements are implicitly converted to the
14407type
14408of the MatchObject. This change aligns the behavior of Match() with the
14409behavior of the other logical operators (LLess(), etc.) It also requires
14410an
14411errata change to the ACPI specification as this support was intended for
14412ACPI 3.0, but was inadvertently omitted.
14413
14414Fixed a problem with the internal implicit "to buffer" conversion.
14415Strings
14416that are converted to buffers will cause buffer truncation if the string
14417is
14418smaller than the target buffer. Integers that are converted to buffers
14419will
14420not cause buffer truncation, only zero extension (both as per the ACPI
14421spec.) The problem was introduced when code was added to truncate the
14422buffer, but this should not be performed in all cases, only the string
14423case.
14424
14425Fixed a problem with the Buffer and Package operators where the
14426interpreter
14427would get confused if two such operators were used as operands to an ASL
14428operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
14429stack was not being popped after the execution of these operators,
14430resulting
14431in an AE_NO_RETURN_VALUE exception.
14432
14433Fixed a problem with constructs of the form Store(Index(...),...). The
14434reference object returned from Index was inadvertently resolved to an
14435actual
14436value. This problem was introduced in version 20050114 when the behavior
14437of
14438Store() was modified to restrict the object types that can be used as the
14439source operand (to match the ACPI specification.)
14440
14441Reduced excessive stack use within the AcpiGetObjectInfo procedure.
14442
14443Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
14444
14445Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
14446
14447Code and Data Size: Current and previous core subsystem library sizes are
14448shown below. These are the code and data sizes for the acpica.lib
14449produced
14450by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14451any ACPI driver or OSPM code. The debug version of the code includes the
14452debug output trace mechanism and has a much larger code and data size.
14453Note
14454that these values will vary depending on the efficiency of the compiler
14455and
14456the compiler options used during generation.
14457
14458  Previous Release:
14459    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
14460    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
14461  Current Release:
14462    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
14463    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
14464
14465
144662) iASL Compiler/Disassembler:
14467
14468Fixed a code generation problem in the constant folding optimization code
14469where incorrect code was generated if a constant was reduced to a buffer
14470object (i.e., a reduced type 5 opcode.)
14471
14472Fixed a typechecking problem for the ToBuffer operator. Caused by an
14473incorrect return type in the internal opcode information table.
14474
14475----------------------------------------
1447625 January 2005.  Summary of changes for version 20050125:
14477
144781) ACPI CA Core Subsystem:
14479
14480Fixed a recently introduced problem with the Global Lock where the
14481underlying semaphore was not created.  This problem was introduced in
14482version 20050114, and caused an AE_AML_NO_OPERAND exception during an
14483Acquire() operation on _GL.
14484
14485The local object cache is now optional, and is disabled by default. Both
14486AcpiExec and the iASL compiler enable the cache because they run in user
14487mode and this enhances their performance. #define
14488ACPI_ENABLE_OBJECT_CACHE
14489to enable the local cache.
14490
14491Fixed an issue in the internal function AcpiUtEvaluateObject concerning
14492the
14493optional "implicit return" support where an error was returned if no
14494return
14495object was expected, but one was implicitly returned. AE_OK is now
14496returned
14497in this case and the implicitly returned object is deleted.
14498AcpiUtEvaluateObject is only occasionally used, and only to execute
14499reserved
14500methods such as _STA and _INI where the return type is known up front.
14501
14502Fixed a few issues with the internal convert-to-integer code. It now
14503returns
14504an error if an attempt is made to convert a null string, a string of only
14505blanks/tabs, or a zero-length buffer. This affects both implicit
14506conversion
14507and explicit conversion via the ToInteger() operator.
14508
14509The internal debug code in AcpiUtAcquireMutex has been commented out. It
14510is
14511not needed for normal operation and should increase the performance of
14512the
14513entire subsystem. The code remains in case it is needed for debug
14514purposes
14515again.
14516
14517The AcpiExec source and makefile are included in the Unix/Linux package
14518for
14519the first time.
14520
14521Code and Data Size: Current and previous core subsystem library sizes are
14522shown below. These are the code and data sizes for the acpica.lib
14523produced
14524by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14525any ACPI driver or OSPM code. The debug version of the code includes the
14526debug output trace mechanism and has a much larger code and data size.
14527Note
14528that these values will vary depending on the efficiency of the compiler
14529and
14530the compiler options used during generation.
14531
14532  Previous Release:
14533    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14534    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14535  Current Release:
14536    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
14537    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
14538
145392) iASL Compiler/Disassembler:
14540
14541Switch/Case support: A warning is now issued if the type of the Switch
14542value
14543cannot be determined at compile time. For example, Switch(Arg0) will
14544generate the warning, and the type is assumed to be an integer. As per
14545the
14546ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
14547the
14548warning.
14549
14550Switch/Case support: Implemented support for buffer and string objects as
14551the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
14552buffers and strings.
14553
14554Switch/Case support: The emitted code for the LEqual() comparisons now
14555uses
14556the switch value as the first operand, not the second. The case value is
14557now
14558the second operand, and this allows the case value to be implicitly
14559converted to the type of the switch value, not the other way around.
14560
14561Switch/Case support: Temporary variables are now emitted immediately
14562within
14563the control method, not at the global level. This means that there are
14564now
1456536 temps available per-method, not 36 temps per-module as was the case
14566with
14567the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
14568
14569----------------------------------------
1457014 January 2005.  Summary of changes for version 20050114:
14571
14572Added 2005 copyright to all module headers.  This affects every module in
14573the core subsystem, iASL compiler, and the utilities.
14574
145751) ACPI CA Core Subsystem:
14576
14577Fixed an issue with the String-to-Buffer conversion code where the string
14578null terminator was not included in the buffer after conversion, but
14579there
14580is existing ASL that assumes the string null terminator is included. This
14581is
14582the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
14583introduced in the previous version when the code was updated to correctly
14584set the converted buffer size as per the ACPI specification. The ACPI
14585spec
14586is ambiguous and will be updated to specify that the null terminator must
14587be
14588included in the converted buffer. This also affects the ToBuffer() ASL
14589operator.
14590
14591Fixed a problem with the Mid() ASL/AML operator where it did not work
14592correctly on Buffer objects. Newly created sub-buffers were not being
14593marked
14594as initialized.
14595
14596
14597Fixed a problem in AcpiTbFindTable where incorrect string compares were
14598performed on the OemId and OemTableId table header fields.  These fields
14599are
14600not null terminated, so strncmp is now used instead of strcmp.
14601
14602Implemented a restriction on the Store() ASL/AML operator to align the
14603behavior with the ACPI specification.  Previously, any object could be
14604used
14605as the source operand.  Now, the only objects that may be used are
14606Integers,
14607Buffers, Strings, Packages, Object References, and DDB Handles.  If
14608necessary, the original behavior can be restored by enabling the
14609EnableInterpreterSlack flag.
14610
14611Enhanced the optional "implicit return" support to allow an implicit
14612return
14613value from methods that are invoked externally via the AcpiEvaluateObject
14614interface.  This enables implicit returns from the _STA and _INI methods,
14615for example.
14616
14617Changed the Revision() ASL/AML operator to return the current version of
14618the
14619AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
14620returned
14621the supported ACPI version (This is the function of the _REV method).
14622
14623Updated the _REV predefined method to return the currently supported
14624version
14625of ACPI, now 3.
14626
14627Implemented batch mode option for the AcpiExec utility (-b).
14628
14629Code and Data Size: Current and previous core subsystem library sizes are
14630shown below. These are the code and data sizes for the acpica.lib
14631produced
14632by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14633any ACPI driver or OSPM code. The debug version of the code includes the
14634debug output trace mechanism and has a much larger code and data size.
14635Note
14636that these values will vary depending on the efficiency of the compiler
14637and
14638the compiler options used during generation.
14639
14640  Previous Release:
14641    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14642    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14643  Current Release:
14644    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14645    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14646
14647----------------------------------------
1464810 December 2004.  Summary of changes for version 20041210:
14649
14650ACPI 3.0 support is nearing completion in both the iASL compiler and the
14651ACPI CA core subsystem.
14652
146531) ACPI CA Core Subsystem:
14654
14655Fixed a problem in the ToDecimalString operator where the resulting
14656string
14657length was incorrectly calculated. The length is now calculated exactly,
14658eliminating incorrect AE_STRING_LIMIT exceptions.
14659
14660Fixed a problem in the ToHexString operator to allow a maximum 200
14661character
14662string to be produced.
14663
14664Fixed a problem in the internal string-to-buffer and buffer-to-buffer
14665copy
14666routine where the length of the resulting buffer was not truncated to the
14667new size (if the target buffer already existed).
14668
14669Code and Data Size: Current and previous core subsystem library sizes are
14670shown below. These are the code and data sizes for the acpica.lib
14671produced
14672by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14673any ACPI driver or OSPM code. The debug version of the code includes the
14674debug output trace mechanism and has a much larger code and data size.
14675Note
14676that these values will vary depending on the efficiency of the compiler
14677and
14678the compiler options used during generation.
14679
14680  Previous Release:
14681    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14682    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14683  Current Release:
14684    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14685    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14686
14687
146882) iASL Compiler/Disassembler:
14689
14690Implemented the new ACPI 3.0 resource template macros - DWordSpace,
14691ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
14692Includes support in the disassembler.
14693
14694Implemented support for the new (ACPI 3.0) parameter to the Register
14695macro,
14696AccessSize.
14697
14698Fixed a problem where the _HE resource name for the Interrupt macro was
14699referencing bit 0 instead of bit 1.
14700
14701Implemented check for maximum 255 interrupts in the Interrupt macro.
14702
14703Fixed a problem with the predefined resource descriptor names where
14704incorrect AML code was generated if the offset within the resource buffer
14705was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
14706but did not update the surrounding package lengths.
14707
14708Changes to the Dma macro:  All channels within the channel list must be
14709in
14710the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
14711optional (default is BusMaster).
14712
14713Implemented check for maximum 7 data bytes for the VendorShort macro.
14714
14715The ReadWrite parameter is now optional for the Memory32 and similar
14716macros.
14717
14718----------------------------------------
1471903 December 2004.  Summary of changes for version 20041203:
14720
147211) ACPI CA Core Subsystem:
14722
14723The low-level field insertion/extraction code (exfldio) has been
14724completely
14725rewritten to eliminate unnecessary complexity, bugs, and boundary
14726conditions.
14727
14728Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
14729ToDecimalString
14730operators where the input operand could be inadvertently deleted if no
14731conversion was necessary (e.g., if the input to ToInteger was an Integer
14732object.)
14733
14734Fixed a problem with the ToDecimalString and ToHexString where an
14735incorrect
14736exception code was returned if the resulting string would be > 200 chars.
14737AE_STRING_LIMIT is now returned.
14738
14739Fixed a problem with the Concatenate operator where AE_OK was always
14740returned, even if the operation failed.
14741
14742Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
14743semaphores to be allocated.
14744
14745Code and Data Size: Current and previous core subsystem library sizes are
14746shown below. These are the code and data sizes for the acpica.lib
14747produced
14748by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14749any ACPI driver or OSPM code. The debug version of the code includes the
14750debug output trace mechanism and has a much larger code and data size.
14751Note
14752that these values will vary depending on the efficiency of the compiler
14753and
14754the compiler options used during generation.
14755
14756  Previous Release:
14757    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14758    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14759  Current Release:
14760    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14761    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14762
14763
147642) iASL Compiler/Disassembler:
14765
14766Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
14767recently introduced in 20041119.
14768
14769Fixed a problem with the ToUUID macro where the upper nybble of each
14770buffer
14771byte was inadvertently set to zero.
14772
14773----------------------------------------
1477419 November 2004.  Summary of changes for version 20041119:
14775
147761) ACPI CA Core Subsystem:
14777
14778Fixed a problem in the internal ConvertToInteger routine where new
14779integers
14780were not truncated to 32 bits for 32-bit ACPI tables. This routine
14781converts
14782buffers and strings to integers.
14783
14784Implemented support to store a value to an Index() on a String object.
14785This
14786is an ACPI 2.0 feature that had not yet been implemented.
14787
14788Implemented new behavior for storing objects to individual package
14789elements
14790(via the Index() operator). The previous behavior was to invoke the
14791implicit
14792conversion rules if an object was already present at the index.  The new
14793behavior is to simply delete any existing object and directly store the
14794new
14795object. Although the ACPI specification seems unclear on this subject,
14796other
14797ACPI implementations behave in this manner.  (This is the root of the
14798AE_BAD_HEX_CONSTANT issue.)
14799
14800Modified the RSDP memory scan mechanism to support the extended checksum
14801for
14802ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14803RSDP signature is found with a valid checksum.
14804
14805Code and Data Size: Current and previous core subsystem library sizes are
14806shown below. These are the code and data sizes for the acpica.lib
14807produced
14808by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14809any ACPI driver or OSPM code. The debug version of the code includes the
14810debug output trace mechanism and has a much larger code and data size.
14811Note
14812that these values will vary depending on the efficiency of the compiler
14813and
14814the compiler options used during generation.
14815
14816  Previous Release:
14817    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14818    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14819  Current Release:
14820    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14821    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14822
14823
148242) iASL Compiler/Disassembler:
14825
14826Fixed a missing semicolon in the aslcompiler.y file.
14827
14828----------------------------------------
1482905 November 2004.  Summary of changes for version 20041105:
14830
148311) ACPI CA Core Subsystem:
14832
14833Implemented support for FADT revision 2.  This was an interim table
14834(between
14835ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14836
14837Implemented optional support to allow uninitialized LocalX and ArgX
14838variables in a control method.  The variables are initialized to an
14839Integer
14840object with a value of zero.  This support is enabled by setting the
14841AcpiGbl_EnableInterpreterSlack flag to TRUE.
14842
14843Implemented support for Integer objects for the SizeOf operator.  Either
148444
14845or 8 is returned, depending on the current integer size (32-bit or 64-
14846bit,
14847depending on the parent table revision).
14848
14849Fixed a problem in the implementation of the SizeOf and ObjectType
14850operators
14851where the operand was resolved to a value too early, causing incorrect
14852return values for some objects.
14853
14854Fixed some possible memory leaks during exceptional conditions.
14855
14856Code and Data Size: Current and previous core subsystem library sizes are
14857shown below. These are the code and data sizes for the acpica.lib
14858produced
14859by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14860any ACPI driver or OSPM code. The debug version of the code includes the
14861debug output trace mechanism and has a much larger code and data size.
14862Note
14863that these values will vary depending on the efficiency of the compiler
14864and
14865the compiler options used during generation.
14866
14867  Previous Release:
14868    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14869    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14870  Current Release:
14871    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14872    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14873
14874
148752) iASL Compiler/Disassembler:
14876
14877Implemented support for all ACPI 3.0 reserved names and methods.
14878
14879Implemented all ACPI 3.0 grammar elements in the front-end, including
14880support for semicolons.
14881
14882Implemented the ACPI 3.0 Function() and ToUUID() macros
14883
14884Fixed a problem in the disassembler where a Scope() operator would not be
14885emitted properly if the target of the scope was in another table.
14886
14887----------------------------------------
1488815 October 2004.  Summary of changes for version 20041015:
14889
14890Note:  ACPI CA is currently undergoing an in-depth and complete formal
14891evaluation to test/verify the following areas. Other suggestions are
14892welcome. This will result in an increase in the frequency of releases and
14893the number of bug fixes in the next few months.
14894  - Functional tests for all ASL/AML operators
14895  - All implicit/explicit type conversions
14896  - Bit fields and operation regions
14897  - 64-bit math support and 32-bit-only "truncated" math support
14898  - Exceptional conditions, both compiler and interpreter
14899  - Dynamic object deletion and memory leaks
14900  - ACPI 3.0 support when implemented
14901  - External interfaces to the ACPI subsystem
14902
14903
149041) ACPI CA Core Subsystem:
14905
14906Fixed two alignment issues on 64-bit platforms - within debug statements
14907in
14908AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14909Address
14910field within the non-aligned ACPI generic address structure.
14911
14912Fixed a problem in the Increment and Decrement operators where incorrect
14913operand resolution could result in the inadvertent modification of the
14914original integer when the integer is passed into another method as an
14915argument and the arg is then incremented/decremented.
14916
14917Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14918bit
14919BCD number were truncated during conversion.
14920
14921Fixed a problem in the ToDecimal operator where the length of the
14922resulting
14923string could be set incorrectly too long if the input operand was a
14924Buffer
14925object.
14926
14927Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14928(0)
14929within a buffer would prematurely terminate a compare between buffer
14930objects.
14931
14932Added a check for string overflow (>200 characters as per the ACPI
14933specification) during the Concatenate operator with two string operands.
14934
14935Code and Data Size: Current and previous core subsystem library sizes are
14936shown below. These are the code and data sizes for the acpica.lib
14937produced
14938by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14939any ACPI driver or OSPM code. The debug version of the code includes the
14940debug output trace mechanism and has a much larger code and data size.
14941Note
14942that these values will vary depending on the efficiency of the compiler
14943and
14944the compiler options used during generation.
14945
14946  Previous Release:
14947    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14948    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14949  Current Release:
14950    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14951    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14952
14953
14954
149552) iASL Compiler/Disassembler:
14956
14957Allow the use of the ObjectType operator on uninitialized Locals and Args
14958(returns 0 as per the ACPI specification).
14959
14960Fixed a problem where the compiler would fault if there was a syntax
14961error
14962in the FieldName of all of the various CreateXXXField operators.
14963
14964Disallow the use of lower case letters within the EISAID macro, as per
14965the
14966ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14967Where
14968U is an uppercase letter and N is a hex digit.
14969
14970
14971----------------------------------------
1497206 October 2004.  Summary of changes for version 20041006:
14973
149741) ACPI CA Core Subsystem:
14975
14976Implemented support for the ACPI 3.0 Timer operator. This ASL function
14977implements a 64-bit timer with 100 nanosecond granularity.
14978
14979Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14980implement the ACPI 3.0 Timer operator.  This allows the host OS to
14981implement
14982the timer with the best clock available. Also, it keeps the core
14983subsystem
14984out of the clock handling business, since the host OS (usually) performs
14985this function.
14986
14987Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14988functions use a 64-bit address which is part of the packed ACPI Generic
14989Address Structure. Since the structure is non-aligned, the alignment
14990macros
14991are now used to extract the address to a local variable before use.
14992
14993Fixed a problem where the ToInteger operator assumed all input strings
14994were
14995hexadecimal. The operator now handles both decimal strings and hex
14996strings
14997(prefixed with "0x").
14998
14999Fixed a problem where the string length in the string object created as a
15000result of the internal ConvertToString procedure could be incorrect. This
15001potentially affected all implicit conversions and also the
15002ToDecimalString
15003and ToHexString operators.
15004
15005Fixed two problems in the ToString operator. If the length parameter was
15006zero, an incorrect string object was created and the value of the input
15007length parameter was inadvertently changed from zero to Ones.
15008
15009Fixed a problem where the optional ResourceSource string in the
15010ExtendedIRQ
15011resource macro was ignored.
15012
15013Simplified the interfaces to the internal division functions, reducing
15014code
15015size and complexity.
15016
15017Code and Data Size: Current and previous core subsystem library sizes are
15018shown below. These are the code and data sizes for the acpica.lib
15019produced
15020by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15021any ACPI driver or OSPM code. The debug version of the code includes the
15022debug output trace mechanism and has a much larger code and data size.
15023Note
15024that these values will vary depending on the efficiency of the compiler
15025and
15026the compiler options used during generation.
15027
15028  Previous Release:
15029    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
15030    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
15031  Current Release:
15032    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15033    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
15034
15035
150362) iASL Compiler/Disassembler:
15037
15038Implemented support for the ACPI 3.0 Timer operator.
15039
15040Fixed a problem where the Default() operator was inadvertently ignored in
15041a
15042Switch/Case block.  This was a problem in the translation of the Switch
15043statement to If...Else pairs.
15044
15045Added support to allow a standalone Return operator, with no parentheses
15046(or
15047operands).
15048
15049Fixed a problem with code generation for the ElseIf operator where the
15050translated Else...If parse tree was improperly constructed leading to the
15051loss of some code.
15052
15053----------------------------------------
1505422 September 2004.  Summary of changes for version 20040922:
15055
150561) ACPI CA Core Subsystem:
15057
15058Fixed a problem with the implementation of the LNot() operator where
15059"Ones"
15060was not returned for the TRUE case. Changed the code to return Ones
15061instead
15062of (!Arg) which was usually 1. This change affects iASL constant folding
15063for
15064this operator also.
15065
15066Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
15067not
15068initialized properly -- Now zero the entire buffer in this case where the
15069buffer already exists.
15070
15071Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
15072Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
15073related code considerably. This will require changes/updates to all OS
15074interface layers (OSLs.)
15075
15076Implemented a new external interface, AcpiInstallExceptionHandler, to
15077allow
15078a system exception handler to be installed. This handler is invoked upon
15079any
15080run-time exception that occurs during control method execution.
15081
15082Added support for the DSDT in AcpiTbFindTable. This allows the
15083DataTableRegion() operator to access the local copy of the DSDT.
15084
15085Code and Data Size: Current and previous core subsystem library sizes are
15086shown below. These are the code and data sizes for the acpica.lib
15087produced
15088by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15089any ACPI driver or OSPM code. The debug version of the code includes the
15090debug output trace mechanism and has a much larger code and data size.
15091Note
15092that these values will vary depending on the efficiency of the compiler
15093and
15094the compiler options used during generation.
15095
15096  Previous Release:
15097    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
15098    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
15099  Current Release:
15100    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
15101    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
15102
15103
151042) iASL Compiler/Disassembler:
15105
15106Fixed a problem with constant folding and the LNot operator. LNot was
15107returning 1 in the TRUE case, not Ones as per the ACPI specification.
15108This
15109could result in the generation of an incorrect folded/reduced constant.
15110
15111End-Of-File is now allowed within a "//"-style comment.  A parse error no
15112longer occurs if such a comment is at the very end of the input ASL
15113source
15114file.
15115
15116Implemented the "-r" option to override the Revision in the table header.
15117The initial use of this option will be to simplify the evaluation of the
15118AML
15119interpreter by allowing a single ASL source module to be compiled for
15120either
1512132-bit or 64-bit integers.
15122
15123
15124----------------------------------------
1512527 August 2004.  Summary of changes for version 20040827:
15126
151271) ACPI CA Core Subsystem:
15128
15129- Implemented support for implicit object conversion in the non-numeric
15130logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
15131and
15132LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
15133the second operand is implicitly converted on the fly to match the type
15134of
15135the first operand.  For example:
15136
15137    LEqual (Source1, Source2)
15138
15139Source1 and Source2 must each evaluate to an integer, a string, or a
15140buffer.
15141The data type of Source1 dictates the required type of Source2. Source2
15142is
15143implicitly converted if necessary to match the type of Source1.
15144
15145- Updated and corrected the behavior of the string conversion support.
15146The
15147rules concerning conversion of buffers to strings (according to the ACPI
15148specification) are as follows:
15149
15150ToDecimalString - explicit byte-wise conversion of buffer to string of
15151decimal values (0-255) separated by commas. ToHexString - explicit byte-
15152wise
15153conversion of buffer to string of hex values (0-FF) separated by commas.
15154ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
15155byte
15156copy with no transform except NULL terminated. Any other implicit buffer-
15157to-
15158string conversion - byte-wise conversion of buffer to string of hex
15159values
15160(0-FF) separated by spaces.
15161
15162- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
15163
15164- Fixed a problem in AcpiNsGetPathnameLength where the returned length
15165was
15166one byte too short in the case of a node in the root scope.  This could
15167cause a fault during debug output.
15168
15169- Code and Data Size: Current and previous core subsystem library sizes
15170are
15171shown below.  These are the code and data sizes for the acpica.lib
15172produced
15173by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15174any ACPI driver or OSPM code.  The debug version of the code includes the
15175debug output trace mechanism and has a much larger code and data size.
15176Note
15177that these values will vary depending on the efficiency of the compiler
15178and
15179the compiler options used during generation.
15180
15181  Previous Release:
15182    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
15183    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
15184  Current Release:
15185    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
15186    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
15187
15188
151892) iASL Compiler/Disassembler:
15190
15191- Fixed a Linux generation error.
15192
15193
15194----------------------------------------
1519516 August 2004.  Summary of changes for version 20040816:
15196
151971) ACPI CA Core Subsystem:
15198
15199Designed and implemented support within the AML interpreter for the so-
15200called "implicit return".  This support returns the result of the last
15201ASL
15202operation within a control method, in the absence of an explicit Return()
15203operator.  A few machines depend on this behavior, even though it is not
15204explicitly supported by the ASL language.  It is optional support that
15205can
15206be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
15207
15208Removed support for the PCI_Config address space from the internal low
15209level
15210hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
15211support was not used internally, and would not work correctly anyway
15212because
15213the PCI bus number and segment number were not supported.  There are
15214separate interfaces for PCI configuration space access because of the
15215unique
15216interface.
15217
15218Code and Data Size: Current and previous core subsystem library sizes are
15219shown below.  These are the code and data sizes for the acpica.lib
15220produced
15221by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15222any ACPI driver or OSPM code.  The debug version of the code includes the
15223debug output trace mechanism and has a much larger code and data size.
15224Note
15225that these values will vary depending on the efficiency of the compiler
15226and
15227the compiler options used during generation.
15228
15229  Previous Release:
15230    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
15231    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
15232  Current Release:
15233    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
15234    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
15235
15236
152372) iASL Compiler/Disassembler:
15238
15239Fixed a problem where constants in ASL expressions at the root level (not
15240within a control method) could be inadvertently truncated during code
15241generation.  This problem was introduced in the 20040715 release.
15242
15243
15244----------------------------------------
1524515 July 2004.  Summary of changes for version 20040715:
15246
152471) ACPI CA Core Subsystem:
15248
15249Restructured the internal HW GPE interfaces to pass/track the current
15250state
15251of interrupts (enabled/disabled) in order to avoid possible deadlock and
15252increase flexibility of the interfaces.
15253
15254Implemented a "lexicographical compare" for String and Buffer objects
15255within
15256the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
15257-
15258as per further clarification to the ACPI specification.  Behavior is
15259similar
15260to C library "strcmp".
15261
15262Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
15263external function.  In the 32-bit non-debug case, the stack use has been
15264reduced from 168 bytes to 32 bytes.
15265
15266Deployed a new run-time configuration flag,
15267AcpiGbl_EnableInterpreterSlack,
15268whose purpose is to allow the AML interpreter to forgive certain bad AML
15269constructs.  Default setting is FALSE.
15270
15271Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
15272IO
15273support code.  If enabled, it allows field access to go beyond the end of
15274a
15275region definition if the field is within the region length rounded up to
15276the
15277next access width boundary (a common coding error.)
15278
15279Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
15280ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
15281these
15282symbols are lowercase by the latest version of the AcpiSrc tool.
15283
15284The prototypes for the PCI interfaces in acpiosxf.h have been updated to
15285rename "Register" to simply "Reg" to prevent certain compilers from
15286complaining.
15287
15288Code and Data Size: Current and previous core subsystem library sizes are
15289shown below.  These are the code and data sizes for the acpica.lib
15290produced
15291by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15292any ACPI driver or OSPM code.  The debug version of the code includes the
15293debug output trace mechanism and has a much larger code and data size.
15294Note
15295that these values will vary depending on the efficiency of the compiler
15296and
15297the compiler options used during generation.
15298
15299  Previous Release:
15300    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15301    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
15302  Current Release:
15303    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
15304    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
15305
15306
153072) iASL Compiler/Disassembler:
15308
15309Implemented full support for Package objects within the Case() operator.
15310Note: The Break() operator is currently not supported within Case blocks
15311(TermLists) as there is some question about backward compatibility with
15312ACPI
153131.0 interpreters.
15314
15315
15316Fixed a problem where complex terms were not supported properly within
15317the
15318Switch() operator.
15319
15320Eliminated extraneous warning for compiler-emitted reserved names of the
15321form "_T_x".  (Used in Switch/Case operators.)
15322
15323Eliminated optimization messages for "_T_x" objects and small constants
15324within the DefinitionBlock operator.
15325
15326
15327----------------------------------------
1532815 June 2004.  Summary of changes for version 20040615:
15329
153301) ACPI CA Core Subsystem:
15331
15332Implemented support for Buffer and String objects (as per ACPI 2.0) for
15333the
15334following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
15335LLessEqual.
15336
15337All directory names in the entire source package are lower case, as they
15338were in earlier releases.
15339
15340Implemented "Disassemble" command in the AML debugger that will
15341disassemble
15342a single control method.
15343
15344Code and Data Size: Current and previous core subsystem library sizes are
15345shown below.  These are the code and data sizes for the acpica.lib
15346produced
15347by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15348any ACPI driver or OSPM code.  The debug version of the code includes the
15349debug output trace mechanism and has a much larger code and data size.
15350Note
15351that these values will vary depending on the efficiency of the compiler
15352and
15353the compiler options used during generation.
15354
15355  Previous Release:
15356    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
15357    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
15358
15359  Current Release:
15360    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15361    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
15362
15363
153642) iASL Compiler/Disassembler:
15365
15366Implemented support for Buffer and String objects (as per ACPI 2.0) for
15367the
15368following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
15369LLessEqual.
15370
15371All directory names in the entire source package are lower case, as they
15372were in earlier releases.
15373
15374Fixed a fault when using the -g or -d<nofilename> options if the FADT was
15375not found.
15376
15377Fixed an issue with the Windows version of the compiler where later
15378versions
15379of Windows place the FADT in the registry under the name "FADT" and not
15380"FACP" as earlier versions did.  This applies when using the -g or -
15381d<nofilename> options.  The compiler now looks for both strings as
15382necessary.
15383
15384Fixed a problem with compiler namepath optimization where a namepath
15385within
15386the Scope() operator could not be optimized if the namepath was a subpath
15387of
15388the current scope path.
15389
15390----------------------------------------
1539127 May 2004.  Summary of changes for version 20040527:
15392
153931) ACPI CA Core Subsystem:
15394
15395Completed a new design and implementation for EBDA (Extended BIOS Data
15396Area)
15397support in the RSDP scan code.  The original code improperly scanned for
15398the
15399EBDA by simply scanning from memory location 0 to 0x400.  The correct
15400method
15401is to first obtain the EBDA pointer from within the BIOS data area, then
15402scan 1K of memory starting at the EBDA pointer.  There appear to be few
15403if
15404any machines that place the RSDP in the EBDA, however.
15405
15406Integrated a fix for a possible fault during evaluation of BufferField
15407arguments.  Obsolete code that was causing the problem was removed.
15408
15409Found and fixed a problem in the Field Support Code where data could be
15410corrupted on a bit field read that starts on an aligned boundary but does
15411not end on an aligned boundary.  Merged the read/write "datum length"
15412calculation code into a common procedure.
15413
15414Rolled in a couple of changes to the FreeBSD-specific header.
15415
15416
15417Code and Data Size: Current and previous core subsystem library sizes are
15418shown below.  These are the code and data sizes for the acpica.lib
15419produced
15420by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15421any ACPI driver or OSPM code.  The debug version of the code includes the
15422debug output trace mechanism and has a much larger code and data size.
15423Note
15424that these values will vary depending on the efficiency of the compiler
15425and
15426the compiler options used during generation.
15427
15428  Previous Release:
15429    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15430    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
15431  Current Release:
15432    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
15433    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
15434
15435
154362) iASL Compiler/Disassembler:
15437
15438Fixed a generation warning produced by some overly-verbose compilers for
15439a
1544064-bit constant.
15441
15442----------------------------------------
1544314 May 2004.  Summary of changes for version 20040514:
15444
154451) ACPI CA Core Subsystem:
15446
15447Fixed a problem where hardware GPE enable bits sometimes not set properly
15448during and after GPE method execution.  Result of 04/27 changes.
15449
15450Removed extra "clear all GPEs" when sleeping/waking.
15451
15452Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
15453AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
15454to
15455the new AcpiEv* calls as appropriate.
15456
15457ACPI_OS_NAME was removed from the OS-specific headers.  The default name
15458is
15459now "Microsoft Windows NT" for maximum compatibility.  However this can
15460be
15461changed by modifying the acconfig.h file.
15462
15463Allow a single invocation of AcpiInstallNotifyHandler for a handler that
15464traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
15465
15466Run _INI methods on ThermalZone objects.  This is against the ACPI
15467specification, but there is apparently ASL code in the field that has
15468these
15469_INI methods, and apparently "other" AML interpreters execute them.
15470
15471Performed a full 16/32/64 bit lint that resulted in some small changes.
15472
15473Added a sleep simulation command to the AML debugger to test sleep code.
15474
15475Code and Data Size: Current and previous core subsystem library sizes are
15476shown below.  These are the code and data sizes for the acpica.lib
15477produced
15478by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15479any ACPI driver or OSPM code.  The debug version of the code includes the
15480debug output trace mechanism and has a much larger code and data size.
15481Note
15482that these values will vary depending on the efficiency of the compiler
15483and
15484the compiler options used during generation.
15485
15486  Previous Release:
15487    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15488    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15489  Current Release:
15490    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15491    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
15492
15493----------------------------------------
1549427 April 2004.  Summary of changes for version 20040427:
15495
154961) ACPI CA Core Subsystem:
15497
15498Completed a major overhaul of the GPE handling within ACPI CA.  There are
15499now three types of GPEs:  wake-only, runtime-only, and combination
15500wake/run.
15501The only GPEs allowed to be combination wake/run are for button-style
15502devices such as a control-method power button, control-method sleep
15503button,
15504or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
15505not
15506referenced by any _PRW methods are marked for "runtime" and hardware
15507enabled.  Any GPE that is referenced by a _PRW method is marked for
15508"wake"
15509(and disabled at runtime).  However, at sleep time, only those GPEs that
15510have been specifically enabled for wake via the AcpiEnableGpe interface
15511will
15512actually be hardware enabled.
15513
15514A new external interface has been added, AcpiSetGpeType(), that is meant
15515to
15516be used by device drivers to force a GPE to a particular type.  It will
15517be
15518especially useful for the drivers for the button devices mentioned above.
15519
15520Completed restructuring of the ACPI CA initialization sequence so that
15521default operation region handlers are installed before GPEs are
15522initialized
15523and the _PRW methods are executed.  This will prevent errors when the
15524_PRW
15525methods attempt to access system memory or I/O space.
15526
15527GPE enable/disable no longer reads the GPE enable register.  We now keep
15528the
15529enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
15530thus no longer depend on the hardware to maintain these bits.
15531
15532Always clear the wake status and fixed/GPE status bits before sleep, even
15533for state S5.
15534
15535Improved the AML debugger output for displaying the GPE blocks and their
15536current status.
15537
15538Added new strings for the _OSI method, of the form "Windows 2001 SPx"
15539where
15540x = 0,1,2,3,4.
15541
15542Fixed a problem where the physical address was incorrectly calculated
15543when
15544the Load() operator was used to directly load from an Operation Region
15545(vs.
15546loading from a Field object.)  Also added check for minimum table length
15547for
15548this case.
15549
15550Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
15551mutex release.
15552
15553Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
15554consistency with the other fields returned.
15555
15556Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
15557structure for each GPE in the system, so the size of this structure is
15558important.
15559
15560CPU stack requirement reduction:  Cleaned up the method execution and
15561object
15562evaluation paths so that now a parameter structure is passed, instead of
15563copying the various method parameters over and over again.
15564
15565In evregion.c:  Correctly exit and reenter the interpreter region if and
15566only if dispatching an operation region request to a user-installed
15567handler.
15568Do not exit/reenter when dispatching to a default handler (e.g., default
15569system memory or I/O handlers)
15570
15571
15572Notes for updating drivers for the new GPE support.  The following
15573changes
15574must be made to ACPI-related device drivers that are attached to one or
15575more
15576GPEs: (This information will be added to the ACPI CA Programmer
15577Reference.)
15578
155791) AcpiInstallGpeHandler no longer automatically enables the GPE, you
15580must
15581explicitly call AcpiEnableGpe.
155822) There is a new interface called AcpiSetGpeType. This should be called
15583before enabling the GPE.  Also, this interface will automatically disable
15584the GPE if it is currently enabled.
155853) AcpiEnableGpe no longer supports a GPE type flag.
15586
15587Specific drivers that must be changed:
155881) EC driver:
15589    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
15590AeGpeHandler, NULL);
15591    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
15592    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
15593
155942) Button Drivers (Power, Lid, Sleep):
15595Run _PRW method under parent device
15596If _PRW exists: /* This is a control-method button */
15597    Extract GPE number and possibly GpeDevice
15598    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
15599    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
15600
15601For all other devices that have _PRWs, we automatically set the GPE type
15602to
15603ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
15604This
15605must be done on a selective basis, usually requiring some kind of user
15606app
15607to allow the user to pick the wake devices.
15608
15609
15610Code and Data Size: Current and previous core subsystem library sizes are
15611shown below.  These are the code and data sizes for the acpica.lib
15612produced
15613by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15614any ACPI driver or OSPM code.  The debug version of the code includes the
15615debug output trace mechanism and has a much larger code and data size.
15616Note
15617that these values will vary depending on the efficiency of the compiler
15618and
15619the compiler options used during generation.
15620
15621  Previous Release:
15622    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15623    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15624  Current Release:
15625
15626    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15627    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15628
15629
15630
15631----------------------------------------
1563202 April 2004.  Summary of changes for version 20040402:
15633
156341) ACPI CA Core Subsystem:
15635
15636Fixed an interpreter problem where an indirect store through an ArgX
15637parameter was incorrectly applying the "implicit conversion rules" during
15638the store.  From the ACPI specification: "If the target is a method local
15639or
15640argument (LocalX or ArgX), no conversion is performed and the result is
15641stored directly to the target".  The new behavior is to disable implicit
15642conversion during ALL stores to an ArgX.
15643
15644Changed the behavior of the _PRW method scan to ignore any and all errors
15645returned by a given _PRW.  This prevents the scan from aborting from the
15646failure of any single _PRW.
15647
15648Moved the runtime configuration parameters from the global init procedure
15649to
15650static variables in acglobal.h.  This will allow the host to override the
15651default values easily.
15652
15653Code and Data Size: Current and previous core subsystem library sizes are
15654shown below.  These are the code and data sizes for the acpica.lib
15655produced
15656by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15657any ACPI driver or OSPM code.  The debug version of the code includes the
15658debug output trace mechanism and has a much larger code and data size.
15659Note
15660that these values will vary depending on the efficiency of the compiler
15661and
15662the compiler options used during generation.
15663
15664  Previous Release:
15665    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15666    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15667  Current Release:
15668    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15669    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15670
15671
156722) iASL Compiler/Disassembler:
15673
15674iASL now fully disassembles SSDTs.  However, External() statements are
15675not
15676generated automatically for unresolved symbols at this time.  This is a
15677planned feature for future implementation.
15678
15679Fixed a scoping problem in the disassembler that occurs when the type of
15680the
15681target of a Scope() operator is overridden.  This problem caused an
15682incorrectly nested internal namespace to be constructed.
15683
15684Any warnings or errors that are emitted during disassembly are now
15685commented
15686out automatically so that the resulting file can be recompiled without
15687any
15688hand editing.
15689
15690----------------------------------------
1569126 March 2004.  Summary of changes for version 20040326:
15692
156931) ACPI CA Core Subsystem:
15694
15695Implemented support for "wake" GPEs via interaction between GPEs and the
15696_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
15697identified as a WAKE GPE and by default will no longer be enabled at
15698runtime.  Previously, we were blindly enabling all GPEs with a
15699corresponding
15700_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
15701We
15702believe this has been the cause of thousands of "spurious" GPEs on some
15703systems.
15704
15705This new GPE behavior is can be reverted to the original behavior (enable
15706ALL GPEs at runtime) via a runtime flag.
15707
15708Fixed a problem where aliased control methods could not access objects
15709properly.  The proper scope within the namespace was not initialized
15710(transferred to the target of the aliased method) before executing the
15711target method.
15712
15713Fixed a potential race condition on internal object deletion on the
15714return
15715object in AcpiEvaluateObject.
15716
15717Integrated a fix for resource descriptors where both _MEM and _MTP were
15718being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
15719wide, 0x0F instead of 0x03.)
15720
15721Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
15722preventing
15723a
15724fault in some cases.
15725
15726Updated Notify() values for debug statements in evmisc.c
15727
15728Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
15729
15730Code and Data Size: Current and previous core subsystem library sizes are
15731shown below.  These are the code and data sizes for the acpica.lib
15732produced
15733by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15734any ACPI driver or OSPM code.  The debug version of the code includes the
15735debug output trace mechanism and has a much larger code and data size.
15736Note
15737that these values will vary depending on the efficiency of the compiler
15738and
15739the compiler options used during generation.
15740
15741  Previous Release:
15742
15743    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15744    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15745  Current Release:
15746    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15747    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15748
15749----------------------------------------
1575011 March 2004.  Summary of changes for version 20040311:
15751
157521) ACPI CA Core Subsystem:
15753
15754Fixed a problem where errors occurring during the parse phase of control
15755method execution did not abort cleanly.  For example, objects created and
15756installed in the namespace were not deleted.  This caused all subsequent
15757invocations of the method to return the AE_ALREADY_EXISTS exception.
15758
15759Implemented a mechanism to force a control method to "Serialized"
15760execution
15761if the method attempts to create namespace objects. (The root of the
15762AE_ALREADY_EXISTS problem.)
15763
15764Implemented support for the predefined _OSI "internal" control method.
15765Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
15766and
15767"Windows 2001.1", and can be easily upgraded for new strings as
15768necessary.
15769This feature will allow "other" operating systems to execute the fully
15770tested, "Windows" code path through the ASL code
15771
15772Global Lock Support:  Now allows multiple acquires and releases with any
15773internal thread.  Removed concept of "owning thread" for this special
15774mutex.
15775
15776Fixed two functions that were inappropriately declaring large objects on
15777the
15778CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
15779during
15780method execution considerably.
15781
15782Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15783S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15784
15785Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15786defined on the machine.
15787
15788Implemented two runtime options:  One to force all control method
15789execution
15790to "Serialized" to mimic Windows behavior, another to disable _OSI
15791support
15792if it causes problems on a given machine.
15793
15794Code and Data Size: Current and previous core subsystem library sizes are
15795shown below.  These are the code and data sizes for the acpica.lib
15796produced
15797by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15798any ACPI driver or OSPM code.  The debug version of the code includes the
15799debug output trace mechanism and has a much larger code and data size.
15800Note
15801that these values will vary depending on the efficiency of the compiler
15802and
15803the compiler options used during generation.
15804
15805  Previous Release:
15806    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15807    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15808  Current Release:
15809    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15810    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15811
158122) iASL Compiler/Disassembler:
15813
15814Fixed an array size problem for FreeBSD that would cause the compiler to
15815fault.
15816
15817----------------------------------------
1581820 February 2004.  Summary of changes for version 20040220:
15819
15820
158211) ACPI CA Core Subsystem:
15822
15823Implemented execution of _SxD methods for Device objects in the
15824GetObjectInfo interface.
15825
15826Fixed calls to _SST method to pass the correct arguments.
15827
15828Added a call to _SST on wake to restore to "working" state.
15829
15830Check for End-Of-Buffer failure case in the WalkResources interface.
15831
15832Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15833structures to the beginning of the file.
15834
15835After wake, clear GPE status register(s) before enabling GPEs.
15836
15837After wake, clear/enable power button.  (Perhaps we should clear/enable
15838all
15839fixed events upon wake.)
15840
15841Fixed a couple of possible memory leaks in the Namespace manager.
15842
15843Integrated latest acnetbsd.h file.
15844
15845----------------------------------------
1584611 February 2004.  Summary of changes for version 20040211:
15847
15848
158491) ACPI CA Core Subsystem:
15850
15851Completed investigation and implementation of the call-by-reference
15852mechanism for control method arguments.
15853
15854Fixed a problem where a store of an object into an indexed package could
15855fail if the store occurs within a different method than the method that
15856created the package.
15857
15858Fixed a problem where the ToDecimal operator could return incorrect
15859results.
15860
15861Fixed a problem where the CopyObject operator could fail on some of the
15862more
15863obscure objects (e.g., Reference objects.)
15864
15865Improved the output of the Debug object to display buffer, package, and
15866index objects.
15867
15868Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15869return
15870the expected result.
15871
15872Added permanent ACPI_REPORT_ERROR macros for all instances of the
15873ACPI_AML_INTERNAL exception.
15874
15875Integrated latest version of acfreebsd.h
15876
15877----------------------------------------
1587816 January 2004.  Summary of changes for version 20040116:
15879
15880The purpose of this release is primarily to update the copyright years in
15881each module, thus causing a huge number of diffs.  There are a few small
15882functional changes, however.
15883
158841) ACPI CA Core Subsystem:
15885
15886Improved error messages when there is a problem finding one or more of
15887the
15888required base ACPI tables
15889
15890Reintroduced the definition of APIC_HEADER in actbl.h
15891
15892Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15893
15894Removed extraneous reference to NewObj in dsmthdat.c
15895
158962) iASL compiler
15897
15898Fixed a problem introduced in December that disabled the correct
15899disassembly
15900of Resource Templates
15901
15902
15903----------------------------------------
1590403 December 2003.  Summary of changes for version 20031203:
15905
159061) ACPI CA Core Subsystem:
15907
15908Changed the initialization of Operation Regions during subsystem
15909init to perform two entire walks of the ACPI namespace; The first
15910to initialize the regions themselves, the second to execute the
15911_REG methods.  This fixed some interdependencies across _REG
15912methods found on some machines.
15913
15914Fixed a problem where a Store(Local0, Local1) could simply update
15915the object reference count, and not create a new copy of the
15916object if the Local1 is uninitialized.
15917
15918Implemented support for the _SST reserved method during sleep
15919transitions.
15920
15921Implemented support to clear the SLP_TYP and SLP_EN bits when
15922waking up, this is apparently required by some machines.
15923
15924When sleeping, clear the wake status only if SleepState is not S5.
15925
15926Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15927pointer arithmetic advanced a string pointer too far.
15928
15929Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15930could be returned if the requested table has not been loaded.
15931
15932Within the support for IRQ resources, restructured the handling of
15933the active and edge/level bits.
15934
15935Fixed a few problems in AcpiPsxExecute() where memory could be
15936leaked under certain error conditions.
15937
15938Improved error messages for the cases where the ACPI mode could
15939not be entered.
15940
15941Code and Data Size: Current and previous core subsystem library
15942sizes are shown below.  These are the code and data sizes for the
15943acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15944these values do not include any ACPI driver or OSPM code.  The
15945debug version of the code includes the debug output trace
15946mechanism and has a much larger code and data size.  Note that
15947these values will vary depending on the efficiency of the compiler
15948and the compiler options used during generation.
15949
15950  Previous Release (20031029):
15951    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15952    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15953  Current Release:
15954    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15955    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15956
159572) iASL Compiler/Disassembler:
15958
15959Implemented a fix for the iASL disassembler where a bad index was
15960generated.  This was most noticeable on 64-bit platforms
15961
15962
15963----------------------------------------
1596429 October 2003.  Summary of changes for version 20031029:
15965
159661) ACPI CA Core Subsystem:
15967
15968
15969Fixed a problem where a level-triggered GPE with an associated
15970_Lxx control method was incorrectly cleared twice.
15971
15972Fixed a problem with the Field support code where an access can
15973occur beyond the end-of-region if the field is non-aligned but
15974extends to the very end of the parent region (resulted in an
15975AE_AML_REGION_LIMIT exception.)
15976
15977Fixed a problem with ACPI Fixed Events where an RT Clock handler
15978would not get invoked on an RTC event.  The RTC event bitmasks for
15979the PM1 registers were not being initialized properly.
15980
15981Implemented support for executing _STA and _INI methods for
15982Processor objects.  Although this is currently not part of the
15983ACPI specification, there is existing ASL code that depends on the
15984init-time execution of these methods.
15985
15986Implemented and deployed a GetDescriptorName function to decode
15987the various types of internal descriptors.  Guards against null
15988descriptors during debug output also.
15989
15990Implemented and deployed a GetNodeName function to extract the 4-
15991character namespace node name.  This function simplifies the debug
15992and error output, as well as guarding against null pointers during
15993output.
15994
15995Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15996simplify the debug and error output of 64-bit integers.  This
15997macro replaces the HIDWORD and LODWORD macros for dumping these
15998integers.
15999
16000Updated the implementation of the Stall() operator to only call
16001AcpiOsStall(), and also return an error if the operand is larger
16002than 255.  This preserves the required behavior of not
16003relinquishing the processor, as would happen if AcpiOsSleep() was
16004called for "long stalls".
16005
16006Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
16007initialized are now treated as NOOPs.
16008
16009Cleaned up a handful of warnings during 64-bit generation.
16010
16011Fixed a reported error where and incorrect GPE number was passed
16012to the GPE dispatch handler.  This value is only used for error
16013output, however.  Used this opportunity to clean up and streamline
16014the GPE dispatch code.
16015
16016Code and Data Size: Current and previous core subsystem library
16017sizes are shown below.  These are the code and data sizes for the
16018acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16019these values do not include any ACPI driver or OSPM code.  The
16020
16021debug version of the code includes the debug output trace
16022mechanism and has a much larger code and data size.  Note that
16023these values will vary depending on the efficiency of the compiler
16024and the compiler options used during generation.
16025
16026  Previous Release (20031002):
16027    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
16028    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
16029  Current Release:
16030    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
16031    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
16032
16033
160342) iASL Compiler/Disassembler:
16035
16036Updated the iASL compiler to return an error if the operand to the
16037Stall() operator is larger than 255.
16038
16039
16040----------------------------------------
1604102 October 2003.  Summary of changes for version 20031002:
16042
16043
160441) ACPI CA Core Subsystem:
16045
16046Fixed a problem with Index Fields where the index was not
16047incremented for fields that require multiple writes to the
16048index/data registers (Fields that are wider than the data
16049register.)
16050
16051Fixed a problem with all Field objects where a write could go
16052beyond the end-of-field if the field was larger than the access
16053granularity and therefore required multiple writes to complete the
16054request.  An extra write beyond the end of the field could happen
16055inadvertently.
16056
16057Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
16058would incorrectly be returned if the width of the Data Register
16059was larger than the specified field access width.
16060
16061Completed fixes for LoadTable() and Unload() and verified their
16062operation.  Implemented full support for the "DdbHandle" object
16063throughout the ACPI CA subsystem.
16064
16065Implemented full support for the MADT and ECDT tables in the ACPI
16066CA header files.  Even though these tables are not directly
16067consumed by ACPI CA, the header definitions are useful for ACPI
16068device drivers.
16069
16070Integrated resource descriptor fixes posted to the Linux ACPI
16071list.  This included checks for minimum descriptor length, and
16072support for trailing NULL strings within descriptors that have
16073optional string elements.
16074
16075Code and Data Size: Current and previous core subsystem library
16076sizes are shown below.  These are the code and data sizes for the
16077acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16078these values do not include any ACPI driver or OSPM code.  The
16079debug version of the code includes the debug output trace
16080mechanism and has a much larger code and data size.  Note that
16081these values will vary depending on the efficiency of the compiler
16082and the compiler options used during generation.
16083
16084  Previous Release (20030918):
16085    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
16086    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
16087  Current Release:
16088    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
16089    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
16090
16091
160922) iASL Compiler:
16093
16094Implemented detection of non-ASCII characters within the input
16095source ASL file.  This catches attempts to compile binary (AML)
16096files early in the compile, with an informative error message.
16097
16098Fixed a problem where the disassembler would fault if the output
16099filename could not be generated or if the output file could not be
16100opened.
16101
16102----------------------------------------
1610318 September 2003.  Summary of changes for version 20030918:
16104
16105
161061) ACPI CA Core Subsystem:
16107
16108Found and fixed a longstanding problem with the late execution of
16109the various deferred AML opcodes (such as Operation Regions,
16110Buffer Fields, Buffers, and Packages).  If the name string
16111specified for the name of the new object placed the object in a
16112scope other than the current scope, the initialization/execution
16113of the opcode failed.  The solution to this problem was to
16114implement a mechanism where the late execution of such opcodes
16115does not attempt to lookup/create the name a second time in an
16116incorrect scope.  This fixes the "region size computed
16117incorrectly" problem.
16118
16119Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
16120Global Lock AE_BAD_PARAMETER error.
16121
16122Fixed several 64-bit issues with prototypes, casting and data
16123types.
16124
16125Removed duplicate prototype from acdisasm.h
16126
16127Fixed an issue involving EC Operation Region Detach (Shaohua Li)
16128
16129Code and Data Size: Current and previous core subsystem library
16130sizes are shown below.  These are the code and data sizes for the
16131acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16132these values do not include any ACPI driver or OSPM code.  The
16133debug version of the code includes the debug output trace
16134mechanism and has a much larger code and data size.  Note that
16135these values will vary depending on the efficiency of the compiler
16136and the compiler options used during generation.
16137
16138  Previous Release:
16139
16140    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
16141    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
16142  Current Release:
16143    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
16144    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
16145
16146
161472) Linux:
16148
16149Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
16150correct sleep time in seconds.
16151
16152----------------------------------------
1615314 July 2003.  Summary of changes for version 20030619:
16154
161551) ACPI CA Core Subsystem:
16156
16157Parse SSDTs in order discovered, as opposed to reverse order
16158(Hrvoje Habjanic)
16159
16160Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
16161Klausner,
16162   Nate Lawson)
16163
16164
161652) Linux:
16166
16167Dynamically allocate SDT list (suggested by Andi Kleen)
16168
16169proc function return value cleanups (Andi Kleen)
16170
16171Correctly handle NMI watchdog during long stalls (Andrew Morton)
16172
16173Make it so acpismp=force works (reported by Andrew Morton)
16174
16175
16176----------------------------------------
1617719 June 2003.  Summary of changes for version 20030619:
16178
161791) ACPI CA Core Subsystem:
16180
16181Fix To/FromBCD, eliminating the need for an arch-specific #define.
16182
16183Do not acquire a semaphore in the S5 shutdown path.
16184
16185Fix ex_digits_needed for 0. (Takayoshi Kochi)
16186
16187Fix sleep/stall code reversal. (Andi Kleen)
16188
16189Revert a change having to do with control method calling
16190semantics.
16191
161922) Linux:
16193
16194acpiphp update (Takayoshi Kochi)
16195
16196Export acpi_disabled for sonypi (Stelian Pop)
16197
16198Mention acpismp=force in config help
16199
16200Re-add acpitable.c and acpismp=force. This improves backwards
16201
16202compatibility and also cleans up the code to a significant degree.
16203
16204Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
16205
16206----------------------------------------
1620722 May 2003.  Summary of changes for version 20030522:
16208
162091) ACPI CA Core Subsystem:
16210
16211Found and fixed a reported problem where an AE_NOT_FOUND error
16212occurred occasionally during _BST evaluation.  This turned out to
16213be an Owner ID allocation issue where a called method did not get
16214a new ID assigned to it.  Eventually, (after 64k calls), the Owner
16215ID UINT16 would wraparound so that the ID would be the same as the
16216caller's and the called method would delete the caller's
16217namespace.
16218
16219Implemented extended error reporting for control methods that are
16220aborted due to a run-time exception.  Output includes the exact
16221AML instruction that caused the method abort, a dump of the method
16222locals and arguments at the time of the abort, and a trace of all
16223nested control method calls.
16224
16225Modified the interpreter to allow the creation of buffers of zero
16226length from the AML code. Implemented new code to ensure that no
16227attempt is made to actually allocate a memory buffer (of length
16228zero) - instead, a simple buffer object with a NULL buffer pointer
16229and length zero is created.  A warning is no longer issued when
16230the AML attempts to create a zero-length buffer.
16231
16232Implemented a workaround for the "leading asterisk issue" in
16233_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
16234asterisk is automatically removed if present in any HID, UID, or
16235CID strings.  The iASL compiler will still flag this asterisk as
16236an error, however.
16237
16238Implemented full support for _CID methods that return a package of
16239multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
16240now additionally returns a device _CID list if present.  This
16241required a change to the external interface in order to pass an
16242ACPI_BUFFER object as a parameter since the _CID list is of
16243variable length.
16244
16245Fixed a problem with the new AE_SAME_HANDLER exception where
16246handler initialization code did not know about this exception.
16247
16248Code and Data Size: Current and previous core subsystem library
16249sizes are shown below.  These are the code and data sizes for the
16250acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16251these values do not include any ACPI driver or OSPM code.  The
16252debug version of the code includes the debug output trace
16253mechanism and has a much larger code and data size.  Note that
16254these values will vary depending on the efficiency of the compiler
16255and the compiler options used during generation.
16256
16257  Previous Release (20030509):
16258    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
16259    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
16260  Current Release:
16261    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
16262    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
16263
16264
162652) Linux:
16266
16267Fixed a bug in which we would reinitialize the ACPI interrupt
16268after it was already working, thus disabling all ACPI and the IRQs
16269for any other device sharing the interrupt. (Thanks to Stian
16270Jordet)
16271
16272Toshiba driver update (John Belmonte)
16273
16274Return only 0 or 1 for our interrupt handler status (Andrew
16275Morton)
16276
16277
162783) iASL Compiler:
16279
16280Fixed a reported problem where multiple (nested) ElseIf()
16281statements were not handled correctly by the compiler, resulting
16282in incorrect warnings and incorrect AML code.  This was a problem
16283in both the ASL parser and the code generator.
16284
16285
162864) Documentation:
16287
16288Added changes to existing interfaces, new exception codes, and new
16289text concerning reference count object management versus garbage
16290collection.
16291
16292----------------------------------------
1629309 May 2003.  Summary of changes for version 20030509.
16294
16295
162961) ACPI CA Core Subsystem:
16297
16298Changed the subsystem initialization sequence to hold off
16299installation of address space handlers until the hardware has been
16300initialized and the system has entered ACPI mode.  This is because
16301the installation of space handlers can cause _REG methods to be
16302run.  Previously, the _REG methods could potentially be run before
16303ACPI mode was enabled.
16304
16305Fixed some memory leak issues related to address space handler and
16306notify handler installation.  There were some problems with the
16307reference count mechanism caused by the fact that the handler
16308objects are shared across several namespace objects.
16309
16310Fixed a reported problem where reference counts within the
16311namespace were not properly updated when named objects created by
16312method execution were deleted.
16313
16314Fixed a reported problem where multiple SSDTs caused a deletion
16315issue during subsystem termination.  Restructured the table data
16316structures to simplify the linked lists and the related code.
16317
16318Fixed a problem where the table ID associated with secondary
16319tables (SSDTs) was not being propagated into the namespace objects
16320created by those tables.  This would only present a problem for
16321tables that are unloaded at run-time, however.
16322
16323Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
16324type as the length parameter (instead of UINT32).
16325
16326Solved a long-standing problem where an ALREADY_EXISTS error
16327appears on various systems.  This problem could happen when there
16328are multiple PCI_Config operation regions under a single PCI root
16329bus.  This doesn't happen very frequently, but there are some
16330systems that do this in the ASL.
16331
16332Fixed a reported problem where the internal DeleteNode function
16333was incorrectly handling the case where a namespace node was the
16334first in the parent's child list, and had additional peers (not
16335the only child, but first in the list of children.)
16336
16337Code and Data Size: Current core subsystem library sizes are shown
16338below.  These are the code and data sizes for the acpica.lib
16339produced by the Microsoft Visual C++ 6.0 compiler, and these
16340values do not include any ACPI driver or OSPM code.  The debug
16341version of the code includes the debug output trace mechanism and
16342has a much larger code and data size.  Note that these values will
16343vary depending on the efficiency of the compiler and the compiler
16344options used during generation.
16345
16346  Previous Release
16347    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
16348    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
16349  Current Release:
16350    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
16351    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
16352
16353
163542) Linux:
16355
16356Allow ":" in OS override string (Ducrot Bruno)
16357
16358Kobject fix (Greg KH)
16359
16360
163613 iASL Compiler/Disassembler:
16362
16363Fixed a problem in the generation of the C source code files (AML
16364is emitted in C source statements for BIOS inclusion) where the
16365Ascii dump that appears within a C comment at the end of each line
16366could cause a compile time error if the AML sequence happens to
16367have an open comment or close comment sequence embedded.
16368
16369
16370----------------------------------------
1637124 April 2003.  Summary of changes for version 20030424.
16372
16373
163741) ACPI CA Core Subsystem:
16375
16376Support for big-endian systems has been implemented.  Most of the
16377support has been invisibly added behind big-endian versions of the
16378ACPI_MOVE_* macros.
16379
16380Fixed a problem in AcpiHwDisableGpeBlock() and
16381AcpiHwClearGpeBlock() where an incorrect offset was passed to the
16382low level hardware write routine.  The offset parameter was
16383actually eliminated from the low level read/write routines because
16384they had become obsolete.
16385
16386Fixed a problem where a handler object was deleted twice during
16387the removal of a fixed event handler.
16388
16389
163902) Linux:
16391
16392A fix for SMP systems with link devices was contributed by
16393
16394Compaq's Dan Zink.
16395
16396(2.5) Return whether we handled the interrupt in our IRQ handler.
16397(Linux ISRs no longer return void, so we can propagate the handler
16398return value from the ACPI CA core back to the OS.)
16399
16400
16401
164023) Documentation:
16403
16404The ACPI CA Programmer Reference has been updated to reflect new
16405interfaces and changes to existing interfaces.
16406
16407----------------------------------------
1640828 March 2003.  Summary of changes for version 20030328.
16409
164101) ACPI CA Core Subsystem:
16411
16412The GPE Block Device support has been completed.  New interfaces
16413are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
16414interfaces (enable, disable, clear, getstatus) have been split
16415into separate interfaces for Fixed Events and General Purpose
16416Events (GPEs) in order to support GPE Block Devices properly.
16417
16418Fixed a problem where the error message "Failed to acquire
16419semaphore" would appear during operations on the embedded
16420controller (EC).
16421
16422Code and Data Size: Current core subsystem library sizes are shown
16423below.  These are the code and data sizes for the acpica.lib
16424produced by the Microsoft Visual C++ 6.0 compiler, and these
16425values do not include any ACPI driver or OSPM code.  The debug
16426version of the code includes the debug output trace mechanism and
16427has a much larger code and data size.  Note that these values will
16428vary depending on the efficiency of the compiler and the compiler
16429options used during generation.
16430
16431  Previous Release
16432    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
16433    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
16434  Current Release:
16435    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
16436    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
16437
16438
16439----------------------------------------
1644028 February 2003.  Summary of changes for version 20030228.
16441
16442
164431) ACPI CA Core Subsystem:
16444
16445The GPE handling and dispatch code has been completely overhauled
16446in preparation for support of GPE Block Devices (ID ACPI0006).
16447This affects internal data structures and code only; there should
16448be no differences visible externally.  One new file has been
16449added, evgpeblk.c
16450
16451The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
16452fields that are used to determine the GPE block lengths.  The
16453REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
16454structures are ignored.  This is per the ACPI specification but it
16455isn't very clear.  The full 256 Block 0/1 GPEs are now supported
16456(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
16457
16458In the SCI interrupt handler, removed the read of the PM1_CONTROL
16459register to look at the SCI_EN bit.  On some machines, this read
16460causes an SMI event and greatly slows down SCI events.  (This may
16461in fact be the cause of slow battery status response on some
16462systems.)
16463
16464Fixed a problem where a store of a NULL string to a package object
16465could cause the premature deletion of the object.  This was seen
16466during execution of the battery _BIF method on some systems,
16467resulting in no battery data being returned.
16468
16469Added AcpiWalkResources interface to simplify parsing of resource
16470lists.
16471
16472Code and Data Size: Current core subsystem library sizes are shown
16473below.  These are the code and data sizes for the acpica.lib
16474produced by the Microsoft Visual C++ 6.0 compiler, and these
16475values do not include any ACPI driver or OSPM code.  The debug
16476version of the code includes the debug output trace mechanism and
16477has a much larger code and data size.  Note that these values will
16478vary depending on the efficiency of the compiler and the compiler
16479options used during generation.
16480
16481  Previous Release
16482    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16483    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16484  Current Release:
16485    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
16486    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
16487
16488
164892) Linux
16490
16491S3 fixes (Ole Rohne)
16492
16493Update ACPI PHP driver with to use new acpi_walk_resource API
16494(Bjorn Helgaas)
16495
16496Add S4BIOS support (Pavel Machek)
16497
16498Map in entire table before performing checksum (John Stultz)
16499
16500Expand the mem= cmdline to allow the specification of reserved and
16501ACPI DATA blocks (Pavel Machek)
16502
16503Never use ACPI on VISWS
16504
16505Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
16506
16507Revert a change that allowed P_BLK lengths to be 4 or 5. This is
16508causing us to think that some systems support C2 when they really
16509don't.
16510
16511Do not count processor objects for non-present CPUs (Thanks to
16512Dominik Brodowski)
16513
16514
165153) iASL Compiler:
16516
16517Fixed a problem where ASL include files could not be found and
16518opened.
16519
16520Added support for the _PDC reserved name.
16521
16522
16523----------------------------------------
1652422 January 2003.  Summary of changes for version 20030122.
16525
16526
165271) ACPI CA Core Subsystem:
16528
16529Added a check for constructs of the form:  Store (Local0, Local0)
16530where Local0 is not initialized.  Apparently, some BIOS
16531programmers believe that this is a NOOP.  Since this store doesn't
16532do anything anyway, the new prototype behavior will ignore this
16533error.  This is a case where we can relax the strict checking in
16534the interpreter in the name of compatibility.
16535
16536
165372) Linux
16538
16539The AcpiSrc Source Conversion Utility has been released with the
16540Linux package for the first time.  This is the utility that is
16541used to convert the ACPI CA base source code to the Linux version.
16542
16543(Both) Handle P_BLK lengths shorter than 6 more gracefully
16544
16545(Both) Move more headers to include/acpi, and delete an unused
16546header.
16547
16548(Both) Move drivers/acpi/include directory to include/acpi
16549
16550(Both) Boot functions don't use cmdline, so don't pass it around
16551
16552(Both) Remove include of unused header (Adrian Bunk)
16553
16554(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
16555the
16556former now also includes the latter, acpiphp.h only needs the one,
16557now.
16558
16559(2.5) Make it possible to select method of bios restoring after S3
16560resume. [=> no more ugly ifdefs] (Pavel Machek)
16561
16562(2.5) Make proc write interfaces work (Pavel Machek)
16563
16564(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
16565
16566(2.5) Break out ACPI Perf code into its own module, under cpufreq
16567(Dominik Brodowski)
16568
16569(2.4) S4BIOS support (Ducrot Bruno)
16570
16571(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
16572Visinoni)
16573
16574
165753) iASL Compiler:
16576
16577Added support to disassemble SSDT and PSDTs.
16578
16579Implemented support to obtain SSDTs from the Windows registry if
16580available.
16581
16582
16583----------------------------------------
1658409 January 2003.  Summary of changes for version 20030109.
16585
165861) ACPI CA Core Subsystem:
16587
16588Changed the behavior of the internal Buffer-to-String conversion
16589function.  The current ACPI specification states that the contents
16590of the buffer are "converted to a string of two-character
16591hexadecimal numbers, each separated by a space".  Unfortunately,
16592this definition is not backwards compatible with existing ACPI 1.0
16593implementations (although the behavior was not defined in the ACPI
165941.0 specification).  The new behavior simply copies data from the
16595buffer to the string until a null character is found or the end of
16596the buffer is reached.  The new String object is always null
16597terminated.  This problem was seen during the generation of _BIF
16598battery data where incorrect strings were returned for battery
16599type, etc.  This will also require an errata to the ACPI
16600specification.
16601
16602Renamed all instances of NATIVE_UINT and NATIVE_INT to
16603ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
16604
16605Copyright in all module headers (both Linux and non-Linux) has be
16606updated to 2003.
16607
16608Code and Data Size: Current core subsystem library sizes are shown
16609below.  These are the code and data sizes for the acpica.lib
16610produced by the Microsoft Visual C++ 6.0 compiler, and these
16611values do not include any ACPI driver or OSPM code.  The debug
16612version of the code includes the debug output trace mechanism and
16613has a much larger code and data size.  Note that these values will
16614vary depending on the efficiency of the compiler and the compiler
16615options used during generation.
16616
16617  Previous Release
16618    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16619    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16620  Current Release:
16621    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16622    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16623
16624
166252) Linux
16626
16627Fixed an oops on module insertion/removal (Matthew Tippett)
16628
16629(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
16630
16631(2.5) Replace pr_debug (Randy Dunlap)
16632
16633(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
16634
16635(Both) Eliminate spawning of thread from timer callback, in favor
16636of schedule_work()
16637
16638(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
16639
16640(Both) Added define for Fixed Function HW region (Matthew Wilcox)
16641
16642(Both) Add missing statics to button.c (Pavel Machek)
16643
16644Several changes have been made to the source code translation
16645utility that generates the Linux Code in order to make the code
16646more "Linux-like":
16647
16648All typedefs on structs and unions have been removed in keeping
16649with the Linux coding style.
16650
16651Removed the non-Linux SourceSafe module revision number from each
16652module header.
16653
16654Completed major overhaul of symbols to be lowercase for linux.
16655Doubled the number of symbols that are lowercase.
16656
16657Fixed a problem where identifiers within procedure headers and
16658within quotes were not fully lower cased (they were left with a
16659starting capital.)
16660
16661Some C macros whose only purpose is to allow the generation of 16-
16662bit code are now completely removed in the Linux code, increasing
16663readability and maintainability.
16664
16665----------------------------------------
16666
1666712 December 2002.  Summary of changes for version 20021212.
16668
16669
166701) ACPI CA Core Subsystem:
16671
16672Fixed a problem where the creation of a zero-length AML Buffer
16673would cause a fault.
16674
16675Fixed a problem where a Buffer object that pointed to a static AML
16676buffer (in an ACPI table) could inadvertently be deleted, causing
16677memory corruption.
16678
16679Fixed a problem where a user buffer (passed in to the external
16680ACPI CA interfaces) could be overwritten if the buffer was too
16681small to complete the operation, causing memory corruption.
16682
16683Fixed a problem in the Buffer-to-String conversion code where a
16684string of length one was always returned, regardless of the size
16685of the input Buffer object.
16686
16687Removed the NATIVE_CHAR data type across the entire source due to
16688lack of need and lack of consistent use.
16689
16690Code and Data Size: Current core subsystem library sizes are shown
16691below.  These are the code and data sizes for the acpica.lib
16692produced by the Microsoft Visual C++ 6.0 compiler, and these
16693values do not include any ACPI driver or OSPM code.  The debug
16694version of the code includes the debug output trace mechanism and
16695has a much larger code and data size.  Note that these values will
16696vary depending on the efficiency of the compiler and the compiler
16697options used during generation.
16698
16699  Previous Release
16700    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16701    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16702  Current Release:
16703    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16704    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16705
16706
16707----------------------------------------
1670805 December 2002.  Summary of changes for version 20021205.
16709
167101) ACPI CA Core Subsystem:
16711
16712Fixed a problem where a store to a String or Buffer object could
16713cause corruption of the DSDT if the object type being stored was
16714the same as the target object type and the length of the object
16715being stored was equal to or smaller than the original (existing)
16716target object.  This was seen to cause corruption of battery _BIF
16717buffers if the _BIF method modified the buffer on the fly.
16718
16719Fixed a problem where an internal error was generated if a control
16720method invocation was used in an OperationRegion, Buffer, or
16721Package declaration.  This was caused by the deferred parsing of
16722the control method and thus the deferred creation of the internal
16723method object.  The solution to this problem was to create the
16724internal method object at the moment the method is encountered in
16725the first pass - so that subsequent references to the method will
16726able to obtain the required parameter count and thus properly
16727parse the method invocation.  This problem presented itself as an
16728AE_AML_INTERNAL during the pass 1 parse phase during table load.
16729
16730Fixed a problem where the internal String object copy routine did
16731not always allocate sufficient memory for the target String object
16732and caused memory corruption.  This problem was seen to cause
16733"Allocation already present in list!" errors as memory allocation
16734became corrupted.
16735
16736Implemented a new function for the evaluation of namespace objects
16737that allows the specification of the allowable return object
16738types.  This simplifies a lot of code that checks for a return
16739object of one or more specific objects returned from the
16740evaluation (such as _STA, etc.)  This may become and external
16741function if it would be useful to ACPI-related drivers.
16742
16743Completed another round of prefixing #defines with "ACPI_" for
16744clarity.
16745
16746Completed additional code restructuring to allow more modular
16747linking for iASL compiler and AcpiExec.  Several files were split
16748creating new files.  New files:  nsparse.c dsinit.c evgpe.c
16749
16750Implemented an abort mechanism to terminate an executing control
16751method via the AML debugger.  This feature is useful for debugging
16752control methods that depend (wait) for specific hardware
16753responses.
16754
16755Code and Data Size: Current core subsystem library sizes are shown
16756below.  These are the code and data sizes for the acpica.lib
16757produced by the Microsoft Visual C++ 6.0 compiler, and these
16758values do not include any ACPI driver or OSPM code.  The debug
16759version of the code includes the debug output trace mechanism and
16760has a much larger code and data size.  Note that these values will
16761vary depending on the efficiency of the compiler and the compiler
16762options used during generation.
16763
16764  Previous Release
16765    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16766    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16767  Current Release:
16768    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16769    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16770
16771
167722) iASL Compiler/Disassembler
16773
16774Fixed a compiler code generation problem for "Interrupt" Resource
16775Descriptors.  If specified in the ASL, the optional "Resource
16776Source Index" and "Resource Source" fields were not inserted into
16777the correct location within the AML resource descriptor, creating
16778an invalid descriptor.
16779
16780Fixed a disassembler problem for "Interrupt" resource descriptors.
16781The optional "Resource Source Index" and "Resource Source" fields
16782were ignored.
16783
16784
16785----------------------------------------
1678622 November 2002.  Summary of changes for version 20021122.
16787
16788
167891) ACPI CA Core Subsystem:
16790
16791Fixed a reported problem where an object stored to a Method Local
16792or Arg was not copied to a new object during the store - the
16793object pointer was simply copied to the Local/Arg.  This caused
16794all subsequent operations on the Local/Arg to also affect the
16795original source of the store operation.
16796
16797Fixed a problem where a store operation to a Method Local or Arg
16798was not completed properly if the Local/Arg contained a reference
16799(from RefOf) to a named field.  The general-purpose store-to-
16800namespace-node code is now used so that this case is handled
16801automatically.
16802
16803Fixed a problem where the internal object copy routine would cause
16804a protection fault if the object being copied was a Package and
16805contained either 1) a NULL package element or 2) a nested sub-
16806package.
16807
16808Fixed a problem with the GPE initialization that resulted from an
16809ambiguity in the ACPI specification.  One section of the
16810specification states that both the address and length of the GPE
16811block must be zero if the block is not supported.  Another section
16812implies that only the address need be zero if the block is not
16813supported.  The code has been changed so that both the address and
16814the length must be non-zero to indicate a valid GPE block (i.e.,
16815if either the address or the length is zero, the GPE block is
16816invalid.)
16817
16818Code and Data Size: Current core subsystem library sizes are shown
16819below.  These are the code and data sizes for the acpica.lib
16820produced by the Microsoft Visual C++ 6.0 compiler, and these
16821values do not include any ACPI driver or OSPM code.  The debug
16822version of the code includes the debug output trace mechanism and
16823has a much larger code and data size.  Note that these values will
16824vary depending on the efficiency of the compiler and the compiler
16825options used during generation.
16826
16827  Previous Release
16828    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16829    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16830  Current Release:
16831    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16832    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16833
16834
168352) Linux
16836
16837Cleaned up EC driver. Exported an external EC read/write
16838interface. By going through this, other drivers (most notably
16839sonypi) will be able to serialize access to the EC.
16840
16841
168423) iASL Compiler/Disassembler
16843
16844Implemented support to optionally generate include files for both
16845ASM and C (the -i switch).  This simplifies BIOS development by
16846automatically creating include files that contain external
16847declarations for the symbols that are created within the
16848
16849(optionally generated) ASM and C AML source files.
16850
16851
16852----------------------------------------
1685315 November 2002.  Summary of changes for version 20021115.
16854
168551) ACPI CA Core Subsystem:
16856
16857Fixed a memory leak problem where an error during resolution of
16858
16859method arguments during a method invocation from another method
16860failed to cleanup properly by deleting all successfully resolved
16861argument objects.
16862
16863Fixed a problem where the target of the Index() operator was not
16864correctly constructed if the source object was a package.  This
16865problem has not been detected because the use of a target operand
16866with Index() is very rare.
16867
16868Fixed a problem with the Index() operator where an attempt was
16869made to delete the operand objects twice.
16870
16871Fixed a problem where an attempt was made to delete an operand
16872twice during execution of the CondRefOf() operator if the target
16873did not exist.
16874
16875Implemented the first of perhaps several internal create object
16876functions that create and initialize a specific object type.  This
16877consolidates duplicated code wherever the object is created, thus
16878shrinking the size of the subsystem.
16879
16880Implemented improved debug/error messages for errors that occur
16881during nested method invocations.  All executing method pathnames
16882are displayed (with the error) as the call stack is unwound - thus
16883simplifying debug.
16884
16885Fixed a problem introduced in the 10/02 release that caused
16886premature deletion of a buffer object if a buffer was used as an
16887ASL operand where an integer operand is required (Thus causing an
16888implicit object conversion from Buffer to Integer.)  The change in
16889the 10/02 release was attempting to fix a memory leak (albeit
16890incorrectly.)
16891
16892Code and Data Size: Current core subsystem library sizes are shown
16893below.  These are the code and data sizes for the acpica.lib
16894produced by the Microsoft Visual C++ 6.0 compiler, and these
16895values do not include any ACPI driver or OSPM code.  The debug
16896version of the code includes the debug output trace mechanism and
16897has a much larger code and data size.  Note that these values will
16898vary depending on the efficiency of the compiler and the compiler
16899options used during generation.
16900
16901  Previous Release
16902    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16903    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16904  Current Release:
16905    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16906    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16907
16908
169092) Linux
16910
16911Changed the implementation of the ACPI semaphores to use down()
16912instead of down_interruptable().  It is important that the
16913execution of ACPI control methods not be interrupted by signals.
16914Methods must run to completion, or the system may be left in an
16915unknown/unstable state.
16916
16917Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16918(Shawn Starr)
16919
16920
169213) iASL Compiler/Disassembler
16922
16923
16924Changed the default location of output files.  All output files
16925are now placed in the current directory by default instead of in
16926the directory of the source file.  This change may affect some
16927existing makefiles, but it brings the behavior of the compiler in
16928line with other similar tools.  The location of the output files
16929can be overridden with the -p command line switch.
16930
16931
16932----------------------------------------
1693311 November 2002.  Summary of changes for version 20021111.
16934
16935
169360) ACPI Specification 2.0B is released and is now available at:
16937http://www.acpi.info/index.html
16938
16939
169401) ACPI CA Core Subsystem:
16941
16942Implemented support for the ACPI 2.0 SMBus Operation Regions.
16943This includes the early detection and handoff of the request to
16944the SMBus region handler (avoiding all of the complex field
16945support code), and support for the bidirectional return packet
16946from an SMBus write operation.  This paves the way for the
16947development of SMBus drivers in each host operating system.
16948
16949Fixed a problem where the semaphore WAIT_FOREVER constant was
16950defined as 32 bits, but must be 16 bits according to the ACPI
16951specification.  This had the side effect of causing ASL
16952Mutex/Event timeouts even though the ASL code requested a wait
16953forever.  Changed all internal references to the ACPI timeout
16954parameter to 16 bits to prevent future problems.  Changed the name
16955of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16956
16957Code and Data Size: Current core subsystem library sizes are shown
16958below.  These are the code and data sizes for the acpica.lib
16959produced by the Microsoft Visual C++ 6.0 compiler, and these
16960values do not include any ACPI driver or OSPM code.  The debug
16961version of the code includes the debug output trace mechanism and
16962has a much larger code and data size.  Note that these values will
16963vary depending on the efficiency of the compiler and the compiler
16964options used during generation.
16965
16966  Previous Release
16967    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16968    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16969  Current Release:
16970    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16971    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16972
16973
169742) Linux
16975
16976Module loading/unloading fixes (John Cagle)
16977
16978
169793) iASL Compiler/Disassembler
16980
16981Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16982
16983Implemented support for the disassembly of all SMBus protocol
16984keywords (SMBQuick, SMBWord, etc.)
16985
16986----------------------------------------
1698701 November 2002.  Summary of changes for version 20021101.
16988
16989
169901) ACPI CA Core Subsystem:
16991
16992Fixed a problem where platforms that have a GPE1 block but no GPE0
16993block were not handled correctly.  This resulted in a "GPE
16994overlap" error message.  GPE0 is no longer required.
16995
16996Removed code added in the previous release that inserted nodes
16997into the namespace in alphabetical order.  This caused some side-
16998effects on various machines.  The root cause of the problem is
16999still under investigation since in theory, the internal ordering
17000of the namespace nodes should not matter.
17001
17002
17003Enhanced error reporting for the case where a named object is not
17004found during control method execution.  The full ACPI namepath
17005(name reference) of the object that was not found is displayed in
17006this case.
17007
17008Note: as a result of the overhaul of the namespace object types in
17009the previous release, the namespace nodes for the predefined
17010scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
17011instead of ACPI_TYPE_ANY.  This simplifies the namespace
17012management code but may affect code that walks the namespace tree
17013looking for specific object types.
17014
17015Code and Data Size: Current core subsystem library sizes are shown
17016below.  These are the code and data sizes for the acpica.lib
17017produced by the Microsoft Visual C++ 6.0 compiler, and these
17018values do not include any ACPI driver or OSPM code.  The debug
17019version of the code includes the debug output trace mechanism and
17020has a much larger code and data size.  Note that these values will
17021vary depending on the efficiency of the compiler and the compiler
17022options used during generation.
17023
17024  Previous Release
17025    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
17026    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
17027  Current Release:
17028    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
17029    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
17030
17031
170322) Linux
17033
17034Fixed a problem introduced in the previous release where the
17035Processor and Thermal objects were not recognized and installed in
17036/proc.  This was related to the scope type change described above.
17037
17038
170393) iASL Compiler/Disassembler
17040
17041Implemented the -g option to get all of the required ACPI tables
17042from the registry and save them to files (Windows version of the
17043compiler only.)  The required tables are the FADT, FACS, and DSDT.
17044
17045Added ACPI table checksum validation during table disassembly in
17046order to catch corrupted tables.
17047
17048
17049----------------------------------------
1705022 October 2002.  Summary of changes for version 20021022.
17051
170521) ACPI CA Core Subsystem:
17053
17054Implemented a restriction on the Scope operator that the target
17055must already exist in the namespace at the time the operator is
17056encountered (during table load or method execution).  In other
17057words, forward references are not allowed and Scope() cannot
17058create a new object. This changes the previous behavior where the
17059interpreter would create the name if not found.  This new behavior
17060correctly enables the search-to-root algorithm during namespace
17061lookup of the target name.  Because of this upsearch, this fixes
17062the known Compaq _SB_.OKEC problem and makes both the AML
17063interpreter and iASL compiler compatible with other ACPI
17064implementations.
17065
17066Completed a major overhaul of the internal ACPI object types for
17067the ACPI Namespace and the associated operand objects.  Many of
17068these types had become obsolete with the introduction of the two-
17069pass namespace load.  This cleanup simplifies the code and makes
17070the entire namespace load mechanism much clearer and easier to
17071understand.
17072
17073Improved debug output for tracking scope opening/closing to help
17074diagnose scoping issues.  The old scope name as well as the new
17075scope name are displayed.  Also improved error messages for
17076problems with ASL Mutex objects and error messages for GPE
17077problems.
17078
17079Cleaned up the namespace dump code, removed obsolete code.
17080
17081All string output (for all namespace/object dumps) now uses the
17082common ACPI string output procedure which handles escapes properly
17083and does not emit non-printable characters.
17084
17085Fixed some issues with constants in the 64-bit version of the
17086local C library (utclib.c)
17087
17088
170892) Linux
17090
17091EC Driver:  No longer attempts to acquire the Global Lock at
17092interrupt level.
17093
17094
170953) iASL Compiler/Disassembler
17096
17097Implemented ACPI 2.0B grammar change that disallows all Type 1 and
170982 opcodes outside of a control method.  This means that the
17099"executable" operators (versus the "namespace" operators) cannot
17100be used at the table level; they can only be used within a control
17101method.
17102
17103Implemented the restriction on the Scope() operator where the
17104target must already exist in the namespace at the time the
17105operator is encountered (during ASL compilation). In other words,
17106forward references are not allowed and Scope() cannot create a new
17107object.  This makes the iASL compiler compatible with other ACPI
17108implementations and makes the Scope() implementation adhere to the
17109ACPI specification.
17110
17111Fixed a problem where namepath optimization for the Alias operator
17112was optimizing the wrong path (of the two namepaths.)  This caused
17113a "Missing alias link" error message.
17114
17115Fixed a problem where an "unknown reserved name" warning could be
17116incorrectly generated for names like "_SB" when the trailing
17117underscore is not used in the original ASL.
17118
17119Fixed a problem where the reserved name check did not handle
17120NamePaths with multiple NameSegs correctly.  The first nameseg of
17121the NamePath was examined instead of the last NameSeg.
17122
17123
17124----------------------------------------
17125
1712602 October 2002.  Summary of changes for this release.
17127
17128
171291) ACPI CA Core Subsystem version 20021002:
17130
17131Fixed a problem where a store/copy of a string to an existing
17132string did not always set the string length properly in the String
17133object.
17134
17135Fixed a reported problem with the ToString operator where the
17136behavior was identical to the ToHexString operator instead of just
17137simply converting a raw buffer to a string data type.
17138
17139Fixed a problem where CopyObject and the other "explicit"
17140conversion operators were not updating the internal namespace node
17141type as part of the store operation.
17142
17143Fixed a memory leak during implicit source operand conversion
17144where the original object was not deleted if it was converted to a
17145new object of a different type.
17146
17147Enhanced error messages for all problems associated with namespace
17148lookups.  Common procedure generates and prints the lookup name as
17149well as the formatted status.
17150
17151Completed implementation of a new design for the Alias support
17152within the namespace.  The existing design did not handle the case
17153where a new object was assigned to one of the two names due to the
17154use of an explicit conversion operator, resulting in the two names
17155pointing to two different objects.  The new design simply points
17156the Alias name to the original name node - not to the object.
17157This results in a level of indirection that must be handled in the
17158name resolution mechanism.
17159
17160Code and Data Size: Current core subsystem library sizes are shown
17161below.  These are the code and data sizes for the acpica.lib
17162produced by the Microsoft Visual C++ 6.0 compiler, and these
17163values do not include any ACPI driver or OSPM code.  The debug
17164version of the code includes the debug output trace mechanism and
17165has a larger code and data size.  Note that these values will vary
17166depending on the efficiency of the compiler and the compiler
17167options used during generation.
17168
17169  Previous Release
17170    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
17171    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
17172  Current Release:
17173    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
17174    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
17175
17176
171772) Linux
17178
17179Initialize thermal driver's timer before it is used. (Knut
17180Neumann)
17181
17182Allow handling negative celsius values. (Kochi Takayoshi)
17183
17184Fix thermal management and make trip points. R/W (Pavel Machek)
17185
17186Fix /proc/acpi/sleep. (P. Christeas)
17187
17188IA64 fixes. (David Mosberger)
17189
17190Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
17191
17192Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
17193Brodowski)
17194
17195
171963) iASL Compiler/Disassembler
17197
17198Clarified some warning/error messages.
17199
17200
17201----------------------------------------
1720218 September 2002.  Summary of changes for this release.
17203
17204
172051) ACPI CA Core Subsystem version 20020918:
17206
17207Fixed a reported problem with reference chaining (via the Index()
17208and RefOf() operators) in the ObjectType() and SizeOf() operators.
17209The definition of these operators includes the dereferencing of
17210all chained references to return information on the base object.
17211
17212Fixed a problem with stores to indexed package elements - the
17213existing code would not complete the store if an "implicit
17214conversion" was not performed.  In other words, if the existing
17215object (package element) was to be replaced completely, the code
17216didn't handle this case.
17217
17218Relaxed typechecking on the ASL "Scope" operator to allow the
17219target name to refer to an object of type Integer, String, or
17220Buffer, in addition to the scoping object types (Device,
17221predefined Scopes, Processor, PowerResource, and ThermalZone.)
17222This allows existing AML code that has workarounds for a bug in
17223Windows to function properly.  A warning is issued, however.  This
17224affects both the AML interpreter and the iASL compiler. Below is
17225an example of this type of ASL code:
17226
17227      Name(DEB,0x00)
17228      Scope(DEB)
17229      {
17230
17231Fixed some reported problems with 64-bit integer support in the
17232local implementation of C library functions (clib.c)
17233
17234
172352) Linux
17236
17237Use ACPI fix map region instead of IOAPIC region, since it is
17238undefined in non-SMP.
17239
17240Ensure that the SCI has the proper polarity and trigger, even on
17241systems that do not have an interrupt override entry in the MADT.
17242
172432.5 big driver reorganization (Pat Mochel)
17244
17245Use early table mapping code from acpitable.c (Andi Kleen)
17246
17247New blacklist entries (Andi Kleen)
17248
17249Blacklist improvements. Split blacklist code out into a separate
17250file. Move checking the blacklist to very early. Previously, we
17251would use ACPI tables, and then halfway through init, check the
17252blacklist -- too late. Now, it's early enough to completely fall-
17253back to non-ACPI.
17254
17255
172563) iASL Compiler/Disassembler version 20020918:
17257
17258Fixed a problem where the typechecking code didn't know that an
17259alias could point to a method.  In other words, aliases were not
17260being dereferenced during typechecking.
17261
17262
17263----------------------------------------
1726429 August 2002.  Summary of changes for this release.
17265
172661) ACPI CA Core Subsystem Version 20020829:
17267
17268If the target of a Scope() operator already exists, it must be an
17269object type that actually opens a scope -- such as a Device,
17270Method, Scope, etc.  This is a fatal runtime error.  Similar error
17271check has been added to the iASL compiler also.
17272
17273Tightened up the namespace load to disallow multiple names in the
17274same scope.  This previously was allowed if both objects were of
17275the same type.  (i.e., a lookup was the same as entering a new
17276name).
17277
17278
172792) Linux
17280
17281Ensure that the ACPI interrupt has the proper trigger and
17282polarity.
17283
17284local_irq_disable is extraneous. (Matthew Wilcox)
17285
17286Make "acpi=off" actually do what it says, and not use the ACPI
17287interpreter *or* the tables.
17288
17289Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
17290Takayoshi)
17291
17292
172933) iASL Compiler/Disassembler  Version 20020829:
17294
17295Implemented namepath optimization for name declarations.  For
17296example, a declaration like "Method (\_SB_.ABCD)" would get
17297optimized to "Method (ABCD)" if the declaration is within the
17298\_SB_ scope.  This optimization is in addition to the named
17299reference path optimization first released in the previous
17300version. This would seem to complete all possible optimizations
17301for namepaths within the ASL/AML.
17302
17303If the target of a Scope() operator already exists, it must be an
17304object type that actually opens a scope -- such as a Device,
17305Method, Scope, etc.
17306
17307Implemented a check and warning for unreachable code in the same
17308block below a Return() statement.
17309
17310Fixed a problem where the listing file was not generated if the
17311compiler aborted if the maximum error count was exceeded (200).
17312
17313Fixed a problem where the typechecking of method return values was
17314broken.  This includes the check for a return value when the
17315method is invoked as a TermArg (a return value is expected.)
17316
17317Fixed a reported problem where EOF conditions during a quoted
17318string or comment caused a fault.
17319
17320
17321----------------------------------------
1732215 August 2002.  Summary of changes for this release.
17323
173241) ACPI CA Core Subsystem Version 20020815:
17325
17326Fixed a reported problem where a Store to a method argument that
17327contains a reference did not perform the indirect store correctly.
17328This problem was created during the conversion to the new
17329reference object model - the indirect store to a method argument
17330code was not updated to reflect the new model.
17331
17332Reworked the ACPI mode change code to better conform to ACPI 2.0,
17333handle corner cases, and improve code legibility (Kochi Takayoshi)
17334
17335Fixed a problem with the pathname parsing for the carat (^)
17336prefix.  The heavy use of the carat operator by the new namepath
17337optimization in the iASL compiler uncovered a problem with the AML
17338interpreter handling of this prefix.  In the case where one or
17339more carats precede a single nameseg, the nameseg was treated as
17340standalone and the search rule (to root) was inadvertently
17341applied.  This could cause both the iASL compiler and the
17342interpreter to find the wrong object or to miss the error that
17343should occur if the object does not exist at that exact pathname.
17344
17345Found and fixed the problem where the HP Pavilion DSDT would not
17346load.  This was a relatively minor tweak to the table loading code
17347(a problem caused by the unexpected encounter with a method
17348invocation not within a control method), but it does not solve the
17349overall issue of the execution of AML code at the table level.
17350This investigation is still ongoing.
17351
17352Code and Data Size: Current core subsystem library sizes are shown
17353below.  These are the code and data sizes for the acpica.lib
17354produced by the Microsoft Visual C++ 6.0 compiler, and these
17355values do not include any ACPI driver or OSPM code.  The debug
17356version of the code includes the debug output trace mechanism and
17357has a larger code and data size.  Note that these values will vary
17358depending on the efficiency of the compiler and the compiler
17359options used during generation.
17360
17361  Previous Release
17362    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
17363    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
17364  Current Release:
17365    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
17366    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
17367
17368
173692) Linux
17370
17371Remove redundant slab.h include (Brad Hards)
17372
17373Fix several bugs in thermal.c (Herbert Nachtnebel)
17374
17375Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
17376
17377Change acpi_system_suspend to use updated irq functions (Pavel
17378Machek)
17379
17380Export acpi_get_firmware_table (Matthew Wilcox)
17381
17382Use proper root proc entry for ACPI (Kochi Takayoshi)
17383
17384Fix early-boot table parsing (Bjorn Helgaas)
17385
17386
173873) iASL Compiler/Disassembler
17388
17389Reworked the compiler options to make them more consistent and to
17390use two-letter options where appropriate.  We were running out of
17391sensible letters.   This may break some makefiles, so check the
17392current options list by invoking the compiler with no parameters.
17393
17394Completed the design and implementation of the ASL namepath
17395optimization option for the compiler.  This option optimizes all
17396references to named objects to the shortest possible path.  The
17397first attempt tries to utilize a single nameseg (4 characters) and
17398the "search-to-root" algorithm used by the interpreter.  If that
17399cannot be used (because either the name is not in the search path
17400or there is a conflict with another object with the same name),
17401the pathname is optimized using the carat prefix (usually a
17402shorter string than specifying the entire path from the root.)
17403
17404Implemented support to obtain the DSDT from the Windows registry
17405(when the disassembly option is specified with no input file).
17406Added this code as the implementation for AcpiOsTableOverride in
17407the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
17408utility) to scan memory for the DSDT to the AcpiOsTableOverride
17409function in the DOS OSL to make the disassembler truly OS
17410independent.
17411
17412Implemented a new option to disassemble and compile in one step.
17413When used without an input filename, this option will grab the
17414DSDT from the local machine, disassemble it, and compile it in one
17415step.
17416
17417Added a warning message for invalid escapes (a backslash followed
17418by any character other than the allowable escapes).  This catches
17419the quoted string error "\_SB_" (which should be "\\_SB_" ).
17420
17421Also, there are numerous instances in the ACPI specification where
17422this error occurs.
17423
17424Added a compiler option to disable all optimizations.  This is
17425basically the "compatibility mode" because by using this option,
17426the AML code will come out exactly the same as other ASL
17427compilers.
17428
17429Added error messages for incorrectly ordered dependent resource
17430functions.  This includes: missing EndDependentFn macro at end of
17431dependent resource list, nested dependent function macros (both
17432start and end), and missing StartDependentFn macro.  These are
17433common errors that should be caught at compile time.
17434
17435Implemented _OSI support for the disassembler and compiler.  _OSI
17436must be included in the namespace for proper disassembly (because
17437the disassembler must know the number of arguments.)
17438
17439Added an "optimization" message type that is optional (off by
17440default).  This message is used for all optimizations - including
17441constant folding, integer optimization, and namepath optimization.
17442
17443----------------------------------------
1744425 July 2002.  Summary of changes for this release.
17445
17446
174471) ACPI CA Core Subsystem Version 20020725:
17448
17449The AML Disassembler has been enhanced to produce compilable ASL
17450code and has been integrated into the iASL compiler (see below) as
17451well as the single-step disassembly for the AML debugger and the
17452disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
17453resource templates and macros are fully supported.  The
17454disassembler has been tested on over 30 different AML files,
17455producing identical AML when the resulting disassembled ASL file
17456is recompiled with the same ASL compiler.
17457
17458Modified the Resource Manager to allow zero interrupts and zero
17459dma channels during the GetCurrentResources call.  This was
17460causing problems on some platforms.
17461
17462Added the AcpiOsRedirectOutput interface to the OSL to simplify
17463output redirection for the AcpiOsPrintf and AcpiOsVprintf
17464interfaces.
17465
17466Code and Data Size: Current core subsystem library sizes are shown
17467below.  These are the code and data sizes for the acpica.lib
17468produced by the Microsoft Visual C++ 6.0 compiler, and these
17469values do not include any ACPI driver or OSPM code.  The debug
17470version of the code includes the debug output trace mechanism and
17471has a larger code and data size.  Note that these values will vary
17472depending on the efficiency of the compiler and the compiler
17473options used during generation.
17474
17475  Previous Release
17476    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17477    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17478  Current Release:
17479    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
17480    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
17481
17482
174832) Linux
17484
17485Fixed a panic in the EC driver (Dominik Brodowski)
17486
17487Implemented checksum of the R/XSDT itself during Linux table scan
17488(Richard Schaal)
17489
17490
174913) iASL compiler
17492
17493The AML disassembler is integrated into the compiler.  The "-d"
17494option invokes the disassembler  to completely disassemble an
17495input AML file, producing as output a text ASL file with the
17496extension ".dsl" (to avoid name collisions with existing .asl
17497source files.)  A future enhancement will allow the disassembler
17498to obtain the BIOS DSDT from the registry under Windows.
17499
17500Fixed a problem with the VendorShort and VendorLong resource
17501descriptors where an invalid AML sequence was created.
17502
17503Implemented a fix for BufferData term in the ASL parser.  It was
17504inadvertently defined twice, allowing invalid syntax to pass and
17505causing reduction conflicts.
17506
17507Fixed a problem where the Ones opcode could get converted to a
17508value of zero if "Ones" was used where a byte, word or dword value
17509was expected.  The 64-bit value is now truncated to the correct
17510size with the correct value.
17511
17512
17513
17514----------------------------------------
1751502 July 2002.  Summary of changes for this release.
17516
17517
175181) ACPI CA Core Subsystem Version 20020702:
17519
17520The Table Manager code has been restructured to add several new
17521features.  Tables that are not required by the core subsystem
17522(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
17523validated in any way and are returned from AcpiGetFirmwareTable if
17524requested.  The AcpiOsTableOverride interface is now called for
17525each table that is loaded by the subsystem in order to allow the
17526host to override any table it chooses.  Previously, only the DSDT
17527could be overridden.  Added one new files, tbrsdt.c and
17528tbgetall.c.
17529
17530Fixed a problem with the conversion of internal package objects to
17531external objects (when a package is returned from a control
17532method.)  The return buffer length was set to zero instead of the
17533proper length of the package object.
17534
17535Fixed a reported problem with the use of the RefOf and DeRefOf
17536operators when passing reference arguments to control methods.  A
17537new type of Reference object is used internally for references
17538produced by the RefOf operator.
17539
17540Added additional error messages in the Resource Manager to explain
17541AE_BAD_DATA errors when they occur during resource parsing.
17542
17543Split the AcpiEnableSubsystem into two primitives to enable a
17544finer granularity initialization sequence.  These two calls should
17545be called in this order: AcpiEnableSubsystem (flags),
17546AcpiInitializeObjects (flags).  The flags parameter remains the
17547same.
17548
17549
175502) Linux
17551
17552Updated the ACPI utilities module to understand the new style of
17553fully resolved package objects that are now returned from the core
17554subsystem.  This eliminates errors of the form:
17555
17556    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
17557    acpi_utils-0430 [145] acpi_evaluate_reference:
17558        Invalid element in package (not a device reference)
17559
17560The method evaluation utility uses the new buffer allocation
17561scheme instead of calling AcpiEvaluate Object twice.
17562
17563Added support for ECDT. This allows the use of the Embedded
17564
17565Controller before the namespace has been fully initialized, which
17566is necessary for ACPI 2.0 support, and for some laptops to
17567initialize properly. (Laptops using ECDT are still rare, so only
17568limited testing was performed of the added functionality.)
17569
17570Fixed memory leaks in the EC driver.
17571
17572Eliminated a brittle code structure in acpi_bus_init().
17573
17574Eliminated the acpi_evaluate() helper function in utils.c. It is
17575no longer needed since acpi_evaluate_object can optionally
17576allocate memory for the return object.
17577
17578Implemented fix for keyboard hang when getting battery readings on
17579some systems (Stephen White)
17580
17581PCI IRQ routing update (Dominik Brodowski)
17582
17583Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
17584support
17585
17586----------------------------------------
1758711 June 2002.  Summary of changes for this release.
17588
17589
175901) ACPI CA Core Subsystem Version 20020611:
17591
17592Fixed a reported problem where constants such as Zero and One
17593appearing within _PRT packages were not handled correctly within
17594the resource manager code.  Originally reported against the ASL
17595compiler because the code generator now optimizes integers to
17596their minimal AML representation (i.e. AML constants if possible.)
17597The _PRT code now handles all AML constant opcodes correctly
17598(Zero, One, Ones, Revision).
17599
17600Fixed a problem with the Concatenate operator in the AML
17601interpreter where a buffer result object was incorrectly marked as
17602not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
17603
17604All package sub-objects are now fully resolved before they are
17605returned from the external ACPI interfaces.  This means that name
17606strings are resolved to object handles, and constant operators
17607(Zero, One, Ones, Revision) are resolved to Integers.
17608
17609Implemented immediate resolution of the AML Constant opcodes
17610(Zero, One, Ones, Revision) to Integer objects upon detection
17611within the AML stream. This has simplified and reduced the
17612generated code size of the subsystem by eliminating about 10
17613switch statements for these constants (which previously were
17614contained in Reference objects.)  The complicating issues are that
17615the Zero opcode is used as a "placeholder" for unspecified
17616optional target operands and stores to constants are defined to be
17617no-ops.
17618
17619Code and Data Size: Current core subsystem library sizes are shown
17620below. These are the code and data sizes for the acpica.lib
17621produced by the Microsoft Visual C++ 6.0 compiler, and these
17622values do not include any ACPI driver or OSPM code.  The debug
17623version of the code includes the debug output trace mechanism and
17624has a larger code and data size.  Note that these values will vary
17625depending on the efficiency of the compiler and the compiler
17626options used during generation.
17627
17628  Previous Release
17629    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17630    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17631  Current Release:
17632    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17633    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17634
17635
176362) Linux
17637
17638
17639Added preliminary support for obtaining _TRA data for PCI root
17640bridges (Bjorn Helgaas).
17641
17642
176433) iASL Compiler Version X2046:
17644
17645Fixed a problem where the "_DDN" reserved name was defined to be a
17646control method with one argument.  There are no arguments, and
17647_DDN does not have to be a control method.
17648
17649Fixed a problem with the Linux version of the compiler where the
17650source lines printed with error messages were the wrong lines.
17651This turned out to be the "LF versus CR/LF" difference between
17652Windows and Unix.  This appears to be the longstanding issue
17653concerning listing output and error messages.
17654
17655Fixed a problem with the Linux version of compiler where opcode
17656names within error messages were wrong.  This was caused by a
17657slight difference in the output of the Flex tool on Linux versus
17658Windows.
17659
17660Fixed a problem with the Linux compiler where the hex output files
17661contained some garbage data caused by an internal buffer overrun.
17662
17663
17664----------------------------------------
1766517 May 2002.  Summary of changes for this release.
17666
17667
176681) ACPI CA Core Subsystem Version 20020517:
17669
17670Implemented a workaround to an BIOS bug discovered on the HP
17671OmniBook where the FADT revision number and the table size are
17672inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
17673behavior is to fallback to using only the ACPI 1.0 fields of the
17674FADT if the table is too small to be a ACPI 2.0 table as claimed
17675by the revision number.  Although this is a BIOS bug, this is a
17676case where the workaround is simple enough and with no side
17677effects, so it seemed prudent to add it.  A warning message is
17678issued, however.
17679
17680Implemented minimum size checks for the fixed-length ACPI tables -
17681- the FADT and FACS, as well as consistency checks between the
17682revision number and the table size.
17683
17684Fixed a reported problem in the table override support where the
17685new table pointer was incorrectly treated as a physical address
17686instead of a logical address.
17687
17688Eliminated the use of the AE_AML_ERROR exception and replaced it
17689with more descriptive codes.
17690
17691Fixed a problem where an exception would occur if an ASL Field was
17692defined with no named Field Units underneath it (used by some
17693index fields).
17694
17695Code and Data Size: Current core subsystem library sizes are shown
17696below.  These are the code and data sizes for the acpica.lib
17697produced by the Microsoft Visual C++ 6.0 compiler, and these
17698values do not include any ACPI driver or OSPM code.  The debug
17699version of the code includes the debug output trace mechanism and
17700has a larger code and data size.  Note that these values will vary
17701depending on the efficiency of the compiler and the compiler
17702options used during generation.
17703
17704  Previous Release
17705    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17706    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17707  Current Release:
17708    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17709    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17710
17711
17712
177132) Linux
17714
17715Much work done on ACPI init (MADT and PCI IRQ routing support).
17716(Paul D. and Dominik Brodowski)
17717
17718Fix PCI IRQ-related panic on boot (Sam Revitch)
17719
17720Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
17721
17722Fix "MHz" typo (Dominik Brodowski)
17723
17724Fix RTC year 2000 issue (Dominik Brodowski)
17725
17726Preclude multiple button proc entries (Eric Brunet)
17727
17728Moved arch-specific code out of include/platform/aclinux.h
17729
177303) iASL Compiler Version X2044:
17731
17732Implemented error checking for the string used in the EISAID macro
17733(Usually used in the definition of the _HID object.)  The code now
17734strictly enforces the PnP format - exactly 7 characters, 3
17735uppercase letters and 4 hex digits.
17736
17737If a raw string is used in the definition of the _HID object
17738(instead of the EISAID macro), the string must contain all
17739alphanumeric characters (e.g., "*PNP0011" is not allowed because
17740of the asterisk.)
17741
17742Implemented checking for invalid use of ACPI reserved names for
17743most of the name creation operators (Name, Device, Event, Mutex,
17744OperationRegion, PowerResource, Processor, and ThermalZone.)
17745Previously, this check was only performed for control methods.
17746
17747Implemented an additional check on the Name operator to emit an
17748error if a reserved name that must be implemented in ASL as a
17749control method is used.  We know that a reserved name must be a
17750method if it is defined with input arguments.
17751
17752The warning emitted when a namespace object reference is not found
17753during the cross reference phase has been changed into an error.
17754The "External" directive should be used for names defined in other
17755modules.
17756
17757
177584) Tools and Utilities
17759
17760The 16-bit tools (adump16 and aexec16) have been regenerated and
17761tested.
17762
17763Fixed a problem with the output of both acpidump and adump16 where
17764the indentation of closing parentheses and brackets was not
17765
17766aligned properly with the parent block.
17767
17768
17769----------------------------------------
1777003 May 2002.  Summary of changes for this release.
17771
17772
177731) ACPI CA Core Subsystem Version 20020503:
17774
17775Added support a new OSL interface that allows the host operating
17776
17777system software to override the DSDT found in the firmware -
17778AcpiOsTableOverride.  With this interface, the OSL can examine the
17779version of the firmware DSDT and replace it with a different one
17780if desired.
17781
17782Added new external interfaces for accessing ACPI registers from
17783device drivers and other system software - AcpiGetRegister and
17784AcpiSetRegister.  This was simply an externalization of the
17785existing AcpiHwBitRegister interfaces.
17786
17787Fixed a regression introduced in the previous build where the
17788ASL/AML CreateField operator always returned an error,
17789"destination must be a NS Node".
17790
17791Extended the maximum time (before failure) to successfully enable
17792ACPI mode to 3 seconds.
17793
17794Code and Data Size: Current core subsystem library sizes are shown
17795below.  These are the code and data sizes for the acpica.lib
17796produced by the Microsoft Visual C++ 6.0 compiler, and these
17797values do not include any ACPI driver or OSPM code.  The debug
17798version of the code includes the debug output trace mechanism and
17799has a larger code and data size.  Note that these values will vary
17800depending on the efficiency of the compiler and the compiler
17801options used during generation.
17802
17803  Previous Release
17804    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17805    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17806  Current Release:
17807    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17808    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17809
17810
178112) Linux
17812
17813Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17814free. While 3 out of 4 of our in-house systems work fine, the last
17815one still hangs when testing the LAPIC timer.
17816
17817Renamed many files in 2.5 kernel release to omit "acpi_" from the
17818name.
17819
17820Added warning on boot for Presario 711FR.
17821
17822Sleep improvements (Pavel Machek)
17823
17824ACPI can now be built without CONFIG_PCI enabled.
17825
17826IA64: Fixed memory map functions (JI Lee)
17827
17828
178293) iASL Compiler Version X2043:
17830
17831Added support to allow the compiler to be integrated into the MS
17832VC++ development environment for one-button compilation of single
17833files or entire projects -- with error-to-source-line mapping.
17834
17835Implemented support for compile-time constant folding for the
17836Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17837specification.  This allows the ASL writer to use expressions
17838instead of Integer/Buffer/String constants in terms that must
17839evaluate to constants at compile time and will also simplify the
17840emitted AML in any such sub-expressions that can be folded
17841(evaluated at compile-time.)  This increases the size of the
17842compiler significantly because a portion of the ACPI CA AML
17843interpreter is included within the compiler in order to pre-
17844evaluate constant expressions.
17845
17846
17847Fixed a problem with the "Unicode" ASL macro that caused the
17848compiler to fault.  (This macro is used in conjunction with the
17849_STR reserved name.)
17850
17851Implemented an AML opcode optimization to use the Zero, One, and
17852Ones opcodes where possible to further reduce the size of integer
17853constants and thus reduce the overall size of the generated AML
17854code.
17855
17856Implemented error checking for new reserved terms for ACPI version
178572.0A.
17858
17859Implemented the -qr option to display the current list of ACPI
17860reserved names known to the compiler.
17861
17862Implemented the -qc option to display the current list of ASL
17863operators that are allowed within constant expressions and can
17864therefore be folded at compile time if the operands are constants.
17865
17866
178674) Documentation
17868
17869Updated the Programmer's Reference for new interfaces, data types,
17870and memory allocation model options.
17871
17872Updated the iASL Compiler User Reference to apply new format and
17873add information about new features and options.
17874
17875----------------------------------------
1787619 April 2002.  Summary of changes for this release.
17877
178781) ACPI CA Core Subsystem Version 20020419:
17879
17880The source code base for the Core Subsystem has been completely
17881cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17882versions.  The Lint option files used are included in the
17883/acpi/generate/lint directory.
17884
17885Implemented enhanced status/error checking across the entire
17886Hardware manager subsystem.  Any hardware errors (reported from
17887the OSL) are now bubbled up and will abort a running control
17888method.
17889
17890
17891Fixed a problem where the per-ACPI-table integer width (32 or 64)
17892was stored only with control method nodes, causing a fault when
17893non-control method code was executed during table loading.  The
17894solution implemented uses a global variable to indicate table
17895width across the entire ACPI subsystem.  Therefore, ACPI CA does
17896not support mixed integer widths across different ACPI tables
17897(DSDT, SSDT).
17898
17899Fixed a problem where NULL extended fields (X fields) in an ACPI
179002.0 ACPI FADT caused the table load to fail.  Although the
17901existing ACPI specification is a bit fuzzy on this topic, the new
17902behavior is to fall back on a ACPI 1.0 field if the corresponding
17903ACPI 2.0 X field is zero (even though the table revision indicates
17904a full ACPI 2.0 table.)  The ACPI specification will be updated to
17905clarify this issue.
17906
17907Fixed a problem with the SystemMemory operation region handler
17908where memory was always accessed byte-wise even if the AML-
17909specified access width was larger than a byte.  This caused
17910problems on systems with memory-mapped I/O.  Memory is now
17911accessed with the width specified.  On systems that do not support
17912non-aligned transfers, a check is made to guarantee proper address
17913alignment before proceeding in order to avoid an AML-caused
17914alignment fault within the kernel.
17915
17916
17917Fixed a problem with the ExtendedIrq resource where only one byte
17918of the 4-byte Irq field was extracted.
17919
17920Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
17921function was out of date and required a rewrite.
17922
17923Code and Data Size: Current core subsystem library sizes are shown
17924below.  These are the code and data sizes for the acpica.lib
17925produced by the Microsoft Visual C++ 6.0 compiler, and these
17926values do not include any ACPI driver or OSPM code.  The debug
17927version of the code includes the debug output trace mechanism and
17928has a larger code and data size.  Note that these values will vary
17929depending on the efficiency of the compiler and the compiler
17930options used during generation.
17931
17932  Previous Release
17933    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17934    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17935  Current Release:
17936    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17937    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17938
17939
179402) Linux
17941
17942PCI IRQ routing fixes (Dominik Brodowski)
17943
17944
179453) iASL Compiler Version X2042:
17946
17947Implemented an additional compile-time error check for a field
17948unit whose size + minimum access width would cause a run-time
17949access beyond the end-of-region.  Previously, only the field size
17950itself was checked.
17951
17952The Core subsystem and iASL compiler now share a common parse
17953object in preparation for compile-time evaluation of the type
179543/4/5 ASL operators.
17955
17956
17957----------------------------------------
17958Summary of changes for this release: 03_29_02
17959
179601) ACPI CA Core Subsystem Version 20020329:
17961
17962Implemented support for late evaluation of TermArg operands to
17963Buffer and Package objects.  This allows complex expressions to be
17964used in the declarations of these object types.
17965
17966Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
179671.0, if the field was larger than 32 bits, it was returned as a
17968buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17969the field is returned as a buffer only if the field is larger than
1797064 bits.  The TableRevision is now considered when making this
17971conversion to avoid incompatibility with existing ASL code.
17972
17973Implemented logical addressing for AcpiOsGetRootPointer.  This
17974allows an RSDP with either a logical or physical address.  With
17975this support, the host OS can now override all ACPI tables with
17976one logical RSDP.  Includes implementation of  "typed" pointer
17977support to allow a common data type for both physical and logical
17978pointers internally.  This required a change to the
17979AcpiOsGetRootPointer interface.
17980
17981Implemented the use of ACPI 2.0 Generic Address Structures for all
17982GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
17983mapped I/O for these ACPI features.
17984
17985Initialization now ignores not only non-required tables (All
17986tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17987not validate the table headers of unrecognized tables.
17988
17989Fixed a problem where a notify handler could only be
17990installed/removed on an object of type Device.  All "notify"
17991
17992objects are now supported -- Devices, Processor, Power, and
17993Thermal.
17994
17995Removed most verbosity from the ACPI_DB_INFO debug level.  Only
17996critical information is returned when this debug level is enabled.
17997
17998Code and Data Size: Current core subsystem library sizes are shown
17999below.  These are the code and data sizes for the acpica.lib
18000produced by the Microsoft Visual C++ 6.0 compiler, and these
18001values do not include any ACPI driver or OSPM code.  The debug
18002version of the code includes the debug output trace mechanism and
18003has a larger code and data size.  Note that these values will vary
18004depending on the efficiency of the compiler and the compiler
18005options used during generation.
18006
18007  Previous Release
18008    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
18009    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
18010  Current Release:
18011    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
18012    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
18013
18014
180152) Linux:
18016
18017The processor driver (acpi_processor.c) now fully supports ACPI
180182.0-based processor performance control (e.g. Intel(R)
18019SpeedStep(TM) technology) Note that older laptops that only have
18020the Intel "applet" interface are not supported through this.  The
18021'limit' and 'performance' interface (/proc) are fully functional.
18022[Note that basic policy for controlling performance state
18023transitions will be included in the next version of ospmd.]  The
18024idle handler was modified to more aggressively use C2, and PIIX4
18025errata handling underwent a complete overhaul (big thanks to
18026Dominik Brodowski).
18027
18028Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
18029based devices in the ACPI namespace are now dynamically bound
18030(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
18031This allows, among other things, ACPI to resolve bus numbers for
18032subordinate PCI bridges.
18033
18034Enhanced PCI IRQ routing to get the proper bus number for _PRT
18035entries defined underneath PCI bridges.
18036
18037Added IBM 600E to bad bios list due to invalid _ADR value for
18038PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
18039
18040In the process of adding full MADT support (e.g. IOAPIC) for IA32
18041(acpi.c, mpparse.c) -- stay tuned.
18042
18043Added back visual differentiation between fixed-feature and
18044control-method buttons in dmesg.  Buttons are also subtyped (e.g.
18045button/power/PWRF) to simplify button identification.
18046
18047We no longer use -Wno-unused when compiling debug. Please ignore
18048any "_THIS_MODULE defined but not used" messages.
18049
18050Can now shut down the system using "magic sysrq" key.
18051
18052
180533) iASL Compiler version 2041:
18054
18055Fixed a problem where conversion errors for hex/octal/decimal
18056constants were not reported.
18057
18058Implemented a fix for the General Register template Address field.
18059This field was 8 bits when it should be 64.
18060
18061Fixed a problem where errors/warnings were no longer being emitted
18062within the listing output file.
18063
18064Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
18065exactly 4 characters, alphanumeric only.
18066
18067
18068
18069
18070----------------------------------------
18071Summary of changes for this release: 03_08_02
18072
18073
180741) ACPI CA Core Subsystem Version 20020308:
18075
18076Fixed a problem with AML Fields where the use of the "AccessAny"
18077keyword could cause an interpreter error due to attempting to read
18078or write beyond the end of the parent Operation Region.
18079
18080Fixed a problem in the SystemMemory Operation Region handler where
18081an attempt was made to map memory beyond the end of the region.
18082This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
18083errors on some Linux systems.
18084
18085Fixed a problem where the interpreter/namespace "search to root"
18086algorithm was not functioning for some object types.  Relaxed the
18087internal restriction on the search to allow upsearches for all
18088external object types as well as most internal types.
18089
18090
180912) Linux:
18092
18093We now use safe_halt() macro versus individual calls to sti | hlt.
18094
18095Writing to the processor limit interface should now work. "echo 1"
18096will increase the limit, 2 will decrease, and 0 will reset to the
18097
18098default.
18099
18100
181013) ASL compiler:
18102
18103Fixed segfault on Linux version.
18104
18105
18106----------------------------------------
18107Summary of changes for this release: 02_25_02
18108
181091) ACPI CA Core Subsystem:
18110
18111
18112Fixed a problem where the GPE bit masks were not initialized
18113properly, causing erratic GPE behavior.
18114
18115Implemented limited support for multiple calling conventions.  The
18116code can be generated with either the VPL (variable parameter
18117list, or "C") convention, or the FPL (fixed parameter list, or
18118"Pascal") convention.  The core subsystem is about 3.4% smaller
18119when generated with FPL.
18120
18121
181222) Linux
18123
18124Re-add some /proc/acpi/event functionality that was lost during
18125the rewrite
18126
18127Resolved issue with /proc events for fixed-feature buttons showing
18128up as the system device.
18129
18130Fixed checks on C2/C3 latencies to be inclusive of maximum values.
18131
18132Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
18133
18134Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
18135
18136Fixed limit interface & usage to fix bugs with passive cooling
18137hysterisis.
18138
18139Restructured PRT support.
18140
18141
18142----------------------------------------
18143Summary of changes for this label: 02_14_02
18144
18145
181461) ACPI CA Core Subsystem:
18147
18148Implemented support in AcpiLoadTable to allow loading of FACS and
18149FADT tables.
18150
18151Support for the now-obsolete interim 0.71 64-bit ACPI tables has
18152been removed.  All 64-bit platforms should be migrated to the ACPI
181532.0 tables.  The actbl71.h header has been removed from the source
18154tree.
18155
18156All C macros defined within the subsystem have been prefixed with
18157"ACPI_" to avoid collision with other system include files.
18158
18159Removed the return value for the two AcpiOsPrint interfaces, since
18160it is never used and causes lint warnings for ignoring the return
18161value.
18162
18163Added error checking to all internal mutex acquire and release
18164calls.  Although a failure from one of these interfaces is
18165probably a fatal system error, these checks will cause the
18166immediate abort of the currently executing method or interface.
18167
18168Fixed a problem where the AcpiSetCurrentResources interface could
18169fault.  This was a side effect of the deployment of the new memory
18170allocation model.
18171
18172Fixed a couple of problems with the Global Lock support introduced
18173in the last major build.  The "common" (1.0/2.0) internal FACS was
18174being overwritten with the FACS signature and clobbering the
18175Global Lock pointer.  Also, the actual firmware FACS was being
18176unmapped after construction of the "common" FACS, preventing
18177access to the actual Global Lock field within it.  The "common"
18178internal FACS is no longer installed as an actual ACPI table; it
18179is used simply as a global.
18180
18181Code and Data Size: Current core subsystem library sizes are shown
18182below.  These are the code and data sizes for the acpica.lib
18183produced by the Microsoft Visual C++ 6.0 compiler, and these
18184values do not include any ACPI driver or OSPM code.  The debug
18185version of the code includes the debug output trace mechanism and
18186has a larger code and data size.  Note that these values will vary
18187depending on the efficiency of the compiler and the compiler
18188options used during generation.
18189
18190  Previous Release (02_07_01)
18191    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
18192    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
18193  Current Release:
18194    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
18195    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
18196
18197
181982) Linux
18199
18200Updated Linux-specific code for core macro and OSL interface
18201changes described above.
18202
18203Improved /proc/acpi/event. It now can be opened only once and has
18204proper poll functionality.
18205
18206Fixed and restructured power management (acpi_bus).
18207
18208Only create /proc "view by type" when devices of that class exist.
18209
18210Fixed "charging/discharging" bug (and others) in acpi_battery.
18211
18212Improved thermal zone code.
18213
18214
182153) ASL Compiler, version X2039:
18216
18217
18218Implemented the new compiler restriction on ASL String hex/octal
18219escapes to non-null, ASCII values.  An error results if an invalid
18220value is used.  (This will require an ACPI 2.0 specification
18221change.)
18222
18223AML object labels that are output to the optional C and ASM source
18224are now prefixed with both the ACPI table signature and table ID
18225to help guarantee uniqueness within a large BIOS project.
18226
18227
18228----------------------------------------
18229Summary of changes for this label: 02_01_02
18230
182311) ACPI CA Core Subsystem:
18232
18233ACPI 2.0 support is complete in the entire Core Subsystem and the
18234ASL compiler. All new ACPI 2.0 operators are implemented and all
18235other changes for ACPI 2.0 support are complete.  With
18236simultaneous code and data optimizations throughout the subsystem,
18237ACPI 2.0 support has been implemented with almost no additional
18238cost in terms of code and data size.
18239
18240Implemented a new mechanism for allocation of return buffers.  If
18241the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
18242be allocated on behalf of the caller.  Consolidated all return
18243buffer validation and allocation to a common procedure.  Return
18244buffers will be allocated via the primary OSL allocation interface
18245since it appears that a separate pool is not needed by most users.
18246If a separate pool is required for these buffers, the caller can
18247still use the original mechanism and pre-allocate the buffer(s).
18248
18249Implemented support for string operands within the DerefOf
18250operator.
18251
18252Restructured the Hardware and Event managers to be table driven,
18253simplifying the source code and reducing the amount of generated
18254code.
18255
18256Split the common read/write low-level ACPI register bitfield
18257procedure into a separate read and write, simplifying the code
18258considerably.
18259
18260Obsoleted the AcpiOsCallocate OSL interface.  This interface was
18261used only a handful of times and didn't have enough critical mass
18262for a separate interface.  Replaced with a common calloc procedure
18263in the core.
18264
18265Fixed a reported problem with the GPE number mapping mechanism
18266that allows GPE1 numbers to be non-contiguous with GPE0.
18267Reorganized the GPE information and shrunk a large array that was
18268originally large enough to hold info for all possible GPEs (256)
18269to simply large enough to hold all GPEs up to the largest GPE
18270number on the machine.
18271
18272Fixed a reported problem with resource structure alignment on 64-
18273bit platforms.
18274
18275Changed the AcpiEnableEvent and AcpiDisableEvent external
18276interfaces to not require any flags for the common case of
18277enabling/disabling a GPE.
18278
18279Implemented support to allow a "Notify" on a Processor object.
18280
18281Most TBDs in comments within the source code have been resolved
18282and eliminated.
18283
18284
18285Fixed a problem in the interpreter where a standalone parent
18286prefix (^) was not handled correctly in the interpreter and
18287debugger.
18288
18289Removed obsolete and unnecessary GPE save/restore code.
18290
18291Implemented Field support in the ASL Load operator.  This allows a
18292table to be loaded from a named field, in addition to loading a
18293table directly from an Operation Region.
18294
18295Implemented timeout and handle support in the external Global Lock
18296interfaces.
18297
18298Fixed a problem in the AcpiDump utility where pathnames were no
18299longer being generated correctly during the dump of named objects.
18300
18301Modified the AML debugger to give a full display of if/while
18302predicates instead of just one AML opcode at a time.  (The
18303predicate can have several nested ASL statements.)  The old method
18304was confusing during single stepping.
18305
18306Code and Data Size: Current core subsystem library sizes are shown
18307below. These are the code and data sizes for the acpica.lib
18308produced by the Microsoft Visual C++ 6.0 compiler, and these
18309values do not include any ACPI driver or OSPM code.  The debug
18310version of the code includes the debug output trace mechanism and
18311has a larger code and data size.  Note that these values will vary
18312depending on the efficiency of the compiler and the compiler
18313options used during generation.
18314
18315  Previous Release (12_18_01)
18316     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
18317     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
18318   Current Release:
18319     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
18320     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
18321
183222) Linux
18323
18324 Implemented fix for PIIX reverse throttling errata (Processor
18325driver)
18326
18327Added new Limit interface (Processor and Thermal drivers)
18328
18329New thermal policy (Thermal driver)
18330
18331Many updates to /proc
18332
18333Battery "low" event support (Battery driver)
18334
18335Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
18336
18337IA32 - IA64 initialization unification, no longer experimental
18338
18339Menuconfig options redesigned
18340
183413) ASL Compiler, version X2037:
18342
18343Implemented several new output features to simplify integration of
18344AML code into  firmware: 1) Output the AML in C source code with
18345labels for each named ASL object.  The    original ASL source code
18346is interleaved as C comments. 2) Output the AML in ASM source code
18347with labels and interleaved ASL    source. 3) Output the AML in
18348raw hex table form, in either C or ASM.
18349
18350Implemented support for optional string parameters to the
18351LoadTable operator.
18352
18353Completed support for embedded escape sequences within string
18354literals.  The compiler now supports all single character escapes
18355as well as the Octal and Hex escapes.  Note: the insertion of a
18356null byte into a string literal (via the hex/octal escape) causes
18357the string to be immediately terminated.  A warning is issued.
18358
18359Fixed a problem where incorrect AML was generated for the case
18360where an ASL namepath consists of a single parent prefix (
18361
18362) with no trailing name segments.
18363
18364The compiler has been successfully generated with a 64-bit C
18365compiler.
18366
18367
18368
18369
18370----------------------------------------
18371Summary of changes for this label: 12_18_01
18372
183731) Linux
18374
18375Enhanced blacklist with reason and severity fields. Any table's
18376signature may now be used to identify a blacklisted system.
18377
18378Call _PIC control method to inform the firmware which interrupt
18379model the OS is using. Turn on any disabled link devices.
18380
18381Cleaned up busmgr /proc error handling (Andreas Dilger)
18382
18383 2) ACPI CA Core Subsystem:
18384
18385Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
18386while loop)
18387
18388Completed implementation of the ACPI 2.0 "Continue",
18389"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
18390operators.  All new ACPI 2.0 operators are now implemented in both
18391the ASL compiler and the AML interpreter.  The only remaining ACPI
183922.0 task is support for the String data type in the DerefOf
18393operator.  Fixed a problem with AcquireMutex where the status code
18394was lost if the caller had to actually wait for the mutex.
18395
18396Increased the maximum ASL Field size from 64K bits to 4G bits.
18397
18398Completed implementation of the external Global Lock interfaces --
18399AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
18400Handler parameters were added.
18401
18402Completed another pass at removing warnings and issues when
18403compiling with 64-bit compilers.  The code now compiles cleanly
18404with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
18405add and subtract (diff) macros have changed considerably.
18406
18407
18408Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1840964-bit platforms, 32-bits on all others.  This type is used
18410wherever memory allocation and/or the C sizeof() operator is used,
18411and affects the OSL memory allocation interfaces AcpiOsAllocate
18412and AcpiOsCallocate.
18413
18414Implemented sticky user breakpoints in the AML debugger.
18415
18416Code and Data Size: Current core subsystem library sizes are shown
18417below. These are the code and data sizes for the acpica.lib
18418produced by the Microsoft Visual C++ 6.0 compiler, and these
18419values do not include any ACPI driver or OSPM code.  The debug
18420version of the code includes the debug output trace mechanism and
18421has a larger code and data size. Note that these values will vary
18422depending on the efficiency of the compiler and the compiler
18423options used during generation.
18424
18425  Previous Release (12_05_01)
18426     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
18427     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
18428   Current Release:
18429     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
18430     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
18431
18432 3) ASL Compiler, version X2034:
18433
18434Now checks for (and generates an error if detected) the use of a
18435Break or Continue statement without an enclosing While statement.
18436
18437
18438Successfully generated the compiler with the Intel 64-bit C
18439compiler.
18440
18441 ----------------------------------------
18442Summary of changes for this label: 12_05_01
18443
18444 1) ACPI CA Core Subsystem:
18445
18446The ACPI 2.0 CopyObject operator is fully implemented.  This
18447operator creates a new copy of an object (and is also used to
18448bypass the "implicit conversion" mechanism of the Store operator.)
18449
18450The ACPI 2.0 semantics for the SizeOf operator are fully
18451implemented.  The change is that performing a SizeOf on a
18452reference object causes an automatic dereference of the object to
18453the actual value before the size is evaluated. This behavior was
18454undefined in ACPI 1.0.
18455
18456The ACPI 2.0 semantics for the Extended IRQ resource descriptor
18457have been implemented.  The interrupt polarity and mode are now
18458independently set.
18459
18460Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
18461appearing in Package objects were not properly converted to
18462integers when the internal Package was converted to an external
18463object (via the AcpiEvaluateObject interface.)
18464
18465Fixed a problem with the namespace object deletion mechanism for
18466objects created by control methods.  There were two parts to this
18467problem: 1) Objects created during the initialization phase method
18468parse were not being deleted, and 2) The object owner ID mechanism
18469to track objects was broken.
18470
18471Fixed a problem where the use of the ASL Scope operator within a
18472control method would result in an invalid opcode exception.
18473
18474Fixed a problem introduced in the previous label where the buffer
18475length required for the _PRT structure was not being returned
18476correctly.
18477
18478Code and Data Size: Current core subsystem library sizes are shown
18479below. These are the code and data sizes for the acpica.lib
18480produced by the Microsoft Visual C++ 6.0 compiler, and these
18481values do not include any ACPI driver or OSPM code.  The debug
18482version of the code includes the debug output trace mechanism and
18483has a larger code and data size.  Note that these values will vary
18484depending on the efficiency of the compiler and the compiler
18485options used during generation.
18486
18487  Previous Release (11_20_01)
18488     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
18489     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
18490
18491  Current Release:
18492     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
18493     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
18494
18495 2) Linux:
18496
18497Updated all files to apply cleanly against 2.4.16.
18498
18499Added basic PCI Interrupt Routing Table (PRT) support for IA32
18500(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
18501version supports both static and dynamic PRT entries, but dynamic
18502entries are treated as if they were static (not yet
18503reconfigurable).  Architecture- specific code to use this data is
18504absent on IA32 but should be available shortly.
18505
18506Changed the initialization sequence to start the ACPI interpreter
18507(acpi_init) prior to initialization of the PCI driver (pci_init)
18508in init/main.c.  This ordering is required to support PRT and
18509facilitate other (future) enhancement.  A side effect is that the
18510ACPI bus driver and certain device drivers can no longer be loaded
18511as modules.
18512
18513Modified the 'make menuconfig' options to allow PCI Interrupt
18514Routing support to be included without the ACPI Bus and other
18515device drivers.
18516
18517 3) ASL Compiler, version X2033:
18518
18519Fixed some issues with the use of the new CopyObject and
18520DataTableRegion operators.  Both are fully functional.
18521
18522 ----------------------------------------
18523Summary of changes for this label: 11_20_01
18524
18525 20 November 2001.  Summary of changes for this release.
18526
18527 1) ACPI CA Core Subsystem:
18528
18529Updated Index support to match ACPI 2.0 semantics.  Storing a
18530Integer, String, or Buffer to an Index of a Buffer will store only
18531the least-significant byte of the source to the Indexed buffer
18532byte.  Multiple writes are not performed.
18533
18534Fixed a problem where the access type used in an AccessAs ASL
18535operator was not recorded correctly into the field object.
18536
18537Fixed a problem where ASL Event objects were created in a
18538signalled state. Events are now created in an unsignalled state.
18539
18540The internal object cache is now purged after table loading and
18541initialization to reduce the use of dynamic kernel memory -- on
18542the assumption that object use is greatest during the parse phase
18543of the entire table (versus the run-time use of individual control
18544methods.)
18545
18546ACPI 2.0 variable-length packages are now fully operational.
18547
18548Code and Data Size: Code and Data optimizations have permitted new
18549feature development with an actual reduction in the library size.
18550Current core subsystem library sizes are shown below.  These are
18551the code and data sizes for the acpica.lib produced by the
18552Microsoft Visual C++ 6.0 compiler, and these values do not include
18553any ACPI driver or OSPM code.  The debug version of the code
18554includes the debug output trace mechanism and has a larger code
18555and data size.  Note that these values will vary depending on the
18556efficiency of the compiler and the compiler options used during
18557generation.
18558
18559  Previous Release (11_09_01):
18560     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18561     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18562
18563  Current Release:
18564     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
18565     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
18566
18567 2) Linux:
18568
18569Enhanced the ACPI boot-time initialization code to allow the use
18570of Local APIC tables for processor enumeration on IA-32, and to
18571pave the way for a fully MPS-free boot (on SMP systems) in the
18572near future.  This functionality replaces
18573arch/i386/kernel/acpitables.c, which was introduced in an earlier
185742.4.15-preX release.  To enable this feature you must add
18575"acpi_boot=on" to the kernel command line -- see the help entry
18576for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
18577the works...
18578
18579Restructured the configuration options to allow boot-time table
18580parsing support without inclusion of the ACPI Interpreter (and
18581other) code.
18582
18583NOTE: This release does not include fixes for the reported events,
18584power-down, and thermal passive cooling issues (coming soon).
18585
18586 3) ASL Compiler:
18587
18588Added additional typechecking for Fields within restricted access
18589Operation Regions.  All fields within EC and CMOS regions must be
18590declared with ByteAcc. All fields within SMBus regions must be
18591declared with the BufferAcc access type.
18592
18593Fixed a problem where the listing file output of control methods
18594no longer interleaved the actual AML code with the ASL source
18595code.
18596
18597
18598
18599
18600----------------------------------------
18601Summary of changes for this label: 11_09_01
18602
186031) ACPI CA Core Subsystem:
18604
18605Implemented ACPI 2.0-defined support for writes to fields with a
18606Buffer, String, or Integer source operand that is smaller than the
18607target field. In these cases, the source operand is zero-extended
18608to fill the target field.
18609
18610Fixed a problem where a Field starting bit offset (within the
18611parent operation region) was calculated incorrectly if the
18612
18613alignment of the field differed from the access width.  This
18614affected CreateWordField, CreateDwordField, CreateQwordField, and
18615possibly other fields that use the "AccessAny" keyword.
18616
18617Fixed a problem introduced in the 11_02_01 release where indirect
18618stores through method arguments did not operate correctly.
18619
186202) Linux:
18621
18622Implemented boot-time ACPI table parsing support
18623(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
18624facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
18625legacy BIOS interfaces (e.g. MPS) for the configuration of system
18626processors, memory, and interrupts during setup_arch().  Note that
18627this patch does not include the required architecture-specific
18628changes required to apply this information -- subsequent patches
18629will be posted for both IA32 and IA64 to achieve this.
18630
18631Added low-level sleep support for IA32 platforms, courtesy of Pat
18632Mochel. This allows IA32 systems to transition to/from various
18633sleeping states (e.g. S1, S3), although the lack of a centralized
18634driver model and power-manageable drivers will prevent its
18635(successful) use on most systems.
18636
18637Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
18638submenu, unified IA32 and IA64 options, added new "Boot using ACPI
18639tables" option, etc.
18640
18641Increased the default timeout for the EC driver from 1ms to 10ms
18642(1000 cycles of 10us) to try to address AE_TIME errors during EC
18643transactions.
18644
18645 ----------------------------------------
18646Summary of changes for this label: 11_02_01
18647
186481) ACPI CA Core Subsystem:
18649
18650ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
18651(QWordAcc keyword). All ACPI 2.0 64-bit support is now
18652implemented.
18653
18654OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
18655changes to support ACPI 2.0 Qword field access.  Read/Write
18656PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
18657accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
18658the value parameter for the address space handler interface is now
18659an ACPI_INTEGER.  OSL implementations of these interfaces must now
18660handle the case where the Width parameter is 64.
18661
18662Index Fields: Fixed a problem where unaligned bit assembly and
18663disassembly for IndexFields was not supported correctly.
18664
18665Index and Bank Fields:  Nested Index and Bank Fields are now
18666supported. During field access, a check is performed to ensure
18667that the value written to an Index or Bank register is not out of
18668the range of the register.  The Index (or Bank) register is
18669written before each access to the field data. Future support will
18670include allowing individual IndexFields to be wider than the
18671DataRegister width.
18672
18673Fields: Fixed a problem where the AML interpreter was incorrectly
18674attempting to write beyond the end of a Field/OpRegion.  This was
18675a boundary case that occurred when a DWORD field was written to a
18676BYTE access OpRegion, forcing multiple writes and causing the
18677interpreter to write one datum too many.
18678
18679Fields: Fixed a problem with Field/OpRegion access where the
18680starting bit address of a field was incorrectly calculated if the
18681current access type was wider than a byte (WordAcc, DwordAcc, or
18682QwordAcc).
18683
18684Fields: Fixed a problem where forward references to individual
18685FieldUnits (individual Field names within a Field definition) were
18686not resolved during the AML table load.
18687
18688Fields: Fixed a problem where forward references from a Field
18689definition to the parent Operation Region definition were not
18690resolved during the AML table load.
18691
18692Fields: Duplicate FieldUnit names within a scope are now detected
18693during AML table load.
18694
18695Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
18696returned an incorrect name for the root node.
18697
18698Code and Data Size: Code and Data optimizations have permitted new
18699feature development with an actual reduction in the library size.
18700Current core subsystem library sizes are shown below.  These are
18701the code and data sizes for the acpica.lib produced by the
18702Microsoft Visual C++ 6.0 compiler, and these values do not include
18703any ACPI driver or OSPM code.  The debug version of the code
18704includes the debug output trace mechanism and has a larger code
18705and data size.  Note that these values will vary depending on the
18706efficiency of the compiler and the compiler options used during
18707generation.
18708
18709  Previous Release (10_18_01):
18710     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18711     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18712
18713  Current Release:
18714     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18715     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18716
18717 2) Linux:
18718
18719Improved /proc processor output (Pavel Machek) Re-added
18720MODULE_LICENSE("GPL") to all modules.
18721
18722 3) ASL Compiler version X2030:
18723
18724Duplicate FieldUnit names within a scope are now detected and
18725flagged as errors.
18726
18727 4) Documentation:
18728
18729Programmer Reference updated to reflect OSL and address space
18730handler interface changes described above.
18731
18732----------------------------------------
18733Summary of changes for this label: 10_18_01
18734
18735ACPI CA Core Subsystem:
18736
18737Fixed a problem with the internal object reference count mechanism
18738that occasionally caused premature object deletion. This resolves
18739all of the outstanding problem reports where an object is deleted
18740in the middle of an interpreter evaluation.  Although this problem
18741only showed up in rather obscure cases, the solution to the
18742problem involved an adjustment of all reference counts involving
18743objects attached to namespace nodes.
18744
18745Fixed a problem with Field support in the interpreter where
18746writing to an aligned field whose length is an exact multiple (2
18747or greater) of the field access granularity would cause an attempt
18748to write beyond the end of the field.
18749
18750The top level AML opcode execution functions within the
18751interpreter have been renamed with a more meaningful and
18752consistent naming convention.  The modules exmonad.c and
18753exdyadic.c were eliminated.  New modules are exoparg1.c,
18754exoparg2.c, exoparg3.c, and exoparg6.c.
18755
18756Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
18757
18758Fixed a problem where the AML debugger was causing some internal
18759objects to not be deleted during subsystem termination.
18760
18761Fixed a problem with the external AcpiEvaluateObject interface
18762where the subsystem would fault if the named object to be
18763evaluated referred to a constant such as Zero, Ones, etc.
18764
18765Fixed a problem with IndexFields and BankFields where the
18766subsystem would fault if the index, data, or bank registers were
18767not defined in the same scope as the field itself.
18768
18769Added printf format string checking for compilers that support
18770this feature.  Corrected more than 50 instances of issues with
18771format specifiers within invocations of ACPI_DEBUG_PRINT
18772throughout the core subsystem code.
18773
18774The ASL "Revision" operator now returns the ACPI support level
18775implemented in the core - the value "2" since the ACPI 2.0 support
18776is more than 50% implemented.
18777
18778Enhanced the output of the AML debugger "dump namespace" command
18779to output in a more human-readable form.
18780
18781Current core subsystem library code sizes are shown below.  These
18782
18783are the code and data sizes for the acpica.lib produced by the
18784Microsoft Visual C++ 6.0 compiler, and these values do not include
18785any ACPI driver or OSPM code.  The debug version of the code
18786includes the full debug trace mechanism -- leading to a much
18787
18788larger code and data size.  Note that these values will vary
18789depending on the efficiency of the compiler and the compiler
18790options used during generation.
18791
18792     Previous Label (09_20_01):
18793     Non-Debug Version:    65K Code,     5K Data,     70K Total
18794     Debug Version:       138K Code,    58K Data,    196K Total
18795
18796     This Label:
18797
18798     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18799     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18800
18801Linux:
18802
18803Implemented a "Bad BIOS Blacklist" to track machines that have
18804known ASL/AML problems.
18805
18806Enhanced the /proc interface for the thermal zone driver and added
18807support for _HOT (the critical suspend trip point).  The 'info'
18808file now includes threshold/policy information, and allows setting
18809of _SCP (cooling preference) and _TZP (polling frequency) values
18810to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18811frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18812preference to the passive/quiet mode (if supported by the ASL).
18813
18814Implemented a workaround for a gcc bug that resuted in an OOPs
18815when loading the control method battery driver.
18816
18817 ----------------------------------------
18818Summary of changes for this label: 09_20_01
18819
18820 ACPI CA Core Subsystem:
18821
18822The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18823modified to allow individual GPE levels to be flagged as wake-
18824enabled (i.e., these GPEs are to remain enabled when the platform
18825sleeps.)
18826
18827The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18828support wake-enabled GPEs.  This means that upon entering the
18829sleep state, all GPEs that are not wake-enabled are disabled.
18830When leaving the sleep state, these GPEs are re-enabled.
18831
18832A local double-precision divide/modulo module has been added to
18833enhance portability to OS kernels where a 64-bit math library is
18834not available.  The new module is "utmath.c".
18835
18836Several optimizations have been made to reduce the use of CPU
18837stack.  Originally over 2K, the maximum stack usage is now below
188382K at 1860  bytes (1.82k)
18839
18840Fixed a problem with the AcpiGetFirmwareTable interface where the
18841root table pointer was not mapped into a logical address properly.
18842
18843Fixed a problem where a NULL pointer was being dereferenced in the
18844interpreter code for the ASL Notify operator.
18845
18846Fixed a problem where the use of the ASL Revision operator
18847returned an error. This operator now returns the current version
18848of the ACPI CA core subsystem.
18849
18850Fixed a problem where objects passed as control method parameters
18851to AcpiEvaluateObject were always deleted at method termination.
18852However, these objects may end up being stored into the namespace
18853by the called method.  The object reference count mechanism was
18854applied to these objects instead of a force delete.
18855
18856Fixed a problem where static strings or buffers (contained in the
18857AML code) that are declared as package elements within the ASL
18858code could cause a fault because the interpreter would attempt to
18859delete them.  These objects are now marked with the "static
18860object" flag to prevent any attempt to delete them.
18861
18862Implemented an interpreter optimization to use operands directly
18863from the state object instead of extracting the operands to local
18864variables.  This reduces stack use and code size, and improves
18865performance.
18866
18867The module exxface.c was eliminated as it was an unnecessary extra
18868layer of code.
18869
18870Current core subsystem library code sizes are shown below.  These
18871are the code and data sizes for the acpica.lib produced by the
18872Microsoft Visual C++ 6.0 compiler, and these values do not include
18873any ACPI driver or OSPM code.  The debug version of the code
18874includes the full debug trace mechanism -- leading to a much
18875larger code and data size.  Note that these values will vary
18876depending on the efficiency of the compiler and the compiler
18877options used during generation.
18878
18879  Non-Debug Version:  65K Code,   5K Data,   70K Total
18880(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
18881Total  (Previously 195K)
18882
18883Linux:
18884
18885Support for ACPI 2.0 64-bit integers has been added.   All ACPI
18886Integer objects are now 64 bits wide
18887
18888All Acpi data types and structures are now in lower case.  Only
18889Acpi macros are upper case for differentiation.
18890
18891 Documentation:
18892
18893Changes to the external interfaces as described above.
18894
18895 ----------------------------------------
18896Summary of changes for this label: 08_31_01
18897
18898 ACPI CA Core Subsystem:
18899
18900A bug with interpreter implementation of the ASL Divide operator
18901was found and fixed.  The implicit function return value (not the
18902explicit store operands) was returning the remainder instead of
18903the quotient.  This was a longstanding bug and it fixes several
18904known outstanding issues on various platforms.
18905
18906The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18907been further optimized for size.  There are 700 invocations of the
18908DEBUG_PRINT macro alone, so each optimization reduces the size of
18909the debug version of the subsystem significantly.
18910
18911A stack trace mechanism has been implemented.  The maximum stack
18912usage is about 2K on 32-bit platforms.  The debugger command "stat
18913stack" will display the current maximum stack usage.
18914
18915All public symbols and global variables within the subsystem are
18916now prefixed with the string "Acpi".  This keeps all of the
18917symbols grouped together in a kernel map, and avoids conflicts
18918with other kernel subsystems.
18919
18920Most of the internal fixed lookup tables have been moved into the
18921code segment via the const operator.
18922
18923Several enhancements have been made to the interpreter to both
18924reduce the code size and improve performance.
18925
18926Current core subsystem library code sizes are shown below.  These
18927are the code and data sizes for the acpica.lib produced by the
18928Microsoft Visual C++ 6.0 compiler, and these values do not include
18929any ACPI driver or OSPM code.  The debug version of the code
18930includes the full debug trace mechanism which contains over 700
18931invocations of the DEBUG_PRINT macro, 500 function entry macro
18932invocations, and over 900 function exit macro invocations --
18933leading to a much larger code and data size.  Note that these
18934values will vary depending on the efficiency of the compiler and
18935the compiler options used during generation.
18936
18937        Non-Debug Version:  64K Code,   5K Data,   69K Total
18938Debug Version:     137K Code,  58K Data,  195K Total
18939
18940 Linux:
18941
18942Implemented wbinvd() macro, pending a kernel-wide definition.
18943
18944Fixed /proc/acpi/event to handle poll() and short reads.
18945
18946 ASL Compiler, version X2026:
18947
18948Fixed a problem introduced in the previous label where the AML
18949
18950code emitted for package objects produced packages with zero
18951length.
18952
18953 ----------------------------------------
18954Summary of changes for this label: 08_16_01
18955
18956ACPI CA Core Subsystem:
18957
18958The following ACPI 2.0 ASL operators have been implemented in the
18959AML interpreter (These are already supported by the Intel ASL
18960compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18961ToBuffer.  Support for 64-bit AML constants is implemented in the
18962AML parser, debugger, and disassembler.
18963
18964The internal memory tracking mechanism (leak detection code) has
18965been upgraded to reduce the memory overhead (a separate tracking
18966block is no longer allocated for each memory allocation), and now
18967supports all of the internal object caches.
18968
18969The data structures and code for the internal object caches have
18970been coelesced and optimized so that there is a single cache and
18971memory list data structure and a single group of functions that
18972implement generic cache management.  This has reduced the code
18973size in both the debug and release versions of the subsystem.
18974
18975The DEBUG_PRINT macro(s) have been optimized for size and replaced
18976by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
18977different, because it generates a single call to an internal
18978function.  This results in a savings of about 90 bytes per
18979invocation, resulting in an overall code and data savings of about
1898016% in the debug version of the subsystem.
18981
18982 Linux:
18983
18984Fixed C3 disk corruption problems and re-enabled C3 on supporting
18985machines.
18986
18987Integrated low-level sleep code by Patrick Mochel.
18988
18989Further tweaked source code Linuxization.
18990
18991Other minor fixes.
18992
18993 ASL Compiler:
18994
18995Support for ACPI 2.0 variable length packages is fixed/completed.
18996
18997Fixed a problem where the optional length parameter for the ACPI
189982.0 ToString operator.
18999
19000Fixed multiple extraneous error messages when a syntax error is
19001detected within the declaration line of a control method.
19002
19003 ----------------------------------------
19004Summary of changes for this label: 07_17_01
19005
19006ACPI CA Core Subsystem:
19007
19008Added a new interface named AcpiGetFirmwareTable to obtain any
19009ACPI table via the ACPI signature.  The interface can be called at
19010any time during kernel initialization, even before the kernel
19011virtual memory manager is initialized and paging is enabled.  This
19012allows kernel subsystems to obtain ACPI tables very early, even
19013before the ACPI CA subsystem is initialized.
19014
19015Fixed a problem where Fields defined with the AnyAcc attribute
19016could be resolved to the incorrect address under the following
19017conditions: 1) the field width is larger than 8 bits and 2) the
19018parent operation region is not defined on a DWORD boundary.
19019
19020Fixed a problem where the interpreter is not being locked during
19021namespace initialization (during execution of the _INI control
19022methods), causing an error when an attempt is made to release it
19023later.
19024
19025ACPI 2.0 support in the AML Interpreter has begun and will be
19026ongoing throughout the rest of this year.  In this label, The Mod
19027operator is implemented.
19028
19029Added a new data type to contain full PCI addresses named
19030ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
19031and Function values.
19032
19033 Linux:
19034
19035Enhanced the Linux version of the source code to change most
19036capitalized ACPI type names to lowercase. For example, all
19037instances of ACPI_STATUS are changed to acpi_status.  This will
19038result in a large diff, but the change is strictly cosmetic and
19039aligns the CA code closer to the Linux coding standard.
19040
19041OSL Interfaces:
19042
19043The interfaces to the PCI configuration space have been changed to
19044add the PCI Segment number and to split the single 32-bit combined
19045DeviceFunction field into two 16-bit fields.  This was
19046accomplished by moving the four values that define an address in
19047PCI configuration space (segment, bus, device, and function) to
19048the new ACPI_PCI_ID structure.
19049
19050The changes to the PCI configuration space interfaces led to a
19051reexamination of the complete set of address space access
19052interfaces for PCI, I/O, and Memory.  The previously existing 18
19053interfaces have proven difficult to maintain (any small change
19054must be propagated across at least 6 interfaces) and do not easily
19055allow for future expansion to 64 bits if necessary.  Also, on some
19056systems, it would not be appropriate to demultiplex the access
19057width (8, 16, 32,or 64) before calling the OSL if the
19058corresponding native OS interfaces contain a similar access width
19059parameter.  For these reasons, the 18 address space interfaces
19060have been replaced by these 6 new ones:
19061
19062AcpiOsReadPciConfiguration
19063AcpiOsWritePciConfiguration
19064AcpiOsReadMemory
19065AcpiOsWriteMemory
19066AcpiOsReadPort
19067AcpiOsWritePort
19068
19069Added a new interface named AcpiOsGetRootPointer to allow the OSL
19070to perform the platform and/or OS-specific actions necessary to
19071obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
19072interface will simply call down to the CA core to perform the low-
19073memory search for the table.  On IA-64, the RSDP is obtained from
19074EFI.  Migrating this interface to the OSL allows the CA core to
19075
19076remain OS and platform independent.
19077
19078Added a new interface named AcpiOsSignal to provide a generic
19079"function code and pointer" interface for various miscellaneous
19080signals and notifications that must be made to the host OS.   The
19081first such signals are intended to support the ASL Fatal and
19082Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
19083interface has been obsoleted.
19084
19085The definition of the AcpiFormatException interface has been
19086changed to simplify its use.  The caller no longer must supply a
19087buffer to the call; A pointer to a const string is now returned
19088directly.  This allows the call to be easily used in printf
19089statements, etc. since the caller does not have to manage a local
19090buffer.
19091
19092
19093 ASL Compiler, Version X2025:
19094
19095The ACPI 2.0 Switch/Case/Default operators have been implemented
19096and are fully functional.  They will work with all ACPI 1.0
19097interpreters, since the operators are simply translated to If/Else
19098pairs.
19099
19100The ACPI 2.0 ElseIf operator is implemented and will also work
19101with 1.0 interpreters, for the same reason.
19102
19103Implemented support for ACPI 2.0 variable-length packages.  These
19104packages have a separate opcode, and their size is determined by
19105the interpreter at run-time.
19106
19107Documentation The ACPI CA Programmer Reference has been updated to
19108reflect the new interfaces and changes to existing interfaces.
19109
19110 ------------------------------------------
19111Summary of changes for this label: 06_15_01
19112
19113 ACPI CA Core Subsystem:
19114
19115Fixed a problem where a DWORD-accessed field within a Buffer
19116object would get its byte address inadvertently rounded down to
19117the nearest DWORD.  Buffers are always Byte-accessible.
19118
19119 ASL Compiler, version X2024:
19120
19121Fixed a problem where the Switch() operator would either fault or
19122hang the compiler.  Note however, that the AML code for this ACPI
191232.0 operator is not yet implemented.
19124
19125Compiler uses the new AcpiOsGetTimer interface to obtain compile
19126timings.
19127
19128Implementation of the CreateField operator automatically converts
19129a reference to a named field within a resource descriptor from a
19130byte offset to a bit offset if required.
19131
19132Added some missing named fields from the resource descriptor
19133support. These are the names that are automatically created by the
19134compiler to reference fields within a descriptor.  They are only
19135valid at compile time and are not passed through to the AML
19136interpreter.
19137
19138Resource descriptor named fields are now typed as Integers and
19139subject to compile-time typechecking when used in expressions.
19140
19141 ------------------------------------------
19142Summary of changes for this label: 05_18_01
19143
19144 ACPI CA Core Subsystem:
19145
19146Fixed a couple of problems in the Field support code where bits
19147from adjacent fields could be returned along with the proper field
19148bits. Restructured the field support code to improve performance,
19149readability and maintainability.
19150
19151New DEBUG_PRINTP macro automatically inserts the procedure name
19152into the output, saving hundreds of copies of procedure name
19153strings within the source, shrinking the memory footprint of the
19154debug version of the core subsystem.
19155
19156 Source Code Structure:
19157
19158The source code directory tree was restructured to reflect the
19159current organization of the component architecture.  Some files
19160and directories have been moved and/or renamed.
19161
19162 Linux:
19163
19164Fixed leaking kacpidpc processes.
19165
19166Fixed queueing event data even when /proc/acpi/event is not
19167opened.
19168
19169 ASL Compiler, version X2020:
19170
19171Memory allocation performance enhancement - over 24X compile time
19172improvement on large ASL files.  Parse nodes and namestring
19173buffers are now allocated from a large internal compiler buffer.
19174
19175The temporary .SRC file is deleted unless the "-s" option is
19176specified
19177
19178The "-d" debug output option now sends all output to the .DBG file
19179instead of the console.
19180
19181"External" second parameter is now optional
19182
19183"ElseIf" syntax now properly allows the predicate
19184
19185Last operand to "Load" now recognized as a Target operand
19186
19187Debug object can now be used anywhere as a normal object.
19188
19189ResourceTemplate now returns an object of type BUFFER
19190
19191EISAID now returns an object of type INTEGER
19192
19193"Index" now works with a STRING operand
19194
19195"LoadTable" now accepts optional parameters
19196
19197"ToString" length parameter is now optional
19198
19199"Interrupt (ResourceType," parse error fixed.
19200
19201"Register" with a user-defined region space parse error fixed
19202
19203Escaped backslash at the end of a string ("\\") scan/parse error
19204fixed
19205
19206"Revision" is now an object of type INTEGER.
19207
19208
19209
19210------------------------------------------
19211Summary of changes for this label: 05_02_01
19212
19213Linux:
19214
19215/proc/acpi/event now blocks properly.
19216
19217Removed /proc/sys/acpi. You can still dump your DSDT from
19218/proc/acpi/dsdt.
19219
19220 ACPI CA Core Subsystem:
19221
19222Fixed a problem introduced in the previous label where some of the
19223"small" resource descriptor types were not recognized.
19224
19225Improved error messages for the case where an ASL Field is outside
19226the range of the parent operation region.
19227
19228 ASL Compiler, version X2018:
19229
19230
19231Added error detection for ASL Fields that extend beyond the length
19232of the parent operation region (only if the length of the region
19233is known at compile time.)  This includes fields that have a
19234minimum access width that is smaller than the parent region, and
19235individual field units that are partially or entirely beyond the
19236extent of the parent.
19237
19238
19239
19240------------------------------------------
19241Summary of changes for this label: 04_27_01
19242
19243 ACPI CA Core Subsystem:
19244
19245Fixed a problem where the namespace mutex could be released at the
19246wrong time during execution of AcpiRemoveAddressSpaceHandler.
19247
19248Added optional thread ID output for debug traces, to simplify
19249debugging of multiple threads.  Added context switch notification
19250when the debug code realizes that a different thread is now
19251executing ACPI code.
19252
19253Some additional external data types have been prefixed with the
19254string "ACPI_" for consistency.  This may effect existing code.
19255The data types affected are the external callback typedefs - e.g.,
19256
19257WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
19258
19259 Linux:
19260
19261Fixed an issue with the OSL semaphore implementation where a
19262thread was waking up with an error from receiving a SIGCHLD
19263signal.
19264
19265Linux version of ACPI CA now uses the system C library for string
19266manipulation routines instead of a local implementation.
19267
19268Cleaned up comments and removed TBDs.
19269
19270 ASL Compiler, version X2017:
19271
19272Enhanced error detection and reporting for all file I/O
19273operations.
19274
19275 Documentation:
19276
19277Programmer Reference updated to version 1.06.
19278
19279
19280
19281------------------------------------------
19282Summary of changes for this label: 04_13_01
19283
19284 ACPI CA Core Subsystem:
19285
19286Restructured support for BufferFields and RegionFields.
19287BankFields support is now fully operational.  All known 32-bit
19288limitations on field sizes have been removed.  Both BufferFields
19289and (Operation) RegionFields are now supported by the same field
19290management code.
19291
19292Resource support now supports QWORD address and IO resources. The
1929316/32/64 bit address structures and the Extended IRQ structure
19294have been changed to properly handle Source Resource strings.
19295
19296A ThreadId of -1 is now used to indicate a "mutex not acquired"
19297condition internally and must never be returned by AcpiOsThreadId.
19298This reserved value was changed from 0 since Unix systems allow a
19299thread ID of 0.
19300
19301Linux:
19302
19303Driver code reorganized to enhance portability
19304
19305Added a kernel configuration option to control ACPI_DEBUG
19306
19307Fixed the EC driver to honor _GLK.
19308
19309ASL Compiler, version X2016:
19310
19311Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
19312address space was set to 0, not 0x7f as it should be.
19313
19314 ------------------------------------------
19315Summary of changes for this label: 03_13_01
19316
19317 ACPI CA Core Subsystem:
19318
19319During ACPI initialization, the _SB_._INI method is now run if
19320present.
19321
19322Notify handler fix - notifies are deferred until the parent method
19323completes execution.  This fixes the "mutex already acquired"
19324issue seen occasionally.
19325
19326Part of the "implicit conversion" rules in ACPI 2.0 have been
19327found to cause compatibility problems with existing ASL/AML.  The
19328convert "result-to-target-type" implementation has been removed
19329for stores to method Args and Locals.  Source operand conversion
19330is still fully implemented.  Possible changes to ACPI 2.0
19331specification pending.
19332
19333Fix to AcpiRsCalculatePciRoutingTableLength to return correct
19334length.
19335
19336Fix for compiler warnings for 64-bit compiles.
19337
19338 Linux:
19339
19340/proc output aligned for easier parsing.
19341
19342Release-version compile problem fixed.
19343
19344New kernel configuration options documented in Configure.help.
19345
19346IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
19347context" message.
19348
19349 OSPM:
19350
19351Power resource driver integrated with bus manager.
19352
19353Fixed kernel fault during active cooling for thermal zones.
19354
19355Source Code:
19356
19357The source code tree has been restructured.
19358
19359
19360
19361------------------------------------------
19362Summary of changes for this label: 03_02_01
19363
19364 Linux OS Services Layer (OSL):
19365
19366Major revision of all Linux-specific code.
19367
19368Modularized all ACPI-specific drivers.
19369
19370Added new thermal zone and power resource drivers.
19371
19372Revamped /proc interface (new functionality is under /proc/acpi).
19373
19374New kernel configuration options.
19375
19376 Linux known issues:
19377
19378New kernel configuration options not documented in Configure.help
19379yet.
19380
19381
19382Module dependencies not currently implemented. If used, they
19383should be loaded in this order: busmgr, power, ec, system,
19384processor, battery, ac_adapter, button, thermal.
19385
19386Modules will not load if CONFIG_MODVERSION is set.
19387
19388IBM 600E - entering S5 may reboot instead of shutting down.
19389
19390IBM 600E - Sleep button may generate "Invalid <NULL> context"
19391message.
19392
19393Some systems may fail with "execution mutex already acquired"
19394message.
19395
19396 ACPI CA Core Subsystem:
19397
19398Added a new OSL Interface, AcpiOsGetThreadId.  This was required
19399for the  deadlock detection code. Defined to return a non-zero, 32-
19400bit thread ID for the currently executing thread.  May be a non-
19401zero constant integer on single-thread systems.
19402
19403Implemented deadlock detection for internal subsystem mutexes.  We
19404may add conditional compilation for this code (debug only) later.
19405
19406ASL/AML Mutex object semantics are now fully supported.  This
19407includes multiple acquires/releases by owner and support for the
19408
19409Mutex SyncLevel parameter.
19410
19411A new "Force Release" mechanism automatically frees all ASL
19412Mutexes that have been acquired but not released when a thread
19413exits the interpreter.  This forces conformance to the ACPI spec
19414("All mutexes must be released when an invocation exits") and
19415prevents deadlocked ASL threads.  This mechanism can be expanded
19416(later) to monitor other resource acquisitions if OEM ASL code
19417continues to misbehave (which it will).
19418
19419Several new ACPI exception codes have been added for the Mutex
19420support.
19421
19422Recursive method calls are now allowed and supported (the ACPI
19423spec does in fact allow recursive method calls.)  The number of
19424recursive calls is subject to the restrictions imposed by the
19425SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
19426parameter.
19427
19428Implemented support for the SyncLevel parameter for control
19429methods (ACPI 2.0 feature)
19430
19431Fixed a deadlock problem when multiple threads attempted to use
19432the interpreter.
19433
19434Fixed a problem where the string length of a String package
19435element was not always set in a package returned from
19436AcpiEvaluateObject.
19437
19438Fixed a problem where the length of a String package element was
19439not always included in the length of the overall package returned
19440from AcpiEvaluateObject.
19441
19442Added external interfaces (Acpi*) to the ACPI debug memory
19443manager.  This manager keeps a list of all outstanding
19444allocations, and can therefore detect memory leaks and attempts to
19445free memory blocks more than once. Useful for code such as the
19446power manager, etc.  May not be appropriate for device drivers.
19447Performance with the debug code enabled is slow.
19448
19449The ACPI Global Lock is now an optional hardware element.
19450
19451 ASL Compiler Version X2015:
19452
19453Integrated changes to allow the compiler to be generated on
19454multiple platforms.
19455
19456Linux makefile added to generate the compiler on Linux
19457
19458 Source Code:
19459
19460All platform-specific headers have been moved to their own
19461subdirectory, Include/Platform.
19462
19463New source file added, Interpreter/ammutex.c
19464
19465New header file, Include/acstruct.h
19466
19467 Documentation:
19468
19469The programmer reference has been updated for the following new
19470interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
19471
19472 ------------------------------------------
19473Summary of changes for this label: 02_08_01
19474
19475Core ACPI CA Subsystem: Fixed a problem where an error was
19476incorrectly returned if the return resource buffer was larger than
19477the actual data (in the resource interfaces).
19478
19479References to named objects within packages are resolved to the
19480
19481full pathname string before packages are returned directly (via
19482the AcpiEvaluateObject interface) or indirectly via the resource
19483interfaces.
19484
19485Linux OS Services Layer (OSL):
19486
19487Improved /proc battery interface.
19488
19489
19490Added C-state debugging output and other miscellaneous fixes.
19491
19492ASL Compiler Version X2014:
19493
19494All defined method arguments can now be used as local variables,
19495including the ones that are not actually passed in as parameters.
19496The compiler tracks initialization of the arguments and issues an
19497exception if they are used without prior assignment (just like
19498locals).
19499
19500The -o option now specifies a filename prefix that is used for all
19501output files, including the AML output file.  Otherwise, the
19502default behavior is as follows:  1) the AML goes to the file
19503specified in the DSDT.  2) all other output files use the input
19504source filename as the base.
19505
19506 ------------------------------------------
19507Summary of changes for this label: 01_25_01
19508
19509Core ACPI CA Subsystem: Restructured the implementation of object
19510store support within the  interpreter.  This includes support for
19511the Store operator as well  as any ASL operators that include a
19512target operand.
19513
19514Partially implemented support for Implicit Result-to-Target
19515conversion. This is when a result object is converted on the fly
19516to the type of  an existing target object.  Completion of this
19517support is pending  further analysis of the ACPI specification
19518concerning this matter.
19519
19520CPU-specific code has been removed from the subsystem (hardware
19521directory).
19522
19523New Power Management Timer functions added
19524
19525Linux OS Services Layer (OSL): Moved system state transition code
19526to the core, fixed it, and modified  Linux OSL accordingly.
19527
19528Fixed C2 and C3 latency calculations.
19529
19530
19531We no longer use the compilation date for the version message on
19532initialization, but retrieve the version from AcpiGetSystemInfo().
19533
19534Incorporated for fix Sony VAIO machines.
19535
19536Documentation:  The Programmer Reference has been updated and
19537reformatted.
19538
19539
19540ASL Compiler:  Version X2013: Fixed a problem where the line
19541numbering and error reporting could get out  of sync in the
19542presence of multiple include files.
19543
19544 ------------------------------------------
19545Summary of changes for this label: 01_15_01
19546
19547Core ACPI CA Subsystem:
19548
19549Implemented support for type conversions in the execution of the
19550ASL  Concatenate operator (The second operand is converted to
19551match the type  of the first operand before concatenation.)
19552
19553Support for implicit source operand conversion is partially
19554implemented.   The ASL source operand types Integer, Buffer, and
19555String are freely  interchangeable for most ASL operators and are
19556converted by the interpreter  on the fly as required.  Implicit
19557Target operand conversion (where the  result is converted to the
19558target type before storing) is not yet implemented.
19559
19560Support for 32-bit and 64-bit BCD integers is implemented.
19561
19562Problem fixed where a field read on an aligned field could cause a
19563read  past the end of the field.
19564
19565New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
19566does not return a value, but the caller expects one.  (The ASL
19567compiler flags this as a warning.)
19568
19569ASL Compiler:
19570
19571Version X2011:
195721. Static typechecking of all operands is implemented. This
19573prevents the use of invalid objects (such as using a Package where
19574an Integer is required) at compile time instead of at interpreter
19575run-time.
195762. The ASL source line is printed with ALL errors and warnings.
195773. Bug fix for source EOF without final linefeed.
195784. Debug option is split into a parse trace and a namespace trace.
195795. Namespace output option (-n) includes initial values for
19580integers and strings.
195816. Parse-only option added for quick syntax checking.
195827. Compiler checks for duplicate ACPI name declarations
19583
19584Version X2012:
195851. Relaxed typechecking to allow interchangeability between
19586strings, integers, and buffers.  These types are now converted by
19587the interpreter at runtime.
195882. Compiler reports time taken by each internal subsystem in the
19589debug         output file.
19590
19591
19592 ------------------------------------------
19593Summary of changes for this label: 12_14_00
19594
19595ASL Compiler:
19596
19597This is the first official release of the compiler. Since the
19598compiler requires elements of the Core Subsystem, this label
19599synchronizes everything.
19600
19601------------------------------------------
19602Summary of changes for this label: 12_08_00
19603
19604
19605Fixed a problem where named references within the ASL definition
19606of both OperationRegions and CreateXXXFields did not work
19607properly.  The symptom was an AE_AML_OPERAND_TYPE during
19608initialization of the region/field. This is similar (but not
19609related internally) to the problem that was fixed in the last
19610label.
19611
19612Implemented both 32-bit and 64-bit support for the BCD ASL
19613functions ToBCD and FromBCD.
19614
19615Updated all legal headers to include "2000" in the copyright
19616years.
19617
19618 ------------------------------------------
19619Summary of changes for this label: 12_01_00
19620
19621Fixed a problem where method invocations within the ASL definition
19622of both OperationRegions and CreateXXXFields did not work
19623properly.  The symptom was an AE_AML_OPERAND_TYPE during
19624initialization of the region/field:
19625
19626  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
19627[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
19628(0x3005)
19629
19630Fixed a problem where operators with more than one nested
19631subexpression would fail.  The symptoms were varied, by mostly
19632AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
19633problem that has gone unnoticed until now.
19634
19635  Subtract (Add (1,2), Multiply (3,4))
19636
19637Fixed a problem where AcpiGetHandle didn't quite get fixed in the
19638previous build (The prefix part of a relative path was handled
19639incorrectly).
19640
19641Fixed a problem where Operation Region initialization failed if
19642the operation region name was a "namepath" instead of a simple
19643"nameseg". Symptom was an AE_NO_OPERAND error.
19644
19645Fixed a problem where an assignment to a local variable via the
19646indirect RefOf mechanism only worked for the first such
19647assignment.  Subsequent assignments were ignored.
19648
19649 ------------------------------------------
19650Summary of changes for this label: 11_15_00
19651
19652ACPI 2.0 table support with backwards support for ACPI 1.0 and the
196530.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
19654the AML  interpreter does NOT have support for the new 2.0 ASL
19655grammar terms at this time.
19656
19657All ACPI hardware access is via the GAS structures in the ACPI 2.0
19658FADT.
19659
19660All physical memory addresses across all platforms are now 64 bits
19661wide. Logical address width remains dependent on the platform
19662(i.e., "void *").
19663
19664AcpiOsMapMemory interface changed to a 64-bit physical address.
19665
19666The AML interpreter integer size is now 64 bits, as per the ACPI
196672.0 specification.
19668
19669For backwards compatibility with ACPI 1.0, ACPI tables with a
19670revision number less than 2 use 32-bit integers only.
19671
19672Fixed a problem where the evaluation of OpRegion operands did not
19673always resolve them to numbers properly.
19674
19675------------------------------------------
19676Summary of changes for this label: 10_20_00
19677
19678Fix for CBN_._STA issue.  This fix will allow correct access to
19679CBN_ OpRegions when the _STA returns 0x8.
19680
19681Support to convert ACPI constants (Ones, Zeros, One) to actual
19682values before a package object is returned
19683
19684Fix for method call as predicate to if/while construct causing
19685incorrect if/while behavior
19686
19687Fix for Else block package lengths sometimes calculated wrong (if
19688block > 63 bytes)
19689
19690Fix for Processor object length field, was always zero
19691
19692Table load abort if FACP sanity check fails
19693
19694Fix for problem with Scope(name) if name already exists
19695
19696Warning emitted if a named object referenced cannot be found
19697(resolved) during method execution.
19698
19699
19700
19701
19702
19703------------------------------------------
19704Summary of changes for this label: 9_29_00
19705
19706New table initialization interfaces: AcpiInitializeSubsystem no
19707longer has any parameters AcpiFindRootPointer - Find the RSDP (if
19708necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
19709>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
19710AcpiLoadTables
19711
19712Note: These interface changes require changes to all existing OSDs
19713
19714The PCI_Config default address space handler is always installed
19715at the root namespace object.
19716
19717-------------------------------------------
19718Summary of changes for this label: 09_15_00
19719
19720The new initialization architecture is implemented.  New
19721interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
19722AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
19723
19724(Namespace is automatically loaded when a table is loaded)
19725
19726The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1972752 bytes to 32 bytes.  There is usually one of these for every
19728namespace object, so the memory savings is significant.
19729
19730Implemented just-in-time evaluation of the CreateField operators.
19731
19732Bug fixes for IA-64 support have been integrated.
19733
19734Additional code review comments have been implemented
19735
19736The so-called "third pass parse" has been replaced by a final walk
19737through the namespace to initialize all operation regions (address
19738spaces) and fields that have not yet been initialized during the
19739execution of the various _INI and REG methods.
19740
19741New file - namespace/nsinit.c
19742
19743-------------------------------------------
19744Summary of changes for this label: 09_01_00
19745
19746Namespace manager data structures have been reworked to change the
19747primary  object from a table to a single object.  This has
19748resulted in dynamic memory  savings of 3X within the namespace and
197492X overall in the ACPI CA subsystem.
19750
19751Fixed problem where the call to AcpiEvFindPciRootBuses was
19752inadvertently left  commented out.
19753
19754Reduced the warning count when generating the source with the GCC
19755compiler.
19756
19757Revision numbers added to each module header showing the
19758SourceSafe version of the file.  Please refer to this version
19759number when giving us feedback or comments on individual modules.
19760
19761The main object types within the subsystem have been renamed to
19762clarify their  purpose:
19763
19764ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
19765ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
19766ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
19767
19768NOTE: no changes to the initialization sequence are included in
19769this label.
19770
19771-------------------------------------------
19772Summary of changes for this label: 08_23_00
19773
19774Fixed problem where TerminateControlMethod was being called
19775multiple times per  method
19776
19777Fixed debugger problem where single stepping caused a semaphore to
19778be  oversignalled
19779
19780Improved performance through additional parse object caching -
19781added  ACPI_EXTENDED_OP type
19782
19783-------------------------------------------
19784Summary of changes for this label: 08_10_00
19785
19786Parser/Interpreter integration:  Eliminated the creation of
19787complete parse trees  for ACPI tables and control methods.
19788Instead, parse subtrees are created and  then deleted as soon as
19789they are processed (Either entered into the namespace or  executed
19790by the interpreter).  This reduces the use of dynamic kernel
19791memory  significantly. (about 10X)
19792
19793Exception codes broken into classes and renumbered.  Be sure to
19794recompile all  code that includes acexcep.h.  Hopefully we won't
19795have to renumber the codes  again now that they are split into
19796classes (environment, programmer, AML code,  ACPI table, and
19797internal).
19798
19799Fixed some additional alignment issues in the Resource Manager
19800subcomponent
19801
19802Implemented semaphore tracking in the AcpiExec utility, and fixed
19803several places  where mutexes/semaphores were being unlocked
19804without a corresponding lock  operation.  There are no known
19805semaphore or mutex "leaks" at this time.
19806
19807Fixed the case where an ASL Return operator is used to return an
19808unnamed  package.
19809
19810-------------------------------------------
19811Summary of changes for this label: 07_28_00
19812
19813Fixed a problem with the way addresses were calculated in
19814AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
19815manifested itself when a Field was  created with WordAccess or
19816DwordAccess, but the field unit defined within the  Field was less
19817
19818than a Word or Dword.
19819
19820Fixed a problem in AmlDumpOperands() module's loop to pull
19821operands off of the  operand stack to display information. The
19822problem manifested itself as a TLB  error on 64-bit systems when
19823accessing an operand stack with two or more  operands.
19824
19825Fixed a problem with the PCI configuration space handlers where
19826context was  getting confused between accesses. This required a
19827change to the generic address  space handler and address space
19828setup definitions. Handlers now get both a  global handler context
19829(this is the one passed in by the user when executing
19830AcpiInstallAddressSpaceHandler() and a specific region context
19831that is unique to  each region (For example, the _ADR, _SEG and
19832_BBN values associated with a  specific region). The generic
19833function definitions have changed to the  following:
19834
19835typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19836UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19837*HandlerContext, // This used to be void *Context void
19838*RegionContext); // This is an additional parameter
19839
19840typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19841RegionHandle, UINT32 Function, void *HandlerContext,  void
19842**RegionContext); // This used to be **ReturnContext
19843
19844-------------------------------------------
19845Summary of changes for this label: 07_21_00
19846
19847Major file consolidation and rename.  All files within the
19848interpreter have been  renamed as well as most header files.  This
19849was done to prevent collisions with  existing files in the host
19850OSs -- filenames such as "config.h" and "global.h"  seem to be
19851quite common.  The VC project files have been updated.  All
19852makefiles  will require modification.
19853
19854The parser/interpreter integration continues in Phase 5 with the
19855implementation  of a complete 2-pass parse (the AML is parsed
19856twice) for each table;  This  avoids the construction of a huge
19857parse tree and therefore reduces the amount of  dynamic memory
19858required by the subsystem.  Greater use of the parse object cache
19859means that performance is unaffected.
19860
19861Many comments from the two code reviews have been rolled in.
19862
19863The 64-bit alignment support is complete.
19864
19865-------------------------------------------
19866Summary of changes for this label: 06_30_00
19867
19868With a nod and a tip of the hat to the technology of yesteryear,
19869we've added  support in the source code for 80 column output
19870devices.  The code is now mostly  constrained to 80 columns or
19871less to support environments and editors that 1)  cannot display
19872or print more than 80 characters on a single line, and 2) cannot
19873disable line wrapping.
19874
19875A major restructuring of the namespace data structure has been
19876completed.  The  result is 1) cleaner and more
19877understandable/maintainable code, and 2) a  significant reduction
19878in the dynamic memory requirement for each named ACPI  object
19879(almost half).
19880
19881-------------------------------------------
19882Summary of changes for this label: 06_23_00
19883
19884Linux support has been added.  In order to obtain approval to get
19885the ACPI CA  subsystem into the Linux kernel, we've had to make
19886quite a few changes to the  base subsystem that will affect all
19887users (all the changes are generic and OS- independent).  The
19888effects of these global changes have been somewhat far  reaching.
19889Files have been merged and/or renamed and interfaces have been
19890renamed.   The major changes are described below.
19891
19892Osd* interfaces renamed to AcpiOs* to eliminate namespace
19893pollution/confusion  within our target kernels.  All OSD
19894interfaces must be modified to match the new  naming convention.
19895
19896Files merged across the subsystem.  A number of the smaller source
19897and header  files have been merged to reduce the file count and
19898increase the density of the  existing files.  There are too many
19899to list here.  In general, makefiles that  call out individual
19900files will require rebuilding.
19901
19902Interpreter files renamed.  All interpreter files now have the
19903prefix am*  instead of ie* and is*.
19904
19905Header files renamed:  The acapi.h file is now acpixf.h.  The
19906acpiosd.h file is  now acpiosxf.h.  We are removing references to
19907the acronym "API" since it is  somewhat windowsy. The new name is
19908"external interface" or xface or xf in the  filenames.j
19909
19910
19911All manifest constants have been forced to upper case (some were
19912mixed case.)   Also, the string "ACPI_" has been prepended to many
19913(not all) of the constants,  typedefs, and structs.
19914
19915The globals "DebugLevel" and "DebugLayer" have been renamed
19916"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
19917
19918All other globals within the subsystem are now prefixed with
19919"AcpiGbl_" Internal procedures within the subsystem are now
19920prefixed with "Acpi" (with only  a few exceptions).  The original
19921two-letter abbreviation for the subcomponent  remains after "Acpi"
19922- for example, CmCallocate became AcpiCmCallocate.
19923
19924Added a source code translation/conversion utility.  Used to
19925generate the Linux  source code, it can be modified to generate
19926other types of source as well. Can  also be used to cleanup
19927existing source by removing extraneous spaces and blank  lines.
19928Found in tools/acpisrc/*
19929
19930OsdUnMapMemory was renamed to OsdUnmapMemory and then
19931AcpiOsUnmapMemory.  (UnMap  became Unmap).
19932
19933A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19934When set to  one, this indicates that the caller wants to use the
19935
19936semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
19937both types.  However, implementers of this  call may want to use
19938different OS primitives depending on the type of semaphore
19939requested.  For example, some operating systems provide separate
19940
19941"mutex" and  "semaphore" interfaces - where the mutex interface is
19942much faster because it  doesn't have all the overhead of a full
19943semaphore implementation.
19944
19945Fixed a deadlock problem where a method that accesses the PCI
19946address space can  block forever if it is the first access to the
19947space.
19948
19949-------------------------------------------
19950Summary of changes for this label: 06_02_00
19951
19952Support for environments that cannot handle unaligned data
19953accesses (e.g.  firmware and OS environments devoid of alignment
19954handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19955been added (via configurable macros) in  these three areas: -
19956Transfer of data from the raw AML byte stream is done via byte
19957moves instead of    word/dword/qword moves. - External objects are
19958aligned within the user buffer, including package   elements (sub-
19959objects). - Conversion of name strings to UINT32 Acpi Names is now
19960done byte-wise.
19961
19962The Store operator was modified to mimic Microsoft's
19963implementation when storing  to a Buffer Field.
19964
19965Added a check of the BM_STS bit before entering C3.
19966
19967The methods subdirectory has been obsoleted and removed.  A new
19968file, cmeval.c  subsumes the functionality.
19969
19970A 16-bit (DOS) version of AcpiExec has been developed.  The
19971makefile is under  the acpiexec directory.
19972