xref: /freebsd/sys/contrib/dev/acpica/changes.txt (revision 58308fadece25ae4c12bd2f4dce3d73d9c23be43)
1----------------------------------------
24 April 2025. Summary of changes for version 20250404:
3
4Major changes:
5
6Update all the copyright continuation year to 2025 in the license header of all files
7
8Add complete support for 3 new ACPI tables ? MRRM,ERDT and RIMT (Tony Luck & V L Sunil)
9
10Add a license file to the project which is a great improvement (Dionna Glaze)
11
12Update DMAR and TPM2 tables to support their latest versions (Alexey Neyman and Stuart Yoder)
13
14A few fixes including local cache allocation, FFixedHW Region, attribute packing, string vs. non-string char array, vsnprintf()etc. along with some comments, spelling errors and code alignment (multiple awesome contributors)
15
16
17----------------------------------------
1812 December 2024. Summary of changes for version 20241212:
19
20Major changes:
21
22Fix 2 critical CVE addressing memory leaks - Seunghun Han
23
24EINJ V2 updates ? Zaid Alali (Ampere Computing)
25
26CDAT updates ? Ira Weiny (Intel Corporation)
27
28Fix mutex handling, don?t release ones that were never acquired ? Daniil Tatianin
29
30Experiment with new tag name format Ryyyy_mm_dd to solve chronological sorting problems
31
32
33----------------------------------------
3427 September 2024. Summary of changes for version 20240927:
35
36Major changes:
37
38Fix the acpixf.h file which caused issues for the last release (before this) 20240827
39
40Fix the pointer offset for the SLIC table
41
42Verify the local environment and GitHub commits are all in sync which was a problem with the second from last release (before this)20240322 (aka 20240323 � date issue)
43
44
45
46----------------------------------------
4727 August 2024. Summary of changes for version 20240827:
48
49Major changes:
50
51Fix the PHAT table working: ensure that the PHAT firmware health record offset works correctly, fix various sub-table offsets, prevent segmentation faults when encountering invalid device paths. Contributed by: Armin Wolf <W_Armin@gmx.de>
52
53Fix the optional table 4-byte signature. Contributed by: Daniil Tatianin <99danilt@gmail.com>
54
55Correct the dumping of SLIC and DBG2 tables. Contributed by: Al Stone (Fedora) <ahs3@ahs3.net>
56
57Add support for QWordPCC and DWordPCC by Jose Marinho (ARM)
58
59Fix the integer to hex string conversions by Armin Wolf
60
61Detecting FACS in reduced HW mode and allowing setting waking vector thereby waking up from S3 state
62
63Fixing issues with crossing page boundaries when mapping operation regions by Raju Rangoju, Sanath S and Mario Limonciello (AMD)
64
65Update the support for IORT, HMAT, MPAM, AEST, CEDT, SPCR etc. tables
66
67Fix multiple issues with table parsing, compilation and disassembly by Myra DeMere (Google)
68
69Allow for more flexibility in _DSM usage.
70
71
72----------------------------------------
7322 March 2024. Summary of changes for version 20240322:
74
75Major changes:
76
77Update all the license header year from 2023 to 2024.
78
79Fix table argument ordering to work properly with iasl.
80
81Get rid of the annoying repeated warning types in MSVC and Windows.
82
83Fix a test in ASLTS with edge case failure.
84
85Fix a couple of issues with how GPEs are counted and enabled.
86
87Add new tables for various architectures/OS, mainly RISC-V and also update many more.
88
89Add an option to either make the output deterministic or non-deterministic.
90
91Remove redundant checks, duplicated code and fix spellings in various files.
92
93Fix flex arrays for C++ compilers and also make ACPICA overall more compatible with different compilers which throw warnings related to memory sanitization etc.
94
95
96----------------------------------------
9728 June 2023. Summary of changes for version 20230628:
98
990) Global changes:
100
101Fixed a problem with the ASL/AML Timer() operator. Discovered by UBSAN: ?array-index-out-of-bounds in acpica/dswexec.c:401:12 index -1 is out of range for type 'acpi_operand_object?. Added AML_NO_OPERAND_RESOLVE flag to Timer (since there are no runtime arguments). Reported by: Abhishek Mainkar abmainkar@nvidia.com.
102
103Added a define for size of acpi_srat_generic_affinity DeviceHandle. Replaced a magic number with a define. The Linux kernel code will utilize this. Reported by Dave Jiang dave.jiang@intel.com.
104
105Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5.
106
1071) ACPICA kernel-resident subsystem:
108
109Added port definitions for CDAT SSLBIS. Add upstream port and any port definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com.
110
111Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang dave.jiang@intel.com.
112
1131) ACPICA kernel-resident subsystem:
114
115Fix GCC 12 dangling-pointer warning.  We're storing a persistent pointer to an ephemeral local variable which technically is a dangling pointer and the compiler is correct. However, since we never indirect the pointer, this is a safe operation and we can suppress the warning.
116
117Also, some C run-times (like MUSL) aren't including <stdint.h> indirectly so we must include it explicitly or we won't have the type definition for uintptr_t.
118
1192) iASL Compiler/Disassembler and ACPICA tools:.
120
121IASL/RHCT: Enable dumping and compiling newly added nodes. The RHCT table is updated with new nodes. Add compile and dump functionality for these new structures.
122
123AcpiExec: Added a new command, ?interrupt?. The Interrupt command simulates an interrupt with a IntID (GSIV) equal to the first argument of the call/invocation. The acpiexec code simulates the behavior by OSPM: execute the _EVT method of the GED device associated with that IntID. Submitted by: Jose Marinho jose.marinho@arm.com.
124
125AcpiExec: Detect GED device and keep track of _EVT. The GED device is described by a _HID of ACPI0013. This code traverses the namespace identifying all GED devices. For each GED device in the namespace we record the Interrupt object and the _EVT method. This information is used when an interrupt is simulated via the ?interrupt? command. Submitted by: Jose Marinho jose.marinho@arm.com.
126----------------------------------------
12731 March 2023. Summary of changes for version 20230331:
128
129This release is available at https://acpica.org/downloads
130
1310) Global changes:
132
133
134Update all copyright notices to the year 2023. This effects all source
135modules, as well as utility signons.
136Add OS-specific support for Zephyr RTOS.
137Fix miscellaneous code that accesses various objects.
138Remove some dead code.
139Add C ?Flexible Array? support.
140Add support for 64 bit LoongArch compilation.
141Add first batch of RISC-V related definitions.
142Performed a global automated update to remove tabs, fix indentation
143issues, etc.
144
1451) ACPICA kernel-resident subsystem:
146
147hwvalid: Drop port I/O validation.
148
1492) ACPICA tools and utilities:
150
151iASL: Added full macro support in the preprocessor. Example:
152#define ABCD(a,b,c,d) a+b+c-d
153
154Known macro support limitations (at this time):
155	No support for multi-line #define macros (backslash continuation
156lines)
157	No support for the C-style ternary operator
158	No support for the stringizing operator (#)
159	No support for the concatenation (token pasting) operator (##)
160	No support for variable number of macro arguments
161
162Add support for AMD Secure Processor Table (ASPT) version 1.
163Add support for Arm's MPAM ACPI table version 2.
164ACPI 6.5: MADT: add support for trace buffer extension in GICC.
165Headers: Delete bogus NodeArray array of pointers from AEST table.
166PHAT table support is still ongoing.
167
168
169----------------------------------------
17020 October 2022. Summary of changes for version 20221020:
171
172This release is available at https://acpica.org/downloads
173
1740) Global changes:
175
176Allow disabling of -Werror. For distro maintainers having `-Werror` can
177delay update of GCC. Since every GCC release might add new warnings that
178were not yet captured, it might break the build of packages. With this
179change, distros can now build with `NOWERROR=TRUE` instead of patching
180either the errors or the makefiles. The default behavior keeps on using
181`-Werror`.
182
1831) ACPICA kernel-resident subsystem:
184
185Added support for FFH Operation Region special context data. FFH(Fixed
186Function Hardware) Opregion is approved to be added in ACPI 6.5 via code
187first approach[1]. It requires special context data similar to GPIO and
188Generic Serial Bus as it needs to know platform specific offset and
189length.
190
191Reverted this commit "executer/exsystem: Warn about sleeps greater than
19210 ms." Due to user complaints about valid sleeps greater than 10ms seen
193in some existing machines -- generating lots of warnings.
194
195Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that
196EBDA region must be at least 1KiB in size. Because this is not
197guaranteed, it might happen that while scanning the memory for RSDP
198pointer, the kernel touches memory above 640KiB. This is unwanted as the
199VGA memory range may not be decoded or even present when running under
200virtualization.
201
202Check that EBDA pointer is in valid memory. If the memory at 0x40e is
203uninitialized, the retrieved physical memory address of EBDA may be
204beyond the low memory (i.e. above 640K). If so, the kernel may
205unintentionally access the VGA memory, that might not be decoded or even
206present in case of virtualization.
207
2082) iASL Compiler/Disassembler and ACPICA tools:
209
210Completed the existing partial support for the CDAT "table". Although
211this isn't technically an ACPI table (It doesn't go into the XSDT), it is
212possible to support this table in the Data Table compiler. Created one
213new file, "utilities/utcksum.c", used to centralize checksum
214generation/validation into one location. Includes changes to makefiles
215and MSVC project files.
216
217Updated support for the IORT table - update to version E.e
218
219Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table
220
221iASL: Added CCEL table to both compiler/disassembler.
222
223iASL: NHLT table: Fixed compilation of optional undocumented fields
224
225iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763
226("iASL: Add CCEL table to both compiler/disassembler") introduced the
227iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL
228table member reference. To fix it,  change ACPI_TDEL_OFFSET with
229ACPI_CCEL_OFFSET.
230
231----------------------------------------
23231 March 2022. Summary of changes for version 20220331:
233
2340) Global changes:
235
236Update all copyright notices to the year 2022. This effects all source
237modules, as well as utility signons.
238
239
2401) ACPICA kernel-resident subsystem:
241
242For the ASL Sleep() operator, issue a warning if the sleep value is
243greater than 10 Milliseconds. Quick boottime is important, so warn about
244sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350
245ms, so excessive delays should be called out. 10 ms is chosen randomly,
246but three of such delays would already make up ten percent of the
247boottime.
248
249Namespace: Avoid attempting to walk the Namespace if the Namespace does
250not exist.
251
252AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the
253LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a
254pass/fail integer. Now load returns a pass/fail integer, as well as
255storing the return value in an optional 2nd argument.
256
257Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid
258"performing pointer subtraction with a null pointer has undefined
259behavior" compiler warnings, use uintptr_t and offsetof() that are always
260available during Linux kernel builds to define ACPI_UINTPTR_T and the
261ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code
262in the Linux kernel.
263
264Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted
265by superm1.
266
267executer/exsystem: Inform users about ACPI spec violation for the Stall()
268operator. Values greater than 100 microseconds violate the ACPI
269specification, so warn users about it. From the ACPI Specification
270version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*:
271> The implementation of Stall is OS-specific, but must not relinquish
272> control of the processor. Because of this, delays longer than 100
273> microseconds must use Sleep instead of Stall.
274
275
2762) iASL Compiler/Disassembler and ACPICA tools:
277
278Data Table Compiler/Disassembler: Add support for the APMT table - ARM
279Performance Monitoring Unit table. Submitted by @bwicaksononv.
280
281Data Table Compiler/Disassembler: For MADT, add support for the OEM-
282defined subtables (Types 0x80-0x7F).
283
284Data Table Compiler: Fixed a problem with support for the SDEV table,
285where a subtable Length was not computed correctly.
286
287Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT
288Acpi table support.
289
290Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and
291add template. Submitted by MasterDrogo.
292
293Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz:
294iASL/NHLT: Rename linux specific structures to DeviceInfo to improve
295readability of the code.
296iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint.
297Undocumented bytes at the end of Endpoint Descriptor can be present
298independently of Linux-specific structures. Their size can also vary.
299iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4
300bytes of size and then an amount of bytes specified by size. All of the
301terminators that I've seen had a size equal to 4, but theoretically it
302can vary.
303
304iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
305
306iASL: Remove a remark due to excessive output. Removed a remark for
307duplicate Offset() operators, due to a user complaint.
308
309----------------------------------------
31017 December 2021. Summary of changes for version 20211217:
311
3121) ACPICA kernel-resident subsystem:
313
314Hardware: Do not flush CPU cache when entering S4 and S5. According to
315ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to
316S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of
317the sleep state. Blind cache flush on entering S5 causes problems for
318TDX.
319
320Avoid subobject buffer overflow when validating RSDP signature. Since the
321Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to
322it is only to a 4-char array, and so trying to read past the 4th
323character, as will be done when it is an RSDP, reads beyond the bounds of
324the accessed member. Contributed by jrtc27.
325
326Add support for PCC Opregion special context data. PCC Opregion added in
327ACPIC 6.3 requires special context data similar to GPIO and Generic
328Serial Bus as it needs to know the internal PCC buffer and its length as
329well as the PCC channel index when the opregion handler is being executed
330by the OSPM. Adds support for the special context data needed by PCC
331Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com>
332
3332) iASL Compiler/Disassembler and ACPICA tools:
334
335iASL: Completed compiler support for the NHLT ACPI table.
336
337iASL/NHLT table: Fixed a reported problem where a fault would occur
338during disassembly of a "Linux-Specific" section if the "Specific Data"
339part was not present.
340
341iASL: Added full support (compiler and disassembler) for the AGDI ACPI
342table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>.
343
344iASL: Added full support for the TDEL ACPI table.
345
346iASL table compiler: FADT support updates:
3471) Allow the 32-bit DSDT address to be zero.
3482) Issue error if both the 32-bit and 64-bit DSDT addresses are zero.
349
350iASL: Fix unaligned accesses to local cache allocations. Contributed by
351jrtc27.
352
353iASL: Open binary input files in binary mode, not text mode Affects
354binary input AML files, as well as binary data table files, for
355disassembly.
356
357----------------------------------------
35830 September 2021. Summary of changes for version 20210930:
359
360This release is available at https://acpica.org/downloads
361
3621) ACPICA kernel-resident subsystem:
363
364Hardware: Avoid evaluating methods too early during system resume. During
365wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called
366and it tries to get memory from the OS in order to evaluate a control
367method, but if KFENCE is enabled in the Linux kernel, the memory
368allocation attempt causes an IRQ work to be queued and a self-IPI to be
369sent to the CPU running the code which requires the memory controller to
370be ready, so if that happens too early in the wakeup path, it doesn't
371work.
372
373Prevent that from taking place by calling AcpiGetSleepTypeData() for S0
374upfront, when preparing to enter a given sleep state, and saving the data
375obtained by it for later use during system wakeup.
376
377Added a new _OSI string, "Windows 2020". Posted by superm1.
378
3792) iASL Compiler/Disassembler and ACPICA tools:
380
381iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS
382objects:
383New/latest rules: Under a Device Object:
384         1) If _PRS is present, must have _CRS and _SRS
385         2) If _SRS is present, must have _PRS (_PRS requires _CRS and
386_SRS)
387         3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS
388requires _CRS and _SRS)
389         4) If _SRS is present, probably should have a _DIS (Remark only)
390
391iASL table disassembler: Added disassembly support for the NHLT ACPI
392table. Note: support for Vendor-defined microphone arrays and SNR
393extensions are not supported at this time -- mostly due to a lack of
394example tables. Actual compiler support for NHLT is forthcoming.
395
396Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It
397uses the same subtable structure as the existing Generic Initiator
398Affinity type.
399
400Added the flag for online capable in the MADT, introduced in ACPI 6.3.
401Posted by superm1.
402
4033) ACPICA documentation: Updated the legal info (that appears at the
404start of the Documents) to clarify distribution rights that are granted.
405
406
407----------------------------------------
40830 July 2021. Summary of changes for version 20210730:
409
410This release is available at https://acpica.org/downloads
411
4121) ACPICA kernel-resident subsystem:
413
4142) iASL Compiler/Disassembler and ACPICA tools:
415
416iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021).
417  Under the Device Object:
418  1) If _DIS is present, must have a _CRS and _SRS
419  2) If _PRS is present, must have a _CRS, _DIS, and _SRS
420  3) If _SRS is present, must have a _CRS and _DIS
421A warning will be issued for each of these cases.
422Note: For existing ASL/projects, these warnings may be disabled by
423specifying this on the command line:
424"-vw 3141"
425
426iASL Table Disassembler/Table compiler: Fix for WPBT table with no
427command-line arguments. Handle the case where the Command-line
428Arguments table field does not exist (zero).
429
430Headers: Add new DBG2 Serial Port Subtypes
431The Microsoft Debug Port Table 2 (DBG2) specification revision
432September 21, 2020 comprises additional Serial Port Subtypes [1].
433Reflect that in the actbl1.h header file. Submitted by:
434semihalf-wojtas-marcin
435
436iASL: Add full support for the AEST table (data compiler)
437Includes support in the table compiler and the disassembler.
438
439Add PRMT module header to facilitate parsing.
440This structure is used in to parse PRMT in other Operating Systems
441that relies on using subtable headers in order to parse ACPI tables.
442Although the PRMT doesn't have "subtables" it has a list of module
443information structures that act as subtables.
444
445iASL: Table disassembler: Add missing strings to decode subtable types.
446Includes the MADT and CEDT tables.
447
448
449----------------------------------------
45004 June 2021. Summary of changes for version 20210604:
451
4521) ACPICA kernel-resident subsystem:
453
454Cleaned up (delete) the context mutex during local address handler object
455deletion.
456
457Fixed a memory leak caused by the _CID repair function.
458
459Added support for PlatformRtMechanism OperationRegion handler. Adds a new
460utility function, AcpiUtConvertUuidToString. Writing a buffer to a
461PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
462input buffer contains 26 bytes containing 9 bytes of status, a command
463byte and a 16-byte UUID. This change will simply pass this incoming
464buffer to a handler registered by the OS.
465
4662) iASL Compiler/Disassembler and ACPICA tools:
467
468Added full support for the PRMT ACPI table (Platform Runtime Mechanism
469Table). Includes support in the iASL compiler, the disassembler, and the
470template generator.
471
472Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
473
474Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
475table.
476
477Added full support for the SVKL (Storage Volume Key Location Table) ACPI
478table. Header file support from Kuppuswamy Sathyanarayanan
479<sathyanarayanan.kuppuswamy@linux.intel.com>.
480
481Completed full support for the IVRS (I/O Virtualization Reporting
482Structure) ACPI table. Added compiler support for IVRS, updated
483disassembler support. Adds a new utility, UtIsIdInteger, to determine if
484a HID/CID is an integer or a string.
485
486Headers: Added more structs to the CEDT table: CXL fixed memory window
487structure.
488
489ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
490
491----------------------------------------
49231 March 2021. Summary of changes for version 20210331:
493
494This release is available at https://acpica.org/downloads, and includes
495all ACPI 6.4 support
496
4971) ACPICA kernel-resident subsystem:
498ACPI 6.4: iASL: deprecate DDBHandleObj keyword
499Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
500allocating an object using kmalloc(), but then frees it
501using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
502Fixed a race condition in generic serial bus operation region handler.
503Fixed by Hans de Goede.
504
5052) iASL Compiler/Disassembler and ACPICA tools:
506
507ACPI 6.4: NFIT: add Location Cookie field
508ACPI 6.4: HMAT: add new fields/flags
509ACPI 6.4: Add new flags in SRAT
510ACPI 6.4: add SDEV secure access components
511ACPI 6.4: add Csi2Bus resource template
512ACPI 6.4: add support for PHAT table
513ACPI 6.4: add support for PMTT table
514Add disassembly support for the IVRS table. Compilation of the table is
515not yet complete.
516Fixed a potential infinite loop due to type mismatch. The for-loop is
517using a UINT8 counter and comparing the upper
518limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
519the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
520will wrap around to zero and the loop will never exit. I suspect
521the AslGbl_ExpectedMessagesIndex is never that high, but fixing
522this does future proof the code and cleans up static analysis
523warnings.Colin King.
524iASL/TableCompiler: update it with IORT table E.b revision changes. From
525shamiali2008.
526iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
527off-by: Jean-Philippe Brucker.
528iASL/TableCompiler: Add compilation support for CEDT table. Also, update
529the CEDT template.
530
531----------------------------------------
53205 January 2021. Summary of changes for version 20210105:
533
534This release is available at https://acpica.org/downloads
535
536
5371) ACPICA kernel-resident subsystem:
538
539Updated all copyrights to 2021. This affects all ACPICA source code
540modules.
541
5422) iASL Compiler/Disassembler and ACPICA tools:
543
544ASL test suite (ASLTS): Updated all copyrights to 2021.
545
546Tools and utilities: Updated all signon copyrights to 2021.
547
548iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
549MTMR. Al Stone.
550
551
552----------------------------------------
55317 December 2020. Summary of changes for version 20201217:
554
555This release is available at https://acpica.org/downloads
556
557
5581) ACPICA kernel-resident subsystem:
559
560Note: The implementation of ACPI 6.4 is underway, and is expected to be
561mostly finished next month, when ACPI 6.4 is released.
562
563From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
564several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
565enable this.
566
567AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
568These included a few casts, as well as a null pointer check.
569
570Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
571implicit fallthrough, as well as __attribute__((__fallthrough__)) and
572comments to explicitly denote that cases of fallthrough were intentional.
573Clang also supports this warning and statement attribute, but not the
574comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
575of GCC. With assistance from @nickdesaulniers.
576
5772) iASL Compiler/Disassembler and ACPICA tools:
578
579Added improvement to method call analysis by saving the return type and
580relaxing certain cases of type checking.
581
582iASL Table Compiler: Improved info messages. Added a message to the -T
583option for when the default template (DSDT) is used.
584Also added a note for when multiple SSDTs are created with a DSDT that
585the SSDTs are created in the same file as the DSDT.
586
587
588----------------------------------------
589
59013 November 2020. Summary of changes for version 20201113:
591
592This release is available at https://acpica.org/downloads
593
594
5951) ACPICA kernel-resident subsystem:
596
597Interpreter: fixed a memory leak by using use existing buffer in _HID
598repair. There was a memory leak that occurred when a _CID object is
599defined as a package containing string objects. When _CID is checked for
600any possible repairs, it calls a helper function to repair _HID (because
601_CID basically contains multiple _HID entries). The _HID repair function
602assumes that string objects are standalone objects that are not contained
603inside of any packages. The _HID repair function replaced the string
604object with a brand new object and attempted to delete the old object by
605decrementing the reference count of the old object. Strings inside of
606packages have a reference count of 2 so the _HID repair function leaves
607this object in a dangling state and causes a memory leak. Instead of
608allocating a brand new object and removing the old object, use the
609existing object when repairing the _HID object.
610
611Added function trace macros to improve namespace debugging. The namespace
612repair mechanism does not have function tracing macros. Add several trace
613macros to improve debuggability.
614
615Handle "orphan" _REG methods for GPIO OpRegions. Before this change
616AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
617matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
618Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
619The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
620UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
621to potential issues with checks for OpRegion availability, or in other
622words checks if _REG has been called for the OpRegion which the ACPI code
623wants to use. Except for the "orphan" EC handling, ACPICA core does not
624call _REG on an ACPI node which does not define an OpRegion matching the
625type being registered; and the reference design DSDT, from which most
626Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
627UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
628were assigned ACPI controlled functions in the reference design. Together
629this leads to the perfect storm, at least on the Cherry Trail based
630Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
631and has added the Cherry Trail specific UserDefined(0x93) opregion to its
632GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
633availability check for the standard GeneralPurposeIo OpRegion. This
634clearly is a bug in the DSDT, but this does work under Windows. This
635issue leads to the intel vbtn driver reporting the device always being in
636tablet-mode at boot, even if it is in laptop mode. Which in turn causes
637userspace to ignore touchpad events. So in other words, this issue causes
638the touchpad to not work at boot. This change fixes this by extending the
639"orphan" _REG method handling to also apply to GPIO address-space
640handlers.
641
642
6432) iASL Compiler/Disassembler and ACPICA tools:
644
645iASL: Added more info to namespace dump file (-ln option). In a separate
646section of the dump file (after the main namespace dump), emit the full
647pathname for each namespace node, its type, and the ASL filename and line
648number where it is declared.
649
650AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
651x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
652is omitted, all iASL exceptions are displayed.
653
654iASL: Use StringLiteral instead of StringData for some ASL macros. The
655use of the stringData rule allows for some "string" oriented opcodes
656(Such as ToString, ToHexString, etc.) None of which make sense with the
657macros in question. This change modifies the StringData part of the rule
658for these macros to a simple string  literal - thus disallowing the use
659of ToString, ToHexString, etc.
660The following ASL operators (macros) are affected:
661EisaId
662Fprintf
663Printf
664ToUuid
665Unicode
666Note: The MS compiler requires the use of string literals for these
667operators also.
668
669iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
670the list of "known" UUIDs for the input to the ToUUID macro.
671
672Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
673NFIT table.
674
675
676----------------------------------------
677
67825 September 2020. Summary of changes for version 20200925:
679
680This release is available at https://acpica.org/downloads
681
682
6831) ACPICA kernel-resident subsystem:
684
685Preserve memory opregion mappings. The ACPICA's strategy with respect to
686the handling of memory mappings associated with memory operation regions
687is to avoid mapping the entire region at once which may be problematic at
688least in principle (for example, it may lead to conflicts with
689overlapping mappings having different attributes created by drivers).  It
690may also be wasteful, because memory opregions on some systems take up
691vastchunks of address space while the fields in those regions actually
692accessed by AML are sparsely distributed.
693
694For this reason, a one-page "window" is mapped for a given opregion on
695the first memory access through it and if that "window" does not cover an
696address range accessed through that opregion subsequently, it is unmapped
697and a new "window" is mapped to replace it.  Next, if the new "window" is
698not sufficient to access memory through the opregion in question in the
699future, it will be replaced with yet another "window" and so on.  That
700may lead to a suboptimal sequence of memory mapping and unmapping
701operations, for example if two fields in one opregion separated from each
702other by a sufficiently wide chunk of unused address space are accessed
703in an alternating pattern.
704
705Added support for 64 bit risc-v compilation.  Useful for acpica tools and
706incorporating ACPICA into the Firmware Test Suite. Colin Ian King
707<colin.king@canonical.com>.
708
709Added support for SMBus predefined names (from SMBus Control Method
710Interface Specification, Version 1.0, December 10, 1999. New predefined
711names:
712    _SBA
713    _SBI
714    _SBR
715    _SBT
716    _SBW
717
718AML Disassembler: Added a new command, "All <NameSeg>". This command will
719evaluate all objects in the current namespace whose NameString contains
720the input NameSeg as the last element of the NameString. Useful for
721debugging.
722
723
7242) iASL Compiler/Disassembler and ACPICA tools:
725
726iASL: fixed a crash that occurred when predefined objects return packages
727with lengths that exceed the initializer list.
728
729iASL: added more detail to external resolution error message when
730compiling multiple definition blocks.
731
732iASL: added a remark for an attempt to create a nameseg or namestring
733containing lower-case letters. This should prevent declaring multiple
734namesegs or namestrings in an attempt to refer to different objects (with
735different cases), but actually refer to the same object(s).
736
737iASL: improve alias analysis by saving object type. If the alias is a
738method type, the parameter count is also recorded.
739
740AcpiExec: Increase the default loop timeout value. Was 1 second, is now
74110 seconds. Prevents unnecessary timeouts when executing control methods
742from the command line.
743
744AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
745list. Includes:
746    Memory Device
747    Generic Buttons Device
748    NVDIMM Root Device
749    Control Method Battery
750    Device Graphs for _DSD method
751    Hierarchical Data Extension
752....ARM CoreSight Graph
753
754----------------------------------------
755
756
75717 July 2020. Summary of changes for version 20200717:
758
759This release is available at https://acpica.org/downloads
760
761
7621) ACPICA kernel-resident subsystem:
763
764Do not increment OperationRegion reference counts for field units. Recent
765server firmware has revealed that this reference count can overflow on
766large servers that declare many field units (thousands) under the same
767OperationRegion. This occurs because each field unit declaration will add
768a reference count to the source OperationRegion. This release solves the
769reference count overflow for OperationRegion objects by preventing
770fieldUnits from incrementing their parent OperationRegion's reference
771count.
772
773Replaced one-element arrays with flexible-arrays, which were introduced
774in C99.
775
776Restored the readme file containing the directions for generation of
777ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
778located at: generate/msvc2017/readme.txt
779
7802) iASL Compiler/Disassembler and ACPICA tools:
781
782iASL: Fixed a regression found in version 20200214. Prevent iASL from
783emitting an extra byte of garbage data when control methods declared a
784single parameter type without using braces. This extra byte is known to
785cause a blue screen on the Windows AML interpreter.
786
787iASL: Made a change to allow external declarations to specify the type of
788a named object even when some name segments are not defined.
789This change allows the following ASL code to compile (When DEV0 is not
790defined or not defined yet):
791
792    External (\_SB.DEV0.OBJ1, IntObj)
793    External (\_SB.DEV0, DeviceObj)
794
795iASL: Fixed a problem where method names in "Alias ()" statement could be
796misinterpreted. They are now interpreted correctly as method invocations.
797
798iASL: capture a method parameter count (Within the Method info segment,
799as well as the argument node) when using parameter type lists.
800
801----------------------------------------
802
803
80428 May 2020. Summary of changes for version 20200528:
805
806
8071) ACPICA kernel-resident subsystem:
808
809Removed old/obsolete Visual Studio files which were used to build the
810Windows versions of the ACPICA tools. Since we have moved to Visual
811Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
812project files. The new subdirectory and solution file are located at:
813
814    acpica/generate/msvc2017/AcpiComponents.sln
815
816
8172) iASL Compiler/Disassembler and ACPICA tools:
818
819iASL: added support for a new OperationRegion Address Space (subtype):
820PlatformRtMechanism. Support for this new keyword is being released for
821early prototyping. It will appear in the next release of the ACPI
822specification.
823
824iASL: do not optimize the NameString parameter of the CondRefOf operator.
825In the previous iASL compiler release, the NameString parameter of the
826CondRefOf was optimized. There is evidence that some implementations of
827the AML interpreter do not perform the recursive search-to-parent search
828during the execution of the CondRefOf operator. Therefore, the CondRefOf
829operator behaves differently when the NameString parameter is a single
830name segment (a NameSeg) as opposed to a full NamePath (starting at the
831root scope) or a NameString containing parent prefixes.
832
833iASL: Prevent an inadvertent remark message. This change prevents a
834remark if within a control method the following exist:
8351) An Operation Region is defined, and
8362) A Field operator is defined that refers to the region.
837This happens because at the top level, the Field operator does not
838actually create a new named object, it simply references the operation
839region.
840
841Removed support for the acpinames utility. The acpinames was a simple
842utility used to populate and display the ACPI namespace without executing
843any AML code. However, ACPICA now supports executable opcodes outside of
844control methods. This means that executable AML opcodes such as If and
845Store opcodes need to be executed during table load. Therefore, acpinames
846would need to be updated to match the same behavior as the acpiexec
847utility and since acpiexec can already dump the entire namespace (via the
848'namespace' command), we no longer have the need to maintain acpinames.
849
850    In order to dump the contents of the ACPI namespace using acpiexec,
851execute the following command from the command line:
852
853        acpiexec -b "n" [aml files]
854
855----------------------------------------
856
857
85830 April 2020. Summary of changes for version 20200430:
859
8601) ACPICA kernel-resident subsystem:
861
862Cleaned up the coding style of a couple of global variables
863(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
864AcpiProtocolLengths was made static, and the definition of
865AcpiGbl_NextCmdNum was moved to acglobal.h.
866
867
8682) iASL Compiler/Disassembler and ACPICA tools:
869
870iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
871associated with a field.
872
873Disassembler: has been made more resilient so that it will continue to
874parse AML even if the AML generates ACPI namespace errors. This enables
875iASL to disassemble some AML that may have been compiled using older
876versions of iASL that no longer compile with newer versions of iASL.
877
878iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
879was a mixup where _NIG required one parameter and _NIH required zero
880parameters. This change swaps these parameter requirements. Now it is
881required that _NIH must be called with one parameter and _NIG requires
882zero parameters.
883
884iASL: Allow use of undefined externals as long as they are protected by
885an if (CondRefOf (...)) block when compiling multiple definition blocks.
886
887iASL: Fixed the type override behavior of named objects that are declared
888as External. External declarations will no longer override the type of
889the actual definition if it already exists.
890
891AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
892command line wildcard support on Windows. Note: the AcpiNames utility is
893essentially redundant with the AcpiExec utility (using the "namespace"
894command) and is therefore deprecated. It will be removed in future
895releases of ACPICA.
896
897Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
898operators. The disassembler is intended to emit existing ASL code as-is.
899Therefore, error messages emitted during disassembly should be ignored or
900handled in a way such that the disassembler can continue to parse the
901AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
902parsing for create operators in order to complete parsing ASL termlists.
903
904iASL DataTable Compiler: IVRS table: fix potentially uninitialized
905variable warning. Some compilers catch potential uninitialized variables.
906This is done by examining branches of if/else statements. This change
907replaces an "else if" with an "else" to fix the uninitialized variable
908warning.
909
910
911----------------------------------------
91226 March 2020. Summary of changes for version 20200326:
913
914
9151) ACPICA kernel-resident subsystem:
916
917Performed a code clean-up to prevent build errors on early versions of
918GCC-10.
919
920Added the NHLT table signature. iASL data table compiler/disassembler
921support for this table is coming soon.
922
923
9242) iASL Compiler/Disassembler and ACPICA tools:
925
926AcpiExec: Fixed several problems with the namespace initialization file
927(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
928errors, several seg faults, and enhancements to line parsing within the
929init file. In addition, each object found in the init file and it's new
930value is displayed, as well as any such entries that do not have a
931corresponding name in the namespace. For reference, the syntax for the
932various supported data types are presented below:
933	PCHG 0x777788889999BBBB	// Integer
934	\DEV1.STR1 "XYZ"			// String
935	BUF1 (88 99 AA)			// Buffer
936	PKG1 [0x1111 0x2222]		// Package
937	\BF1 0x7980				// BufferField
938	RCRV 0x0123456789ABCDEF	// Field Unit
939
940iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
941can be used anywhere in a given ASL file to configure iASL to expect an
942iASL compiler error code on the line where this macro was placed. If the
943error code does not exist, an error is generated. This is intended to be
944used for ACPICA's ASL test suite, but can be used by ASL developers as
945well.
946
947iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
948IVRS table parsing supported only IVHD type 10h structures. Parsing an
949IVHD type 11h caused the iasl to report unknown subtable type. Add
950necessary structure definition for IVHD type 11h and apply correct
951parsing method based on subtable type. Micha? ?ygowski.
952
953iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
954According to AMD IOMMU Specification Revision 3.05 the reserved field
955should be IOMMU Feature Reporting. Change the name of the field to the
956correct one. Micha? ?ygowski.
957
958acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
959based on suggestions by David Seifert and Benjamin Berg.
960
961iASL: table compiler: removed an unused variable (DtCompilerParserResult)
962causing linking errors. Patch based on suggestions by David Seifert and
963Benjamin Berg.
964
965iASL: table compiler: make LexBuffer static to avoid linking errors in
966newer compilers. Patch based on suggestions by David Seifert and Benjamin
967Berg.
968
969iASL: fixed type matching between External and Named objects. External
970object types can only be expressed with ACPI object type values that are
971defined in the ACPI spec. However, iASL uses ACPI object type values that
972are local to ACPICA in addition to the values defined in the ACPI spec.
973This change implements type matching to map some object type values
974specific to ACPICA to ones that are defined in the ACPI spec.
975
976iASL: Dropped the type mismatch compiler error that can arise from
977External declarations to a warning. This warning can occur when there is
978a type difference between the external declaration and the actual object
979declaration (when compiling multiple files/modules simultaneously).
980
981iASL: removed an incorrect error message regarding externals. This change
982removes an incorrect error that is emitted when a duplicate external
983declaration does not contain a type that opens a scope. This is incorrect
984because the duplicate external with conflicting types are already caught
985by iASL and it doesn't make any sense to enforce what this conflicting
986type should be.
987
988AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
989surrounded by parens. Otherwise, a logical statement that applies a
990logical not operator to this macro could result in a computation that
991applies the operator to the left side of the logical and but not the
992right. Reported-by: John Levon <john.levon@joyent.com>
993
994Fixed a problem with the local version of sprint(): On 32-bit, the
995provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
996String + Size will wrap, meaning End < Start, and
997AcpiUtBoundStringOutput() will never output anything as a result. The
998symptom seen of this was acpixtract failing to output anything -- with a
999custom build that included utprint.c. Signed-off-by: John Levon
1000<john.levon@joyent.com>
1001
1002iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
1003ACPI specification.
1004
1005
1006----------------------------------------
100714 February 2020. Summary of changes for version 20200214:
1008
1009
10101) ACPICA kernel-resident subsystem:
1011
1012Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
1013in a guest when it receives a sleep trigger from the hypervisor. When the
1014guest resumes from this power state, it does not see the SleepEnabled
1015bit. In other words, the sleepHibernation (S4) is triggered in a guest
1016when it receives a sleep trigger from the hypervisor. When the guest
1017resumes from this power state, it does not see the SleepEnabled bit. In
1018other words, the sleep button is not enabled on waking from an S4 state.
1019This causes subsequent invocation of sleep state to fail since the
1020guest.button is not enabled on waking from an S4 state. This causes
1021subsequent invocation of sleep state to fail in the guest. Fix this
1022problem by enabling the sleep button in ACPI legacy wake. From Anchal
1023Agarwal <anchalag@amazon.com>.
1024
1025Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
1026for checking the status bits of all enabled GPEs in one go. It is needed
1027to distinguish spurious SCIs from genuine ones when deciding whether or
1028not to wake up the system from suspend-to-idle.
1029
1030Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
1031using HOST in their environment to represent the host name for their
1032machines. Avoid this problem by renaming this variable from HOST to
1033ACPI_HOST.
1034
1035MSVC 2017 project files: Enable multiprocessor generation to improve
1036build performance.
1037
1038Added a macro to get the byte width of a Generic Address structure. New
1039ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
1040ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
1041
1042
10432) iASL Compiler/Disassembler and ACPICA tools:
1044
1045iASL: Implemented full support for the (optional, rarely used) ReturnType
1046and ParameterTypesList for the Method, Function, and External operators.
1047For Method declarations, the number of individual ParameterTypes must
1048match the declaration of the number of arguments (NumArgs). This also
1049Fixes a problem with the External operator where extra/extraneous bytes
1050were emitted in the AML code if the optional ReturnType/ParameterTypes
1051were specified for a MethodObj declaration.
1052New error message:
10531) Method NumArgs count does not match length of ParameterTypes list
1054
1055iASL: Implemented detection of type mismatches between External
1056declarations and named object declarations. Also, detect type mismatches
1057between multiple External declarations of the same Name.
1058New error messages:
10591) Type mismatch between external declaration and actual object
1060declaration detected
10612) Type mismatch between multiple external declarations detected
1062
1063iASL: Implemented new error messages for External operators that specify
1064a ReturnType and/or ParameterTypesList for any object type other than
1065control methods (MethodObj).
1066New error messages:
10671) Return type is only allowed for Externals declared as MethodObj
10682) Parameter type is only allowed for Externals declared as MethodObj
1069
1070iASL: Implemented two new remark/warning messages for ASL code that
1071creates named objects from within a control method. This is very
1072inefficient since the named object must be created and deleted each time
1073the method is executed.
1074New messages:
10751) Creation of named objects within a method is highly inefficient, use
1076globals or method local variables instead (remark)
10772) Static OperationRegion should be declared outside control method
1078(warning)
1079
1080iASL: Improved illegal forward reference detection by adding support to
1081detect forward-reference method invocations.
1082
1083iASL: Detect and issue an error message for NameStrings that contain too
1084many individual NameSegs (>255). This is an AML limitation that is
1085defined in the ACPI specification.
1086New message:
10871) NameString contains too many NameSegs (>255)
1088
1089acpidump: windows: use GetSystemFirmwareTable API for all tables except
1090SSDT. By using this API, acpidump is able to get all tables in the XSDT
1091
1092iASL: Removed unused parser file and updated msvc2017 project files.
1093Removed the obsolete AslCompiler.y from the repository.
1094
1095iASL: msvc2017: Fixed macros in the file dependency list to prevent
1096unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
1097
1098Disassembler: Prevent spilling error messages to the output file. All
1099errors are directed to the console instead. These error messages
1100prevented re-compilation of the resulting disassembled ASL output file
1101(.DSL).
1102
1103
1104----------------------------------------
110510 January 2020. Summary of changes for version 20200110:
1106
1107
11081) ACPICA kernel-resident subsystem:
1109
1110Updated all copyrights to 2020. This affects all ACPICA source code
1111modules.
1112
1113
11142) iASL Compiler/Disassembler and ACPICA tools:
1115
1116ASL test suite (ASLTS): Updated all copyrights to 2020.
1117
1118Tools and utilities: Updated all signon copyrights to 2020.
1119
1120iASL: fix forward reference analysis for field declarations. Fixes
1121forward reference analysis for field declarations by searching the
1122parent scope for the named object when the object is not present in
1123the current scope.
1124
1125iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
1126full pathname of the name that already exists is printed.
1127
1128iASL: Enhance duplicate Case() detection for buffers. Add check for
1129buffers with no initializer list (these buffers will be filled with
1130zeros at runtime.)
1131
1132
1133----------------------------------------
113413 December 2019. Summary of changes for version 20191213:
1135
1136
11371) ACPICA kernel-resident subsystem:
1138
1139Return a Buffer object for all fields created via the CreateField
1140operator. Previously, an Integer would be returned if the size of
1141the field was less than or equal to the current size of an Integer.
1142Although this goes against the ACPI specification, it provides
1143compatibility with other ACPI implementations. Also updated the
1144ASLTS test suite to reflect this new behavior.
1145
11462) iASL Compiler/Disassembler and ACPICA tools:
1147
1148iASL: Implemented detection of (and throw an error for) duplicate
1149values for Case statements within a single Switch statement. Duplicate
1150Integers, Strings, and Buffers are supported.
1151
1152iASL: Fix error logging issue during multiple file compilation --
1153Switch to the correct input file during error node creation.
1154
1155iASL: For duplicate named object creation, now emit an error instead
1156of a warning - since this will cause a runtime error.
1157
1158AcpiSrc: Add unix line-ending support for non-Windows builds.
1159
1160iASL: Add an error condition for an attempt to create a NameString
1161with > 255 NameSegs (the max allowable via the AML definition).
1162
1163
1164----------------------------------------
116518 October 2019. Summary of changes for version 20191018:
1166
1167
11681) ACPICA kernel-resident subsystem:
1169
1170Debugger: added a new command: ?Fields [address space ID]?. This command
1171dumps the contents of all field units that are defined within the
1172namespace with a particular address space ID.
1173
1174Modified the external interface AcpiLoadTable() to return a table index.
1175This table index can be used for unloading a table for debugging.
1176    ACPI_STATUS
1177    AcpiLoadTable (
1178        ACPI_TABLE_HEADER       *Table,
1179        UINT32                  *TableIndex))
1180
1181Implemented a new external interface: AcpiUnloadTable() This new function
1182takes a table index as an argument and unloads the table. Useful for
1183debugging only.
1184    ACPI_STATUS
1185    AcpiUnloadTable (
1186        UINT32                  TableIndex))
1187
1188Ported the AcpiNames utility to use the new table initialization
1189sequence. The utility was broken before this change. Also, it was
1190required to include most of the AML interpreter into the utility in order
1191to process table initialization (module-level code execution.)
1192
1193Update for results from running Clang V8.0.1. This fixes all "dead
1194assignment" warnings. There are still several "Dereference of NULL
1195pointer" warnings, but these have been found to be false positive
1196warnings.
1197
1198
11992) iASL Compiler/Disassembler and ACPICA tools:
1200
1201iASL: numerous table compiler changes to ensure that the usage of
1202yacc/bison syntax is POSIX-compliant.
1203
1204iASL/disassembler: several simple bug fixes in the data table
1205disassembler.
1206
1207Acpiexec: expanded the initialization file (the -fi option) to initialize
1208strings, buffers, packages, and field units.
1209
1210
1211----------------------------------------
121216 August 2019. Summary of changes for version 20190816:
1213
1214This release is available at https://acpica.org/downloads
1215
1216
12171) ACPICA kernel-resident subsystem:
1218
1219Modified the OwnerId mechanism to allow for more Owner Ids. The previous
1220limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
1221exceptions on machines with a large number of initialization threads,
1222many CPU cores and nested initialization control methods.
1223
1224Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
1225checking if the given GPE (as represented by a GPE device handle and a
1226GPE number) is currently active and dispatching it (if that's the case)
1227outside of interrupt context.
1228
1229Table load: exit the interpreter before initializing objects within the
1230new table This prevents re-acquiring the interpreter lock when loading
1231tables
1232
1233Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
1234uk Kim
1235
1236Macros: removed pointer math on a null pointer. Causes warnings on some
1237compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
1238instead of using arithmetic.
1239
1240Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
1241across all "printf-like" internal functions. Also, cleanup all calls to
1242such functions (both in 32-bit mode and 64-bit mode) now that they are
1243analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
1244
1245
12462) iASL Compiler/Disassembler and ACPICA tools:
1247
1248iASL: implemented a new data table compiler flex/bison front-end. This
1249change is internal and is not intended to result in changes to the
1250compiled code. This new compiler front-end can be invoked using the -tp
1251option for now, until the old mechanism is removed.
1252
1253ASLTS: Implemented a new data table compiler test suite. This test suite
1254generates all table templates and compile/disassemble/re-compile/binary-
1255compare each file.
1256
1257iASL: return -1 if AML files were not generated due to compiler errors
1258
1259iASL: added a warning on use of the now-legacy ASL Processor () keyword.
1260
1261iASL: added an error on _UID object declaration that returns a String
1262within a Processor () declaration. A _UID for a processor must be an
1263Integer.
1264
1265iASL: added a null terminator to name strings that consist only of
1266multiple parent prefixes (^)
1267
1268iASL: added support to compile both ASL and data table files in a single
1269command.
1270
1271Updated the tool generation project files that were recently migrated to
1272MSVC 2017 to eliminate all new warnings. The new project files appear in
1273the directory \acpica\generate\msvc2017. This change effectively
1274deprecates the older project files in \acpica\generate\msvc9.
1275
1276
1277----------------------------------------
127803 July 2019. Summary of changes for version 20190703:
1279
1280
12811) ACPICA kernel-resident subsystem:
1282
1283Remove legacy module-level support code. There were still some remnants
1284of the legacy module-level code executions. Since we no longer support
1285this option, this is essentially dead code and has been removed from the
1286ACPICA source.
1287
1288iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1289scope. If these named objects are declared outside the root scope, they
1290will not be invoked by any host Operating System.
1291
1292Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
1293one) can be enabled in two situations. First, the GPEs with existing _Lxx
1294and _Exx methods are enabled implicitly by ACPICA during system
1295initialization.  Second, the GPEs without these methods (like GPEs listed
1296by _PRW objects for wakeup devices) need to be enabled directly by the
1297code that is going to use them (e.g. ACPI power management or device
1298drivers).
1299
1300In the former case, if the status of a given GPE is set to start with,
1301its handler method (either _Lxx or _Exx) needs to be invoked to take care
1302of the events (possibly) signaled before the GPE was enabled. In the
1303latter case, however, the first caller of AcpiEnableGpe() for a given GPE
1304should not be expected to care about any events that might be signaled
1305through it earlier.  In that case, it is better to clear the status of
1306the GPE before enabling it, to prevent stale events from triggering
1307unwanted actions (like spurious system resume, for example).
1308
1309For this reason, modify AcpiEvAddGpeReference() to take an additional
1310boolean argument indicating whether or not the GPE status needs to be
1311cleared when its reference counter changes from zero to one and make
1312AcpiEnableGpe() pass TRUE to it through that new argument.
1313
1314
13152) iASL Compiler/Disassembler and ACPICA tools:
1316
1317The tool generation process has been migrated to MSVC 2017, and all
1318project files have been upgraded. The new project files appear in the
1319directory \acpica\generate\msvc2017. This change effectively deprecates
1320the older project files in \acpica\generate\msvc9.
1321
1322iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1323scope. If these named objects are declared outside the root scope, they
1324will not be invoked by any host Operating System
1325
1326----------------------------------------
132709 May 2019. Summary of changes for version 20190509:
1328
1329
13301) ACPICA kernel-resident subsystem:
1331
1332Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
1333them") that causes problems with Thunderbolt controllers to occur if a
1334dock device is connected at init time (the xhci_hcd and thunderbolt
1335modules crash which prevents peripherals connected through them from
1336working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
1337Dispatch active GPEs at init time") to get undone, so the problem
1338addressed by commit ecc1165b8b74 appears again as a result of it.
1339
1340
13412) iASL Compiler/Disassembler and ACPICA tools:
1342
1343Reverted iASL: Additional forward reference detection. This change
1344reverts forward reference detection for field declarations. The feature
1345unintentionally emitted AML bytecode with incorrect package lengths for
1346some ASL code related to Fields and OperationRegions. This malformed AML
1347can cause systems to crash
1348during boot. The malformed AML bytecode is emitted in iASL version
134920190329 and 20190405.
1350
1351iASL: improve forward reference detection. This change improves forward
1352reference detection for named objects inside of scopes. If a parse object
1353has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
1354a named object that is declared later in the AML bytecode. This is
1355allowed if the reference is inside of a method and the declaration is
1356outside of a method like so:
1357
1358DefinitionBlock(...)
1359{
1360    Method (TEST)
1361    {
1362        Return (NUM0)
1363    }
1364    Name (NUM0,0)
1365}
1366
1367However, if the declaration and reference are both in the same method or
1368outside any methods, this is a forward reference and should be marked as
1369an error because it would result in runtime errors.
1370
1371DefinitionBlock(...)
1372{
1373    Name (BUFF, Buffer (NUM0) {}) // Forward reference
1374    Name (NUM0, 0x0)
1375
1376    Method (TEST)
1377    {
1378        Local0 = NUM1
1379        Name (NUM1, 0x1) // Forward reference
1380        return (Local0)
1381    }
1382}
1383
1384iASL: Implemented additional buffer overflow analysis for BufferField
1385declarations. Check if a buffer index argument to a create buffer field
1386operation is beyond the end of the target buffer.
1387
1388This affects these AML operators:
1389
1390   AML_CREATE_FIELD_OP
1391   AML_CREATE_BIT_FIELD_OP
1392   AML_CREATE_BYTE_FIELD_OP
1393   AML_CREATE_WORD_FIELD_OP
1394   AML_CREATE_DWORD_FIELD_OP
1395   AML_CREATE_QWORD_FIELD_OP
1396
1397 There are three conditions that must be satisfied in order to allow this
1398validation at compile time:
1399
1400   1) The length of the target buffer must be an integer constant
1401   2) The index specified in the create* must be an integer constant
1402   3) For CreateField, the bit length argument must be non-zero.
1403
1404Example:
1405    Name (BUF1, Buffer() {1,2})
1406    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1407
1408dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1409Error    6165 -                           ^ Buffer index beyond end of
1410target buffer
1411
1412
1413----------------------------------------
141405 April 2019. Summary of changes for version 20190405:
1415
1416
14171) ACPICA kernel-resident subsystem:
1418
1419Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
1420unconditionally clearing ACPI IRQs during suspend/resume") was added
1421earlier to stop clearing of event status bits unconditionally on suspend
1422and resume paths. Though this change fixed an issue on suspend path, it
1423introduced regressions on several resume paths. In the case of S0ix,
1424events are enabled as part of device suspend path. If status bits for the
1425events are set when they are enabled, it could result in premature wake
1426from S0ix. If status is cleared for any event that is being enabled so
1427that any stale events are cleared out. In case of S0ix, events are
1428enabled as part of device suspend path. If status bits for the events are
1429set when they are enabled, it could result in premature wake from S0ix.
1430
1431This change ensures that status is cleared for any event that is being
1432enabled so that any stale events are cleared out.
1433
1434
14352) iASL Compiler/Disassembler and ACPICA tools:
1436
1437iASL: Implemented an enhanced multiple file compilation that combines
1438named objects from all input files to a single namespace. With this
1439feature, any unresolved external declarations as well as duplicate named
1440object declarations can be detected during compilation rather than
1441generating errors much later at runtime. The following commands are
1442examples that utilize this feature:
1443    iasl dsdt.asl ssdt.asl
1444    iasl dsdt.asl ssdt1.asl ssdt2.asl
1445    iasl dsdt.asl ssdt*.asl
1446
1447----------------------------------------
144829 March 2019. Summary of changes for version 20190329:
1449
1450
14511) ACPICA kernel-resident subsystem:
1452
1453Namespace support: Remove the address nodes from global list after method
1454termination. The global address list contains pointers to namespace nodes
1455that represent Operation Regions. This change properly removes Operation
1456Region namespace nodes that are declared dynamically during method
1457execution.
1458
1459Linux: Use a different debug default than ACPICA. There was a divergence
1460between Linux and the ACPICA codebases. In order to resolve this
1461divergence, Linux now declares its own debug default in aclinux.h
1462
1463Renamed some internal macros to improve code understanding and
1464maintenance. The macros below all operate on single 4-character ACPI
1465NameSegs, not generic strings (old -> new):
1466    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
1467    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
1468    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
1469
1470Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
1471table.
1472
1473Test suite: Update makefiles, add PCC operation region support
1474
1475
14762) iASL Compiler/Disassembler and Tools:
1477
1478iASL: Implemented additional illegal forward reference detection. Now
1479detect and emit an error upon detection of a forward reference from a
1480Field to an Operation Region. This will fail at runtime if allowed to
1481pass the compiler.
1482
1483AcpiExec: Add an address list check for dynamic Operation Regions. This
1484feature performs a sanity test for each node the global address list.
1485This is done in order to ensure that all dynamic operation regions are
1486properly removed from the global address list and no dangling pointers
1487are left behind.
1488
1489Disassembler: Improved generation of resource pathnames. This change
1490improves the code that generates resource descriptor and resource tag
1491pathnames. The original code used a bunch of str* C library functions
1492that caused warnings on some compilers.
1493
1494iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
1495function can overwrite buffers if the calling code is not very careful.
1496In the case of generating a module/table header, use of memmove is a
1497better implementation.
1498
1499
15003) Status of new features that have not been completed at this time:
1501
1502iASL: Implementing an enhanced multiple file compilation into a single
1503namespace feature (Status): This feature will be released soon, and
1504allows multiple ASL files to be compiled into the same single namespace.
1505By doing so, any unresolved external declarations as well as duplicate
1506named object declarations can be detected during compilation (rather than
1507later during runtime). The following commands are examples that utilize
1508this feature:
1509    iasl dsdt.asl ssdt.asl
1510    iasl dsdt.asl ssdt1.asl ssdt2.asl
1511    iasl dsdt.asl ssdt*.asl
1512
1513ASL tutorial status: Feedback is being gathered internally and the
1514current plan is to publish this tutorial on the ACPICA website after a
1515final review by a tech writer.
1516
1517----------------------------------------
151815 February 2019. Summary of changes for version 20190215:
1519
1520
15210) Support for ACPI specification version 6.3:
1522
1523Add PCC operation region support for the AML interpreter. This adds PCC
1524operation region support in the AML interpreter and a default handler for
1525acpiexec. The change also renames the PCC region address space keyword to
1526PlatformCommChannel.
1527
1528Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
1529These methods provide OSPM with health information and device boot
1530status.
1531
1532PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
1533defines if the trigger needs to be invoked by OSPM before or at the end
1534of kernel crash dump processing/handling operation.
1535
1536SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
1537is used for describing devices such as heterogeneous processors,
1538accelerators, GPUs, and IO devices with integrated compute or DMA
1539engines.
1540
1541MADT: Add support for statistical profiling in GICC. Statistical
1542profiling extension (SPE) is an architecture-specific feature for ARM.
1543
1544MADT: Add online capable flag. If this bit is set, system hardware
1545supports enabling this processor during OS runtime.
1546
1547New Error Disconnect Recover Notification value. There are a number of
1548scenarios where system Firmware in collaboration with hardware may
1549disconnect one or more devices from the rest of the system for purposes
1550of error containment. Firmware can use this new notification value to
1551alert OSPM of such a removal.
1552
1553PPTT: New additional fields in Processor Structure Flags. These flags
1554provide more information about processor topology.
1555
1556NFIT/Disassembler: Change a field name from "Address Range" to "Region
1557Type".
1558
1559HMAT updates: make several existing fields to be reserved as well as
1560rename subtable 0 to "memory proximity domain attributes".
1561
1562GTDT: Add support for new GTDT Revision 3. This revision adds information
1563for the EL2 timer.
1564
1565iASL: Update the HMAT example template for new fields.
1566
1567iASL: Add support for the new revision of the GTDT (Rev 3).
1568
1569
15701) ACPICA kernel-resident subsystem:
1571
1572AML Parser: fix the main AML parse loop to correctly skip erroneous
1573extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
1574byte extended opcodes. If an error occurs during an AML table load, the
1575AML parser will continue loading the table by skipping the offending
1576opcode. This implements a "load table at any cost" philosophy.
1577
1578
15792) iASL Compiler/Disassembler and Tools:
1580
1581iASL: Add checks for illegal object references, such as a reference
1582outside of method to an object within a method. Such an object is only
1583temporary.
1584
1585iASL: Emit error for creation of a zero-length operation region. Such a
1586region is rather pointless. If encountered, a runtime error is also
1587implemented in the interpreter.
1588
1589Debugger: Fix a possible fault with the "test objects" command.
1590
1591iASL: Makefile: support parent directory filenames containing embedded
1592spaces.
1593
1594iASL: Update the TPM2 template to revision 4.
1595
1596iASL: Add the ability to report specific warnings or remarks as errors.
1597
1598Disassembler: Disassemble OEMx tables as actual AML byte code.
1599Previously, these tables were treated as "unknown table".
1600
1601iASL: Add definition and disassembly for TPM2 revision 3.
1602
1603iASL: Add support for TPM2 rev 3 compilation.
1604
1605
1606----------------------------------------
160708 January 2019. Summary of changes for version 20190108:
1608
1609
16101) ACPICA kernel-resident subsystem:
1611
1612Updated all copyrights to 2019. This affects all source code modules.
1613
1614
16152) iASL Compiler/Disassembler and Tools:
1616
1617ASL test suite (ASLTS): Updated all copyrights to 2019.
1618
1619Tools: Updated all signon copyrights to 2019.
1620
1621AcpiExec: Added a new option to dump extra information concerning any
1622memory leaks detected by the internal object/cache tracking mechanism. -
1623va
1624
1625iASL: Updated the table template for the TPM2 table to the newest version
1626of the table (Revision 4)
1627
1628
1629----------------------------------------
163013 December 2018. Summary of changes for version 20181213:
1631
1632
16331) ACPICA Kernel-resident Subsystem:
1634
1635Fixed some buffer length issues with the GenericSerialBus, related to two
1636of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
1637which are rarely seen in the field. For these, the LEN field of the ASL
1638buffer is now ignored. Hans de Goede
1639
1640Implemented a new object evaluation trace mechanism for control methods
1641and data objects. This includes nested control methods. It is
1642particularly useful for examining the ACPI execution during system
1643initialization since the output is relatively terse. The flag below
1644enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
1645   #define ACPI_LV_EVALUATION          0x00080000
1646
1647Examples:
1648   Enter evaluation       :  _SB.PCI0._INI (Method)
1649   Exit evaluation        :  _SB.PCI0._INI
1650   Enter evaluation       :  _OSI (Method)
1651   Exit evaluation        :  _OSI
1652   Enter evaluation       :  _SB.PCI0.TEST (Method)
1653   Nested method call     :     _SB.PCI0.NST1
1654   Exit nested method     :     _SB.PCI0.NST1
1655   Exit evaluation        :  _SB.PCI0.TEST
1656
1657Added two recently-defined _OSI strings. See
1658https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
1659osi.
1660   "Windows 2018"
1661   "Windows 2018.2"
1662
1663Update for buffer-to-string conversions via the ToHexString ASL operator.
1664A "0x" is now prepended to each of the hex values in the output string.
1665This provides compatibility with other ACPI implementations. The ACPI
1666specification is somewhat vague on this issue.
1667   Example output string after conversion:
1668"0x01,0x02,0x03,0x04,0x05,0x06"
1669
1670Return a run-time error for TermArg expressions within individual package
1671elements. Although this is technically supported by the ASL grammar,
1672other ACPI implementations do not support this either. Also, this fixes a
1673fault if this type of construct is ever encountered (it never has been).
1674
1675
16762) iASL Compiler/Disassembler and Tools:
1677
1678iASL: Implemented a new compile option (-ww) that will promote individual
1679warnings and remarks to errors. This is intended to enhance the firmware
1680build process.
1681
1682AcpiExec: Implemented a new command-line option (-eo) to support the new
1683object evaluation trace mechanism described above.
1684
1685Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1686instead of a "unknown table" message.
1687
1688AcpiHelp: Improved support for the "special" predefined names such as
1689_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
1690used for "xx" and "x".
1691
1692----------------------------------------
169331 October 2018. Summary of changes for version 20181031:
1694
1695
1696An Operation Region regression was fixed by properly adding address
1697ranges to a global list during initialization. This allows OS to
1698accurately check for overlapping regions between native devices (such as
1699PCI) and Operation regions as well as checking for region conflicts
1700between two Operation Regions.
1701
1702Added support for the 2-byte extended opcodes in the code/feature that
1703attempts to continue parsing during the table load phase. Skip parsing
1704Device declarations (and other extended opcodes) when an error occurs
1705during parsing. Previously, only single-byte opcodes were supported.
1706
1707Cleanup: Simplified the module-level code support by eliminating a
1708useless global variable (AcpiGbl_GroupModuleLeveCode).
1709
1710
17112) iASL Compiler/Disassembler and Tools:
1712
1713iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1714could cause a fault in the preprocessor. This was an inadvertent side-
1715effect from moving more allocations/frees to the local cache/memory
1716mechanism.
1717
1718iASL: Enhanced error detection by validating that all NameSeg elements
1719within a NamePatch actually exist. The previous behavior was spotty at
1720best, and such errors could be improperly ignored at compiler time (never
1721at runtime, however. There are two new error messages, as shown in the
1722examples below:
1723
1724dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
1725Error    6161 -                              ^ One or more objects within
1726the Pathname do not exist (TTTT.BXXX)
1727
1728dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1729Error    6160 -        One or more prefix Scopes do not exist ^
1730(BBBB.CBF1)
1731
1732iASL: Disassembler/table-compiler: Added support for the static data
1733table TPM2 revision 3 (an older version of TPM2). The support has been
1734added for the compiler and the disassembler.
1735
1736Fixed compilation of DOS format data table file on Unix/Linux systems.
1737iASL now properly detects line continuations (\) for DOS format data
1738table definition language files on when executing on Unix/Linux.
1739
1740----------------------------------------
174103 October 2018. Summary of changes for version 20181003:
1742
1743
17442) iASL Compiler/Disassembler and Tools:
1745
1746Fixed a regression introduced in version 20180927 that could cause the
1747compiler to fault, especially with NamePaths containing one or more
1748carats (^). Such as: ^^_SB_PCI0
1749
1750Added a new remark for the Sleep() operator when the sleep time operand
1751is larger than one second. This is a very long time for the ASL/BIOS code
1752and may not be what was intended by the ASL writer.
1753
1754----------------------------------------
175527 September 2018. Summary of changes for version 20180927:
1756
1757
17581) ACPICA kernel-resident subsystem:
1759
1760Updated the GPE support to clear the status of all ACPI events when
1761entering any/all sleep states in order to avoid premature wakeups. In
1762theory, this may cause some wakeup events to be missed, but the
1763likelihood of this is small. This change restores the original behavior
1764of the ACPICA code in order to fix a regression seen from the previous
1765"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1766This regression could cause some systems to incorrectly wake immediately.
1767
1768Updated the execution of the _REG methods during initialization and
1769namespace loading to bring the behavior into closer conformance to the
1770ACPI specification and other ACPI implementations:
1771
1772From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1773    "Control methods must assume all operation regions are inaccessible
1774until the _REG(RegionSpace, 1) method is executed"
1775
1776    "The exceptions to this rule are:
17771.  OSPM must guarantee that the following operation regions are always
1778accessible:
1779    SystemIO operation regions.
1780    SystemMemory operation regions when accessing memory returned by the
1781System Address Map reporting interfaces."
1782
1783Since the state of both the SystemIO and SystemMemory address spaces are
1784defined by the specification to never change, this ACPICA change ensures
1785that now _REG is never called on them. This solves some problems seen in
1786the field and provides compatibility with other ACPI implementations. An
1787update to the upcoming new version of the ACPI specification will help
1788clarify this behavior.
1789
1790Updated the implementation of support for the Generic Serial Bus. For the
1791"bidirectional" protocols, the internal implementation now automatically
1792creates a return data buffer of the maximum size (255). This handles the
1793worst-case for data that is returned from the serial bus handler, and
1794fixes some problems seen in the field. This new buffer is directly
1795returned to the ASL. As such, there is no true "bidirectional" buffer,
1796which matches the ACPI specification. This is the reason for the "double
1797store" seen in the example ASL code in the specification, shown below:
1798
1799Word Process Call (AttribProcessCall):
1800    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1801    Field(TOP1, BufferAcc, NoLock, Preserve)
1802    {
1803        FLD1, 8, // Virtual register at command value 1.
1804    }
1805
1806    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1807                             // as BUFF
1808    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1809
1810    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
1811    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
1812transaction
1813                           // This is the "double store". The write to
1814                           // FLD1 returns a new buffer, which is stored
1815                           // back into BUFF with the second Store.
1816
1817
18182) iASL Compiler/Disassembler and Tools:
1819
1820iASL: Implemented detection of extraneous/redundant uses of the Offset()
1821operator within a Field Unit list. A remark is now issued for these. For
1822example, the first two of the Offset() operators below are extraneous.
1823Because both the compiler and the interpreter track the offsets
1824automatically, these Offsets simply refer to the current offset and are
1825unnecessary. Note, when optimization is enabled, the iASL compiler will
1826in fact remove the redundant Offset operators and will not emit any AML
1827code for them.
1828
1829    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1830    Field (OPR1)
1831    {
1832        Offset (0),     // Never needed
1833        FLD1, 32,
1834        Offset (4),     // Redundant, offset is already 4 (bytes)
1835        FLD2, 8,
1836        Offset (64),    // OK use of Offset.
1837        FLD3, 16,
1838    }
1839dsdt.asl     14:         Offset (0),
1840Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1841operator
1842
1843dsdt.asl     16:         Offset (4),
1844Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1845operator
1846
1847----------------------------------------
184810 August 2018. Summary of changes for version 20180810:
1849
1850
18511) ACPICA kernel-resident subsystem:
1852
1853Initial ACPI table loading: Attempt to continue loading ACPI tables
1854regardless of malformed AML. Since migrating table initialization to the
1855new module-level code support, the AML interpreter rejected tables upon
1856any ACPI error encountered during table load. This is a problem because
1857non-serious ACPI errors during table load do not necessarily mean that
1858the entire definition block (DSDT or SSDT) is invalid. This change
1859improves the table loading by ignoring some types of errors that can be
1860generated by incorrect AML. This can range from object type errors, scope
1861errors, and index errors.
1862
1863Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1864during suspend/resume. The status of ACPI events is no longer cleared
1865when entering the ACPI S5 system state (power off) which caused some
1866systems to power up immediately after turning off power in certain
1867situations. This was a functional regression. It was fixed by clearing
1868the status of all ACPI events again when entering S5 (for system-wide
1869suspend or hibernation the clearing of the status of all events is not
1870desirable, as it might cause the kernel to miss wakeup events sometimes).
1871Rafael Wysocki.
1872
1873
18742) iASL Compiler/Disassembler and Tools:
1875
1876AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1877elements listed in the initialization file were previously initialized
1878after the table load and before executing module-level code blocks.
1879Recent changes in the module-level code support means that the table load
1880becomes a large control method execution. If fields are used within
1881module-level code and we are executing with the -fi option, the
1882initialization values were used to initialize the namespace object(s)
1883only after the table was finished loading. This change Provides an early
1884initialization of objects specified in the initialization file so that
1885field unit values are populated during the table load (not after the
1886load).
1887
1888AcpiExec: Fixed a small memory leak regression that could result in
1889warnings during exit of the utility. These warnings were similar to
1890these:
1891    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1892    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1893
1894----------------------------------------
189529 June 2018. Summary of changes for version 20180629:
1896
1897
18981) iASL Compiler/Disassembler and Tools:
1899
1900iASL: Fixed a regression related to the use of the ASL External
1901statement. Error checking for the use of the External() statement has
1902been relaxed. Previously, a restriction on the use of External meant that
1903the referenced named object was required to be defined in a different
1904table (an SSDT). Thus it would be an error to declare an object as an
1905external and then define the same named object in the same table. For
1906example:
1907    DefinitionBlock (...)
1908    {
1909        External (DEV1)
1910        Device (DEV1){...} // This was an error
1911    }
1912However, this behavior has caused regressions in some existing ASL code,
1913because there is code that depends on named objects and externals (with
1914the same name) being declared in the same table. This change will allow
1915the ASL code above to compile without errors or warnings.
1916
1917iASL: Implemented ASL language extensions for four operators to make some
1918of their arguments optional instead of required:
1919    1) Field (RegionName, AccessType, LockRule, UpdateRule)
1920    2) BankField (RegionName, BankName, BankValue,
1921                AccessType, LockRule, UpdateRule)
1922    3) IndexField (IndexName, DataName,
1923                AccessType, LockRule, UpdateRule)
1924For the Field operators above, the AccessType, LockRule, and UpdateRule
1925are now optional arguments. The default values are:
1926        AccessType: AnyAcc
1927        LockRule:   NoLock
1928        UpdateRule: Preserve
1929    4) Mutex (MutexName, SyncLevel)
1930For this operator, the SyncLevel argument is now optional. This argument
1931is rarely used in any meaningful way by ASL code, and thus it makes sense
1932to make it optional. The default value is:
1933        SyncLevel:  0
1934
1935iASL: Attempted use of the ASL Unload() operator now results in the
1936following warning:
1937    "Unload is not supported by all operating systems"
1938This is in fact very true, and the Unload operator may be completely
1939deprecated in the near future.
1940
1941AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1942file. Recent changes in the ACPICA module-level code support altered the
1943table load/initialization sequence . This means that the table load has
1944become a large method execution of the table itself. If Operation Region
1945Fields are used within any module-level code and the -fi option was
1946specified, the initialization values were populated only after the table
1947had completely finished loading (and thus the module-level code had
1948already been executed). This change moves the initialization of objects
1949listed in the initialization file to before the table is executed as a
1950method. Field unit values are now initialized before the table execution
1951is performed.
1952
1953----------------------------------------
195431 May 2018. Summary of changes for version 20180531:
1955
1956
19571) ACPICA kernel-resident Subsystem:
1958
1959Implemented additional support to help ensure that a DSDT or SSDT is
1960fully loaded even if errors are incurred during the load. The majority of
1961the problems that are seen is the failure of individual AML operators
1962that occur during execution of any module-level code (MLC) existing in
1963the table. This support adds a mechanism to abort the current ASL
1964statement (AML opcode), emit an error message, and to simply move on to
1965the next opcode -- instead of aborting the entire table load. This is
1966different than the execution of a control method where the entire method
1967is aborted upon any error. The goal is to perform a very "best effort" to
1968load the ACPI tables. The most common MLC errors that have been seen in
1969the field are direct references to unresolved ASL/AML symbols (referenced
1970directly without the use of the CondRefOf operator to validate the
1971symbol). This new ACPICA behavior is now compatible with other ACPI
1972implementations.
1973
1974Interpreter: The Unload AML operator is no longer supported for the
1975reasons below. An AE_NOT_IMPLEMENTED exception is returned.
19761) A correct implementation on at least some hosts may not be possible.
19772) Other ACPI implementations do not correctly/fully support it.
19783) It requires host device driver support which is not known to exist.
1979    (To properly support namespace unload out from underneath.)
19804) This AML operator has never been seen in the field.
1981
1982Parser: Added a debug option to dump AML parse sub-trees as they are
1983being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1984ACPI_DB_PARSE_TREES.
1985
1986Debugger: Reduced the verbosity for errors incurred during table load and
1987module-level code execution.
1988
1989Completed an investigation into adding a namespace node "owner list"
1990instead of the current "owner ID" associated with namespace nodes. This
1991list would link together all nodes that are owned by an individual
1992control method. The purpose would be to enhance control method execution
1993by speeding up cleanup during method exit (all namespace nodes created by
1994a method are deleted upon method termination.) Currently, the entire
1995namespace must be searched for matching owner IDs if (and only if) the
1996method creates named objects outside of the local scope. However, by far
1997the most common case is that methods create objects locally, not outside
1998the method scope. There is already an ACPICA optimization in place that
1999only searches the entire namespace in the rare case of a method creating
2000objects elsewhere in the namespace. Therefore, it is felt that the
2001overhead of adding an additional pointer to each namespace node to
2002implement the owner list makes this feature unnecessary.
2003
2004
20052) iASL Compiler/Disassembler and Tools:
2006
2007iASL, Disassembler, and Template generator: Implemented support for
2008Revision D of the IORT table. Adds a new subtable that is used to specify
2009SMMUv3 PMCGs. rmurphy-arm.
2010
2011Disassembler: Restored correct table header validation for the "special"
2012ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
2013table header and must be special-cased. This was a regression that has
2014been present for apparently a long time.
2015
2016AcpiExec: Reduced verbosity of the local exception handler implemented
2017within acpiexec. This handler is invoked by ACPICA upon any exceptions
2018generated during control method execution. A new option was added: -vh
2019restores the original verbosity level if desired.
2020
2021AcpiExec: Changed the default base from decimal to hex for the -x option
2022(set debug level). This simplifies the use of this option and matches the
2023behavior of the corresponding iASL -x option.
2024
2025AcpiExec: Restored a force-exit on multiple control-c (sigint)
2026interrupts. This allows program termination even if other issues cause
2027the control-c to fail.
2028
2029ASL test suite (ASLTS): Added tests for the recently implemented package
2030element resolution mechanism that allows forward references to named
2031objects from individual package elements (this mechanism provides
2032compatibility with other ACPI implementations.)
2033
2034
2035----------------------------------------
20368 May 2018. Summary of changes for version 20180508:
2037
2038
20391) ACPICA kernel-resident subsystem:
2040
2041Completed the new (recently deployed) package resolution mechanism for
2042the Load and LoadTable ASL/AML operators. This fixes a regression that
2043was introduced in version 20180209 that could result in an
2044AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
2045(SSDT) that contains package objects.
2046
2047
20482) iASL Compiler/Disassembler and Tools:
2049
2050AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
20511 MB. This change allows for table offsets within the acpidump file to be
2052up to 8 characters. These changes are backwards compatible with existing
2053acpidump files.
2054
2055
2056----------------------------------------
205727 April 2018. Summary of changes for version 20180427:
2058
2059
20601) ACPICA kernel-resident subsystem:
2061
2062Debugger: Added support for Package objects in the "Test Objects"
2063command. This command walks the entire namespace and evaluates all named
2064data objects (Integers, Strings, Buffers, and now Packages).
2065
2066Improved error messages for the namespace root node. Originally, the root
2067was referred to by the confusing string "\___". This has been replaced by
2068"Namespace Root" for clarification.
2069
2070Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
2071Ian King <colin.king@canonical.com>.
2072
2073
20742) iASL Compiler/Disassembler and Tools:
2075
2076iASL: Implemented support to detect and flag illegal forward references.
2077For compatibility with other ACPI implementations, these references are
2078now illegal at the root level of the DSDT or SSDTs. Forward references
2079have always been illegal within control methods. This change should not
2080affect existing ASL/AML code because of the fact that these references
2081have always been illegal in the other ACPI implementation.
2082
2083iASL: Added error messages for the case where a table OEM ID and OEM
2084TABLE ID strings are longer than the ACPI-defined length. Previously,
2085these strings were simply silently truncated.
2086
2087iASL: Enhanced the -tc option (which creates an AML hex file in C,
2088suitable for import into a firmware project):
2089  1) Create a unique name for the table, to simplify use of multiple
2090SSDTs.
2091  2) Add a protection #ifdef in the file, similar to a .h header file.
2092With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
2093evan.lloyd@arm.com
2094
2095AcpiExec: Added a new option, -df, to disable the local fault handler.
2096This is useful during debugging, where it may be desired to drop into a
2097debugger on a fault.
2098
2099----------------------------------------
210013 March 2018. Summary of changes for version 20180313:
2101
2102
21031) ACPICA kernel-resident subsystem:
2104
2105Implemented various improvements to the GPE support:
2106
21071) Dispatch all active GPEs at initialization time so that no GPEs are
2108lost.
21092) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
2110before devices are enumerated.
21113) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
2112IRQs are not lost.
21134) Add parallel GPE handling to eliminate the possibility of dispatching
2114the same GPE twice.
21155) Dispatch any pending GPEs after enabling for the first time.
2116
2117AcpiGetObjectInfo - removed support for the _STA method. This was causing
2118problems on some platforms.
2119
2120Added a new _OSI string, "Windows 2017.2".
2121
2122Cleaned up and simplified the module-level code support. These changes
2123are in preparation for the eventual removal of the legacy MLC support
2124(deferred execution), replaced by the new MLC architecture which executes
2125the MLC as a table is loaded (DSDT/SSDTs).
2126
2127Changed a compile-time option to a runtime option. Changes the option to
2128ignore ACPI table load-time package resolution errors into a runtime
2129option. Used only for platforms that generate many AE_NOT_FOUND errors
2130during boot. AcpiGbl_IgnorePackageResolutionErrors.
2131
2132Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
2133ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
2134compilation errors from unused variables (seen with some compilers).
2135
2136
21372) iASL Compiler/Disassembler and Tools:
2138
2139ASLTS: parallelized execution in order to achieve an (approximately) 2X
2140performance increase.
2141
2142ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
2143error reporting.
2144
2145----------------------------------------
214609 February 2018. Summary of changes for version 20180209:
2147
2148
21491) ACPICA kernel-resident subsystem:
2150
2151Completed the final integration of the recent changes to Package Object
2152handling and the module-level AML code support. This allows forward
2153references from individual package elements when the package object is
2154declared from within module-level code blocks. Provides compatibility
2155with other ACPI implementations.
2156
2157The new architecture for the AML module-level code has been completed and
2158is now the default for the ACPICA code. This new architecture executes
2159the module-level code in-line as the ACPI table is loaded/parsed instead
2160of the previous architecture which deferred this code until after the
2161table was fully loaded. This solves some ASL code ordering issues and
2162provides compatibility with other ACPI implementations. At this time,
2163there is an option to fallback to the earlier architecture, but this
2164support is deprecated and is planned to be completely removed later this
2165year.
2166
2167Added a compile-time option to ignore AE_NOT_FOUND exceptions during
2168resolution of named reference elements within Package objects. Although
2169this is potentially a serious problem, it can generate a lot of
2170noise/errors on platforms whose firmware carries around a bunch of unused
2171Package objects. To disable these errors, define
2172ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
2173errors are always reported for ACPICA applications such as AcpiExec.
2174
2175Fixed a regression related to the explicit type-conversion AML operators
2176(ToXXXX). The regression was introduced early in 2017 but was not seen
2177until recently because these operators are not fully supported by other
2178ACPI implementations and are thus rarely used by firmware developers. The
2179operators are defined by the ACPI specification to not implement the
2180"implicit result object conversion". The regression incorrectly
2181introduced this object conversion for the following explicit conversion
2182operators:
2183    ToInteger
2184    ToString
2185    ToBuffer
2186    ToDecimalString
2187    ToHexString
2188    ToBCD
2189    FromBCD
2190
2191
21922) iASL Compiler/Disassembler and Tools:
2193
2194iASL: Fixed a problem with the compiler constant folding feature as
2195related to the ToXXXX explicit conversion operators. These operators do
2196not support the "implicit result object conversion" by definition. Thus,
2197ASL expressions that use these operators cannot be folded to a simple
2198Store operator because Store implements the implicit conversion. This
2199change uses the CopyObject operator for the ToXXXX operator folding
2200instead. CopyObject is defined to not implement implicit result
2201conversions and is thus appropriate for folding the ToXXXX operators.
2202
2203iASL: Changed the severity of an error condition to a simple warning for
2204the case where a symbol is declared both locally and as an external
2205symbol. This accommodates existing ASL code.
2206
2207AcpiExec: The -ep option to enable the new architecture for module-level
2208code has been removed. It is replaced by the -dp option which instead has
2209the opposite effect: it disables the new architecture (the default) and
2210enables the legacy architecture. When the legacy code is removed in the
2211future, the -dp option will be removed also.
2212
2213----------------------------------------
221405 January 2018. Summary of changes for version 20180105:
2215
2216
22171) ACPICA kernel-resident subsystem:
2218
2219Updated all copyrights to 2018. This affects all source code modules.
2220
2221Fixed a possible build error caused by an unresolved reference to the
2222AcpiUtSafeStrncpy function.
2223
2224Removed NULL pointer arithmetic in the various pointer manipulation
2225macros. All "(void *) NULL" constructs are converted to "(void *) 0".
2226This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
2227
2228Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
2229Mittal.
2230
2231
22322) iASL Compiler/Disassembler and Tools:
2233
2234ASLTS: Updated all copyrights to 2018.
2235
2236Tools: Updated all signon copyrights to 2018.
2237
2238AcpiXtract: Fixed a regression related to ACPI table signatures where the
2239signature was truncated to 3 characters (instead of 4).
2240
2241AcpiExec: Restore the original terminal mode after the use of the -v and
2242-vd options.
2243
2244ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
2245
2246----------------------------------------
224714 December 2017. Summary of changes for version 20171214:
2248
2249
22501) ACPICA kernel-resident subsystem:
2251
2252Fixed a regression in the external (public) AcpiEvaluateObjectTyped
2253interface where the optional "pathname" argument had inadvertently become
2254a required argument returning an error if omitted (NULL pointer
2255argument).
2256
2257Fixed two possible memory leaks related to the recently developed "late
2258resolution" of reference objects within ASL Package Object definitions.
2259
2260Added two recently defined _OSI strings: "Windows 2016" and "Windows
22612017". Mario Limonciello.
2262
2263Implemented and deployed a safer version of the C library function
2264strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
2265creation of unterminated strings as a possible result of a standard
2266strncpy.
2267
2268Cleaned up and restructured the global variable file (acglobal.h). There
2269are many changes, but no functional changes.
2270
2271
22722) iASL Compiler/Disassembler and Tools:
2273
2274iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
2275optional OemData field at the end of the table was incorrectly required
2276for proper compilation. It is now correctly an optional field.
2277
2278ASLTS: The entire suite was converted from standard ASL to the ASL+
2279language, using the ASL-to-ASL+ converter which is integrated into the
2280iASL compiler. A binary compare of all output files has verified the
2281correctness of the conversion.
2282
2283iASL: Fixed the source code build for platforms where "char" is unsigned.
2284This affected the iASL lexer only. Jung-uk Kim.
2285
2286----------------------------------------
228710 November 2017. Summary of changes for version 20171110:
2288
2289
22901) ACPICA kernel-resident subsystem:
2291
2292This release implements full support for ACPI 6.2A:
2293    NFIT - Added a new subtable, "Platform Capabilities Structure"
2294No other changes to ACPICA were required, since ACPI 6.2A is primarily an
2295errata release of the specification.
2296
2297Other ACPI table changes:
2298    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
2299    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
2300Linton
2301
2302Utilities: Modified the string/integer conversion functions to use
2303internal 64-bit divide support instead of a native divide. On 32-bit
2304platforms, a 64-bit divide typically requires a library function which
2305may not be present in the build (kernel or otherwise).
2306
2307Implemented a targeted error message for timeouts returned from the
2308Embedded Controller device driver. This is seen frequently enough to
2309special-case an AE_TIME returned from an EC operation region access:
2310    "Timeout from EC hardware or EC device driver"
2311
2312Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
2313runtime error messages have the identical prefix.
2314
2315
23162) iASL Compiler/Disassembler and Tools:
2317
2318AcpiXtract: Fixed a problem with table header detection within the
2319acpidump file. Processing a table could be ended early if a 0x40 (@)
2320appears in the original binary table, resulting in the @ symbol appearing
2321in the decoded ASCII field at the end of the acpidump text line. The
2322symbol caused acpixtract to incorrectly think it had reached the end of
2323the current table and the beginning of a new table.
2324
2325AcpiXtract: Added an option (-f) to ignore some errors during table
2326extraction. This initial implementation ignores non-ASCII and non-
2327printable characters found in the acpidump text file.
2328
2329TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
2330for ASLTS. This feature is used to track memory allocations from
2331different memory caches within the ACPICA code. At the end of an ASLTS
2332run, these memory statistics are recorded and stored in a log file.
2333
2334Debugger (user-space version): Implemented a simple "Background" command.
2335Creates a new thread to execute a control method in the background, while
2336control returns to the debugger prompt to allow additional commands.
2337    Syntax: Background <Namepath> [Arguments]
2338
2339----------------------------------------
234029 September 2017. Summary of changes for version 20170929:
2341
2342
23431) ACPICA kernel-resident subsystem:
2344
2345Redesigned and implemented an improved ASL While() loop timeout
2346mechanism. This mechanism is used to prevent infinite loops in the kernel
2347AML interpreter caused by either non-responsive hardware or incorrect AML
2348code. The new implementation uses AcpiOsGetTimer instead of a simple
2349maximum loop count, and is thus more accurate and constant across
2350different machines. The default timeout is currently 30 seconds, but this
2351may be adjusted later.
2352
2353Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
2354better reflect the new implementation of the loop timeout mechanism.
2355
2356Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
2357and to fix an off-by-one error. Jung-uk Kim.
2358
2359Fixed an EFI build problem by updating the makefiles to for a new file
2360that was added, utstrsuppt.c
2361
2362
23632) iASL Compiler/Disassembler and Tools:
2364
2365Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
2366includes support in the table disassembler, compiler, and template
2367generator.
2368
2369iASL: Added an exception for an illegal type of recursive method
2370invocation. If a method creates named objects, the first recursive call
2371will fail at runtime. This change adds an error detection at compile time
2372to catch the problem up front. Note: Marking such a method as
2373"serialized" will not help with this problem, because the same thread can
2374acquire the method mutex more than once. Example compiler and runtime
2375output:
2376
2377    Method (MTH1)
2378    {
2379        Name (INT1, 1)
2380        MTH1 ()
2381    }
2382
2383    dsdt.asl     22: MTH1 ()
2384    Error    6152 -  ^ Illegal recursive call to method
2385                       that creates named objects (MTH1)
2386
2387Previous runtime exception:
2388    ACPI Error: [INT1] Namespace lookup failure,
2389    AE_ALREADY_EXISTS (20170831/dswload2-465)
2390
2391iASL: Updated support for External() opcodes to improve namespace
2392management and error detection. These changes are related to issues seen
2393with multiple-segment namespace pathnames within External declarations,
2394such as below:
2395
2396    External(\_SB.PCI0.GFX0, DeviceObj)
2397    External(\_SB.PCI0.GFX0.ALSI)
2398
2399iASL: Implemented support for multi-line error/warning messages. This
2400enables more detailed and helpful error messages as below, from the
2401initial deployment for the duplicate names error:
2402
2403    DSDT.iiii   1692:       Device(PEG2) {
2404    Error    6074 -                  ^ Name already exists in scope
2405(PEG2)
2406
2407        Original name creation/declaration below:
2408        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
2409
2410AcpiXtract: Added additional flexibility to support differing input hex
2411dump formats. Specifically, hex dumps that contain partial disassembly
2412and/or comments within the ACPI table data definition. There exist some
2413dump utilities seen in the field that create this type of hex dump (such
2414as Simics). For example:
2415
2416    DSDT @ 0xdfffd0c0 (10999 bytes)
2417        Signature DSDT
2418        Length 10999
2419        Revision 1
2420        Checksum 0xf3 (Ok)
2421        OEM_ID BXPC
2422        OEM_table_id BXDSDT
2423        OEM_revision 1
2424        Creator_id 1280593481
2425        Creator_revision 537399345
2426      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
2427      ...
2428      2af0: 5f 4c 30 46 00 a4 01
2429
2430Test suite: Miscellaneous changes/fixes:
2431    More cleanup and simplification of makefiles
2432    Continue compilation of test cases after a compile failure
2433    Do not perform binary compare unless both files actually exist
2434
2435iASL: Performed some code/module restructuring. Moved all memory
2436allocation functions to new modules. Two new files, aslallocate.c and
2437aslcache.c
2438
2439----------------------------------------
244031 August 2017. Summary of changes for version 20170831:
2441
2442
24431) ACPICA kernel-resident subsystem:
2444
2445Implemented internal support for full 64-bit addresses that appear in all
2446Generic Address Structure (GAS) structures. Previously, only the lower 32
2447bits were used. Affects the use of GAS structures in the FADT and other
2448tables, as well as the GAS structures passed to the AcpiRead and
2449AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
2450
2451Added header support for the PDTT ACPI table (Processor Debug Trigger
2452Table). Full support in the iASL Data Table Compiler and disassembler is
2453forthcoming.
2454
2455
24562) iASL Compiler/Disassembler and Tools:
2457
2458iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
2459Properties Topology Table) where a flag bit was specified in the wrong
2460bit position ("Line Size Valid", bit 6).
2461
2462iASL: Implemented support for Octal integer constants as defined by the
2463ASL language grammar, per the ACPI specification. Any integer constant
2464that starts with a zero is an octal constant. For example,
2465    Store (037777, Local0) /* Octal constant */
2466    Store (0x3FFF, Local0) /* Hex equivalent */
2467    Store (16383,  Local0) /* Decimal equivalent */
2468
2469iASL: Improved overflow detection for 64-bit string conversions during
2470compilation of integer constants. "Overflow" in this case means a string
2471that represents an integer that is too large to fit into a 64-bit value.
2472Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
2473the low-order 32 bits with a warning, as previously implemented. Several
2474new exceptions are defined that indicate a 64-bit overflow, as well as
2475the base (radix) that was used during the attempted conversion. Examples:
2476    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
2477    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
2478    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
2479
2480iASL: Added a warning for the case where a ResourceTemplate is declared
2481with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
2482this case, the resulting template is created with a single END_TAG
2483descriptor, which is essentially useless.
2484
2485iASL: Expanded the -vw option (ignore specific warnings/remarks) to
2486include compilation error codes as well.
2487
2488----------------------------------------
248928 July 2017. Summary of changes for version 20170728:
2490
2491
24921) ACPICA kernel-resident subsystem:
2493
2494Fixed a regression seen with small resource descriptors that could cause
2495an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
2496
2497AML interpreter: Implemented a new feature that allows forward references
2498from individual named references within package objects that are
2499contained within blocks of "module-level code". This provides
2500compatibility with other ACPI implementations and supports existing
2501firmware that depends on this feature. Example:
2502
2503    Name (ABCD, 1)
2504    If (ABCD)                       /* An If() at module-level */
2505    {
2506        Name (PKG1, Package()
2507        {
2508            INT1                    /* Forward reference to object INT1
2509*/
2510        })
2511        Name (INT1, 0x1234)
2512    }
2513
2514AML Interpreter: Fixed a problem with the Alias() operator where aliases
2515to some ASL objects were not handled properly. Objects affected are:
2516Mutex, Event, and OperationRegion.
2517
2518AML Debugger: Enhanced to properly handle AML Alias objects. These
2519objects have one level of indirection which was not fully supported by
2520the debugger.
2521
2522Table Manager: Added support to detect and ignore duplicate SSDTs within
2523the XSDT/RSDT. This error in the XSDT has been seen in the field.
2524
2525EFI and EDK2 support:
2526    Enabled /WX flag for MSVC builds
2527    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
2528    Added local support for 64-bit multiply and shift operations
2529    Added support to compile acpidump.efi on Windows
2530    Added OSL function stubs for interfaces not used under EFI
2531
2532Added additional support for the _DMA predefined name. _DMA returns a
2533buffer containing a resource template. This change add support within the
2534resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
2535resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
2536
2537
25382) iASL Compiler/Disassembler and Tools:
2539
2540iASL: Fixed a problem where the internal input line buffer(s) could
2541overflow if there are very long lines in the input ASL source code file.
2542Implemented buffer management that automatically increases the size of
2543the buffers as necessary.
2544
2545iASL: Added an option (-vx) to "expect" particular remarks, warnings and
2546errors. If the specified exception is not raised during compilation, the
2547compiler emits an error. This is intended to support the ASL test suite,
2548but may be useful in other contexts.
2549
2550iASL: Implemented a new predefined macro, __METHOD__, which returns a
2551string containing the name of the current control method that is being
2552compiled.
2553
2554iASL: Implemented debugger and table compiler support for the SDEI ACPI
2555table (Software Delegated Exception Interface). James Morse
2556<james.morse@arm.com>
2557
2558Unix/Linux makefiles: Added an option to disable compile optimizations.
2559The disable occurs when the NOOPT flag is set to TRUE.
2560theracermaster@gmail.com
2561
2562Acpidump: Added support for multiple DSDT and FACS tables. This can occur
2563when there are different tables for 32-bit versus 64-bit.
2564
2565Enhanced error reporting for the ASL test suite (ASLTS) by removing
2566unnecessary/verbose text, and emit the actual line number where an error
2567has occurred. These changes are intended to improve the usefulness of the
2568test suite.
2569
2570----------------------------------------
257129 June 2017. Summary of changes for version 20170629:
2572
2573
25741) ACPICA kernel-resident subsystem:
2575
2576Tables: Implemented a deferred ACPI table verification. This is useful
2577for operating systems where the tables cannot be verified in the early
2578initialization stage due to early memory mapping limitations on some
2579architectures. Lv Zheng.
2580
2581Tables: Removed the signature validation for dynamically loaded tables.
2582Provides compatibility with other ACPI implementations. Previously, only
2583SSDT tables were allowed, as per the ACPI specification. Now, any table
2584signature can be used via the Load() operator. Lv Zheng.
2585
2586Tables: Fixed several mutex issues that could cause errors during table
2587acquisition. Lv Zheng.
2588
2589Tables: Fixed a problem where an ACPI warning could be generated if a
2590null pointer was passed to the AcpiPutTable interface. Lv Zheng.
2591
2592Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
2593AcpiPutTable interfaces. This applies to the "late stage" table loading
2594when the use of AcpiPutTable is no longer required (since the system
2595memory manager is fully running and available). Lv Zheng.
2596
2597Fixed/Reverted a regression during processing of resource descriptors
2598that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
2599exception in this case.
2600
2601Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
2602I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
2603
2604Interpreter: Fixed a possible fault if an Alias operator with an invalid
2605or duplicate target is encountered during Alias creation in
2606AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
2607
2608Added an option to use designated initializers for function pointers.
2609Kees Cook <keescook@google.com>
2610
2611
26122) iASL Compiler/Disassembler and Tools:
2613
2614iASL: Allow compilation of External declarations with target pathnames
2615that refer to existing named objects within the table. Erik Schmauss.
2616
2617iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
2618FieldUnit name also is declared via External in the same table. Erik
2619Schmauss.
2620
2621iASL: Allow existing scope names within pathnames used in External
2622statements. For example:
2623    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
2624    Device (ABCD)
2625
2626iASL: IORT ACPI table: Implemented changes required to decode the new
2627Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
2628compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
2629
2630Disassembler: Don't abort disassembly on errors from External()
2631statements. Erik Schmauss.
2632
2633Disassembler: fixed a possible fault when one of the Create*Field
2634operators references a Resource Template. ACPICA Bugzilla 1396.
2635
2636iASL: In the source code, resolved some naming inconsistences across the
2637parsing support. Fixes confusion between "Parse Op" and "Parse Node".
2638Adds a new file, aslparseop.c
2639
2640----------------------------------------
264131 May 2017. Summary of changes for version 20170531:
2642
2643
26440) ACPI 6.2 support:
2645
2646The ACPI specification version 6.2 has been released and is available at
2647http://uefi.org/specifications
2648
2649This version of ACPICA fully supports the ACPI 6.2 specification. Changes
2650are summarized below.
2651
2652New ACPI tables (Table Compiler/Disassembler/Templates):
2653    HMAT (Heterogeneous Memory Attributes Table)
2654    WSMT (Windows SMM Security Mitigation Table)
2655    PPTT (Processor Properties Topology Table)
2656
2657New subtables for existing ACPI tables:
2658    HEST (New subtable, Arch-deferred machine check)
2659    SRAT (New subtable, Arch-specific affinity structure)
2660    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
2661
2662Simple updates for existing ACPI tables:
2663    BGRT (two new flag bits)
2664    HEST (New bit defined for several subtables, GHES_ASSIST)
2665
2666New Resource Descriptors and Resource macros (Compiler/Disassembler):
2667    PinConfig()
2668    PinFunction()
2669    PinGroup()
2670    PinGroupConfig()
2671    PinGroupFunction()
2672    New type for hardware error notification (section 18.3.2.9)
2673
2674New predefined names/methods (Compiler/Interpreter):
2675    _HMA (Heterogeneous Memory Attributes)
2676    _LSI (Label Storage Information)
2677    _LSR (Label Storage Read)
2678    _LSW (Label Storage Write)
2679
2680ASL grammar/macro changes (Compiler):
2681    For() ASL macro, implemented with the AML while operator
2682    Extensions to Concatenate operator
2683    Support for multiple definition blocks in same ASL file
2684    Clarification for Buffer operator
2685    Allow executable AML code underneath all scopes (Devices, etc.)
2686    Clarification/change for the _OSI return value
2687    ASL grammar update for reference operators
2688    Allow a zero-length string for AML filename in DefinitionBlock
2689
2690Miscellaneous:
2691    New device object notification value
2692    Remove a notify value (0x0C) for graceful shutdown
2693    New UUIDs for processor/cache properties and
2694        physical package property
2695    New _HID, ACPI0014 (Wireless Power Calibration Device)
2696
2697
26981) ACPICA kernel-resident subsystem:
2699
2700Added support to disable ACPI events on hardware-reduced platforms.
2701Eliminates error messages of the form "Could not enable fixed event". Lv
2702Zheng
2703
2704Fixed a problem using Device/Thermal objects with the ObjectType and
2705DerefOf ASL operators. This support had not been fully/properly
2706implemented.
2707
2708Fixed a problem where if a Buffer object containing a resource template
2709was longer than the actual resource template, an error was generated --
2710even though the AML is legal. This case has been seen in the field.
2711
2712Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2713The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2714
2715Added header file changes for the TPM2 ACPI table. Update to new version
2716of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2717
2718Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2719These interfaces are intended to be used only in conjunction with the
2720predefined _DLM method (Device Lock Method). "This object appears in a
2721device scope when AML access to the device must be synchronized with the
2722OS environment".
2723
2724Example Code and Data Size: These are the sizes for the OS-independent
2725acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2726debug version of the code includes the debug output trace mechanism and
2727has a much larger code and data size.
2728
2729  Current Release:
2730    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
2731    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
2732  Previous Release:
2733    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2734    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2735
2736
27372) iASL Compiler/Disassembler and Tools:
2738
2739iASL: Fixed a problem where an External() declaration could not refer to
2740a Field Unit. Erik Schmauss.
2741
2742Disassembler: Improved support for the Switch/Case operators. This
2743feature will disassemble AML code back to the original Switch operators
2744when possible, instead of an If..Else sequence. David Box
2745
2746iASL and disassembler: Improved the handling of multiple extraneous
2747parentheses for both ASL input and disassembled ASL output.
2748
2749Improved the behavior of the iASL compiler and disassembler to detect
2750improper use of external declarations
2751
2752Disassembler: Now aborts immediately upon detection of an unknown AML
2753opcode. The AML parser has no real way to recover from this, and can
2754result in the creation of an ill-formed parse tree that causes errors
2755later during the disassembly.
2756
2757All tools: Fixed a problem where the Unix application OSL did not handle
2758control-c correctly. For example, a control-c could incorrectly wake the
2759debugger.
2760
2761AcpiExec: Improved the Control-C handling and added a handler for
2762segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2763environments.
2764
2765Reduced the verbosity of the generic unix makefiles. Previously, each
2766compilation displayed the full set of compiler options. This has been
2767eliminated as the options are easily inspected within the makefiles. Each
2768compilation now results in a single line of output.
2769
2770----------------------------------------
277103 March 2017. Summary of changes for version 20170303:
2772
2773
27740) ACPICA licensing:
2775
2776The licensing information at the start of each source code module has
2777been updated. In addition to the Intel license, the dual GPLv2/BSD
2778license has been added for completeness. Now, a single version of the
2779source code should be suitable for all ACPICA customers. This is the
2780major change for this release since it affects all source code modules.
2781
2782
27831) ACPICA kernel-resident subsystem:
2784
2785Fixed two issues with the common asltypes.h header that could cause
2786problems in some environments: (Kim Jung-uk)
2787    Removed typedef for YY_BUFFER_STATE ?
2788       Fixes an error with earlier versions of Flex.
2789    Removed use of FILE typedef (which is only defined in stdio.h)
2790
2791
27922) iASL Compiler/Disassembler and Tools:
2793
2794Disassembler: fixed a regression introduced in 20170224. A fix for a
2795memory leak related to resource descriptor tags (names) could fault when
2796the disassembler was generated with 64-bit compilers.
2797
2798The ASLTS test suite has been updated to implement a new testing
2799architecture. During generation of the suite from ASL source, both the
2800ASL and ASL+ compilers are now validated, as well as the disassembler
2801itself (Erik Schmauss). The architecture executes as follows:
2802
2803    For every ASL source module:
2804        Compile (legacy ASL compilation)
2805        Disassemble the resulting AML to ASL+ source code
2806        Compile the new ASL+ module
2807        Perform a binary compare on the legacy AML and the new ASL+ AML
2808    The ASLTS suite then executes normally using the AML binaries.
2809
2810----------------------------------------
281124 February 2017. Summary of changes for version 20170224:
2812
2813
28141) ACPICA kernel-resident subsystem:
2815
2816Interpreter: Fixed two issues with the control method return value auto-
2817repair feature, where an attempt to double-delete an internal object
2818could result in an ACPICA warning (for _CID repair and others). No fault
2819occurs, however, because the attempted deletion (actually a release to an
2820internal cache) is detected and ignored via object poisoning.
2821
2822Debugger: Fixed an AML interpreter mutex issue during the single stepping
2823of control methods. If certain debugger commands are executed during
2824stepping, a mutex acquire/release error could occur. Lv Zheng.
2825
2826Fixed some issues generating ACPICA with the Intel C compiler by
2827restoring the original behavior and compiler-specific include file in
2828acenv.h. Lv Zheng.
2829
2830Example Code and Data Size: These are the sizes for the OS-independent
2831acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2832debug version of the code includes the debug output trace mechanism and
2833has a much larger code and data size.
2834
2835  Current Release:
2836    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2837    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2838  Previous Release:
2839    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2840    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2841
2842
28432) iASL Compiler/Disassembler and Tools:
2844
2845iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2846tool has been designed, implemented, and included in this release. The
2847key feature of this utility is that the original comments within the
2848input ASL file are preserved during the conversion process, and included
2849within the converted ASL+ file -- thus creating a transparent conversion
2850of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2851
2852    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2853converted code
2854
2855iASL/Disassembler: Improved the detection and correct disassembly of
2856Switch/Case operators. This feature detects sequences of if/elseif/else
2857operators that originated from ASL Switch/Case/Default operators and
2858emits the original operators. David Box.
2859
2860iASL: Improved the IORT ACPI table support in the following areas. Lv
2861Zheng:
2862    Clear MappingOffset if the MappingCount is zero.
2863    Fix the disassembly of the SMMU GSU interrupt offset.
2864    Update the template file for the IORT table.
2865
2866Disassembler: Enhanced the detection and disassembly of resource
2867template/descriptor within a Buffer object. An EndTag descriptor is now
2868required to have a zero second byte, since all known ASL compilers emit
2869this. This helps eliminate incorrect decisions when a buffer is
2870disassembled (false positives on resource templates).
2871
2872----------------------------------------
287319 January 2017. Summary of changes for version 20170119:
2874
2875
28761) General ACPICA software:
2877
2878Entire source code base: Added the 2017 copyright to all source code
2879legal/licensing module headers and utility/tool signons. This includes
2880the standard Linux dual-license header. This affects virtually every file
2881in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2882the ACPICA test suite.
2883
2884
28852) iASL Compiler/Disassembler and Tools:
2886
2887iASL: Removed/fixed an inadvertent remark when a method argument
2888containing a reference is used as a target operand within the method (and
2889never used as a simple argument), as in the example below. Jeffrey Hugo.
2890
2891    dsdt.asl   1507:    Store(0x1, Arg0)
2892    Remark   2146 -                ^ Method Argument is never used (Arg0)
2893
2894All tools: Removed the bit width of the compiler that generated the tool
2895from the common signon for all user space tools. This proved to be
2896confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2897from the generic makefiles (Thomas Petazzoni). Example below.
2898
2899    Old:
2900    ASL+ Optimizing Compiler version 20170119-32
2901    ASL+ Optimizing Compiler version 20170119-64
2902
2903    New:
2904    ASL+ Optimizing Compiler version 20170119
2905
2906----------------------------------------
290722 December 2016. Summary of changes for version 20161222:
2908
2909
29101) ACPICA kernel-resident subsystem:
2911
2912AML Debugger: Implemented a new mechanism to simplify and enhance
2913debugger integration into all environments, including kernel debuggers
2914and user-space utilities, as well as remote debug services. This
2915mechanism essentially consists of new OSL interfaces to support debugger
2916initialization/termination, as well as wait/notify interfaces to perform
2917the debugger handshake with the host. Lv Zheng.
2918
2919    New OSL interfaces:
2920        AcpiOsInitializeDebugger (void)
2921        AcpiOsTerminateDebugger (void)
2922        AcpiOsWaitCommandReady (void)
2923        AcpiOsNotifyCommandComplete (void)
2924
2925    New OS services layer:
2926        osgendbg.c -- Example implementation, and used for AcpiExec
2927
2928Update for Generic Address Space (GAS) support: Although the AccessWidth
2929and/or BitOffset fields of the GAS are not often used, this change now
2930fully supports these fields. This affects the internal support for FADT
2931registers, registers in other ACPI data tables, and the AcpiRead and
2932AcpiWrite public interfaces. Lv Zheng.
2933
2934Sleep support: In order to simplify integration of ACPI sleep for the
2935various host operating systems, a new OSL interface has been introduced.
2936AcpiOsEnterSleep allows the host to perform any required operations
2937before the final write to the sleep control register(s) is performed by
2938ACPICA. Lv Zheng.
2939
2940    New OSL interface:
2941        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2942
2943    Called from these internal interfaces:
2944        AcpiHwLegacySleep
2945        AcpiHwExtendedSleep
2946
2947EFI support: Added a very small EFI/ACPICA example application. Provides
2948a simple demo for EFI integration, as well as assisting with resolution
2949of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2950
2951    source/tools/efihello/efihello.c
2952
2953Local C library: Implemented several new functions to enhance ACPICA
2954portability, for environments where these clib functions are not
2955available (such as EFI). Lv Zheng:
2956    putchar
2957    getchar
2958    strpbrk
2959    strtok
2960    memmove
2961
2962Fixed a regression where occasionally a valid resource descriptor was
2963incorrectly detected as invalid at runtime, and a
2964AE_AML_NO_RESOURCE_END_TAG was returned.
2965
2966Fixed a problem with the recently implemented support that enables
2967control method invocations as Target operands to many ASL operators.
2968Warnings of this form: "Needed type [Reference], found [Processor]" were
2969seen at runtime for some method invocations.
2970
2971Example Code and Data Size: These are the sizes for the OS-independent
2972acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2973debug version of the code includes the debug output trace mechanism and
2974has a much larger code and data size.
2975
2976  Current Release:
2977    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2978    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
2979  Previous Release:
2980    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2981    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2982
2983
29842) iASL Compiler/Disassembler and Tools:
2985
2986Disassembler: Enhanced output by adding the capability to detect and
2987disassemble ASL Switch/Case statements back to the original ASL source
2988code instead of if/else blocks. David Box.
2989
2990AcpiHelp: Split a large file into separate files based upon
2991functionality/purpose. New files are:
2992    ahaml.c
2993    ahasl.c
2994
2995----------------------------------------
299617 November 2016. Summary of changes for version 20161117:
2997
2998
29991) ACPICA kernel-resident subsystem:
3000
3001Table Manager: Fixed a regression introduced in 20160729, "FADT support
3002cleanup". This was an attempt to remove all references in the source to
3003the FADT version 2, which never was a legal version number. It was
3004skipped because it was an early version of 64-bit support that was
3005eventually abandoned for the current 64-bit support.
3006
3007Interpreter: Fixed a problem where runtime implicit conversion was
3008incorrectly disabled for the ASL operators below. This brings the
3009behavior into compliance with the ACPI specification:
3010    FromBCD
3011    ToBCD
3012    ToDecimalString
3013    ToHexString
3014    ToInteger
3015    ToBuffer
3016
3017Table Manager: Added a new public interface, AcpiPutTable, used to
3018release and free an ACPI table returned by AcpiGetTable and related
3019interfaces. Lv Zheng.
3020
3021Example Code and Data Size: These are the sizes for the OS-independent
3022acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3023debug version of the code includes the debug output trace mechanism and
3024has a much larger code and data size.
3025
3026  Current Release:
3027    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
3028    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
3029  Previous Release:
3030    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
3031    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
3032
3033
30342) iASL Compiler/Disassembler and Tools:
3035
3036Disassembler: Fixed a regression for disassembly of Resource Template.
3037Detection of templates in the AML stream missed some types of templates.
3038
3039iASL: Fixed a problem where an Access Size error was returned for the PCC
3040address space when the AccessSize of the GAS register is greater than a
3041DWORD. Hoan Tran.
3042
3043iASL: Implemented several grammar changes for the operators below. These
3044changes are slated for the next version of the ACPI specification:
3045    RefOf        - Disallow method invocation as an operand
3046    CondRefOf    - Disallow method invocation as an operand
3047    DerefOf      - Disallow operands that use the result from operators
3048that
3049                   do not return a reference (Changed TermArg to
3050SuperName).
3051
3052iASL: Control method invocations are now allowed for Target operands, as
3053per the ACPI specification. Removed error for using a control method
3054invocation as a Target operand.
3055
3056Disassembler: Improved detection of Resource Templates, Unicode, and
3057Strings within Buffer objects. These subtypes do not contain a specific
3058opcode to indicate the originating ASL code, and they must be detected by
3059other means within the disassembler.
3060
3061iASL: Implemented an optimization improvement for 32-bit ACPI tables
3062(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
3063only after 64-bit to 32-bit truncation. A truncation warning message is
3064still emitted, however.
3065
3066AcpiXtract: Implemented handling for both types of line terminators (LF
3067or CR/LF) so that it can accept AcpiDump output files from any system.
3068Peter Wu.
3069
3070AcpiBin: Added two new options for comparing AML files:
3071    -a: compare and display ALL mismatches
3072    -o: start compare at this offset into the second file
3073
3074----------------------------------------
307530 September 2016. Summary of changes for version 20160930:
3076
3077
30781) ACPICA kernel-resident subsystem:
3079
3080Fixed a regression in the internal AcpiTbFindTable function where a non
3081AE_OK exception could inadvertently be returned even if the function did
3082not fail. This problem affects the following operators:
3083    DataTableRegion
3084    LoadTable
3085
3086Fixed a regression in the LoadTable operator where a load to any
3087namespace location other than the root no longer worked properly.
3088
3089Increased the maximum loop count value that will result in the
3090AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
3091prevent infinite loops within the AML interpreter and thus the host OS
3092kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
30931,048,575).
3094
3095Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
3096acpixf.h file. This allows hosts to easily configure the maximum loop
3097count at runtime.
3098
3099Removed an illegal character in the strtoul64.c file. This character
3100caused errors with some C compilers.
3101
3102Example Code and Data Size: These are the sizes for the OS-independent
3103acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3104debug version of the code includes the debug output trace mechanism and
3105has a much larger code and data size.
3106
3107  Current Release:
3108    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
3109    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
3110  Previous Release:
3111    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
3112    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
3113
3114
31152) iASL Compiler/Disassembler and Tools:
3116
3117Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
3118the simpler ASL ElseIf keyword. During the conversion, a trailing If
3119block could be lost and missing from the disassembled output.
3120
3121iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
3122the missing rule caused a parse error when using the Index operator as an
3123operand to ObjectType. This construct now compiles properly. Example:
3124    ObjectType(PKG1[4]).
3125
3126iASL: Correctly handle unresolved symbols in the hardware map file (-lm
3127option). Previously, unresolved symbols could cause a protection fault.
3128Such symbols are now marked as unresolved in the map file.
3129
3130iASL: Implemented support to allow control method invocations as an
3131operand to the ASL DeRefOf operator. Example:
3132    DeRefOf(MTH1(Local0))
3133
3134Disassembler: Improved support for the ToPLD ASL macro. Detection of a
3135possible _PLD buffer now includes examination of both the normal buffer
3136length (16 or 20) as well as the surrounding AML package length.
3137
3138Disassembler: Fixed a problem with the decoding of complex expressions
3139within the Divide operator for ASL+. For the case where both the quotient
3140and remainder targets are specified, the entire statement cannot be
3141disassembled. Previously, the output incorrectly contained a mix of ASL-
3142and ASL+ operators. This mixed statement causes a syntax error when
3143compiled. Example:
3144    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
3145disassembled to:
3146    Divide (INT1 + 6, 128, RSLT, QUOT)
3147
3148iASL/Tools: Added support to process AML and non-AML ACPI tables
3149consistently. For the disassembler and AcpiExec, allow all types of ACPI
3150tables (AML and data tables). For the iASL -e option, allow only AML
3151tables (DSDT/SSDT).
3152
3153----------------------------------------
315431 August 2016. Summary of changes for version 20160831:
3155
3156
31571) ACPICA kernel-resident subsystem:
3158
3159Improve support for the so-called "module-level code", which is defined
3160to be math, logical and control AML opcodes that appear outside of any
3161control method. This change improves the support by adding more opcodes
3162that can be executed in the manner. Some other issues have been solved,
3163and the ASL grammar changes to support such code under all scope
3164operators (Device, etc.) are complete. Lv Zheng.
3165
3166UEFI support: these OSL functions have been implemented. This is an
3167additional step toward supporting the AcpiExec utility natively (with
3168full hardware access) under UEFI. Marcelo Ferreira.
3169    AcpiOsReadPciConfiguration
3170    AcpiOsWritePciConfiguration
3171
3172Fixed a possible mutex error during control method auto-serialization. Lv
3173Zheng.
3174
3175Updated support for the Generic Address Structure by fully implementing
3176all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
3177Zheng.
3178
3179Updated the return value for the internal _OSI method. Instead of
31800xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
3181for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
3182implementations, and will be reflected and clarified in the next version
3183of the ACPI specification.
3184
3185Implemented two new table events that can be passed to an ACPICA table
3186handler. These events are used to indicate a table installation or
3187uninstallation. These events are used in addition to existed table load
3188and unload events. Lv Zheng.
3189
3190Implemented a cleanup for all internal string-to-integer conversions.
3191Consolidate multiple versions of this functionality and limit possible
3192bases to either 10 or 16 to simplify the code. Adds a new file,
3193utstrtoul64.
3194
3195Cleanup the inclusion order of the various compiler-specific headers.
3196This simplifies build configuration management. The compiler-specific
3197headers are now split out from the host-specific headers. Lv Zheng.
3198
3199Example Code and Data Size: These are the sizes for the OS-independent
3200acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3201debug version of the code includes the debug output trace mechanism and
3202has a much larger code and data size.
3203
3204  Current Release:
3205    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
3206    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
3207
3208
32092) iASL Compiler/Disassembler and Tools:
3210
3211iASL/AcpiExec: Added a command line option to display the build date/time
3212of the tool (-vd). This can be useful to verify that the correct version
3213of the tools are being used.
3214
3215AML Debugger: Implemented a new subcommand ("execute predef") to execute
3216all predefined control methods and names within the current namespace.
3217This can be useful for debugging problems with ACPI tables and the ACPI
3218namespace.
3219
3220----------------------------------------
322129 July 2016. Summary of changes for version 20160729:
3222
3223
32241) ACPICA kernel-resident subsystem:
3225
3226Implemented basic UEFI support for the various ACPICA tools. This
3227includes:
32281) An OSL to implement the various AcpiOs* interfaces on UEFI.
32292) Support to obtain the ACPI tables on UEFI.
32303) Local implementation of required C library functions not available on
3231UEFI.
32324) A front-end (main) function for the tools for UEFI-related
3233initialization.
3234
3235The initial deployment of this support is the AcpiDump utility executing
3236as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
3237Current environments supported are Linux/Unix. MSVC generation is not
3238supported at this time. See the generate/efi/README file for build
3239instructions. Lv Zheng.
3240
3241Future plans include porting the AcpiExec utility to execute natively on
3242the platform with I/O and memory access. This will allow viewing/dump of
3243the platform namespace and native execution of ACPI control methods that
3244access the actual hardware. To fully implement this support, the OSL
3245functions below must be implemented with UEFI interfaces. Any community
3246help in the implementation of these functions would be appreciated:
3247    AcpiOsReadPort
3248    AcpiOsWritePort
3249    AcpiOsReadMemory
3250    AcpiOsWriteMemory
3251    AcpiOsReadPciConfiguration
3252    AcpiOsWritePciConfiguration
3253
3254Restructured and standardized the C library configuration for ACPICA,
3255resulting in the various configuration options below. This includes a
3256global restructuring of the compiler-dependent and platform-dependent
3257include files. These changes may affect the existing platform-dependent
3258configuration files on some hosts. Lv Zheng.
3259
3260The current C library configuration options appear below. For any issues,
3261it may be helpful to examine the existing compiler-dependent and
3262platform-dependent files as examples. Lv Zheng.
3263
32641) Linux kernel:
3265    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3266library.
3267    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
32682) Unix/Windows/BSD applications:
3269    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
3270library.
3271    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
32723) UEFI applications:
3273    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3274library.
3275    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
32764) UEFI applications (EDK2/StdLib):
3277    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
3278    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
3279
3280
3281AML interpreter: "module-level code" support. Allows for execution of so-
3282called "executable" AML code (math/logical operations, etc.) outside of
3283control methods not just at the module level (top level) but also within
3284any scope declared outside of a control method - Scope{}, Device{},
3285Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
3286
3287Simplified the configuration of the "maximum AML loops" global option by
3288adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
3289modified at runtime.
3290
3291
3292Example Code and Data Size: These are the sizes for the OS-independent
3293acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3294debug version of the code includes the debug output trace mechanism and
3295has a much larger code and data size.
3296
3297  Current Release:
3298    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
3299    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
3300
3301
33022) iASL Compiler/Disassembler and Tools:
3303
3304iASL: Add full support for the RASF ACPI table (RAS Features Table).
3305Includes disassembler, data table compiler, and header support.
3306
3307iASL Expand "module-level code" support. Allows for
3308compilation/disassembly of so-called "executable" AML code (math/logical
3309operations, etc.) outside of control methods not just at the module level
3310(top level) but also within any scope declared outside of a control
3311method - Scope{}, Device{}, Processor{}, PowerResource{}, and
3312ThermalZone{}.
3313
3314AcpiDump: Added support for dumping all SSDTs on newer versions of
3315Windows. These tables are now easily available -- SSDTs are not available
3316through the registry on older versions.
3317
3318----------------------------------------
331927 May 2016. Summary of changes for version 20160527:
3320
3321
33221) ACPICA kernel-resident subsystem:
3323
3324Temporarily reverted the new arbitrary bit length/alignment support in
3325AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
3326a number of regressions with the new code that need to be fully resolved
3327and tested before this support can be finally integrated into ACPICA.
3328Apologies for any inconveniences these issues may have caused.
3329
3330The ACPI message macros are not configurable (ACPI_MSG_ERROR,
3331ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
3332and ACPI_MSG_BIOS_WARNING). Lv Zheng.
3333
3334Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
3335option. Adds a new return macro, return_STR. Junk-uk Kim.
3336
3337Example Code and Data Size: These are the sizes for the OS-independent
3338acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3339debug version of the code includes the debug output trace mechanism and
3340has a much larger code and data size.
3341
3342  Current Release:
3343    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
3344    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
3345  Previous Release:
3346    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3347    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
3348
3349----------------------------------------
335022 April 2016. Summary of changes for version 20160422:
3351
33521) ACPICA kernel-resident subsystem:
3353
3354Fixed a regression in the GAS (generic address structure) arbitrary bit
3355support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
3356and incorrect return values. Lv Zheng. ACPICA BZ 1270.
3357
3358ACPI 6.0: Added support for new/renamed resource macros. One new argument
3359was added to each of these macros, and the original name has been
3360deprecated. The AML disassembler will always disassemble to the new
3361names. Support for the new macros was added to iASL, disassembler,
3362resource manager, and the acpihelp utility. ACPICA BZ 1274.
3363
3364    I2cSerialBus  -> I2cSerialBusV2
3365    SpiSerialBus  -> SpiSerialBusV2
3366    UartSerialBus -> UartSerialBusV2
3367
3368ACPI 6.0: Added support for a new integer field that was appended to the
3369package object returned by the _BIX method. This adds iASL compile-time
3370and AML runtime error checking. ACPICA BZ 1273.
3371
3372ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
3373Subspace Type2" (Headers, Disassembler, and data table compiler).
3374
3375Example Code and Data Size: These are the sizes for the OS-independent
3376acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3377debug version of the code includes the debug output trace mechanism and
3378has a much larger code and data size.
3379
3380  Current Release:
3381    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3382    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
3383  Previous Release:
3384    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3385    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
3386
3387
33882) iASL Compiler/Disassembler and Tools:
3389
3390iASL: Implemented an ASL grammar extension to allow/enable executable
3391"module-level code" to be created and executed under the various
3392operators that create new scopes. This type of AML code is already
3393supported in all known AML interpreters, and the grammar change will
3394appear in the next version of the ACPI specification. Simplifies the
3395conditional runtime creation of named objects under these object types:
3396
3397    Device
3398    PowerResource
3399    Processor
3400    Scope
3401    ThermalZone
3402
3403iASL: Implemented a new ASL extension, a "For" loop macro to add greater
3404ease-of-use to the ASL language. The syntax is similar to the
3405corresponding C operator, and is implemented with the existing AML While
3406opcode -- thus requiring no changes to existing AML interpreters.
3407
3408    For (Initialize, Predicate, Update) {TermList}
3409
3410Grammar:
3411    ForTerm :=
3412        For (
3413            Initializer    // Nothing | TermArg => ComputationalData
3414            Predicate      // Nothing | TermArg => ComputationalData
3415            Update         // Nothing | TermArg => ComputationalData
3416        ) {TermList}
3417
3418
3419iASL: The _HID/_ADR detection and validation has been enhanced to search
3420under conditionals in order to allow these objects to be conditionally
3421created at runtime.
3422
3423iASL: Fixed several issues with the constant folding feature. The
3424improvement allows better detection and resolution of statements that can
3425be folded at compile time. ACPICA BZ 1266.
3426
3427iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
3428conversion to the ASL ElseIf operator where incorrect ASL code could be
3429generated.
3430
3431iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
3432sometimes an extra (and extraneous) set of parentheses were emitted for
3433some combinations of operators. Although this did not cause any problems
3434with recompilation of the disassembled code, it made the code more
3435difficult to read. David Box. ACPICA BZ 1231.
3436
3437iASL: Changed to ignore the unreferenced detection for predefined names
3438of resource descriptor elements, when the resource descriptor is
3439created/defined within a control method.
3440
3441iASL: Disassembler: Fix a possible fault with externally declared Buffer
3442objects.
3443
3444----------------------------------------
344518 March 2016. Summary of changes for version 20160318:
3446
34471) ACPICA kernel-resident subsystem:
3448
3449Added support for arbitrary bit lengths and bit offsets for registers
3450defined by the Generic Address Structure. Previously, only aligned bit
3451lengths of 8/16/32/64 were supported. This was sufficient for many years,
3452but recently some machines have been seen that require arbitrary bit-
3453level support. ACPICA BZ 1240. Lv Zheng.
3454
3455Fixed an issue where the \_SB._INI method sometimes must be evaluated
3456before any _REG methods are evaluated. Lv Zheng.
3457
3458Implemented several changes related to ACPI table support
3459(Headers/Disassembler/TableCompiler):
3460NFIT: For ACPI 6.1, updated to add some additional new fields and
3461constants.
3462FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
34636).
3464DMAR: Added new constants per the 10/2014 DMAR spec.
3465IORT: Added new subtable per the 10/2015 IORT spec.
3466HEST: For ACPI 6.1, added new constants and new subtable.
3467DBG2: Added new constants per the 12/2015 DBG2 spec.
3468FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
3469ACPICA BZ 1249.
3470ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
3471
3472Updated header support for the DMAR table to match the current version of
3473the related spec.
3474
3475Added extensions to the ASL Concatenate operator to allow any ACPI object
3476to be passed as an operand. Any object other than Integer/String/Buffer
3477simply returns a string containing the object type. This extends the
3478usefulness of the Printf macros. Previously, Concatenate would abort the
3479control method if a non-data object was encountered.
3480
3481ACPICA source code: Deployed the C "const" keyword across the source code
3482where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
3483
3484Example Code and Data Size: These are the sizes for the OS-independent
3485acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3486debug version of the code includes the debug output trace mechanism and
3487has a much larger code and data size.
3488
3489  Current Release:
3490    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3491    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
3492  Previous Release:
3493    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3494    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3495
3496
34972) iASL Compiler/Disassembler and Tools:
3498
3499iASL/Disassembler: Improved the heuristic used to determine the number of
3500arguments for an externally defined control method (a method in another
3501table). Although this is an improvement, there is no deterministic way to
3502"guess" the number of method arguments. Only the ACPI 6.0 External opcode
3503will completely solve this problem as it is deployed (automatically) in
3504newer BIOS code.
3505
3506iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
3507statements that could cause errors when the disassembled file is
3508compiled. ACPICA BZ 1243. David Box.
3509
3510iASL: Fixed a regression caused by the merger of the two versions of the
3511local strtoul64. Because of a dependency on a global variable, strtoul64
3512could return an error for integers greater than a 32-bit value. ACPICA BZ
35131260.
3514
3515iASL: Fixed a regression where a fault could occur for an ASL Return
3516statement if it invokes a control method that is not resolved. ACPICA BZ
35171264.
3518
3519AcpiXtract: Improved input file validation: detection of binary files and
3520non-acpidump text files.
3521
3522----------------------------------------
352312 February 2016. Summary of changes for version 20160212:
3524
35251) ACPICA kernel-resident subsystem:
3526
3527Implemented full support for the ACPI 6.1 specification (released in
3528January). This version of the specification is available at:
3529http://www.uefi.org/specifications
3530
3531Only a relatively small number of changes were required in ACPICA to
3532support ACPI 6.1, in these areas:
3533- New predefined names
3534- New _HID values
3535- A new subtable for HEST
3536- A few other header changes for new values
3537
3538Ensure \_SB_._INI is executed before any _REG methods are executed. There
3539appears to be existing BIOS code that relies on this behavior. Lv Zheng.
3540
3541Reverted a change made in version 20151218 which enabled method
3542invocations to be targets of various ASL operators (SuperName and Target
3543grammar elements). While the new behavior is supported by the ACPI
3544specification, other AML interpreters do not support this behavior and
3545never will. The ACPI specification will be updated for ACPI 6.2 to remove
3546this support. Therefore, the change was reverted to the original ACPICA
3547behavior.
3548
3549ACPICA now supports the GCC 6 compiler.
3550
3551Current Release: (Note: build changes increased sizes)
3552    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3553    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3554Previous Release:
3555    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3556    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
3557
3558
35592) iASL Compiler/Disassembler and Tools:
3560
3561Completed full support for the ACPI 6.0 External() AML opcode. The
3562compiler emits an external AML opcode for each ASL External statement.
3563This opcode is used by the disassembler to assist with the disassembly of
3564external control methods by specifying the required number of arguments
3565for the method. AML interpreters do not use this opcode. To ensure that
3566interpreters do not even see the opcode, a block of one or more external
3567opcodes is surrounded by an "If(0)" construct. As this feature becomes
3568commonly deployed in BIOS code, the ability of disassemblers to correctly
3569disassemble AML code will be greatly improved. David Box.
3570
3571iASL: Implemented support for an optional cross-reference output file.
3572The -lx option will create a the cross-reference file with the suffix
3573"xrf". Three different types of cross-reference are created in this file:
3574- List of object references made from within each control method
3575- Invocation (caller) list for each user-defined control method
3576- List of references to each non-method object in the namespace
3577
3578iASL: Method invocations as ASL Target operands are now disallowed and
3579flagged as errors in preparation for ACPI 6.2 (see the description of the
3580problem above).
3581
3582----------------------------------------
35838 January 2016. Summary of changes for version 20160108:
3584
35851) ACPICA kernel-resident subsystem:
3586
3587Updated all ACPICA copyrights and signons to 2016: Added the 2016
3588copyright to all source code module headers and utility/tool signons.
3589This includes the standard Linux dual-license header. This affects
3590virtually every file in the ACPICA core subsystem, iASL compiler, all
3591ACPICA utilities, and the ACPICA test suite.
3592
3593Fixed a regression introduced in version 20151218 concerning the
3594execution of so-called module-level ASL/AML code. Namespace objects
3595created under a module-level If() construct were not properly/fully
3596entered into the namespace and could cause an interpreter fault when
3597accessed.
3598
3599Example Code and Data Size: These are the sizes for the OS-independent
3600acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3601debug version of the code includes the debug output trace mechanism and
3602has a much larger code and data size.
3603
3604Current Release:
3605    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3606    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
3607  Previous Release:
3608    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3609    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3610
3611
36122) iASL Compiler/Disassembler and Tools:
3613
3614Fixed a problem with the compilation of the GpioIo and GpioInt resource
3615descriptors. The _PIN field name was incorrectly defined to be an array
3616of 32-bit values, but the _PIN values are in fact 16 bits each. This
3617would cause incorrect bit width warnings when using Word (16-bit) fields
3618to access the descriptors.
3619
3620
3621----------------------------------------
362218 December 2015. Summary of changes for version 20151218:
3623
36241) ACPICA kernel-resident subsystem:
3625
3626Implemented per-AML-table execution of "module-level code" as individual
3627ACPI tables are loaded into the namespace during ACPICA initialization.
3628In other words, any module-level code within an AML table is executed
3629immediately after the table is loaded, instead of batched and executed
3630after all of the tables have been loaded. This provides compatibility
3631with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
3632David Box.
3633
3634To fully support the feature above, the default operation region handlers
3635for the SystemMemory, SystemIO, and PCI_Config address spaces are now
3636installed before any ACPI tables are loaded. This enables module-level
3637code to access these address spaces during the table load and module-
3638level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
3639Box.
3640
3641Implemented several changes to the internal _REG support in conjunction
3642with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
3643utilities for the changes above. Although these tools were changed, host
3644operating systems that simply use the default handlers for SystemMemory,
3645SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
3646
3647For example, in the code below, DEV1 is conditionally added to the
3648namespace by the DSDT via module-level code that accesses an operation
3649region. The SSDT references DEV1 via the Scope operator. DEV1 must be
3650created immediately after the DSDT is loaded in order for the SSDT to
3651successfully reference DEV1. Previously, this code would cause an
3652AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
3653fully supported by ACPICA.
3654
3655    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
3656    {
3657        OperationRegion (OPR1, SystemMemory, 0x400, 32)
3658        Field (OPR1, AnyAcc, NoLock, Preserve)
3659        {
3660            FLD1, 1
3661        }
3662        If (FLD1)
3663        {
3664            Device (\DEV1)
3665            {
3666            }
3667        }
3668    }
3669    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
3670    {
3671        External (\DEV1, DeviceObj)
3672        Scope (\DEV1)
3673        {
3674        }
3675    }
3676
3677Fixed an AML interpreter problem where control method invocations were
3678not handled correctly when the invocation was itself a SuperName argument
3679to another ASL operator. In these cases, the method was not invoked.
3680ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3681argument:
3682    Store
3683    Acquire, Wait
3684    CondRefOf, RefOf
3685    Decrement, Increment
3686    Load, Unload
3687    Notify
3688    Signal, Release, Reset
3689    SizeOf
3690
3691Implemented automatic String-to-ObjectReference conversion support for
3692packages returned by predefined names (such as _DEP). A common BIOS error
3693is to add double quotes around an ObjectReference namepath, which turns
3694the reference into an unexpected string object. This support detects the
3695problem and corrects it before the package is returned to the caller that
3696invoked the method. Lv Zheng.
3697
3698Implemented extensions to the Concatenate operator. Concatenate now
3699accepts any type of object, it is not restricted to simply
3700Integer/String/Buffer. For objects other than these 3 basic data types,
3701the argument is treated as a string containing the name of the object
3702type. This expands the utility of Concatenate and the Printf/Fprintf
3703macros. ACPICA BZ 1222.
3704
3705Cleaned up the output of the ASL Debug object. The timer() value is now
3706optional and no longer emitted by default. Also, the basic data types of
3707Integer/String/Buffer are simply emitted as their values, without a data
3708type string -- since the data type is obvious from the output. ACPICA BZ
37091221.
3710
3711Example Code and Data Size: These are the sizes for the OS-independent
3712acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3713debug version of the code includes the debug output trace mechanism and
3714has a much larger code and data size.
3715
3716  Current Release:
3717    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3718    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3719  Previous Release:
3720    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3721    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3722
3723
37242) iASL Compiler/Disassembler and Tools:
3725
3726iASL: Fixed some issues with the ASL Include() operator. This operator
3727was incorrectly defined in the iASL parser rules, causing a new scope to
3728be opened for the code within the include file. This could lead to
3729several issues, including allowing ASL code that is technically illegal
3730and not supported by AML interpreters. Note, this does not affect the
3731related #include preprocessor operator. ACPICA BZ 1212.
3732
3733iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3734operator is essentially an ASL macro since there is no AML opcode
3735associated with it. The code emitted by the iASL compiler for ElseIf is
3736an Else opcode followed immediately by an If opcode. The disassembler
3737will now emit an ElseIf if it finds an Else immediately followed by an
3738If. This simplifies the decoded ASL, especially for deeply nested
3739If..Else and large Switch constructs. Thus, the disassembled code more
3740closely follows the original source ASL. ACPICA BZ 1211. Example:
3741
3742    Old disassembly:
3743        Else
3744        {
3745            If (Arg0 == 0x02)
3746            {
3747                Local0 = 0x05
3748            }
3749        }
3750
3751    New disassembly:
3752        ElseIf (Arg0 == 0x02)
3753        {
3754            Local0 = 0x05
3755        }
3756
3757AcpiExec: Added support for the new module level code behavior and the
3758early region installation. This required a small change to the
3759initialization, since AcpiExec must install its own operation region
3760handlers.
3761
3762AcpiExec: Added support to make the debug object timer optional. Default
3763is timer disabled. This cleans up the debug object output -- the timer
3764data is rarely used.
3765
3766AcpiExec: Multiple ACPI tables are now loaded in the order that they
3767appear on the command line. This can be important when there are
3768interdependencies/references between the tables.
3769
3770iASL/Templates. Add support to generate template files with multiple
3771SSDTs within a single output file. Also added ommand line support to
3772specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
37731223, 1225.
3774
3775
3776----------------------------------------
377724 November 2015. Summary of changes for version 20151124:
3778
37791) ACPICA kernel-resident subsystem:
3780
3781Fixed a possible regression for a previous update to FADT handling. The
3782FADT no longer has a fixed table ID, causing some issues with code that
3783was hardwired to a specific ID. Lv Zheng.
3784
3785Fixed a problem where the method auto-serialization could interfere with
3786the current SyncLevel. This change makes the auto-serialization support
3787transparent to the SyncLevel support and management.
3788
3789Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3790interface is intended for early access to the namespace during the
3791initial namespace device discovery walk. The _SUB method has been seen to
3792access operation regions in some cases, causing errors because the
3793operation regions are not fully initialized.
3794
3795AML Debugger: Fixed some issues with the terminate/quit/exit commands
3796that can cause faults. Lv Zheng.
3797
3798AML Debugger: Add thread ID support so that single-step mode only applies
3799to the AML Debugger thread. This prevents runtime errors within some
3800kernels. Lv Zheng.
3801
3802Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3803methods that are invoked by this interface are optional, removed warnings
3804emitted for the case where one or more of these methods do not exist.
3805ACPICA BZ 1208, original change by Prarit Bhargava.
3806
3807Made a major pass through the entire ACPICA source code base to
3808standardize formatting that has diverged a bit over time. There are no
3809functional changes, but this will of course cause quite a few code
3810differences from the previous ACPICA release.
3811
3812Example Code and Data Size: These are the sizes for the OS-independent
3813acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3814debug version of the code includes the debug output trace mechanism and
3815has a much larger code and data size.
3816
3817  Current Release:
3818    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3819    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3820  Previous Release:
3821    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3822    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3823
3824
38252) iASL Compiler/Disassembler and Tools:
3826
3827iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3828definition blocks within a single ASL file and the resulting AML file.
3829Support for this type of file was also added to the various tools that
3830use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3831example code below shows two definition blocks within the same file:
3832
3833    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
38340x12345678)
3835    {
3836    }
3837    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3838    {
3839    }
3840
3841iASL: Enhanced typechecking for the Name() operator. All expressions for
3842the value of the named object must be reduced/folded to a single constant
3843at compile time, as per the ACPI specification (the AML definition of
3844Name()).
3845
3846iASL: Fixed some code indentation issues for the -ic and -ia options (C
3847and assembly headers). Now all emitted code correctly begins in column 1.
3848
3849iASL: Added an error message for an attempt to open a Scope() on an
3850object defined in an SSDT. The DSDT is always loaded into the namespace
3851first, so any attempt to open a Scope on an SSDT object will fail at
3852runtime.
3853
3854
3855----------------------------------------
385630 September 2015. Summary of changes for version 20150930:
3857
38581) ACPICA kernel-resident subsystem:
3859
3860Debugger: Implemented several changes and bug fixes to assist support for
3861the in-kernel version of the AML debugger. Lv Zheng.
3862- Fix the "predefined" command for in-kernel debugger.
3863- Do not enter debug command loop for the help and version commands.
3864- Disallow "execute" command during execution/single-step of a method.
3865
3866Interpreter: Updated runtime typechecking for all operators that have
3867target operands. The operand is resolved and validated that it is legal.
3868For example, the target cannot be a non-data object such as a Device,
3869Mutex, ThermalZone, etc., as per the ACPI specification.
3870
3871Debugger: Fixed the double-mutex user I/O handshake to work when local
3872deadlock detection is enabled.
3873
3874Debugger: limited display of method locals and arguments (LocalX and
3875ArgX) to only those that have actually been initialized. This prevents
3876lines of extraneous output.
3877
3878Updated the definition of the NFIT table to correct the bit polarity of
3879one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3880
3881Example Code and Data Size: These are the sizes for the OS-independent
3882acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3883debug version of the code includes the debug output trace mechanism and
3884has a much larger code and data size.
3885
3886  Current Release:
3887    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3888    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3889  Previous Release:
3890    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3891    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3892
3893
38942) iASL Compiler/Disassembler and Tools:
3895
3896iASL: Improved the compile-time typechecking for operands of many of the
3897ASL operators:
3898
3899-- Added an option to disable compiler operand/operator typechecking (-
3900ot).
3901
3902-- For the following operators, the TermArg operands are now validated
3903when possible to be Integer data objects: BankField, OperationRegion,
3904DataTableRegion, Buffer, and Package.
3905
3906-- Store (Source, Target): Both the source and target operands are
3907resolved and checked that the operands are both legal. For example,
3908neither operand can be a non-data object such as a Device, Mutex,
3909ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3910operator can be used to store an object to any type of target object.
3911
3912-- Store (Source, Target): If the source is a Package object, the target
3913must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3914is a Package, the source must also be a Package.
3915
3916-- Store (Source, Target): A warning is issued if the source and target
3917resolve to the identical named object.
3918
3919-- Store (Source, <method invocation>): An error is generated for the
3920target method invocation, as this construct is not supported by the AML
3921interpreter.
3922
3923-- For all ASL math and logic operators, the target operand must be a
3924data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3925includes the function return value also.
3926
3927-- External declarations are also included in the typechecking where
3928possible. External objects defined using the UnknownObj keyword cannot be
3929typechecked, however.
3930
3931iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3932operator:
3933- Legacy code: Index(PKG1, 3)
3934- New ASL+ code: PKG1[3]
3935This completes the ACPI 6.0 ASL+ support as it was the only operator not
3936supported.
3937
3938iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3939spaces were inadvertently appended to the filename, causing file access
3940and deletion problems on some systems.
3941
3942ASL Test Suite (ASLTS): Updated the master makefile to generate all
3943possible compiler output files when building the test suite -- thus
3944exercising these features of the compiler. These files are automatically
3945deleted when the test suite exits.
3946
3947
3948----------------------------------------
394918 August 2015. Summary of changes for version 20150818:
3950
39511) ACPICA kernel-resident subsystem:
3952
3953Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3954Zheng. ACPICA BZ 1186.
3955
3956Completed development to ensure that the ACPICA Disassembler and Debugger
3957are fully standalone components of ACPICA. Removed cross-component
3958dependences. Lv Zheng.
3959
3960The max-number-of-AML-loops is now runtime configurable (previously was
3961compile-time only). This is essentially a loop timeout to force-abort
3962infinite AML loops. ACPCIA BZ 1192.
3963
3964Debugger: Cleanup output to dump ACPI names and namepaths without any
3965trailing underscores. Lv Zheng. ACPICA BZ 1135.
3966
3967Removed unnecessary conditional compilations across the Debugger and
3968Disassembler components where entire modules could be left uncompiled.
3969
3970The aapits test is deprecated and has been removed from the ACPICA git
3971tree. The test has never been completed and has not been maintained, thus
3972becoming rather useless. ACPICA BZ 1015, 794.
3973
3974A batch of small changes to close bugzilla and other reports:
3975- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3976- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3977- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3978- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3979Moore.
3980- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3981ACPICA BZ 1184.
3982- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3983operators.
3984- Debugger: Split debugger initialization/termination interfaces. Lv
3985Zheng.
3986- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3987identification.
3988- AcpiExec: Add debug message during _REG method phase during table
3989load/init.
3990- AcpiNames: Fix a regression where some output was missing and no longer
3991emitted.
3992- Debugger: General cleanup and simplification. Lv Zheng.
3993- Disassembler: Cleanup use of several global option variables. Lv Zheng.
3994
3995Example Code and Data Size: These are the sizes for the OS-independent
3996acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3997debug version of the code includes the debug output trace mechanism and
3998has a much larger code and data size.
3999
4000  Current Release:
4001    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
4002    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
4003  Previous Release:
4004    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
4005    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
4006
4007
40082) iASL Compiler/Disassembler and Tools:
4009
4010AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
4011were not handled properly and caused load errors. Now, properly invoke
4012and use the ACPICA auto-reallocate mechanism for ACPI table data
4013structures. ACPICA BZ 1188
4014
4015AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
4016BZ 1190.
4017
4018AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
4019AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
4020executed during initialization. ACPICA BZ 1187, 1189.
4021
4022iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
4023that corresponds to each disassembled ASL statement, to simplify
4024debugging. ACPICA BZ 1191.
4025
4026Debugger: Add option to the "objects" command to display a summary of the
4027current namespace objects (Object type and count). This is displayed if
4028the command is entered with no arguments.
4029
4030AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
4031
4032
4033----------------------------------------
403417 July 2015. Summary of changes for version 20150717:
4035
40361) ACPICA kernel-resident subsystem:
4037
4038Improved the partitioning between the Debugger and Disassembler
4039components. This allows the Debugger to be used standalone within kernel
4040code without the Disassembler (which is used for single stepping also).
4041This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
4042
4043Debugger: Implemented a new command to trace the execution of control
4044methods (Trace). This is especially useful for the in-kernel version of
4045the debugger when file I/O may not be available for method trace output.
4046See the ACPICA reference for more information. Lv Zheng.
4047
4048Moved all C library prototypes (used for the local versions of these
4049functions when requested) to a new header, acclib.h
4050Cleaned up the use of non-ANSI C library functions. These functions are
4051implemented locally in ACPICA. Moved all such functions to a common
4052source file, utnonansi.c
4053
4054Debugger: Fixed a problem with the "!!" command (get last command
4055executed) where the debugger could enter an infinite loop and eventually
4056crash.
4057
4058Removed the use of local macros that were used for some of the standard C
4059library functions to automatically cast input parameters. This mostly
4060affected the is* functions where the input parameter is defined to be an
4061int. This required a few modifications to the main ACPICA source code to
4062provide casting for these functions and eliminate possible compiler
4063warnings for these parameters.
4064
4065Across the source code, added additional status/error checking to resolve
4066issues discovered by static source code analysis tools such as Coverity.
4067
4068Example Code and Data Size: These are the sizes for the OS-independent
4069acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4070debug version of the code includes the debug output trace mechanism and
4071has a much larger code and data size.
4072
4073  Current Release:
4074    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
4075    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
4076  Previous Release:
4077    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
4078    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
4079
4080
40812) iASL Compiler/Disassembler and Tools:
4082
4083iASL: Fixed a regression where the device map file feature no longer
4084worked properly when used in conjunction with the disassembler. It only
4085worked properly with the compiler itself.
4086
4087iASL: Implemented a new warning for method LocalX variables that are set
4088but never used (similar to a C compiler such as gcc). This also applies
4089to ArgX variables that are not defined by the parent method, and are
4090instead (legally) used as local variables.
4091
4092iASL/Preprocessor: Finished the pass-through of line numbers from the
4093preprocessor to the compiler. This ensures that compiler errors/warnings
4094have the correct original line numbers and filenames, regardless of any
4095#include files.
4096
4097iASL/Preprocessor: Fixed a couple of issues with comment handling and the
4098pass-through of comments to the preprocessor output file (which becomes
4099the compiler input file). Also fixed a problem with // comments that
4100appear after a math expression.
4101
4102iASL: Added support for the TCPA server table to the table compiler and
4103template generator. (The client table was already previously supported)
4104
4105iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
4106identify the iASL compiler.
4107
4108Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
4109multiple times. The new names are ACPI_SIGN_NEGATIVE and
4110ACPI_SIGN_POSITIVE.
4111
4112AcpiHelp: Update to expand help messages for the iASL preprocessor
4113directives.
4114
4115
4116----------------------------------------
411719 June 2015. Summary of changes for version 20150619:
4118
4119Two regressions in version 20150616 have been addressed:
4120
4121Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
4122etc.) This update changes ACPICA to only use the standard headers for
4123functions, or the prototypes for the local versions of the C library
4124functions. Across the source code, this required some additional casts
4125for some Clib invocations for portability. Moved all local prototypes to
4126a new file, acclib.h
4127
4128Fixes several problems with recent changes to the handling of the FACS
4129table that could cause some systems not to boot.
4130
4131
4132----------------------------------------
413316 June 2015. Summary of changes for version 20150616:
4134
4135
41361) ACPICA kernel-resident subsystem:
4137
4138Across the entire ACPICA source code base, the various macros for the C
4139library functions (such as ACPI_STRLEN, etc.) have been removed and
4140replaced by the standard C library names (strlen, etc.) The original
4141purpose for these macros is no longer applicable. This simplification
4142reduces the number of macros used in the ACPICA source code
4143significantly, improving readability and maintainability.
4144
4145Implemented support for a new ACPI table, the OSDT. This table, the
4146"override" SDT, can be loaded directly by the host OS at boot time. It
4147enables the replacement of existing namespace objects that were installed
4148via the DSDT and/or SSDTs. The primary purpose for this is to replace
4149buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
4150for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
4151Moore.
4152
4153Added support for systems with (improperly) two FACS tables -- a "32-bit"
4154table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
4155X field). This change will support both automatically. There continues to
4156be systems found with this issue. This support requires a change to the
4157AcpiSetFirmwareWakingVector interface. Also, a public global variable has
4158been added to allow the host to select which FACS is desired
4159(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
4160details Lv Zheng.
4161
4162Added a new feature to allow for systems that do not contain an FACS.
4163Although this is already supported on hardware-reduced platforms, the
4164feature has been extended for all platforms. The reasoning is that we do
4165not want to abort the entire ACPICA initialization just because the
4166system is seriously buggy and has no FACS.
4167
4168Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
4169not correctly transcribed from the ACPI specification in ACPICA version
417020150515.
4171
4172Implemented support for the _CLS object in the AcpiGetObjectInfo external
4173interface.
4174
4175Updated the definitions of the TCPA and TPM2 ACPI tables to the more
4176recent TCG ACPI Specification, December 14, 2014. Table disassembler and
4177compiler also updated. Note: The TCPA "server" table is not supported by
4178the disassembler/table-compiler at this time.
4179
4180ACPI 6.0: Added definitions for the new GIC version field in the MADT.
4181
4182Example Code and Data Size: These are the sizes for the OS-independent
4183acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4184debug version of the code includes the debug output trace mechanism and
4185has a much larger code and data size.
4186
4187  Current Release:
4188    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
4189    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
4190  Previous Release:
4191    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
4192    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
4193
4194
41952) iASL Compiler/Disassembler and Tools:
4196
4197Disassembler: Fixed a problem with the new symbolic operator disassembler
4198where incorrect ASL code could be emitted in some cases for the "non-
4199commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
4200ShiftRight. The actual problem cases seem to be rather unusual in common
4201ASL code, however. David Box.
4202
4203Modified the linux version of acpidump to obtain ACPI tables from not
4204just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
4205Zheng.
4206
4207iASL: Fixed a problem where the user preprocessor output file (.i)
4208contained extra data that was not expected. The compiler was using this
4209file as a temporary file and passed through #line directives in order to
4210keep compiler error messages in sync with the input file and line number
4211across multiple include files. The (.i) is no longer a temporary file as
4212the compiler uses a new, different file for the original purpose.
4213
4214iASL: Fixed a problem where comments within the original ASL source code
4215file were not passed through to the preprocessor output file, nor any
4216listing files.
4217
4218iASL: Fixed some issues for the handling of the "#include" preprocessor
4219directive and the similar (but not the same) "Include" ASL operator.
4220
4221iASL: Add support for the new OSDT in both the disassembler and compiler.
4222
4223iASL: Fixed a problem with the constant folding support where a Buffer
4224object could be incorrectly generated (incorrectly formed) during a
4225conversion to a Store() operator.
4226
4227AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
4228description text for the _REV predefined name. _REV now permanently
4229returns 2, as per the ACPI 6.0 specification.
4230
4231Debugger: Enhanced the output of the Debug ASL object for references
4232produced by the Index operator. For Buffers and strings, only output the
4233actual byte pointed to by the index. For packages, only print the single
4234package element decoded by the index. Previously, the entire
4235buffer/string/package was emitted.
4236
4237iASL/Table-compiler: Fixed a regression where the "generic" data types
4238were no longer recognized, causing errors.
4239
4240
4241----------------------------------------
424215 May 2015. Summary of changes for version 20150515:
4243
4244This release implements most of ACPI 6.0 as described below.
4245
42461) ACPICA kernel-resident subsystem:
4247
4248Implemented runtime argument checking and return value checking for all
4249new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
4250_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
4251
4252Example Code and Data Size: These are the sizes for the OS-independent
4253acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4254debug version of the code includes the debug output trace mechanism and
4255has a much larger code and data size.
4256
4257  Current Release:
4258    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
4259    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
4260  Previous Release:
4261    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4262    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4263
4264
42652) iASL Compiler/Disassembler and Tools:
4266
4267iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
4268names (argument count validation and return value typechecking.)
4269
4270iASL disassembler and table compiler: implemented support for all new
4271ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
4272
4273iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
4274tables: FADT, MADT.
4275
4276iASL preprocessor: Added a new directive to enable inclusion of binary
4277blobs into ASL code. The new directive is #includebuffer. It takes a
4278binary file as input and emits a named ascii buffer object into the ASL
4279code.
4280
4281AcpiHelp: Added support for all new ACPI 6.0 predefined names.
4282
4283AcpiHelp: Added a new option, -d, to display all iASL preprocessor
4284directives.
4285
4286AcpiHelp: Added a new option, -t, to display all known/supported ACPI
4287tables.
4288
4289
4290----------------------------------------
429110 April 2015. Summary of changes for version 20150410:
4292
4293Reverted a change introduced in version 20150408 that caused
4294a regression in the disassembler where incorrect operator
4295symbols could be emitted.
4296
4297
4298----------------------------------------
429908 April 2015. Summary of changes for version 20150408:
4300
4301
43021) ACPICA kernel-resident subsystem:
4303
4304Permanently set the return value for the _REV predefined name. It now
4305returns 2 (was 5). This matches other ACPI implementations. _REV will be
4306deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
4307for ACPI 2.0 and later. It should never be used to differentiate or
4308identify operating systems.
4309
4310Added the "Windows 2015" string to the _OSI support. ACPICA will now
4311return TRUE to a query with this string.
4312
4313Fixed several issues with the local version of the printf function.
4314
4315Added the C99 compiler option (-std=c99) to the Unix makefiles.
4316
4317  Current Release:
4318    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
4319    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
4320  Previous Release:
4321    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4322    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4323
4324
43252) iASL Compiler/Disassembler and Tools:
4326
4327iASL: Implemented an enhancement to the constant folding feature to
4328transform the parse tree to a simple Store operation whenever possible:
4329    Add (2, 3, X) ==> is converted to: Store (5, X)
4330    X = 2 + 3     ==> is converted to: Store (5, X)
4331
4332Updated support for the SLIC table (Software Licensing Description Table)
4333in both the Data Table compiler and the disassembler. The SLIC table
4334support now conforms to "Microsoft Software Licensing Tables (SLIC and
4335MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
4336following the ACPI header is now defined to be "Proprietary Data", and as
4337such, can only be entered or displayed as a hex data block.
4338
4339Implemented full support for the MSDM table as described in the document
4340above. Note: The format of MSDM is similar to SLIC. Any MSDM data
4341following the ACPI header is defined to be "Proprietary Data", and can
4342only be entered or displayed as a hex data block.
4343
4344Implemented the -Pn option for the iASL Table Compiler (was only
4345implemented for the ASL compiler). This option disables the iASL
4346preprocessor.
4347
4348Disassembler: For disassembly of Data Tables, added a comment field
4349around the Ascii equivalent data that is emitted as part of the "Raw
4350Table Data" block. This prevents the iASL Preprocessor from possible
4351confusion if/when the table is compiled.
4352
4353Disassembler: Added an option (-df) to force the disassembler to assume
4354that the table being disassembled contains valid AML. This feature is
4355useful for disassembling AML files that contain ACPI signatures other
4356than DSDT or SSDT (such as OEMx or other signatures).
4357
4358Changes for the EFI version of the tools:
43591) Fixed a build error/issue
43602) Fixed a cast warning
4361
4362iASL: Fixed a path issue with the __FILE__ operator by making the
4363directory prefix optional within the internal SplitInputFilename
4364function.
4365
4366Debugger: Removed some unused global variables.
4367
4368Tests: Updated the makefile for proper generation of the AAPITS suite.
4369
4370
4371----------------------------------------
437204 February 2015. Summary of changes for version 20150204:
4373
4374ACPICA kernel-resident subsystem:
4375
4376Updated all ACPICA copyrights and signons to 2014. Added the 2014
4377copyright to all module headers and signons, including the standard Linux
4378header. This affects virtually every file in the ACPICA core subsystem,
4379iASL compiler, all ACPICA utilities, and the test suites.
4380
4381Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
4382A raw gpe handling mechanism was created to allow better handling of GPE
4383storms that aren't easily managed by the normal handler. The raw handler
4384allows disabling/renabling of the GPE so that interrupt storms can be
4385avoided in cases where events cannot be timely serviced. In this
4386scenario, handlers should use the AcpiSetGpe() API to disable/enable the
4387GPE. This API will leave the reference counts undisturbed, thereby
4388preventing unintentional clearing of the GPE when the intent in only to
4389temporarily disable it. Raw handlers allow enabling and disabling of a
4390GPE by removing GPE register locking. As such, raw handlers much provide
4391their own locks while using GPE API's to protect access to GPE data
4392structures.
4393Lv Zheng
4394
4395Events: Always modify GPE registers under the GPE lock.
4396Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
4397values. Reported as bug by joe.liu@apple.com.
4398
4399Unix makefiles: Separate option to disable optimizations and
4400_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
4401NOOPT disable option and creates a separate flag (NOFORTIFY) for this
4402purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
4403errors when building ACPICA. This allows disabling the option without
4404also having to disable optimazations.
4405David Box
4406
4407  Current Release:
4408    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
4409    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
4410
4411--
4412--------------------------------------
441307 November 2014. Summary of changes for version 20141107:
4414
4415This release is available at https://acpica.org/downloads
4416
4417This release introduces and implements language extensions to ASL that
4418provide support for symbolic ("C-style") operators and expressions. These
4419language extensions are known collectively as ASL+.
4420
4421
44221) iASL Compiler/Disassembler and Tools:
4423
4424Disassembler: Fixed a problem with disassembly of the UartSerialBus
4425macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
4426Box.
4427
4428Disassembler: Fixed the Unicode macro support to add escape sequences.
4429All non-printable ASCII values are emitted as escape sequences, as well
4430as the standard escapes for quote and backslash. Ensures that the
4431disassembled macro can be correctly recompiled.
4432
4433iASL: Added Printf/Fprintf macros for formatted output. These macros are
4434translated to existing AML Concatenate and Store operations. Printf
4435writes to the ASL Debug object. Fprintf allows the specification of an
4436ASL name as the target. Only a single format specifier is required, %o,
4437since the AML interpreter dynamically converts objects to the required
4438type. David E. Box.
4439
4440    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4441                 (Concatenate (Concatenate (Concatenate ("", Arg0),
4442                 ": Unexpected value for "), Arg1), ", "), Arg2),
4443                 " at line "), Arg3), Debug)
4444
4445    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
4446                 Arg0, Arg1, Arg2, Arg3)
4447
4448    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4449                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
4450
4451    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
4452
4453iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
4454ASL parse tree before the AML code is generated. This allows blocks of
4455ASL code to be removed in order to help locate and identify problem
4456devices and/or code. David E. Box.
4457
4458AcpiExec: Added support (-fi) for an optional namespace object
4459initialization file. This file specifies initial values for namespace
4460objects as necessary for debugging and testing different ASL code paths
4461that may be taken as a result of BIOS options.
4462
4463
44642) Overview of symbolic operator support for ASL (ASL+)
4465-------------------------------------------------------
4466
4467As an extension to the ASL language, iASL implements support for symbolic
4468(C-style) operators for math and logical expressions. This can greatly
4469simplify ASL code as well as improve both readability and
4470maintainability. These language extensions can exist concurrently with
4471all legacy ASL code and expressions.
4472
4473The symbolic extensions are 100% compatible with existing AML
4474interpreters, since no new AML opcodes are created. To implement the
4475extensions, the iASL compiler transforms the symbolic expressions into
4476the legacy ASL/AML equivalents at compile time.
4477
4478Full symbolic expressions are supported, along with the standard C
4479precedence and associativity rules.
4480
4481Full disassembler support for the symbolic expressions is provided, and
4482creates an automatic migration path for existing ASL code to ASL+ code
4483via the disassembly process. By default, the disassembler now emits ASL+
4484code with symbolic expressions. An option (-dl) is provided to force the
4485disassembler to emit legacy ASL code if desired.
4486
4487Below is the complete list of the currently supported symbolic operators
4488with examples. See the iASL User Guide for additional information.
4489
4490
4491ASL+ Syntax      Legacy ASL Equivalent
4492-----------      ---------------------
4493
4494    // Math operators
4495
4496Z = X + Y        Add (X, Y, Z)
4497Z = X - Y        Subtract (X, Y, Z)
4498Z = X * Y        Multiply (X, Y, Z)
4499Z = X / Y        Divide (X, Y, , Z)
4500Z = X % Y        Mod (X, Y, Z)
4501Z = X << Y       ShiftLeft (X, Y, Z)
4502Z = X >> Y       ShiftRight (X, Y, Z)
4503Z = X & Y        And (X, Y, Z)
4504Z = X | Y        Or (X, Y, Z)
4505Z = X ^ Y        Xor (X, Y, Z)
4506Z = ~X           Not (X, Z)
4507X++              Increment (X)
4508X--              Decrement (X)
4509
4510    // Logical operators
4511
4512(X == Y)         LEqual (X, Y)
4513(X != Y)         LNotEqual (X, Y)
4514(X < Y)          LLess (X, Y)
4515(X > Y)          LGreater (X, Y)
4516(X <= Y)         LLessEqual (X, Y)
4517(X >= Y)         LGreaterEqual (X, Y)
4518(X && Y)         LAnd (X, Y)
4519(X || Y)         LOr (X, Y)
4520(!X)             LNot (X)
4521
4522    // Assignment and compound assignment operations
4523
4524X = Y           Store (Y, X)
4525X += Y          Add (X, Y, X)
4526X -= Y          Subtract (X, Y, X)
4527X *= Y          Multiply (X, Y, X)
4528X /= Y          Divide (X, Y, , X)
4529X %= Y          Mod (X, Y, X)
4530X <<= Y         ShiftLeft (X, Y, X)
4531X >>= Y         ShiftRight (X, Y, X)
4532X &= Y          And (X, Y, X)
4533X |= Y          Or (X, Y, X)
4534X ^= Y          Xor (X, Y, X)
4535
4536
45373) ASL+ Examples:
4538-----------------
4539
4540Legacy ASL:
4541        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
4542            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
45430x03FB),
4544            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
4545        {
4546            And (MEMB, 0xFFFFFFF0, SRMB)
4547            Store (MEMB, Local2)
4548            Store (PDBM, Local1)
4549            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
4550            Store (SRMB, MEMB)
4551            Or (PDBM, 0x02, PDBM)
4552        }
4553
4554ASL+ version:
4555        If (((R510 & 0x03FB) == 0x02E0) ||
4556            ((R520 & 0x03FB) == 0x02E0) ||
4557            ((R530 & 0x03FB) == 0x02E0) ||
4558            ((R540 & 0x03FB) == 0x02E0))
4559        {
4560            SRMB = (MEMB & 0xFFFFFFF0)
4561            Local2 = MEMB
4562            Local1 = PDBM
4563            PDBM &= 0xFFFFFFFFFFFFFFF9
4564            MEMB = SRMB
4565            PDBM |= 0x02
4566        }
4567
4568Legacy ASL:
4569        Store (0x1234, Local1)
4570        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
4571        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
4572        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
4573        Store (Index (PKG1, 0x03), Local6)
4574        Store (Add (Local3, Local2), Debug)
4575        Add (Local1, 0x0F, Local2)
4576        Add (Local1, Multiply (Local2, Local3), Local2)
4577        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
4578
4579ASL+ version:
4580        Local1 = 0x1234
4581        Local3 = (((Local1 + TEST) + 0x20) * Local2)
4582        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
4583        Local3 = (Local1 + (TEST + (0x20 * Local2)))
4584        Local6 = Index (PKG1, 0x03)
4585        Debug = (Local3 + Local2)
4586        Local2 = (Local1 + 0x0F)
4587        Local2 = (Local1 + (Local2 * Local3))
4588        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
4589
4590
4591----------------------------------------
459226 September 2014. Summary of changes for version 20140926:
4593
45941) ACPICA kernel-resident subsystem:
4595
4596Updated the GPIO operation region handler interface (GeneralPurposeIo).
4597In order to support GPIO Connection objects with multiple pins, along
4598with the related Field objects, the following changes to the interface
4599have been made: The Address is now defined to be the offset in bits of
4600the field unit from the previous invocation of a Connection. It can be
4601viewed as a "Pin Number Index" into the connection resource descriptor.
4602The BitWidth is the exact bit width of the field. It is usually one bit,
4603but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
4604additional information and examples.
4605
4606GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
4607corresponding _Lxx/_Exx methods are disabled (they may have been enabled
4608by the firmware), so that they cannot fire until they are enabled via
4609AcpiUpdateAllGpes. Rafael J. Wysocki.
4610
4611Added a new return flag for the Event/GPE status interfaces --
4612AcpiGetEventStatus and AcpiGetGpeStatus. The new
4613ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
4614GPE currently has a handler associated with it, and can thus actually
4615affect the system. Lv Zheng.
4616
4617Example Code and Data Size: These are the sizes for the OS-independent
4618acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4619debug version of the code includes the debug output trace mechanism and
4620has a much larger code and data size.
4621
4622  Current Release:
4623    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4624    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4625  Previous Release:
4626    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4627    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4628
46292) iASL Compiler/Disassembler and Tools:
4630
4631iASL: Fixed a memory allocation/free regression introduced in 20140828
4632that could cause the compiler to crash. This was introduced inadvertently
4633during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
46341113.
4635
4636iASL: Removed two error messages that have been found to create false
4637positives, until they can be fixed and fully validated (ACPICA BZ 1112):
46381) Illegal forward reference within a method
46392) Illegal reference across two methods
4640
4641iASL: Implemented a new option (-lm) to create a hardware mapping file
4642that summarizes all GPIO, I2C, SPI, and UART connections. This option
4643works for both the compiler and disassembler. See the iASL compiler user
4644guide for additional information and examples (section 6.4.6).
4645
4646AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
4647version 2. This corrects the AE_BAD_HEADER exception seen on systems with
4648a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
4649
4650AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
4651unless STDIN is actually a terminal. Assists with batch-mode processing.
4652ACPICA BZ 1114.
4653
4654Disassembler/AcpiHelp: Added another large group of recognized _HID
4655values.
4656
4657
4658----------------------------------------
465928 August 2014. Summary of changes for version 20140828:
4660
46611) ACPICA kernel-resident subsystem:
4662
4663Fixed a problem related to the internal use of the Timer() operator where
4664a 64-bit divide could cause an attempted link to a double-precision math
4665library. This divide is not actually necessary, so the code was
4666restructured to eliminate it. Lv Zheng.
4667
4668ACPI 5.1: Added support for the runtime validation of the _DSD package
4669(similar to the iASL support).
4670
4671ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
4672SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
4673
4674Example Code and Data Size: These are the sizes for the OS-independent
4675acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4676debug version of the code includes the debug output trace mechanism and
4677has a much larger code and data size.
4678
4679  Current Release:
4680    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4681    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4682  Previous Release:
4683    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
4684    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4685
46862) iASL Compiler/Disassembler and Tools:
4687
4688AcpiExec: Fixed a problem on unix systems where the original terminal
4689state was not always properly restored upon exit. Seen when using the -v
4690option. ACPICA BZ 1104.
4691
4692iASL: Fixed a problem with the validation of the ranges/length within the
4693Memory24 resource descriptor. There was a boundary condition when the
4694range was equal to the (length -1) caused by the fact that these values
4695are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4696
4697Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4698polarity
4699flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4700is
4701now supported properly.
4702
4703ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4704in the disassembler, data table compiler, and table template generator.
4705
4706iASL: Added a requirement for Device() objects that one of either a _HID
4707or _ADR must exist within the scope of a Device, as per the ACPI
4708specification. Remove a similar requirement that was incorrectly in place
4709for the _DSD object.
4710
4711iASL: Added error detection for illegal named references within control
4712methods that would cause runtime failures. Now trapped as errors are: 1)
4713References to objects within a non-parent control method. 2) Forward
4714references (within a method) -- for control methods, AML interpreters use
4715a one-pass parse of control methods. ACPICA BZ 1008.
4716
4717iASL: Added error checking for dependencies related to the _PSx power
4718methods. ACPICA BZ 1029.
47191) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4720_PS3.
47212) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4722scope.
4723
4724iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4725deploying the existing object and string caches and adding new caches for
4726the table compiler.
4727
4728iASL: Split the huge parser source file into multiple subfiles to improve
4729manageability. Generation now requires the M4 macro preprocessor, which
4730is part of the Bison distribution on both unix and windows platforms.
4731
4732AcpiSrc: Fixed and removed all extraneous warnings generated during
4733entire ACPICA source code scan and/or conversion.
4734
4735
4736----------------------------------------
4737
473824 July 2014. Summary of changes for version 20140724:
4739
4740The ACPI 5.1 specification has been released and is available at:
4741http://uefi.org/specs/access
4742
4743
47440) ACPI 5.1 support in ACPICA:
4745
4746ACPI 5.1 is fully supported in ACPICA as of this release.
4747
4748New predefined names. Support includes iASL and runtime ACPICA
4749validation.
4750    _CCA (Cache Coherency Attribute).
4751    _DSD (Device-Specific Data). David Box.
4752
4753Modifications to existing ACPI tables. Support includes headers, iASL
4754Data Table compiler, disassembler, and the template generator.
4755    FADT - New fields and flags. Graeme Gregory.
4756    GTDT - One new subtable and new fields. Tomasz Nowicki.
4757    MADT - Two new subtables. Tomasz Nowicki.
4758    PCCT - One new subtable.
4759
4760Miscellaneous.
4761    New notification type for System Resource Affinity change events.
4762
4763
47641) ACPICA kernel-resident subsystem:
4765
4766Fixed a regression introduced in 20140627 where a fault can happen during
4767the deletion of Alias AML namespace objects. The problem affected both
4768the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4769
4770Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4771simple mechanism to enable wake GPEs that have no associated handler or
4772control method. Rafael Wysocki.
4773
4774Updated the AcpiEnableGpe interface to disallow the enable if there is no
4775handler or control method associated with the particular GPE. This will
4776help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4777
4778Updated GPE handling and dispatch by disabling the GPE before clearing
4779the status bit for edge-triggered GPEs. Lv Zheng.
4780
4781Added Timer() support to the AML Debug object. The current timer value is
4782now displayed with each invocation of (Store to) the debug object to
4783enable simple generation of execution times for AML code (method
4784execution for example.) ACPICA BZ 1093.
4785
4786Example Code and Data Size: These are the sizes for the OS-independent
4787acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4788debug version of the code includes the debug output trace mechanism and
4789has a much larger code and data size.
4790
4791  Current Release:
4792    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
4793    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4794  Previous Release:
4795    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4796    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4797
4798
47992) iASL Compiler/Disassembler and Tools:
4800
4801Fixed an issue with the recently added local printf implementation,
4802concerning width/precision specifiers that could cause incorrect output.
4803Lv Zheng. ACPICA BZ 1094.
4804
4805Disassembler: Added support to detect buffers that contain UUIDs and
4806disassemble them to an invocation of the ToUUID operator. Also emit
4807commented descriptions of known ACPI-related UUIDs.
4808
4809AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4810-u. Adds three new files.
4811
4812iASL: Update table compiler and disassembler for DMAR table changes that
4813were introduced in September 2013. With assistance by David Woodhouse.
4814
4815----------------------------------------
481627 June 2014. Summary of changes for version 20140627:
4817
48181) ACPICA kernel-resident subsystem:
4819
4820Formatted Output: Implemented local versions of standard formatted output
4821utilities such as printf, etc. Over time, it has been discovered that
4822there are in fact many portability issues with printf, and the addition
4823of this feature will fix/prevent these issues once and for all. Some
4824known issues are summarized below:
4825
48261) Output of 64-bit values is not portable. For example, UINT64 is %ull
4827for the Linux kernel and is %uI64 for some MSVC versions.
48282) Invoking printf consistently in a manner that is portable across both
482932-bit and 64-bit platforms is difficult at best in many situations.
48303) The output format for pointers varies from system to system (leading
4831zeros especially), and leads to inconsistent output from ACPICA across
4832platforms.
48334) Certain platform-specific printf formats may conflict with ACPICA use.
48345) If there is no local C library available, ACPICA now has local support
4835for printf.
4836
4837-- To address these printf issues in a complete manner, ACPICA now
4838directly implements a small subset of printf format specifiers, only
4839those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4840
4841Implemented support for ACPICA generation within the EFI environment.
4842Initially, the AcpiDump utility is supported in the UEFI shell
4843environment. Lv Zheng.
4844
4845Added a new external interface, AcpiLogError, to improve ACPICA
4846portability. This allows the host to redirect error messages from the
4847ACPICA utilities. Lv Zheng.
4848
4849Added and deployed new OSL file I/O interfaces to improve ACPICA
4850portability:
4851  AcpiOsOpenFile
4852  AcpiOsCloseFile
4853  AcpiOsReadFile
4854  AcpiOsWriteFile
4855  AcpiOsGetFileOffset
4856  AcpiOsSetFileOffset
4857There are C library implementations of these functions in the new file
4858service_layers/oslibcfs.c -- however, the functions can be implemented by
4859the local host in any way necessary. Lv Zheng.
4860
4861Implemented a mechanism to disable/enable ACPI table checksum validation
4862at runtime. This can be useful when loading tables very early during OS
4863initialization when it may not be possible to map the entire table in
4864order to compute the checksum. Lv Zheng.
4865
4866Fixed a buffer allocation issue for the Generic Serial Bus support.
4867Originally, a fixed buffer length was used. This change allows for
4868variable-length buffers based upon the protocol indicated by the field
4869access attributes. Reported by Lan Tianyu. Lv Zheng.
4870
4871Fixed a problem where an object detached from a namespace node was not
4872properly terminated/cleared and could cause a circular list problem if
4873reattached. ACPICA BZ 1063. David Box.
4874
4875Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4876
4877Fixed a possible memory leak in an error return path within the function
4878AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4879
4880Example Code and Data Size: These are the sizes for the OS-independent
4881acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4882debug version of the code includes the debug output trace mechanism and
4883has a much larger code and data size.
4884
4885  Current Release:
4886    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4887    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4888  Previous Release:
4889    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4890    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4891
4892
48932) iASL Compiler/Disassembler and Tools:
4894
4895Disassembler: Add dump of ASCII equivalent text within a comment at the
4896end of each line of the output for the Buffer() ASL operator.
4897
4898AcpiDump: Miscellaneous changes:
4899  Fixed repetitive table dump in -n mode.
4900  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4901the ACPI 2.0 GUID fails.
4902
4903iASL: Fixed a problem where the compiler could fault if incorrectly given
4904an acpidump output file as input. ACPICA BZ 1088. David Box.
4905
4906AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4907they are invoked without any arguments.
4908
4909Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
49101086. Colin Ian King.
4911
4912Disassembler: Cleaned up a block of code that extracts a parent Op
4913object. Added a comment that explains that the parent is guaranteed to be
4914valid in this case. ACPICA BZ 1069.
4915
4916
4917----------------------------------------
491824 April 2014. Summary of changes for version 20140424:
4919
49201) ACPICA kernel-resident subsystem:
4921
4922Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4923Some of these tables are known to contain a trailing NULL entry. Lv
4924Zheng.
4925
4926Removed an extraneous error message for the case where there are a large
4927number of system GPEs (> 124). This was the "32-bit FADT register is too
4928long to convert to GAS struct" message, which is irrelevant for GPEs
4929since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4930(limited capacity) GAS bit length. Also, several changes to ensure proper
4931support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4932internally.
4933
4934Implemented and deployed additional configuration support for the public
4935ACPICA external interfaces. Entire classes of interfaces can now be
4936easily modified or configured out, replaced by stubbed inline functions
4937by default. Lv Zheng.
4938
4939Moved all public ACPICA runtime configuration globals to the public
4940ACPICA external interface file for convenience. Also, removed some
4941obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4942
4943Documentation: Added a new section to the ACPICA reference describing the
4944maximum number of GPEs that can be supported by the FADT-defined GPEs in
4945block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4946reference.
4947
4948Example Code and Data Size: These are the sizes for the OS-independent
4949acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4950debug version of the code includes the debug output trace mechanism and
4951has a much larger code and data size.
4952
4953  Current Release:
4954    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4955    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4956  Previous Release:
4957    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4958    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4959
4960
49612) iASL Compiler/Disassembler and Tools:
4962
4963iASL and disassembler: Add full support for the LPIT table (Low Power
4964Idle Table). Includes support in the disassembler, data table compiler,
4965and template generator.
4966
4967AcpiDump utility:
49681) Add option to force the use of the RSDT (over the XSDT).
49692) Improve validation of the RSDP signature (use 8 chars instead of 4).
4970
4971iASL: Add check for predefined packages that are too large.  For
4972predefined names that contain subpackages, check if each subpackage is
4973too large. (Check for too small already exists.)
4974
4975Debugger: Updated the GPE command (which simulates a GPE by executing the
4976GPE code paths in ACPICA). The GPE device is now optional, and defaults
4977to the GPE 0/1 FADT-defined blocks.
4978
4979Unix application OSL: Update line-editing support. Add additional error
4980checking and take care not to reset terminal attributes on exit if they
4981were never set. This should help guarantee that the terminal is always
4982left in the previous state on program exit.
4983
4984
4985----------------------------------------
498625 March 2014. Summary of changes for version 20140325:
4987
49881) ACPICA kernel-resident subsystem:
4989
4990Updated the auto-serialize feature for control methods. This feature
4991automatically serializes all methods that create named objects in order
4992to prevent runtime errors. The update adds support to ignore the
4993currently executing AML SyncLevel when invoking such a method, in order
4994to prevent disruption of any existing SyncLevel priorities that may exist
4995in the AML code. Although the use of SyncLevels is relatively rare, this
4996change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4997appear on some machines starting with the 20140214 release.
4998
4999Added a new external interface to allow the host to install ACPI tables
5000very early, before the namespace is even created. AcpiInstallTable gives
5001the host additional flexibility for ACPI table management. Tables can be
5002installed directly by the host as if they had originally appeared in the
5003XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
5004(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
5005with additional internal restructuring and cleanup. See the ACPICA
5006Reference for interface details. Lv Zheng.
5007
5008Added validation of the checksum for all incoming dynamically loaded
5009tables (via external interfaces or via AML Load/LoadTable operators). Lv
5010Zheng.
5011
5012Updated the use of the AcpiOsWaitEventsComplete interface during Notify
5013and GPE handler removal. Restructured calls to eliminate possible race
5014conditions. Lv Zheng.
5015
5016Added a warning for the use/execution of the ASL/AML Unload (table)
5017operator. This will help detect and identify machines that use this
5018operator if and when it is ever used. This operator has never been seen
5019in the field and the usage model and possible side-effects of the drastic
5020runtime action of a full table removal are unknown.
5021
5022Reverted the use of #pragma push/pop which was introduced in the 20140214
5023release. It appears that push and pop are not implemented by enough
5024compilers to make the use of this feature feasible for ACPICA at this
5025time. However, these operators may be deployed in a future ACPICA
5026release.
5027
5028Added the missing EXPORT_SYMBOL macros for the install and remove SCI
5029handler interfaces.
5030
5031Source code generation:
50321) Disabled the use of the "strchr" macro for the gcc-specific
5033generation. For some versions of gcc, this macro can periodically expose
5034a compiler bug which in turn causes compile-time error(s).
50352) Added support for PPC64 compilation. Colin Ian King.
5036
5037Example Code and Data Size: These are the sizes for the OS-independent
5038acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5039debug version of the code includes the debug output trace mechanism and
5040has a much larger code and data size.
5041
5042  Current Release:
5043    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
5044    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
5045  Previous Release:
5046    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
5047    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
5048
5049
50502) iASL Compiler/Disassembler and Tools:
5051
5052Disassembler: Added several new features to improve the readability of
5053the resulting ASL code. Extra information is emitted within comment
5054fields in the ASL code:
50551) Known _HID/_CID values are decoded to descriptive text.
50562) Standard values for the Notify() operator are decoded to descriptive
5057text.
50583) Target operands are expanded to full pathnames (in a comment) when
5059possible.
5060
5061Disassembler: Miscellaneous updates for extern() handling:
50621) Abort compiler if file specified by -fe option does not exist.
50632) Silence unnecessary warnings about argument count mismatches.
50643) Update warning messages concerning unresolved method externals.
50654) Emit "UnknownObj" keyword for externals whose type cannot be
5066determined.
5067
5068AcpiHelp utility:
50691) Added the -a option to display both the ASL syntax and the AML
5070encoding for an input ASL operator. This effectively displays all known
5071information about an ASL operator with one AcpiHelp invocation.
50722) Added substring match support (similar to a wildcard) for the -i
5073(_HID/PNP IDs) option.
5074
5075iASL/Disassembler: Since this tool does not yet support execution on big-
5076endian machines, added detection of endianness and an error message if
5077execution is attempted on big-endian. Support for big-endian within iASL
5078is a feature that is on the ACPICA to-be-done list.
5079
5080AcpiBin utility:
50811) Remove option to extract binary files from an acpidump; this function
5082is made obsolete by the AcpiXtract utility.
50832) General cleanup of open files and allocated buffers.
5084
5085
5086----------------------------------------
508714 February 2014. Summary of changes for version 20140214:
5088
50891) ACPICA kernel-resident subsystem:
5090
5091Implemented a new mechanism to proactively prevent problems with ill-
5092behaved reentrant control methods that create named ACPI objects. This
5093behavior is illegal as per the ACPI specification, but is nonetheless
5094frequently seen in the field. Previously, this could lead to an
5095AE_ALREADY_EXISTS exception if the method was actually entered by more
5096than one thread. This new mechanism detects such methods at table load
5097time and marks them "serialized" to prevent reentrancy. A new global
5098option, AcpiGbl_AutoSerializeMethods, has been added to disable this
5099feature if desired. This mechanism and global option obsoletes and
5100supersedes the previous AcpiGbl_SerializeAllMethods option.
5101
5102Added the "Windows 2013" string to the _OSI support. ACPICA will now
5103respond TRUE to _OSI queries with this string. It is the stated policy of
5104ACPICA to add new strings to the _OSI support as soon as possible after
5105they are defined. See the full ACPICA _OSI policy which has been added to
5106the utilities/utosi.c file.
5107
5108Hardened/updated the _PRT return value auto-repair code:
51091) Do not abort the repair on a single subpackage failure, continue to
5110check all subpackages.
51112) Add check for the minimum subpackage length (4).
51123) Properly handle extraneous NULL package elements.
5113
5114Added support to avoid the possibility of infinite loops when traversing
5115object linked lists. Never allow an infinite loop, even in the face of
5116corrupted object lists.
5117
5118ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
5119pack(pop) directives to ensure that the ACPICA headers are independent of
5120compiler settings or other host headers.
5121
5122Example Code and Data Size: These are the sizes for the OS-independent
5123acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5124debug version of the code includes the debug output trace mechanism and
5125has a much larger code and data size.
5126
5127  Current Release:
5128    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
5129    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
5130  Previous Release:
5131    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
5132    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
5133
5134
51352) iASL Compiler/Disassembler and Tools:
5136
5137iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
5138first reserved field was incorrectly forced to have a value of zero. This
5139change correctly forces the field to have a value of one. ACPICA BZ 1081.
5140
5141Debugger: Added missing support for the "Extra" and "Data" subobjects
5142when displaying object data.
5143
5144Debugger: Added support to display entire object linked lists when
5145displaying object data.
5146
5147iASL: Removed the obsolete -g option to obtain ACPI tables from the
5148Windows registry. This feature has been superseded by the acpidump
5149utility.
5150
5151
5152----------------------------------------
515314 January 2014. Summary of changes for version 20140114:
5154
51551) ACPICA kernel-resident subsystem:
5156
5157Updated all ACPICA copyrights and signons to 2014. Added the 2014
5158copyright to all module headers and signons, including the standard Linux
5159header. This affects virtually every file in the ACPICA core subsystem,
5160iASL compiler, all ACPICA utilities, and the test suites.
5161
5162Improved parameter validation for AcpiInstallGpeBlock. Added the
5163following checks:
51641) The incoming device handle refers to type ACPI_TYPE_DEVICE.
51652) There is not already a GPE block attached to the device.
5166Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
5167device.
5168
5169Correctly support "references" in the ACPI_OBJECT. This change fixes the
5170support to allow references (namespace nodes) to be passed as arguments
5171to control methods via the evaluate object interface. This is probably
5172most useful for testing purposes, however.
5173
5174Improved support for 32/64 bit physical addresses in printf()-like
5175output. This change improves the support for physical addresses in printf
5176debug statements and other output on both 32-bit and 64-bit hosts. It
5177consistently outputs the appropriate number of bytes for each host. The
5178%p specifier is unsatisfactory since it does not emit uniform output on
5179all hosts/clib implementations (on some, leading zeros are not supported,
5180leading to difficult-to-read output).
5181
5182Example Code and Data Size: These are the sizes for the OS-independent
5183acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5184debug version of the code includes the debug output trace mechanism and
5185has a much larger code and data size.
5186
5187  Current Release:
5188    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
5189    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
5190  Previous Release:
5191    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
5192    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
5193
5194
51952) iASL Compiler/Disassembler and Tools:
5196
5197iASL: Fix a possible fault when using the Connection() operator. Fixes a
5198problem if the parent Field definition for the Connection operator refers
5199to an operation region that does not exist. ACPICA BZ 1064.
5200
5201AcpiExec: Load of local test tables is now optional. The utility has the
5202capability to load some various tables to test features of ACPICA.
5203However, there are enough of them that the output of the utility became
5204confusing. With this change, only the required local tables are displayed
5205(RSDP, XSDT, etc.) along with the actual tables loaded via the command
5206line specification. This makes the default output simler and easier to
5207understand. The -el command line option restores the original behavior
5208for testing purposes.
5209
5210AcpiExec: Added support for overlapping operation regions. This change
5211expands the simulation of operation regions by supporting regions that
5212overlap within the given address space. Supports SystemMemory and
5213SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
5214
5215AcpiExec: Added region handler support for PCI_Config and EC spaces. This
5216allows AcpiExec to simulate these address spaces, similar to the current
5217support for SystemMemory and SystemIO.
5218
5219Debugger: Added new command to read/write/compare all namespace objects.
5220The command "test objects" will exercise the entire namespace by writing
5221new values to each data object, and ensuring that the write was
5222successful. The original value is then restored and verified.
5223
5224Debugger: Added the "test predefined" command. This change makes this
5225test public and puts it under the new "test" command. The test executes
5226each and every predefined name within the current namespace.
5227
5228
5229----------------------------------------
523018 December 2013. Summary of changes for version 20131218:
5231
5232Global note: The ACPI 5.0A specification was released this month. There
5233are no changes needed for ACPICA since this release of ACPI is an
5234errata/clarification release. The specification is available at
5235acpi.info.
5236
5237
52381) ACPICA kernel-resident subsystem:
5239
5240Added validation of the XSDT root table if it is present. Some older
5241platforms contain an XSDT that is ill-formed or otherwise invalid (such
5242as containing some or all entries that are NULL pointers). This change
5243adds a new function to validate the XSDT before actually using it. If the
5244XSDT is found to be invalid, ACPICA will now automatically fall back to
5245using the RSDT instead. Original implementation by Zhao Yakui. Ported to
5246ACPICA and enhanced by Lv Zheng and Bob Moore.
5247
5248Added a runtime option to ignore the XSDT and force the use of the RSDT.
5249This change adds a runtime option that will force ACPICA to use the RSDT
5250instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
5251requires that an XSDT be used instead of the RSDT, the XSDT has been
5252found to be corrupt or ill-formed on some machines. Lv Zheng.
5253
5254Added a runtime option to favor 32-bit FADT register addresses over the
525564-bit addresses. This change adds an option to favor 32-bit FADT
5256addresses when there is a conflict between the 32-bit and 64-bit versions
5257of the same register. The default behavior is to use the 64-bit version
5258in accordance with the ACPI specification. This can now be overridden via
5259the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
5260
5261During the change above, the internal "Convert FADT" and "Verify FADT"
5262functions have been merged to simplify the code, making it easier to
5263understand and maintain. ACPICA BZ 933.
5264
5265Improve exception reporting and handling for GPE block installation.
5266Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
5267status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
5268
5269Added helper macros to extract bus/segment numbers from the HEST table.
5270This change adds two macros to extract the encoded bus and segment
5271numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
5272Betty Dall <betty.dall@hp.com>
5273
5274Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
5275by ACPICA. It is not a public macro, so it should have no effect on
5276existing OSV code. Lv Zheng.
5277
5278Example Code and Data Size: These are the sizes for the OS-independent
5279acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5280debug version of the code includes the debug output trace mechanism and
5281has a much larger code and data size.
5282
5283  Current Release:
5284    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
5285    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
5286  Previous Release:
5287    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
5288    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
5289
5290
52912) iASL Compiler/Disassembler and Tools:
5292
5293Disassembler: Improved pathname support for emitted External()
5294statements. This change adds full pathname support for external names
5295that have been resolved internally by the inclusion of additional ACPI
5296tables (via the iASL -e option). Without this change, the disassembler
5297can emit multiple externals for the same object, or it become confused
5298when the Scope() operator is used on an external object. Overall, greatly
5299improves the ability to actually recompile the emitted ASL code when
5300objects a referenced across multiple ACPI tables. Reported by Michael
5301Tsirkin (mst@redhat.com).
5302
5303Tests/ASLTS: Updated functional control suite to execute with no errors.
5304David Box. Fixed several errors related to the testing of the interpreter
5305slack mode. Lv Zheng.
5306
5307iASL: Added support to detect names that are declared within a control
5308method, but are unused (these are temporary names that are only valid
5309during the time the method is executing). A remark is issued for these
5310cases. ACPICA BZ 1022.
5311
5312iASL: Added full support for the DBG2 table. Adds full disassembler,
5313table compiler, and template generator support for the DBG2 table (Debug
5314Port 2 table).
5315
5316iASL: Added full support for the PCCT table, update the table definition.
5317Updates the PCCT table definition in the actbl3.h header and adds table
5318compiler and template generator support.
5319
5320iASL: Added an option to emit only error messages (no warnings/remarks).
5321The -ve option will enable only error messages, warnings and remarks are
5322suppressed. This can simplify debugging when only the errors are
5323important, such as when an ACPI table is disassembled and there are many
5324warnings and remarks -- but only the actual errors are of real interest.
5325
5326Example ACPICA code (source/tools/examples): Updated the example code so
5327that it builds to an actual working program, not just example code. Added
5328ACPI tables and execution of an example control method in the DSDT. Added
5329makefile support for Unix generation.
5330
5331
5332----------------------------------------
533315 November 2013. Summary of changes for version 20131115:
5334
5335This release is available at https://acpica.org/downloads
5336
5337
53381) ACPICA kernel-resident subsystem:
5339
5340Resource Manager: Fixed loop termination for the "get AML length"
5341function. The loop previously had an error termination on a NULL resource
5342pointer, which can never happen since the loop simply increments a valid
5343resource pointer. This fix changes the loop to terminate with an error on
5344an invalid end-of-buffer condition. The problem can be seen as an
5345infinite loop by callers to AcpiSetCurrentResources with an invalid or
5346corrupted resource descriptor, or a resource descriptor that is missing
5347an END_TAG descriptor. Reported by Dan Carpenter
5348<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
5349
5350Table unload and ACPICA termination: Delete all attached data objects
5351during namespace node deletion. This fix updates namespace node deletion
5352to delete the entire list of attached objects (attached via
5353AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
53541024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
5355
5356ACPICA termination: Added support to delete all objects attached to the
5357root namespace node. This fix deletes any and all objects that have been
5358attached to the root node via AcpiAttachData. Previously, none of these
5359objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
5360
5361Debug output: Do not emit the function nesting level for the in-kernel
5362build. The nesting level is really only useful during a single-thread
5363execution. Therefore, only enable this output for the AcpiExec utility.
5364Also, only emit the thread ID when executing under AcpiExec (Context
5365switches are still always detected and a message is emitted). ACPICA BZ
5366972.
5367
5368Example Code and Data Size: These are the sizes for the OS-independent
5369acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5370debug version of the code includes the debug output trace mechanism and
5371has a much larger code and data size.
5372
5373  Current Release:
5374    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
5375    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
5376  Previous Release:
5377    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
5378    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
5379
5380
53812) iASL Compiler/Disassembler and Tools:
5382
5383AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
5384correct portable POSIX header for terminal control functions.
5385
5386Disassembler: Fixed control method invocation issues related to the use
5387of the CondRefOf() operator. The problem is seen in the disassembly where
5388control method invocations may not be disassembled properly if the
5389control method name has been used previously as an argument to CondRefOf.
5390The solution is to not attempt to emit an external declaration for the
5391CondRefOf target (it is not necessary in the first place). This prevents
5392disassembler object type confusion. ACPICA BZ 988.
5393
5394Unix Makefiles: Added an option to disable compiler optimizations and the
5395_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
5396with optimizations (reportedly, gcc 4.4 for example). This change adds a
5397command line option for make (NOOPT) that disables all compiler
5398optimizations and the _FORTIFY_SOURCE compiler flag. The default
5399optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
54001034. Lv Zheng, Bob Moore.
5401
5402Tests/ASLTS: Added options to specify individual test cases and modes.
5403This allows testers running aslts.sh to optionally specify individual
5404test modes and test cases. Also added an option to disable the forced
5405generation of the ACPICA tools from source if desired. Lv Zheng.
5406
5407----------------------------------------
540827 September 2013. Summary of changes for version 20130927:
5409
5410This release is available at https://acpica.org/downloads
5411
5412
54131) ACPICA kernel-resident subsystem:
5414
5415Fixed a problem with store operations to reference objects. This change
5416fixes a problem where a Store operation to an ArgX object that contained
5417a
5418reference to a field object did not complete the automatic dereference
5419and
5420then write to the actual field object. Instead, the object type of the
5421field object was inadvertently changed to match the type of the source
5422operand. The new behavior will actually write to the field object (buffer
5423field or field unit), thus matching the correct ACPI-defined behavior.
5424
5425Implemented support to allow the host to redefine individual OSL
5426prototypes. This change enables the host to redefine OSL prototypes found
5427in the acpiosxf.h file. This allows the host to implement OSL interfaces
5428with a macro or inlined function. Further, it allows the host to add any
5429additional required modifiers such as __iomem, __init, __exit, etc., as
5430necessary on a per-interface basis. Enables maximum flexibility for the
5431OSL interfaces. Lv Zheng.
5432
5433Hardcoded the access width for the FADT-defined reset register. The ACPI
5434specification requires the reset register width to be 8 bits. ACPICA now
5435hardcodes the width to 8 and ignores the FADT width value. This provides
5436compatibility with other ACPI implementations that have allowed BIOS code
5437with bad register width values to go unnoticed. Matthew Garett, Bob
5438Moore,
5439Lv Zheng.
5440
5441Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
5442used
5443in the OSL header (acpiosxf). The change modifies the position of this
5444macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
5445build issues if the OSL defines the implementation of the interface to be
5446an inline stub function. Lv Zheng.
5447
5448Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
5449initialization interfaces. This change adds a new macro for the main init
5450and terminate external interfaces in order to support hosts that require
5451additional or different processing for these functions. Changed from
5452ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
5453Zheng, Bob Moore.
5454
5455Cleaned up the memory allocation macros for configurability. In the
5456common
5457case, the ACPI_ALLOCATE and related macros now resolve directly to their
5458respective AcpiOs* OSL interfaces. Two options:
54591) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
5460default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
54612) For AcpiExec (and for debugging), the macros can optionally be
5462resolved
5463to the local ACPICA interfaces that track each allocation (local tracking
5464is used to immediately detect memory leaks).
5465Lv Zheng.
5466
5467Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
5468to predefine this macro to either TRUE or FALSE during the system build.
5469
5470Replaced __FUNCTION_ with __func__ in the gcc-specific header.
5471
5472Example Code and Data Size: These are the sizes for the OS-independent
5473acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5474debug version of the code includes the debug output trace mechanism and
5475has a much larger code and data size.
5476
5477  Current Release:
5478    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
5479    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
5480  Previous Release:
5481    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5482    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5483
5484
54852) iASL Compiler/Disassembler and Tools:
5486
5487iASL: Implemented wildcard support for the -e option. This simplifies use
5488when there are many SSDTs that must be included to resolve external
5489method
5490declarations. ACPICA BZ 1041. Example:
5491    iasl -e ssdt*.dat -d dsdt.dat
5492
5493AcpiExec: Add history/line-editing for Unix/Linux systems. This change
5494adds a portable module that implements full history and limited line
5495editing for Unix and Linux systems. It does not use readline() due to
5496portability issues. Instead it uses the POSIX termio interface to put the
5497terminal in raw input mode so that the various special keys can be
5498trapped
5499(such as up/down-arrow for history support and left/right-arrow for line
5500editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
5501
5502AcpiXtract: Add support to handle (ignore) "empty" lines containing only
5503one or more spaces. This provides compatible with early or different
5504versions of the AcpiDump utility. ACPICA BZ 1044.
5505
5506AcpiDump: Do not ignore tables that contain only an ACPI table header.
5507Apparently, some BIOSs create SSDTs that contain an ACPI table header but
5508no other data. This change adds support to dump these tables. Any tables
5509shorter than the length of an ACPI table header remain in error (an error
5510message is emitted). Reported by Yi Li.
5511
5512Debugger: Echo actual command along with the "unknown command" message.
5513
5514----------------------------------------
551523 August 2013. Summary of changes for version 20130823:
5516
55171) ACPICA kernel-resident subsystem:
5518
5519Implemented support for host-installed System Control Interrupt (SCI)
5520handlers. Certain ACPI functionality requires the host to handle raw
5521SCIs. For example, the "SCI Doorbell" that is defined for memory power
5522state support requires the host device driver to handle SCIs to examine
5523if the doorbell has been activated. Multiple SCI handlers can be
5524installed to allow for future expansion. New external interfaces are
5525AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
5526details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
5527
5528Operation region support: Never locally free the handler "context"
5529pointer. This change removes some dangerous code that attempts to free
5530the handler context pointer in some (rare) circumstances. The owner of
5531the handler owns this pointer and the ACPICA code should never touch it.
5532Although not seen to be an issue in any kernel, it did show up as a
5533problem (fault) under AcpiExec. Also, set the internal storage field for
5534the context pointer to zero when the region is deactivated, simply for
5535sanity. David Box. ACPICA BZ 1039.
5536
5537AcpiRead: On error, do not modify the return value target location. If an
5538error happens in the middle of a split 32/32 64-bit I/O operation, do not
5539modify the target of the return value pointer. Makes the code consistent
5540with the rest of ACPICA. Bjorn Helgaas.
5541
5542Example Code and Data Size: These are the sizes for the OS-independent
5543acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5544debug version of the code includes the debug output trace mechanism and
5545has a much larger code and data size.
5546
5547  Current Release:
5548    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5549    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5550  Previous Release:
5551    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5552    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
5553
5554
55552) iASL Compiler/Disassembler and Tools:
5556
5557AcpiDump: Implemented several new features and fixed some problems:
55581) Added support to dump the RSDP, RSDT, and XSDT tables.
55592) Added support for multiple table instances (SSDT, UEFI).
55603) Added option to dump "customized" (overridden) tables (-c).
55614) Fixed a problem where some table filenames were improperly
5562constructed.
55635) Improved some error messages, removed some unnecessary messages.
5564
5565iASL: Implemented additional support for disassembly of ACPI tables that
5566contain invocations of external control methods. The -fe<file> option
5567allows the import of a file that specifies the external methods along
5568with the required number of arguments for each -- allowing for the
5569correct disassembly of the table. This is a workaround for a limitation
5570of AML code where the disassembler often cannot determine the number of
5571arguments required for an external control method and generates incorrect
5572ASL code. See the iASL reference for details. ACPICA BZ 1030.
5573
5574Debugger: Implemented a new command (paths) that displays the full
5575pathnames (namepaths) and object types of all objects in the namespace.
5576This is an alternative to the namespace command.
5577
5578Debugger: Implemented a new command (sci) that invokes the SCI dispatch
5579mechanism and any installed handlers.
5580
5581iASL: Fixed a possible segfault for "too many parent prefixes" condition.
5582This can occur if there are too many parent prefixes in a namepath (for
5583example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
5584
5585Application OSLs: Set the return value for the PCI read functions. These
5586functions simply return AE_OK, but should set the return value to zero
5587also. This change implements this. ACPICA BZ 1038.
5588
5589Debugger: Prevent possible command line buffer overflow. Increase the
5590size of a couple of the debugger line buffers, and ensure that overflow
5591cannot happen. ACPICA BZ 1037.
5592
5593iASL: Changed to abort immediately on serious errors during the parsing
5594phase. Due to the nature of ASL, there is no point in attempting to
5595compile these types of errors, and they typically end up causing a
5596cascade of hundreds of errors which obscure the original problem.
5597
5598----------------------------------------
559925 July 2013. Summary of changes for version 20130725:
5600
56011) ACPICA kernel-resident subsystem:
5602
5603Fixed a problem with the DerefOf operator where references to FieldUnits
5604and BufferFields incorrectly returned the parent object, not the actual
5605value of the object. After this change, a dereference of a FieldUnit
5606reference results in a read operation on the field to get the value, and
5607likewise, the appropriate BufferField value is extracted from the target
5608buffer.
5609
5610Fixed a problem where the _WAK method could cause a fault under these
5611circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
5612method returned no value. The problem is rarely seen because most kernels
5613run ACPICA in slack mode.
5614
5615For the DerefOf operator, a fatal error now results if an attempt is made
5616to dereference a reference (created by the Index operator) to a NULL
5617package element. Provides compatibility with other ACPI implementations,
5618and this behavior will be added to a future version of the ACPI
5619specification.
5620
5621The ACPI Power Management Timer (defined in the FADT) is now optional.
5622This provides compatibility with other ACPI implementations and will
5623appear in the next version of the ACPI specification. If there is no PM
5624Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
5625zero in the FADT indicates no PM timer.
5626
5627Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
5628allows the host to globally enable/disable all vendor strings, all
5629feature strings, or both. Intended to be primarily used for debugging
5630purposes only. Lv Zheng.
5631
5632Expose the collected _OSI data to the host via a global variable. This
5633data tracks the highest level vendor ID that has been invoked by the BIOS
5634so that the host (and potentially ACPICA itself) can change behaviors
5635based upon the age of the BIOS.
5636
5637Example Code and Data Size: These are the sizes for the OS-independent
5638acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5639debug version of the code includes the debug output trace mechanism and
5640has a much larger code and data size.
5641
5642  Current Release:
5643    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5644    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5645  Previous Release:
5646    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5647    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5648
5649
56502) iASL Compiler/Disassembler and Tools:
5651
5652iASL: Created the following enhancements for the -so option (create
5653offset table):
56541)Add offsets for the last nameseg in each namepath for every supported
5655object type
56562)Add support for Processor, Device, Thermal Zone, and Scope objects
56573)Add the actual AML opcode for the parent object of every supported
5658object type
56594)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
5660
5661Disassembler: Emit all unresolved external symbols in a single block.
5662These are external references to control methods that could not be
5663resolved, and thus, the disassembler had to make a guess at the number of
5664arguments to parse.
5665
5666iASL: The argument to the -T option (create table template) is now
5667optional. If not specified, the default table is a DSDT, typically the
5668most common case.
5669
5670----------------------------------------
567126 June 2013. Summary of changes for version 20130626:
5672
56731) ACPICA kernel-resident subsystem:
5674
5675Fixed an issue with runtime repair of the _CST object. Null or invalid
5676elements were not always removed properly. Lv Zheng.
5677
5678Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5679FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5680the maximum number of GPEs is 1016. Use of multiple GPE block devices
5681makes the system-wide number of GPEs essentially unlimited.
5682
5683Example Code and Data Size: These are the sizes for the OS-independent
5684acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5685debug version of the code includes the debug output trace mechanism and
5686has a much larger code and data size.
5687
5688  Current Release:
5689    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5690    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5691  Previous Release:
5692    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5693    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5694
5695
56962) iASL Compiler/Disassembler and Tools:
5697
5698Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5699hosts. Now supports Linux, FreeBSD, and Windows.
5700
5701Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5702Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5703
5704iASL/Preprocessor: Implemented full support for nested
5705#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5706
5707Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5708max. The original purpose of this constraint was to limit the amount of
5709debug output. However, the string function in question (UtPrintString) is
5710now used for the disassembler also, where 256 bytes is insufficient.
5711Reported by RehabMan@GitHub.
5712
5713iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5714tables. ACPICA BZ 999. Lv Zheng.
5715
5716iASL: Fixed a couple of error exit issues that could result in a "Could
5717not delete <file>" message during ASL compilation.
5718
5719AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5720the actual signatures for these tables are "FACP" and "APIC",
5721respectively.
5722
5723AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5724tables are allowed to have multiple instances.
5725
5726----------------------------------------
572717 May 2013. Summary of changes for version 20130517:
5728
57291) ACPICA kernel-resident subsystem:
5730
5731Fixed a regression introduced in version 20130328 for _INI methods. This
5732change fixes a problem introduced in 20130328 where _INI methods are no
5733longer executed properly because of a memory block that was not
5734initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5735<tomasz.nowicki@linaro.org>.
5736
5737Fixed a possible problem with the new extended sleep registers in the
5738ACPI
57395.0 FADT. Do not use these registers (even if populated) unless the HW-
5740reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
57411020. Lv Zheng.
5742
5743Implemented return value repair code for _CST predefined objects: Sort
5744the
5745list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5746
5747Implemented a debug-only option to disable loading of SSDTs from the
5748RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5749ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5750acglobal.h - ACPICA BZ 1005. Lv Zheng.
5751
5752Fixed some issues in the ACPICA initialization and termination code:
5753Tomasz Nowicki <tomasz.nowicki@linaro.org>
57541) Clear events initialized flag upon event component termination. ACPICA
5755BZ 1013.
57562) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
57573) Delete global lock pending lock during termination. ACPICA BZ 1012.
57584) Clear debug buffer global on termination to prevent possible multiple
5759delete. ACPICA BZ 1010.
5760
5761Standardized all switch() blocks across the entire source base. After
5762many
5763years, different formatting for switch() had crept in. This change makes
5764the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5765
5766Split some files to enhance ACPICA modularity and configurability:
57671) Split buffer dump routines into utilities/utbuffer.c
57682) Split internal error message routines into utilities/uterror.c
57693) Split table print utilities into tables/tbprint.c
57704) Split iASL command-line option processing into asloptions.c
5771
5772Makefile enhancements:
57731) Support for all new files above.
57742) Abort make on errors from any subcomponent. Chao Guan.
57753) Add build support for Apple Mac OS X. Liang Qi.
5776
5777Example Code and Data Size: These are the sizes for the OS-independent
5778acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5779debug version of the code includes the debug output trace mechanism and
5780has a much larger code and data size.
5781
5782  Current Release:
5783    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5784    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5785  Previous Release:
5786    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5787    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5788
5789
57902) iASL Compiler/Disassembler and Tools:
5791
5792New utility: Implemented an easily portable version of the acpidump
5793utility to extract ACPI tables from the system (or a file) in an ASCII
5794hex
5795dump format. The top-level code implements the various command line
5796options, file I/O, and table dump routines. To port to a new host, only
5797three functions need to be implemented to get tables -- since this
5798functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5799the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
58001) The Windows version obtains the ACPI tables from the Registry.
58012) The Linux version is under development.
58023) Other hosts - If an OS-dependent module is submitted, it will be
5803distributed with ACPICA.
5804
5805iASL: Fixed a regression for -D preprocessor option (define symbol). A
5806restructuring/change to the initialization sequence caused this option to
5807no longer work properly.
5808
5809iASL: Implemented a mechanism to disable specific warnings and remarks.
5810Adds a new command line option, "-vw <messageid> as well as "#pragma
5811disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5812
5813iASL: Fix for too-strict package object validation. The package object
5814validation for return values from the predefined names is a bit too
5815strict, it does not allow names references within the package (which will
5816be resolved at runtime.) These types of references cannot be validated at
5817compile time. This change ignores named references within package objects
5818for names that return or define static packages.
5819
5820Debugger: Fixed the 80-character command line limitation for the History
5821command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5822
5823iASL: Added control method and package support for the -so option
5824(generates AML offset table for BIOS support.)
5825
5826iASL: issue a remark if a non-serialized method creates named objects. If
5827a thread blocks within the method for any reason, and another thread
5828enters the method, the method will fail because an attempt will be made
5829to
5830create the same (named) object twice. In this case, issue a remark that
5831the method should be marked serialized. NOTE: may become a warning later.
5832ACPICA BZ 909.
5833
5834----------------------------------------
583518 April 2013. Summary of changes for version 20130418:
5836
58371) ACPICA kernel-resident subsystem:
5838
5839Fixed a possible buffer overrun during some rare but specific field unit
5840read operations. This overrun can only happen if the DSDT version is 1 --
5841meaning that all AML integers are 32 bits -- and the field length is
5842between 33 and 55 bits long. During the read, an internal buffer object
5843is
5844created for the field unit because the field is larger than an integer
5845(32
5846bits). However, in this case, the buffer will be incorrectly written
5847beyond the end because the buffer length is less than the internal
5848minimum
5849of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5850long, but a full 8 bytes will be written.
5851
5852Updated the Embedded Controller "orphan" _REG method support. This refers
5853to _REG methods under the EC device that have no corresponding operation
5854region. This is allowed by the ACPI specification. This update removes a
5855dependency on the existence an ECDT table. It will execute an orphan _REG
5856method as long as the operation region handler for the EC is installed at
5857the EC device node and not the namespace root. Rui Zhang (original
5858update), Bob Moore (update/integrate).
5859
5860Implemented run-time argument typechecking for all predefined ACPI names
5861(_STA, _BIF, etc.) This change performs object typechecking on all
5862incoming arguments for all predefined names executed via
5863AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5864passing correct object types as well as the correct number of arguments
5865(therefore identifying any issues immediately). Also, the ASL/namespace
5866definition of the predefined name is checked against the ACPI
5867specification for the proper argument count. Adds one new file,
5868nsarguments.c
5869
5870Changed an exception code for the ASL UnLoad() operator. Changed the
5871exception code for the case where the input DdbHandle is invalid, from
5872AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5873
5874Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5875global makefile. The use of this flag causes compiler errors on earlier
5876versions of GCC, so it has been removed for compatibility.
5877
5878Miscellaneous cleanup:
58791) Removed some unused/obsolete macros
58802) Fixed a possible memory leak in the _OSI support
58813) Removed an unused variable in the predefined name support
58824) Windows OSL: remove obsolete reference to a memory list field
5883
5884Example Code and Data Size: These are the sizes for the OS-independent
5885acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5886debug version of the code includes the debug output trace mechanism and
5887has a much larger code and data size.
5888
5889  Current Release:
5890    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5891    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5892  Previous Release:
5893    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5894    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5895
5896
58972) iASL Compiler/Disassembler and Tools:
5898
5899AcpiExec: Added installation of a handler for the SystemCMOS address
5900space. This prevents control method abort if a method accesses this
5901space.
5902
5903AcpiExec: Added support for multiple EC devices, and now install EC
5904operation region handler(s) at the actual EC device instead of the
5905namespace root. This reflects the typical behavior of host operating
5906systems.
5907
5908AcpiExec: Updated to ensure that all operation region handlers are
5909installed before the _REG methods are executed. This prevents a _REG
5910method from aborting if it accesses an address space has no handler.
5911AcpiExec installs a handler for every possible address space.
5912
5913Debugger: Enhanced the "handlers" command to display non-root handlers.
5914This change enhances the handlers command to display handlers associated
5915with individual devices throughout the namespace, in addition to the
5916currently supported display of handlers associated with the root
5917namespace
5918node.
5919
5920ASL Test Suite: Several test suite errors have been identified and
5921resolved, reducing the total error count during execution. Chao Guan.
5922
5923----------------------------------------
592428 March 2013. Summary of changes for version 20130328:
5925
59261) ACPICA kernel-resident subsystem:
5927
5928Fixed several possible race conditions with the internal object reference
5929counting mechanism. Some of the external ACPICA interfaces update object
5930reference counts without holding the interpreter or namespace lock. This
5931change adds a spinlock to protect reference count updates on the internal
5932ACPICA objects. Reported by and with assistance from Andriy Gapon
5933(avg@FreeBSD.org).
5934
5935FADT support: Removed an extraneous warning for very large GPE register
5936sets. This change removes a size mismatch warning if the legacy length
5937field for a GPE register set is larger than the 64-bit GAS structure can
5938accommodate. GPE register sets can be larger than the 255-bit width
5939limitation of the GAS structure. Linn Crosetto (linn@hp.com).
5940
5941_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5942return from this interface. Handles a possible timeout case if
5943ACPI_WAIT_FOREVER is modified by the host to be a value less than
5944"forever". Jung-uk Kim.
5945
5946Predefined name support: Add allowed/required argument type information
5947to
5948the master predefined info table. This change adds the infrastructure to
5949enable typechecking on incoming arguments for all predefined
5950methods/objects. It does not actually contain the code that will fully
5951utilize this information, this is still under development. Also condenses
5952some duplicate code for the predefined names into a new module,
5953utilities/utpredef.c
5954
5955Example Code and Data Size: These are the sizes for the OS-independent
5956acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5957debug version of the code includes the debug output trace mechanism and
5958has a much larger code and data size.
5959
5960  Previous Release:
5961    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5962    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5963  Current Release:
5964    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5965    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5966
5967
59682) iASL Compiler/Disassembler and Tools:
5969
5970iASL: Implemented a new option to simplify the development of ACPI-
5971related
5972BIOS code. Adds support for a new "offset table" output file. The -so
5973option will create a C table containing the AML table offsets of various
5974named objects in the namespace so that BIOS code can modify them easily
5975at
5976boot time. This can simplify BIOS runtime code by eliminating expensive
5977searches for "magic values", enhancing boot times and adding greater
5978reliability. With assistance from Lee Hamel.
5979
5980iASL: Allow additional predefined names to return zero-length packages.
5981Now, all predefined names that are defined by the ACPI specification to
5982return a "variable-length package of packages" are allowed to return a
5983zero length top-level package. This allows the BIOS to tell the host that
5984the requested feature is not supported, and supports existing BIOS/ASL
5985code and practices.
5986
5987iASL: Changed the "result not used" warning to an error. This is the case
5988where an ASL operator is effectively a NOOP because the result of the
5989operation is not stored anywhere. For example:
5990    Add (4, Local0)
5991There is no target (missing 3rd argument), nor is the function return
5992value used. This is potentially a very serious problem -- since the code
5993was probably intended to do something, but for whatever reason, the value
5994was not stored. Therefore, this issue has been upgraded from a warning to
5995an error.
5996
5997AcpiHelp: Added allowable/required argument types to the predefined names
5998info display. This feature utilizes the recent update to the predefined
5999names table (above).
6000
6001----------------------------------------
600214 February 2013. Summary of changes for version 20130214:
6003
60041) ACPICA Kernel-resident Subsystem:
6005
6006Fixed a possible regression on some hosts: Reinstated the safe return
6007macros (return_ACPI_STATUS, etc.) that ensure that the argument is
6008evaluated only once. Although these macros are not needed for the ACPICA
6009code itself, they are often used by ACPI-related host device drivers
6010where
6011the safe feature may be necessary.
6012
6013Fixed several issues related to the ACPI 5.0 reduced hardware support
6014(SOC): Now ensure that if the platform declares itself as hardware-
6015reduced
6016via the FADT, the following functions become NOOPs (and always return
6017AE_OK) because ACPI is always enabled by definition on these machines:
6018  AcpiEnable
6019  AcpiDisable
6020  AcpiHwGetMode
6021  AcpiHwSetMode
6022
6023Dynamic Object Repair: Implemented additional runtime repairs for
6024predefined name return values. Both of these repairs can simplify code in
6025the related device drivers that invoke these methods:
60261) For the _STR and _MLS names, automatically repair/convert an ASCII
6027string to a Unicode buffer.
60282) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
6029a
6030lone end tag descriptor in the following cases: A Return(0) was executed,
6031a null buffer was returned, or no object at all was returned (non-slack
6032mode only). Adds a new file, nsconvert.c
6033ACPICA BZ 998. Bob Moore, Lv Zheng.
6034
6035Resource Manager: Added additional code to prevent possible infinite
6036loops
6037while traversing corrupted or ill-formed resource template buffers. Check
6038for zero-length resource descriptors in all code that loops through
6039resource templates (the length field is used to index through the
6040template). This change also hardens the external AcpiWalkResources and
6041AcpiWalkResourceBuffer interfaces.
6042
6043Local Cache Manager: Enhanced the main data structure to eliminate an
6044unnecessary mechanism to access the next object in the list. Actually
6045provides a small performance enhancement for hosts that use the local
6046ACPICA cache manager. Jung-uk Kim.
6047
6048Example Code and Data Size: These are the sizes for the OS-independent
6049acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6050debug version of the code includes the debug output trace mechanism and
6051has a much larger code and data size.
6052
6053  Previous Release:
6054    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
6055    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
6056  Current Release:
6057    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
6058    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
6059
6060
60612) iASL Compiler/Disassembler and Tools:
6062
6063iASL/Disassembler: Fixed several issues with the definition of the ACPI
60645.0 RASF table (RAS Feature Table). This change incorporates late changes
6065that were made to the ACPI 5.0 specification.
6066
6067iASL/Disassembler: Added full support for the following new ACPI tables:
6068  1) The MTMR table (MID Timer Table)
6069  2) The VRTC table (Virtual Real Time Clock Table).
6070Includes header file, disassembler, table compiler, and template support
6071for both tables.
6072
6073iASL: Implemented compile-time validation of package objects returned by
6074predefined names. This new feature validates static package objects
6075returned by the various predefined names defined to return packages. Both
6076object types and package lengths are validated, for both parent packages
6077and sub-packages, if any. The code is similar in structure and behavior
6078to
6079the runtime repair mechanism within the AML interpreter and uses the
6080existing predefined name information table. Adds a new file, aslprepkg.c.
6081ACPICA BZ 938.
6082
6083iASL: Implemented auto-detection of binary ACPI tables for disassembly.
6084This feature detects a binary file with a valid ACPI table header and
6085invokes the disassembler automatically. Eliminates the need to
6086specifically invoke the disassembler with the -d option. ACPICA BZ 862.
6087
6088iASL/Disassembler: Added several warnings for the case where there are
6089unresolved control methods during the disassembly. This can potentially
6090cause errors when the output file is compiled, because the disassembler
6091assumes zero method arguments in these cases (it cannot determine the
6092actual number of arguments without resolution/definition of the method).
6093
6094Debugger: Added support to display all resources with a single command.
6095Invocation of the resources command with no arguments will now display
6096all
6097resources within the current namespace.
6098
6099AcpiHelp: Added descriptive text for each ACPICA exception code displayed
6100via the -e option.
6101
6102----------------------------------------
610317 January 2013. Summary of changes for version 20130117:
6104
61051) ACPICA Kernel-resident Subsystem:
6106
6107Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
6108return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
6109objects to return a package containing one integer, most BIOS code
6110returns
6111two integers and the previous code reflects that. However, we also need
6112to
6113support BIOS code that actually implements to the ACPI spec, and this
6114change reflects this.
6115
6116Fixed two issues with the ACPI_DEBUG_PRINT macros:
61171) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
6118C compilers that require this support.
61192) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
6120ACPI_DEBUG is already used by many of the various hosts.
6121
6122Updated all ACPICA copyrights and signons to 2013. Added the 2013
6123copyright to all module headers and signons, including the standard Linux
6124header. This affects virtually every file in the ACPICA core subsystem,
6125iASL compiler, all ACPICA utilities, and the test suites.
6126
6127Example Code and Data Size: These are the sizes for the OS-independent
6128acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6129debug version of the code includes the debug output trace mechanism and
6130has a much larger code and data size.
6131
6132  Previous Release:
6133    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
6134    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
6135  Current Release:
6136    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
6137    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
6138
6139
61402) iASL Compiler/Disassembler and Tools:
6141
6142Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
6143prevent a possible fault on some hosts. Some C libraries modify the arg
6144pointer parameter to vfprintf making it difficult to call it twice in the
6145AcpiOsVprintf function. Use a local buffer to workaround this issue. This
6146does not affect the Windows OSL since the Win C library does not modify
6147the arg pointer. Chao Guan, Bob Moore.
6148
6149iASL: Fixed a possible infinite loop when the maximum error count is
6150reached. If an output file other than the .AML file is specified (such as
6151a listing file), and the maximum number of errors is reached, do not
6152attempt to flush data to the output file(s) as the compiler is aborting.
6153This can cause an infinite loop as the max error count code essentially
6154keeps calling itself.
6155
6156iASL/Disassembler: Added an option (-in) to ignore NOOP
6157opcodes/operators.
6158Implemented for both the compiler and the disassembler. Often, the NOOP
6159opcode is used as padding for packages that are changed dynamically by
6160the
6161BIOS. When disassembled and recompiled, these NOOPs will cause syntax
6162errors. This option causes the disassembler to ignore all NOOP opcodes
6163(0xA3), and it also causes the compiler to ignore all ASL source code
6164NOOP
6165statements as well.
6166
6167Debugger: Enhanced the Sleep command to execute all sleep states. This
6168change allows Sleep to be invoked with no arguments and causes the
6169debugger to execute all of the sleep states, 0-5, automatically.
6170
6171----------------------------------------
617220 December 2012. Summary of changes for version 20121220:
6173
61741) ACPICA Kernel-resident Subsystem:
6175
6176Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
6177alternate entry point for AcpiWalkResources and improves the usability of
6178the resource manager by accepting as input a buffer containing the output
6179of either a _CRS, _PRS, or _AEI method. The key functionality is that the
6180input buffer is not deleted by this interface so that it can be used by
6181the host later. See the ACPICA reference for details.
6182
6183Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
6184(DSDT version < 2). The constant will be truncated and this warning
6185reflects that behavior.
6186
6187Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
6188ExtendedInterrupt, and GpioInt descriptors. This change adds support to
6189both get and set the new wake bit in these descriptors, separately from
6190the existing share bit. Reported by Aaron Lu.
6191
6192Interpreter: Fix Store() when an implicit conversion is not possible. For
6193example, in the cases such as a store of a string to an existing package
6194object, implement the store as a CopyObject(). This is a small departure
6195from the ACPI specification which states that the control method should
6196be
6197aborted in this case. However, the ASLTS suite depends on this behavior.
6198
6199Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
6200macros: check if debug output is currently enabled as soon as possible to
6201minimize performance impact if debug is in fact not enabled.
6202
6203Source code restructuring: Cleanup to improve modularity. The following
6204new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
6205psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
6206Associated makefiles and project files have been updated.
6207
6208Changed an exception code for LoadTable operator. For the case where one
6209of the input strings is too long, change the returned exception code from
6210AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
6211
6212Fixed a possible memory leak in dispatcher error path. On error, delete
6213the mutex object created during method mutex creation. Reported by
6214tim.gardner@canonical.com.
6215
6216Example Code and Data Size: These are the sizes for the OS-independent
6217acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6218debug version of the code includes the debug output trace mechanism and
6219has a much larger code and data size.
6220
6221  Previous Release:
6222    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
6223    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6224  Current 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
6228
62292) iASL Compiler/Disassembler and Tools:
6230
6231iASL: Disallow a method call as argument to the ObjectType ASL operator.
6232This change tracks an errata to the ACPI 5.0 document. The AML grammar
6233will not allow the interpreter to differentiate between a method and a
6234method invocation when these are used as an argument to the ObjectType
6235operator. The ACPI specification change is to disallow a method
6236invocation
6237(UserTerm) for the ObjectType operator.
6238
6239Finish support for the TPM2 and CSRT tables in the headers, table
6240compiler, and disassembler.
6241
6242Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
6243always expires immediately if the semaphore is not available. The
6244original
6245code was using a relative-time timeout, but sem_timedwait requires the
6246use
6247of an absolute time.
6248
6249iASL: Added a remark if the Timer() operator is used within a 32-bit
6250table. This operator returns a 64-bit time value that will be truncated
6251within a 32-bit table.
6252
6253iASL Source code restructuring: Cleanup to improve modularity. The
6254following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
6255aslmethod.c, and aslfileio.c. Associated makefiles and project files have
6256been updated.
6257
6258
6259----------------------------------------
626014 November 2012. Summary of changes for version 20121114:
6261
62621) ACPICA Kernel-resident Subsystem:
6263
6264Implemented a performance enhancement for ACPI/AML Package objects. This
6265change greatly increases the performance of Package objects within the
6266interpreter. It changes the processing of reference counts for packages
6267by
6268optimizing for the most common case where the package sub-objects are
6269either Integers, Strings, or Buffers. Increases the overall performance
6270of
6271the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
62722X.)
6273Chao Guan. ACPICA BZ 943.
6274
6275Implemented and deployed common macros to extract flag bits from resource
6276descriptors. Improves readability and maintainability of the code. Fixes
6277a
6278problem with the UART serial bus descriptor for the number of data bits
6279flags (was incorrectly 2 bits, should be 3).
6280
6281Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
6282of the macros and changed the SETx macros to the style of (destination,
6283source). Also added ACPI_CASTx companion macros. Lv Zheng.
6284
6285Example Code and Data Size: These are the sizes for the OS-independent
6286acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6287debug version of the code includes the debug output trace mechanism and
6288has a much larger code and data size.
6289
6290  Previous Release:
6291    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
6292    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6293  Current Release:
6294    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
6295    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6296
6297
62982) iASL Compiler/Disassembler and Tools:
6299
6300Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
6301adds the ShareAndWake and ExclusiveAndWake flags which were added to the
6302Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
6303
6304Disassembler: Fixed a problem with external declaration generation. Fixes
6305a problem where an incorrect pathname could be generated for an external
6306declaration if the original reference to the object includes leading
6307carats (^). ACPICA BZ 984.
6308
6309Debugger: Completed a major update for the Disassemble<method> command.
6310This command was out-of-date and did not properly disassemble control
6311methods that had any reasonable complexity. This fix brings the command
6312up
6313to the same level as the rest of the disassembler. Adds one new file,
6314dmdeferred.c, which is existing code that is now common with the main
6315disassembler and the debugger disassemble command. ACPICA MZ 978.
6316
6317iASL: Moved the parser entry prototype to avoid a duplicate declaration.
6318Newer versions of Bison emit this prototype, so moved the prototype out
6319of
6320the iASL header to where it is actually used in order to avoid a
6321duplicate
6322declaration.
6323
6324iASL/Tools: Standardized use of the stream I/O functions:
6325  1) Ensure check for I/O error after every fopen/fread/fwrite
6326  2) Ensure proper order of size/count arguments for fread/fwrite
6327  3) Use test of (Actual != Requested) after all fwrite, and most fread
6328  4) Standardize I/O error messages
6329Improves reliability and maintainability of the code. Bob Moore, Lv
6330Zheng.
6331ACPICA BZ 981.
6332
6333Disassembler: Prevent duplicate External() statements. During generation
6334of external statements, detect similar pathnames that are actually
6335duplicates such as these:
6336  External (\ABCD)
6337  External (ABCD)
6338Remove all leading '\' characters from pathnames during the external
6339statement generation so that duplicates will be detected and tossed.
6340ACPICA BZ 985.
6341
6342Tools: Replace low-level I/O with stream I/O functions. Replace
6343open/read/write/close with the stream I/O equivalents
6344fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
6345Moore.
6346
6347AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
6348name header so that AcpiXtract recognizes the output file/table.
6349
6350iASL: Remove obsolete -2 option flag. Originally intended to force the
6351compiler/disassembler into an ACPI 2.0 mode, this was never implemented
6352and the entire concept is now obsolete.
6353
6354----------------------------------------
635518 October 2012. Summary of changes for version 20121018:
6356
6357
63581) ACPICA Kernel-resident Subsystem:
6359
6360Updated support for the ACPI 5.0 MPST table. Fixes some problems
6361introduced by late changes to the table as it was added to the ACPI 5.0
6362specification. Includes header, disassembler, and data table compiler
6363support as well as a new version of the MPST template.
6364
6365AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
63665.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
6367methods: _HID, _CID, and _UID.
6368
6369Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
6370ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
6371name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
6372names for their various drivers. Affects the AcpiGetObjectInfo external
6373interface, and other internal interfaces as well.
6374
6375Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
6376This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
6377on machines that support non-aligned transfers. Optimizes for this case
6378rather than using a strncpy. With assistance from Zheng Lv.
6379
6380Resource Manager: Small fix for buffer size calculation. Fixed a one byte
6381error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
6382
6383Added a new debug print message for AML mutex objects that are force-
6384released. At control method termination, any currently acquired mutex
6385objects are force-released. Adds a new debug-only message for each one
6386that is released.
6387
6388Audited/updated all ACPICA return macros and the function debug depth
6389counter: 1) Ensure that all functions that use the various TRACE macros
6390also use the appropriate ACPICA return macros. 2) Ensure that all normal
6391return statements surround the return expression (value) with parens to
6392ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
6393Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
6394
6395Global source code changes/maintenance: All extra lines at the start and
6396end of each source file have been removed for consistency. Also, within
6397comments, all new sentences start with a single space instead of a double
6398space, again for consistency across the code base.
6399
6400Example Code and Data Size: These are the sizes for the OS-independent
6401acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6402debug version of the code includes the debug output trace mechanism and
6403has a much larger code and data size.
6404
6405  Previous Release:
6406    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6407    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6408  Current Release:
6409    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
6410    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6411
6412
64132) iASL Compiler/Disassembler and Tools:
6414
6415AcpiExec: Improved the algorithm used for memory leak/corruption
6416detection. Added some intelligence to the code that maintains the global
6417list of allocated memory. The list is now ordered by allocated memory
6418address, significantly improving performance. When running AcpiExec on
6419the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
6420on the platform and/or the environment. Note, this performance
6421enhancement affects the AcpiExec utility only, not the kernel-resident
6422ACPICA code.
6423
6424Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
6425the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
6426incorrect table offset reported for invalid opcodes. Report the original
642732-bit value for bad ACPI_NAMEs (as well as the repaired name.)
6428
6429Disassembler: Enhanced the -vt option to emit the binary table data in
6430hex format to assist with debugging.
6431
6432Fixed a potential filename buffer overflow in osunixdir.c. Increased the
6433size of file structure. Colin Ian King.
6434
6435----------------------------------------
643613 September 2012. Summary of changes for version 20120913:
6437
6438
64391) ACPICA Kernel-resident Subsystem:
6440
6441ACPI 5.0: Added two new notify types for the Hardware Error Notification
6442Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
6443and
6444MCE(6).
6445
6446Table Manager: Merged/removed duplicate code in the root table resize
6447functions. One function is external, the other is internal. Lv Zheng,
6448ACPICA
6449BZ 846.
6450
6451Makefiles: Completely removed the obsolete "Linux" makefiles under
6452acpica/generate/linux. These makefiles are obsolete and have been
6453replaced
6454by
6455the generic unix makefiles under acpica/generate/unix.
6456
6457Makefiles: Ensure that binary files always copied properly. Minor rule
6458change
6459to ensure that the final binary output files are always copied up to the
6460appropriate binary directory (bin32 or bin64.)
6461
6462Example Code and Data Size: These are the sizes for the OS-independent
6463acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6464debug
6465version of the code includes the debug output trace mechanism and has a
6466much
6467larger code and data size.
6468
6469  Previous Release:
6470    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6471    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6472  Current Release:
6473    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6474    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6475
6476
64772) iASL Compiler/Disassembler and Tools:
6478
6479Disassembler: Fixed a possible fault during the disassembly of resource
6480descriptors when a second parse is required because of the invocation of
6481external control methods within the table. With assistance from
6482adq@lidskialf.net. ACPICA BZ 976.
6483
6484iASL: Fixed a namepath optimization problem. An error can occur if the
6485parse
6486node that contains the namepath to be optimized does not have a parent
6487node
6488that is a named object. This change fixes the problem.
6489
6490iASL: Fixed a regression where the AML file is not deleted on errors. The
6491AML
6492output file should be deleted if there are any errors during the
6493compiler.
6494The
6495only exception is if the -f (force output) option is used. ACPICA BZ 974.
6496
6497iASL: Added a feature to automatically increase internal line buffer
6498sizes.
6499Via realloc(), automatically increase the internal line buffer sizes as
6500necessary to support very long source code lines. The current version of
6501the
6502preprocessor requires a buffer long enough to contain full source code
6503lines.
6504This change increases the line buffer(s) if the input lines go beyond the
6505current buffer size. This eliminates errors that occurred when a source
6506code
6507line was longer than the buffer.
6508
6509iASL: Fixed a problem with constant folding in method declarations. The
6510SyncLevel term is a ByteConstExpr, and incorrect code would be generated
6511if a
6512Type3 opcode was used.
6513
6514Debugger: Improved command help support. For incorrect argument count,
6515display
6516full help for the command. For help command itself, allow an argument to
6517specify a command.
6518
6519Test Suites: Several bug fixes for the ASLTS suite reduces the number of
6520errors during execution of the suite. Guan Chao.
6521
6522----------------------------------------
652316 August 2012. Summary of changes for version 20120816:
6524
6525
65261) ACPICA Kernel-resident Subsystem:
6527
6528Removed all use of the deprecated _GTS and _BFS predefined methods. The
6529_GTS
6530(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
6531deprecated and will probably be removed from the ACPI specification.
6532Windows
6533does not invoke them, and reportedly never will. The final nail in the
6534coffin
6535is that the ACPI specification states that these methods must be run with
6536interrupts off, which is not going to happen in a kernel interpreter.
6537Note:
6538Linux has removed all use of the methods also. It was discovered that
6539invoking these functions caused failures on some machines, probably
6540because
6541they were never tested since Windows does not call them. Affects two
6542external
6543interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
6544ACPICA BZ 969.
6545
6546Implemented support for complex bit-packed buffers returned from the _PLD
6547(Physical Location of Device) predefined method. Adds a new external
6548interface, AcpiDecodePldBuffer that parses the buffer into a more usable
6549C
6550structure. Note: C Bitfields cannot be used for this type of predefined
6551structure since the memory layout of individual bitfields is not defined
6552by
6553the C language. In addition, there are endian concerns where a compiler
6554will
6555change the bitfield ordering based on the machine type. The new ACPICA
6556interface eliminates these issues, and should be called after _PLD is
6557executed. ACPICA BZ 954.
6558
6559Implemented a change to allow a scope change to root (via "Scope (\)")
6560during
6561execution of module-level ASL code (code that is executed at table load
6562time.) Lin Ming.
6563
6564Added the Windows8/Server2012 string for the _OSI method. This change
6565adds
6566a
6567new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
65682012.
6569
6570Added header support for the new ACPI tables DBG2 (Debug Port Table Type
65712)
6572and CSRT (Core System Resource Table).
6573
6574Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
6575names. This simplifies access to the buffers returned by these predefined
6576names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
6577
6578GPE support: Removed an extraneous parameter from the various low-level
6579internal GPE functions. Tang Feng.
6580
6581Removed the linux makefiles from the unix packages. The generate/linux
6582makefiles are obsolete and have been removed from the unix tarball
6583release
6584packages. The replacement makefiles are under generate/unix, and there is
6585a
6586top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
6587
6588Updates for Unix makefiles:
65891) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
65902) Update linker flags (move to end of command line) for AcpiExec
6591utility.
6592Guan Chao.
6593
6594Split ACPICA initialization functions to new file, utxfinit.c. Split from
6595utxface.c to improve modularity and reduce file size.
6596
6597Example Code and Data Size: These are the sizes for the OS-independent
6598acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6599debug version of the code includes the debug output trace mechanism and
6600has a
6601much larger code and data size.
6602
6603  Previous Release:
6604    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6605    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6606  Current Release:
6607    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6608    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6609
6610
66112) iASL Compiler/Disassembler and Tools:
6612
6613iASL: Fixed a problem with constant folding for fixed-length constant
6614expressions. The constant-folding code was not being invoked for constant
6615expressions that allow the use of type 3/4/5 opcodes to generate
6616constants
6617for expressions such as ByteConstExpr, WordConstExpr, etc. This could
6618result
6619in the generation of invalid AML bytecode. ACPICA BZ 970.
6620
6621iASL: Fixed a generation issue on newer versions of Bison. Newer versions
6622apparently automatically emit some of the necessary externals. This
6623change
6624handles these versions in order to eliminate generation warnings.
6625
6626Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
6627
6628Disassembler: Add support to decode _PLD buffers. The decoded buffer
6629appears
6630within comments in the output file.
6631
6632Debugger: Fixed a regression with the "Threads" command where
6633AE_BAD_PARAMETER was always returned.
6634
6635----------------------------------------
663611 July 2012. Summary of changes for version 20120711:
6637
66381) ACPICA Kernel-resident Subsystem:
6639
6640Fixed a possible fault in the return package object repair code. Fixes a
6641problem that can occur when a lone package object is wrapped with an
6642outer
6643package object in order to force conformance to the ACPI specification.
6644Can
6645affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
6646_DLM,
6647_CSD, _PSD, _TSD.
6648
6649Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
6650PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
6651ARB_DIS bit must be implemented in the host-dependent C3 processor power
6652state
6653support. Note, ARB_DIS is obsolete and only applies to older chipsets,
6654both
6655Intel and other vendors. (for Intel: ICH4-M and earlier)
6656
6657This change removes the code to disable/enable bus master arbitration
6658during
6659suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
6660causes
6661resume problems on some machines. The change has been in use for over
6662seven
6663years within Linux.
6664
6665Implemented two new external interfaces to support host-directed dynamic
6666ACPI
6667table load and unload. They are intended to simplify the host
6668implementation
6669of hot-plug support:
6670  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
6671  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
6672table.
6673See the ACPICA reference for additional details. Adds one new file,
6674components/tables/tbxfload.c
6675
6676Implemented and deployed two new interfaces for errors and warnings that
6677are
6678known to be caused by BIOS/firmware issues:
6679  AcpiBiosError: Prints "ACPI Firmware Error" message.
6680  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6681Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6682table
6683and FADT errors. Additional deployment to be completed as appropriate in
6684the
6685future. The associated conditional macros are ACPI_BIOS_ERROR and
6686ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6687ACPICA
6688BZ
6689843.
6690
6691Implicit notify support: ensure that no memory allocation occurs within a
6692critical region. This fix moves a memory allocation outside of the time
6693that a
6694spinlock is held. Fixes issues on systems that do not allow this
6695behavior.
6696Jung-uk Kim.
6697
6698Split exception code utilities and tables into a new file,
6699utilities/utexcep.c
6700
6701Example Code and Data Size: These are the sizes for the OS-independent
6702acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6703debug
6704version of the code includes the debug output trace mechanism and has a
6705much
6706larger code and data size.
6707
6708  Previous Release:
6709    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6710    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6711  Current Release:
6712    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6713    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6714
6715
67162) iASL Compiler/Disassembler and Tools:
6717
6718iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6719of
67200. Jung-uk Kim.
6721
6722Debugger: Enhanced the "tables" command to emit additional information
6723about
6724the current set of ACPI tables, including the owner ID and flags decode.
6725
6726Debugger: Reimplemented the "unload" command to use the new
6727AcpiUnloadParentTable external interface. This command was disable
6728previously
6729due to need for an unload interface.
6730
6731AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6732option
6733will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6734
6735----------------------------------------
673620 June 2012. Summary of changes for version 20120620:
6737
6738
67391) ACPICA Kernel-resident Subsystem:
6740
6741Implemented support to expand the "implicit notify" feature to allow
6742multiple
6743devices to be notified by a single GPE. This feature automatically
6744generates a
6745runtime device notification in the absence of a BIOS-provided GPE control
6746method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6747notify is
6748provided by ACPICA for Windows compatibility, and is a workaround for
6749BIOS
6750AML
6751code errors. See the description of the AcpiSetupGpeForWake interface in
6752the
6753APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6754
6755Changed some comments and internal function names to simplify and ensure
6756correctness of the Linux code translation. No functional changes.
6757
6758Example Code and Data Size: These are the sizes for the OS-independent
6759acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6760debug
6761version of the code includes the debug output trace mechanism and has a
6762much
6763larger code and data size.
6764
6765  Previous Release:
6766    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6767    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6768  Current Release:
6769    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6770    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6771
6772
67732) iASL Compiler/Disassembler and Tools:
6774
6775Disassembler: Added support to emit short, commented descriptions for the
6776ACPI
6777predefined names in order to improve the readability of the disassembled
6778output. ACPICA BZ 959. Changes include:
6779  1) Emit descriptions for all standard predefined names (_INI, _STA,
6780_PRW,
6781etc.)
6782  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6783  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6784etc.)
6785
6786AcpiSrc: Fixed several long-standing Linux code translation issues.
6787Argument
6788descriptions in function headers are now translated properly to lower
6789case
6790and
6791underscores. ACPICA BZ 961. Also fixes translation problems such as
6792these:
6793(old -> new)
6794  i_aSL -> iASL
6795  00-7_f -> 00-7F
6796  16_k -> 16K
6797  local_fADT -> local_FADT
6798  execute_oSI -> execute_OSI
6799
6800iASL: Fixed a problem where null bytes were inadvertently emitted into
6801some
6802listing files.
6803
6804iASL: Added the existing debug options to the standard help screen. There
6805are
6806no longer two different help screens. ACPICA BZ 957.
6807
6808AcpiHelp: Fixed some typos in the various predefined name descriptions.
6809Also
6810expand some of the descriptions where appropriate.
6811
6812iASL: Fixed the -ot option (display compile times/statistics). Was not
6813working
6814properly for standard output; only worked for the debug file case.
6815
6816----------------------------------------
681718 May 2012. Summary of changes for version 20120518:
6818
6819
68201) ACPICA Core Subsystem:
6821
6822Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6823defined
6824to block until asynchronous events such as notifies and GPEs have
6825completed.
6826Within ACPICA, it is only called before a notify or GPE handler is
6827removed/uninstalled. It also may be useful for the host OS within related
6828drivers such as the Embedded Controller driver. See the ACPICA reference
6829for
6830additional information. ACPICA BZ 868.
6831
6832ACPI Tables: Added a new error message for a possible overflow failure
6833during
6834the conversion of FADT 32-bit legacy register addresses to internal
6835common
683664-
6837bit GAS structure representation. The GAS has a one-byte "bit length"
6838field,
6839thus limiting the register length to 255 bits. ACPICA BZ 953.
6840
6841Example Code and Data Size: These are the sizes for the OS-independent
6842acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6843debug
6844version of the code includes the debug output trace mechanism and has a
6845much
6846larger code and data size.
6847
6848  Previous Release:
6849    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6850    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6851  Current Release:
6852    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6853    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6854
6855
68562) iASL Compiler/Disassembler and Tools:
6857
6858iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6859macro.
6860This keyword was added late in the ACPI 5.0 release cycle and was not
6861implemented until now.
6862
6863Disassembler: Added support for Operation Region externals. Adds missing
6864support for operation regions that are defined in another table, and
6865referenced locally via a Field or BankField ASL operator. Now generates
6866the
6867correct External statement.
6868
6869Disassembler: Several additional fixes for the External() statement
6870generation
6871related to some ASL operators. Also, order the External() statements
6872alphabetically in the disassembler output. Fixes the External()
6873generation
6874for
6875the Create* field, Alias, and Scope operators:
6876 1) Create* buffer field operators - fix type mismatch warning on
6877disassembly
6878 2) Alias - implement missing External support
6879 3) Scope - fix to make sure all necessary externals are emitted.
6880
6881iASL: Improved pathname support. For include files, merge the prefix
6882pathname
6883with the file pathname and eliminate unnecessary components. Convert
6884backslashes in all pathnames to forward slashes, for readability. Include
6885file
6886pathname changes affect both #include and Include() type operators.
6887
6888iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6889end
6890of a valid line by inserting a newline and then returning the EOF during
6891the
6892next call to GetNextLine. Prevents the line from being ignored due to EOF
6893condition.
6894
6895iASL: Implemented some changes to enhance the IDE support (-vi option.)
6896Error
6897and Warning messages are now correctly recognized for both the source
6898code
6899browser and the global error and warning counts.
6900
6901----------------------------------------
690220 April 2012. Summary of changes for version 20120420:
6903
6904
69051) ACPICA Core Subsystem:
6906
6907Implemented support for multiple notify handlers. This change adds
6908support
6909to
6910allow multiple system and device notify handlers on Device, Thermal Zone,
6911and
6912Processor objects. This can simplify the host OS notification
6913implementation.
6914Also re-worked and restructured the entire notify support code to
6915simplify
6916handler installation, handler removal, notify event queuing, and notify
6917dispatch to handler(s). Note: there can still only be two global notify
6918handlers - one for system notifies and one for device notifies. There are
6919no
6920changes to the existing handler install/remove interfaces. Lin Ming, Bob
6921Moore, Rafael Wysocki.
6922
6923Fixed a regression in the package repair code where the object reference
6924count was calculated incorrectly. Regression was introduced in the commit
6925"Support to add Package wrappers".
6926
6927Fixed a couple possible memory leaks in the AML parser, in the error
6928recovery
6929path. Jesper Juhl, Lin Ming.
6930
6931Example Code and Data Size: These are the sizes for the OS-independent
6932acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6933debug version of the code includes the debug output trace mechanism and
6934has a
6935much larger code and data size.
6936
6937  Previous Release:
6938    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6939    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6940  Current 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
6944
69452) iASL Compiler/Disassembler and Tools:
6946
6947iASL: Fixed a problem with the resource descriptor support where the
6948length
6949of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6950included in cumulative descriptor offset, resulting in incorrect values
6951for
6952resource tags within resource descriptors appearing after a
6953StartDependent*
6954descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6955
6956iASL and Preprocessor: Implemented full support for the #line directive
6957to
6958correctly track original source file line numbers through the .i
6959preprocessor
6960output file - for error and warning messages.
6961
6962iASL: Expand the allowable byte constants for address space IDs.
6963Previously,
6964the allowable range was 0x80-0xFF (user-defined spaces), now the range is
69650x0A-0xFF to allow for custom and new IDs without changing the compiler.
6966
6967iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6968
6969iASL: Add option to completely disable the preprocessor (-Pn).
6970
6971iASL: Now emit all error/warning messages to standard error (stderr) by
6972default (instead of the previous stdout).
6973
6974ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6975Update
6976for resource descriptor offset fix above. Update/cleanup error output
6977routines. Enable and send iASL errors/warnings to an error logfile
6978(error.txt). Send all other iASL output to a logfile (compiler.txt).
6979Fixed
6980several extraneous "unrecognized operator" messages.
6981
6982----------------------------------------
698320 March 2012. Summary of changes for version 20120320:
6984
6985
69861) ACPICA Core Subsystem:
6987
6988Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6989(Going To Sleep) and the _BFS method (Back From Sleep). Windows
6990apparently
6991does not execute these methods, and therefore these methods are often
6992untested. It has been seen on some systems where the execution of these
6993methods causes errors and also prevents the machine from entering S5. It
6994is
6995therefore suggested that host operating systems do not execute these
6996methods
6997by default. In the future, perhaps these methods can be optionally
6998executed
6999based on the age of the system and/or what is the newest version of
7000Windows
7001that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
7002and
7003AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
7004Ming.
7005
7006Fixed a problem where the length of the local/common FADT was set too
7007early.
7008The local FADT table length cannot be set to the common length until the
7009original length has been examined. There is code that checks the table
7010length
7011and sets various fields appropriately. This can affect older machines
7012with
7013early FADT versions. For example, this can cause inadvertent writes to
7014the
7015CST_CNT register. Julian Anastasov.
7016
7017Fixed a mapping issue related to a physical table override. Use the
7018deferred
7019mapping mechanism for tables loaded via the physical override OSL
7020interface.
7021This allows for early mapping before the virtual memory manager is
7022available.
7023Thomas Renninger, Bob Moore.
7024
7025Enhanced the automatic return-object repair code: Repair a common problem
7026with
7027predefined methods that are defined to return a variable-length Package
7028of
7029sub-objects. If there is only one sub-object, some BIOS ASL code
7030mistakenly
7031simply returns the single object instead of a Package with one sub-
7032object.
7033This new support will repair this error by wrapping a Package object
7034around
7035the original object, creating the correct and expected Package with one
7036sub-
7037object. Names that can be repaired in this manner include: _ALR, _CSD,
7038_HPX,
7039_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
7040939.
7041
7042Changed the exception code returned for invalid ACPI paths passed as
7043parameters to external interfaces such as AcpiEvaluateObject. Was
7044AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
7045
7046Example Code and Data Size: These are the sizes for the OS-independent
7047acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7048debug
7049version of the code includes the debug output trace mechanism and has a
7050much
7051larger code and data size.
7052
7053  Previous Release:
7054    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
7055    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7056  Current Release:
7057    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
7058    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7059
7060
70612) iASL Compiler/Disassembler and Tools:
7062
7063iASL: Added the infrastructure and initial implementation of a integrated
7064C-
7065like preprocessor. This will simplify BIOS development process by
7066eliminating
7067the need for a separate preprocessing step during builds. On Windows, it
7068also
7069eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
7070features including full #define() macro support are still under
7071development.
7072These preprocessor directives are supported:
7073    #define
7074    #elif
7075    #else
7076    #endif
7077    #error
7078    #if
7079    #ifdef
7080    #ifndef
7081    #include
7082    #pragma message
7083    #undef
7084    #warning
7085In addition, these new command line options are supported:
7086    -D <symbol> Define symbol for preprocessor use
7087    -li         Create preprocessed output file (*.i)
7088    -P          Preprocess only and create preprocessor output file (*.i)
7089
7090Table Compiler: Fixed a problem where the equals operator within an
7091expression
7092did not work properly.
7093
7094Updated iASL to use the current versions of Bison/Flex. Updated the
7095Windows
7096project file to invoke these tools from the standard location. ACPICA BZ
7097904.
7098Versions supported:
7099    Flex for Windows:  V2.5.4
7100    Bison for Windows: V2.4.1
7101
7102----------------------------------------
710315 February 2012. Summary of changes for version 20120215:
7104
7105
71061) ACPICA Core Subsystem:
7107
7108There have been some major changes to the sleep/wake support code, as
7109described below (a - e).
7110
7111a) The AcpiLeaveSleepState has been split into two interfaces, similar to
7112AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
7113AcpiLeaveSleepStatePrep. This allows the host to perform actions between
7114the
7115time the _BFS method is called and the _WAK method is called. NOTE: all
7116hosts
7117must update their wake/resume code or else sleep/wake will not work
7118properly.
7119Rafael Wysocki.
7120
7121b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
7122_WAK
7123method. Some machines require that the GPEs are enabled before the _WAK
7124method
7125is executed. Thomas Renninger.
7126
7127c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
7128bit.
7129Some BIOS code assumes that WAK_STS will be cleared on resume and use it
7130to
7131determine whether the system is rebooting or resuming. Matthew Garrett.
7132
7133d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
7134Sleep) to
7135match the ACPI specification requirement. Rafael Wysocki.
7136
7137e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
7138registers within the V5 FADT. This support adds two new files:
7139hardware/hwesleep.c implements the support for the new registers. Moved
7140all
7141sleep/wake external interfaces to hardware/hwxfsleep.c.
7142
7143
7144Added a new OSL interface for ACPI table overrides,
7145AcpiOsPhysicalTableOverride. This interface allows the host to override a
7146table via a physical address, instead of the logical address required by
7147AcpiOsTableOverride. This simplifies the host implementation. Initial
7148implementation by Thomas Renninger. The ACPICA implementation creates a
7149single
7150shared function for table overrides that attempts both a logical and a
7151physical override.
7152
7153Expanded the OSL memory read/write interfaces to 64-bit data
7154(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
7155transfer support for GAS register structures passed to AcpiRead and
7156AcpiWrite.
7157
7158Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
7159custom
7160build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
7161model.
7162See the ACPICA reference for details. ACPICA BZ 942. This option removes
7163about
716410% of the code and 5% of the static data, and the following hardware
7165ACPI
7166features become unavailable:
7167    PM Event and Control registers
7168    SCI interrupt (and handler)
7169    Fixed Events
7170    General Purpose Events (GPEs)
7171    Global Lock
7172    ACPI PM timer
7173
7174Updated the unix tarball directory structure to match the ACPICA git
7175source
7176tree. This ensures that the generic unix makefiles work properly (in
7177generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
7178867.
7179
7180Updated the return value of the _REV predefined method to integer value 5
7181to
7182reflect ACPI 5.0 support.
7183
7184Moved the external ACPI PM timer interface prototypes to the public
7185acpixf.h
7186file where they belong.
7187
7188Example Code and Data Size: These are the sizes for the OS-independent
7189acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7190debug
7191version of the code includes the debug output trace mechanism and has a
7192much
7193larger code and data size.
7194
7195  Previous Release:
7196    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
7197    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
7198  Current Release:
7199    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
7200    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7201
7202
72032) iASL Compiler/Disassembler and Tools:
7204
7205Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
7206descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
7207incorrectly displayed.
7208
7209AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
7210specification.
7211
7212----------------------------------------
721311 January 2012. Summary of changes for version 20120111:
7214
7215
72161) ACPICA Core Subsystem:
7217
7218Implemented a new mechanism to allow host device drivers to check for
7219address
7220range conflicts with ACPI Operation Regions. Both SystemMemory and
7221SystemIO
7222address spaces are supported. A new external interface,
7223AcpiCheckAddressRange,
7224allows drivers to check an address range against the ACPI namespace. See
7225the
7226ACPICA reference for additional details. Adds one new file,
7227utilities/utaddress.c. Lin Ming, Bob Moore.
7228
7229Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
7230Control
7231and
7232Status registers, update the ACPI 5.0 flags, and update internal data
7233structures to handle an FADT larger than 256 bytes. The size of the ACPI
72345.0
7235FADT is 268 bytes.
7236
7237Updated all ACPICA copyrights and signons to 2012. Added the 2012
7238copyright to
7239all module headers and signons, including the standard Linux header. This
7240affects virtually every file in the ACPICA core subsystem, iASL compiler,
7241and
7242all ACPICA utilities.
7243
7244Example Code and Data Size: These are the sizes for the OS-independent
7245acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7246debug
7247version of the code includes the debug output trace mechanism and has a
7248much
7249larger code and data size.
7250
7251  Previous Release:
7252    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
7253    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
7254  Current Release:
7255    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
7256    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
7257
7258
72592) iASL Compiler/Disassembler and Tools:
7260
7261Disassembler: fixed a problem with the automatic resource tag generation
7262support. Fixes a problem where the resource tags are inadvertently not
7263constructed if the table being disassembled contains external references
7264to
7265control methods. Moved the actual construction of the tags to after the
7266final
7267namespace is constructed (after 2nd parse is invoked due to external
7268control
7269method references.) ACPICA BZ 941.
7270
7271Table Compiler: Make all "generic" operators caseless. These are the
7272operators
7273like UINT8, String, etc. Making these caseless improves ease-of-use.
7274ACPICA BZ
7275934.
7276
7277----------------------------------------
727823 November 2011. Summary of changes for version 20111123:
7279
72800) ACPI 5.0 Support:
7281
7282This release contains full support for the ACPI 5.0 specification, as
7283summarized below.
7284
7285Reduced Hardware Support:
7286-------------------------
7287
7288This support allows for ACPI systems without the usual ACPI hardware.
7289This
7290support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
7291will
7292not attempt to initialize or use any of the usual ACPI hardware. Note,
7293when
7294this flag is set, all of the following ACPI hardware is assumed to be not
7295present and is not initialized or accessed:
7296
7297    General Purpose Events (GPEs)
7298    Fixed Events (PM1a/PM1b and PM Control)
7299    Power Management Timer and Console Buttons (power/sleep)
7300    Real-time Clock Alarm
7301    Global Lock
7302    System Control Interrupt (SCI)
7303    The FACS is assumed to be non-existent
7304
7305ACPI Tables:
7306------------
7307
7308All new tables and updates to existing tables are fully supported in the
7309ACPICA headers (for use by device drivers), the disassembler, and the
7310iASL
7311Data Table Compiler. ACPI 5.0 defines these new tables:
7312
7313    BGRT        /* Boot Graphics Resource Table */
7314    DRTM        /* Dynamic Root of Trust for Measurement table */
7315    FPDT        /* Firmware Performance Data Table */
7316    GTDT        /* Generic Timer Description Table */
7317    MPST        /* Memory Power State Table */
7318    PCCT        /* Platform Communications Channel Table */
7319    PMTT        /* Platform Memory Topology Table */
7320    RASF        /* RAS Feature table */
7321
7322Operation Regions/SpaceIDs:
7323---------------------------
7324
7325All new operation regions are fully supported by the iASL compiler, the
7326disassembler, and the ACPICA runtime code (for dispatch to region
7327handlers.)
7328The new operation region Space IDs are:
7329
7330    GeneralPurposeIo
7331    GenericSerialBus
7332
7333Resource Descriptors:
7334---------------------
7335
7336All new ASL resource descriptors are fully supported by the iASL
7337compiler,
7338the
7339ASL/AML disassembler, and the ACPICA runtime Resource Manager code
7340(including
7341all new predefined resource tags). New descriptors are:
7342
7343    FixedDma
7344    GpioIo
7345    GpioInt
7346    I2cSerialBus
7347    SpiSerialBus
7348    UartSerialBus
7349
7350ASL/AML Operators, New and Modified:
7351------------------------------------
7352
7353One new operator is added, the Connection operator, which is used to
7354associate
7355a GeneralPurposeIo or GenericSerialBus resource descriptor with
7356individual
7357field objects within an operation region. Several new protocols are
7358associated
7359with the AccessAs operator. All are fully supported by the iASL compiler,
7360disassembler, and runtime ACPICA AML interpreter:
7361
7362    Connection                      // Declare Field Connection
7363attributes
7364    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
7365    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
7366Protocol
7367    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
7368    RawDataBuffer                       // Data type for Vendor Data
7369fields
7370
7371Predefined ASL/AML Objects:
7372---------------------------
7373
7374All new predefined objects/control-methods are supported by the iASL
7375compiler
7376and the ACPICA runtime validation/repair (arguments and return values.)
7377New
7378predefined names include the following:
7379
7380Standard Predefined Names (Objects or Control Methods):
7381    _AEI, _CLS, _CPC, _CWS, _DEP,
7382    _DLM, _EVT, _GCP, _CRT, _GWS,
7383    _HRV, _PRE, _PSE, _SRT, _SUB.
7384
7385Resource Tags (Names used to access individual fields within resource
7386descriptors):
7387    _DBT, _DPL, _DRS, _END, _FLC,
7388    _IOR, _LIN, _MOD, _PAR, _PHA,
7389    _PIN, _PPI, _POL, _RXL, _SLV,
7390    _SPE, _STB, _TXL, _VEN.
7391
7392ACPICA External Interfaces:
7393---------------------------
7394
7395Several new interfaces have been defined for use by ACPI-related device
7396drivers and other host OS services:
7397
7398AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
7399to
7400acquire and release AML mutexes that are defined in the DSDT/SSDT tables
7401provided by the BIOS. They are intended to be used in conjunction with
7402the
7403ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
7404mutual exclusion with the AML code/interpreter.
7405
7406AcpiGetEventResources: Returns the (formatted) resource descriptors as
7407defined
7408by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
7409provides
7410resource descriptors associated with hardware-reduced platform events,
7411similar
7412to the AcpiGetCurrentResources interface.
7413
7414Operation Region Handlers: For General Purpose IO and Generic Serial Bus
7415operation regions, information about the Connection() object and any
7416optional
7417length information is passed to the region handler within the Context
7418parameter.
7419
7420AcpiBufferToResource: This interface converts a raw AML buffer containing
7421a
7422resource template or resource descriptor to the ACPI_RESOURCE internal
7423format
7424suitable for use by device drivers. Can be used by an operation region
7425handler
7426to convert the Connection() buffer object into a ACPI_RESOURCE.
7427
7428Miscellaneous/Tools/TestSuites:
7429-------------------------------
7430
7431Support for extended _HID names (Four alpha characters instead of three).
7432Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
7433Support for ACPI 5.0 features in the ASLTS test suite.
7434Fully updated documentation (ACPICA and iASL reference documents.)
7435
7436ACPI Table Definition Language:
7437-------------------------------
7438
7439Support for this language was implemented and released as a subsystem of
7440the
7441iASL compiler in 2010. (See the iASL compiler User Guide.)
7442
7443
7444Non-ACPI 5.0 changes for this release:
7445--------------------------------------
7446
74471) ACPICA Core Subsystem:
7448
7449Fix a problem with operation region declarations where a failure can
7450occur
7451if
7452the region name and an argument that evaluates to an object (such as the
7453region address) are in different namespace scopes. Lin Ming, ACPICA BZ
7454937.
7455
7456Do not abort an ACPI table load if an invalid space ID is found within.
7457This
7458will be caught later if the offending method is executed. ACPICA BZ 925.
7459
7460Fixed an issue with the FFixedHW space ID where the ID was not always
7461recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
7462
7463Fixed a problem with the 32-bit generation of the unix-specific OSL
7464(osunixxf.c). Lin Ming, ACPICA BZ 936.
7465
7466Several changes made to enable generation with the GCC 4.6 compiler.
7467ACPICA BZ
7468935.
7469
7470New error messages: Unsupported I/O requests (not 8/16/32 bit), and
7471Index/Bank
7472field registers out-of-range.
7473
74742) iASL Compiler/Disassembler and Tools:
7475
7476iASL: Implemented the __PATH__ operator, which returns the full pathname
7477of
7478the current source file.
7479
7480AcpiHelp: Automatically display expanded keyword information for all ASL
7481operators.
7482
7483Debugger: Add "Template" command to disassemble/dump resource template
7484buffers.
7485
7486Added a new master script to generate and execute the ASLTS test suite.
7487Automatically handles 32- and 64-bit generation. See tests/aslts.sh
7488
7489iASL: Fix problem with listing generation during processing of the
7490Switch()
7491operator where AML listing was disabled until the entire Switch block was
7492completed.
7493
7494iASL: Improve support for semicolon statement terminators. Fix "invalid
7495character" message for some cases when the semicolon is used. Semicolons
7496are
7497now allowed after every <Term> grammar element. ACPICA BZ 927.
7498
7499iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
7500923.
7501
7502Disassembler: Fix problem with disassembly of the DataTableRegion
7503operator
7504where an inadvertent "Unhandled deferred opcode" message could be
7505generated.
7506
75073) Example Code and Data Size
7508
7509These are the sizes for the OS-independent acpica.lib produced by the
7510Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7511includes the debug output trace mechanism and has a much larger code and
7512data
7513size.
7514
7515  Previous Release:
7516    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7517    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7518  Current Release:
7519    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
7520    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
7521
7522----------------------------------------
752322 September 2011. Summary of changes for version 20110922:
7524
75250) ACPI 5.0 News:
7526
7527Support for ACPI 5.0 in ACPICA has been underway for several months and
7528will
7529be released at the same time that ACPI 5.0 is officially released.
7530
7531The ACPI 5.0 specification is on track for release in the next few
7532months.
7533
75341) ACPICA Core Subsystem:
7535
7536Fixed a problem where the maximum sleep time for the Sleep() operator was
7537intended to be limited to two seconds, but was inadvertently limited to
753820
7539seconds instead.
7540
7541Linux and Unix makefiles: Added header file dependencies to ensure
7542correct
7543generation of ACPICA core code and utilities. Also simplified the
7544makefiles
7545considerably through the use of the vpath variable to specify search
7546paths.
7547ACPICA BZ 924.
7548
75492) iASL Compiler/Disassembler and Tools:
7550
7551iASL: Implemented support to check the access length for all fields
7552created to
7553access named Resource Descriptor fields. For example, if a resource field
7554is
7555defined to be two bits, a warning is issued if a CreateXxxxField() is
7556used
7557with an incorrect bit length. This is implemented for all current
7558resource
7559descriptor names. ACPICA BZ 930.
7560
7561Disassembler: Fixed a byte ordering problem with the output of 24-bit and
756256-
7563bit integers.
7564
7565iASL: Fixed a couple of issues associated with variable-length package
7566objects. 1) properly handle constants like One, Ones, Zero -- do not make
7567a
7568VAR_PACKAGE when these are used as a package length. 2) Allow the
7569VAR_PACKAGE
7570opcode (in addition to PACKAGE) when validating object types for
7571predefined
7572names.
7573
7574iASL: Emit statistics for all output files (instead of just the ASL input
7575and
7576AML output). Includes listings, hex files, etc.
7577
7578iASL: Added -G option to the table compiler to allow the compilation of
7579custom
7580ACPI tables. The only part of a table that is required is the standard
758136-
7582byte
7583ACPI header.
7584
7585AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
7586headers),
7587which also adds correct 64-bit support. Also, now all output filenames
7588are
7589completely lower case.
7590
7591AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
7592loading table files. A warning is issued for any such tables. The only
7593exception is an FADT. This also fixes a possible fault when attempting to
7594load
7595non-AML tables. ACPICA BZ 932.
7596
7597AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
7598a
7599missing table terminator could cause a fault when using the -p option.
7600
7601AcpiSrc: Fixed a possible divide-by-zero fault when generating file
7602statistics.
7603
76043) Example Code and Data Size
7605
7606These are the sizes for the OS-independent acpica.lib produced by the
7607Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7608includes the debug output trace mechanism and has a much larger code and
7609data
7610size.
7611
7612  Previous Release (VC 9.0):
7613    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7614    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7615  Current Release (VC 9.0):
7616    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7617    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7618
7619
7620----------------------------------------
762123 June 2011. Summary of changes for version 20110623:
7622
76231) ACPI CA Core Subsystem:
7624
7625Updated the predefined name repair mechanism to not attempt repair of a
7626_TSS
7627return object if a _PSS object is present. We can only sort the _TSS
7628return
7629package if there is no _PSS within the same scope. This is because if
7630_PSS
7631is
7632present, the ACPI specification dictates that the _TSS Power Dissipation
7633field
7634is to be ignored, and therefore some BIOSs leave garbage values in the
7635_TSS
7636Power field(s). In this case, it is best to just return the _TSS package
7637as-
7638is. Reported by, and fixed with assistance from Fenghua Yu.
7639
7640Added an option to globally disable the control method return value
7641validation
7642and repair. This runtime option can be used to disable return value
7643repair
7644if
7645this is causing a problem on a particular machine. Also added an option
7646to
7647AcpiExec (-dr) to set this disable flag.
7648
7649All makefiles and project files: Major changes to improve generation of
7650ACPICA
7651tools. ACPICA BZ 912:
7652    Reduce default optimization levels to improve compatibility
7653    For Linux, add strict-aliasing=0 for gcc 4
7654    Cleanup and simplify use of command line defines
7655    Cleanup multithread library support
7656    Improve usage messages
7657
7658Linux-specific header: update handling of THREAD_ID and pthread. For the
765932-
7660bit case, improve casting to eliminate possible warnings, especially with
7661the
7662acpica tools.
7663
7664Example Code and Data Size: These are the sizes for the OS-independent
7665acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7666debug
7667version of the code includes the debug output trace mechanism and has a
7668much
7669larger code and data size.
7670
7671  Previous Release (VC 9.0):
7672    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7673    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7674  Current Release (VC 9.0):
7675    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7676    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7677
76782) iASL Compiler/Disassembler and Tools:
7679
7680With this release, a new utility named "acpihelp" has been added to the
7681ACPICA
7682package. This utility summarizes the ACPI specification chapters for the
7683ASL
7684and AML languages. It generates under Linux/Unix as well as Windows, and
7685provides the following functionality:
7686    Find/display ASL operator(s) -- with description and syntax.
7687    Find/display ASL keyword(s) -- with exact spelling and descriptions.
7688    Find/display ACPI predefined name(s) -- with description, number
7689        of arguments, and the return value data type.
7690    Find/display AML opcode name(s) -- with opcode, arguments, and
7691grammar.
7692    Decode/display AML opcode -- with opcode name, arguments, and
7693grammar.
7694
7695Service Layers: Make multi-thread support configurable. Conditionally
7696compile
7697the multi-thread support so that threading libraries will not be linked
7698if
7699not
7700necessary. The only tool that requires multi-thread support is AcpiExec.
7701
7702iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7703of
7704Bison appear to want the interface to yyerror to be a const char * (or at
7705least this is a problem when generating iASL on some systems.) ACPICA BZ
7706923
7707Pierre Lejeune.
7708
7709Tools: Fix for systems where O_BINARY is not defined. Only used for
7710Windows
7711versions of the tools.
7712
7713----------------------------------------
771427 May 2011. Summary of changes for version 20110527:
7715
77161) ACPI CA Core Subsystem:
7717
7718ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7719table
7720signature. Now, only allow SSDT, OEMx, and a null signature. History:
7721    1) Originally, we checked the table signature for "SSDT" or "PSDT".
7722       (PSDT is now obsolete.)
7723    2) We added support for OEMx tables, signature "OEM" plus a fourth
7724       "don't care" character.
7725    3) Valid tables were encountered with a null signature, so we just
7726       gave up on validating the signature, (05/2008).
7727    4) We encountered non-AML tables such as the MADT, which caused
7728       interpreter errors and kernel faults. So now, we once again allow
7729       only SSDT, OEMx, and now, also a null signature. (05/2011).
7730
7731Added the missing _TDL predefined name to the global name list in order
7732to
7733enable validation. Affects both the core ACPICA code and the iASL
7734compiler.
7735
7736Example Code and Data Size: These are the sizes for the OS-independent
7737acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7738debug
7739version of the code includes the debug output trace mechanism and has a
7740much
7741larger code and data size.
7742
7743  Previous Release (VC 9.0):
7744    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7745    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7746  Current Release (VC 9.0):
7747    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7748    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7749
77502) iASL Compiler/Disassembler and Tools:
7751
7752Debugger/AcpiExec: Implemented support for "complex" method arguments on
7753the
7754debugger command line. This adds support beyond simple integers --
7755including
7756Strings, Buffers, and Packages. Includes support for nested packages.
7757Increased the default command line buffer size to accommodate these
7758arguments.
7759See the ACPICA reference for details and syntax. ACPICA BZ 917.
7760
7761Debugger/AcpiExec: Implemented support for "default" method arguments for
7762the
7763Execute/Debug command. Now, the debugger will always invoke a control
7764method
7765with the required number of arguments -- even if the command line
7766specifies
7767none or insufficient arguments. It uses default integer values for any
7768missing
7769arguments. Also fixes a bug where only six method arguments maximum were
7770supported instead of the required seven.
7771
7772Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7773and
7774also return status in order to prevent buffer overruns. See the ACPICA
7775reference for details and syntax. ACPICA BZ 921
7776
7777iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7778makefiles to simplify support for the two different but similar parser
7779generators, bison and yacc.
7780
7781Updated the generic unix makefile for gcc 4. The default gcc version is
7782now
7783expected to be 4 or greater, since options specific to gcc 4 are used.
7784
7785----------------------------------------
778613 April 2011. Summary of changes for version 20110413:
7787
77881) ACPI CA Core Subsystem:
7789
7790Implemented support to execute a so-called "orphan" _REG method under the
7791EC
7792device. This change will force the execution of a _REG method underneath
7793the
7794EC
7795device even if there is no corresponding operation region of type
7796EmbeddedControl. Fixes a problem seen on some machines and apparently is
7797compatible with Windows behavior. ACPICA BZ 875.
7798
7799Added more predefined methods that are eligible for automatic NULL
7800package
7801element removal. This change adds another group of predefined names to
7802the
7803list
7804of names that can be repaired by having NULL package elements dynamically
7805removed. This group are those methods that return a single variable-
7806length
7807package containing simple data types such as integers, buffers, strings.
7808This
7809includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7810_PSL,
7811_Sx,
7812and _TZD. ACPICA BZ 914.
7813
7814Split and segregated all internal global lock functions to a new file,
7815evglock.c.
7816
7817Updated internal address SpaceID for DataTable regions. Moved this
7818internal
7819space
7820id in preparation for ACPI 5.0 changes that will include some new space
7821IDs.
7822This
7823change should not affect user/host code.
7824
7825Example Code and Data Size: These are the sizes for the OS-independent
7826acpica.lib
7827produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7828version of
7829the code includes the debug output trace mechanism and has a much larger
7830code
7831and
7832data size.
7833
7834  Previous Release (VC 9.0):
7835    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7836    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7837  Current Release (VC 9.0):
7838    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7839    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7840
78412) iASL Compiler/Disassembler and Tools:
7842
7843iASL/DTC: Major update for new grammar features. Allow generic data types
7844in
7845custom ACPI tables. Field names are now optional. Any line can be split
7846to
7847multiple lines using the continuation char (\). Large buffers now use
7848line-
7849continuation character(s) and no colon on the continuation lines. See the
7850grammar
7851update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7852Moore.
7853
7854iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7855statements.
7856Since the parser stuffs a "zero" as the return value for these statements
7857(due
7858to
7859the underlying AML grammar), they were seen as "return with value" by the
7860iASL
7861semantic checking. They are now seen correctly as "null" return
7862statements.
7863
7864iASL: Check if a_REG declaration has a corresponding Operation Region.
7865Adds a
7866check for each _REG to ensure that there is in fact a corresponding
7867operation
7868region declaration in the same scope. If not, the _REG method is not very
7869useful
7870since it probably won't be executed. ACPICA BZ 915.
7871
7872iASL/DTC: Finish support for expression evaluation. Added a new
7873expression
7874parser
7875that implements c-style operator precedence and parenthesization. ACPICA
7876bugzilla
7877908.
7878
7879Disassembler/DTC: Remove support for () and <> style comments in data
7880tables.
7881Now
7882that DTC has full expression support, we don't want to have comment
7883strings
7884that
7885start with a parentheses or a less-than symbol. Now, only the standard /*
7886and
7887//
7888comments are supported, as well as the bracket [] comments.
7889
7890AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7891"unusual"
7892headers in the acpidump file. Update the header validation to support
7893these
7894tables. Problem introduced in previous AcpiXtract version in the change
7895to
7896support "wrong checksum" error messages emitted by acpidump utility.
7897
7898iASL: Add a * option to generate all template files (as a synonym for
7899ALL)
7900as
7901in
7902"iasl -T *" or "iasl -T ALL".
7903
7904iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7905completely
7906abort the compiler on "fatal" errors, simply should abort the current
7907compile.
7908This allows multiple compiles with a single (possibly wildcard) compiler
7909invocation.
7910
7911----------------------------------------
791216 March 2011. Summary of changes for version 20110316:
7913
79141) ACPI CA Core Subsystem:
7915
7916Fixed a problem caused by a _PRW method appearing at the namespace root
7917scope
7918during the setup of wake GPEs. A fault could occur if a _PRW directly
7919under
7920the
7921root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7922
7923Implemented support for "spurious" Global Lock interrupts. On some
7924systems, a
7925global lock interrupt can occur without the pending flag being set. Upon
7926a
7927GL
7928interrupt, we now ensure that a thread is actually waiting for the lock
7929before
7930signaling GL availability. Rafael Wysocki, Bob Moore.
7931
7932Example Code and Data Size: These are the sizes for the OS-independent
7933acpica.lib
7934produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7935version of
7936the code includes the debug output trace mechanism and has a much larger
7937code
7938and
7939data size.
7940
7941  Previous Release (VC 9.0):
7942    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7943    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7944  Current Release (VC 9.0):
7945    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7946    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7947
79482) iASL Compiler/Disassembler and Tools:
7949
7950Implemented full support for the "SLIC" ACPI table. Includes support in
7951the
7952header files, disassembler, table compiler, and template generator. Bob
7953Moore,
7954Lin Ming.
7955
7956AcpiXtract: Correctly handle embedded comments and messages from
7957AcpiDump.
7958Apparently some or all versions of acpidump will occasionally emit a
7959comment
7960like
7961"Wrong checksum", etc., into the dump file. This was causing problems for
7962AcpiXtract. ACPICA BZ 905.
7963
7964iASL: Fix the Linux makefile by removing an inadvertent double file
7965inclusion.
7966ACPICA BZ 913.
7967
7968AcpiExec: Update installation of operation region handlers. Install one
7969handler
7970for a user-defined address space. This is used by the ASL test suite
7971(ASLTS).
7972
7973----------------------------------------
797411 February 2011. Summary of changes for version 20110211:
7975
79761) ACPI CA Core Subsystem:
7977
7978Added a mechanism to defer _REG methods for some early-installed
7979handlers.
7980Most user handlers should be installed before call to
7981AcpiEnableSubsystem.
7982However, Event handlers and region handlers should be installed after
7983AcpiInitializeObjects. Override handlers for the "default" regions should
7984be
7985installed early, however. This change executes all _REG methods for the
7986default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7987chicken/egg issues between them. ACPICA BZ 848.
7988
7989Implemented an optimization for GPE detection. This optimization will
7990simply
7991ignore GPE registers that contain no enabled GPEs -- there is no need to
7992read the register since this information is available internally. This
7993becomes more important on machines with a large GPE space. ACPICA
7994bugzilla
7995884. Lin Ming. Suggestion from Joe Liu.
7996
7997Removed all use of the highly unreliable FADT revision field. The
7998revision
7999number in the FADT has been found to be completely unreliable and cannot
8000be
8001trusted. Only the actual table length can be used to infer the version.
8002This
8003change updates the ACPICA core and the disassembler so that both no
8004longer
8005even look at the FADT version and instead depend solely upon the FADT
8006length.
8007
8008Fix an unresolved name issue for the no-debug and no-error-message source
8009generation cases. The _AcpiModuleName was left undefined in these cases,
8010but
8011it is actually needed as a parameter to some interfaces. Define
8012_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
8013
8014Split several large files (makefiles and project files updated)
8015  utglobal.c   -> utdecode.c
8016  dbcomds.c    -> dbmethod.c dbnames.c
8017  dsopcode.c   -> dsargs.c dscontrol.c
8018  dsload.c     -> dsload2.c
8019  aslanalyze.c -> aslbtypes.c aslwalks.c
8020
8021Example Code and Data Size: These are the sizes for the OS-independent
8022acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8023debug version of the code includes the debug output trace mechanism and
8024has
8025a much larger code and data size.
8026
8027  Previous Release (VC 9.0):
8028    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8029    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8030  Current Release (VC 9.0):
8031    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8032    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8033
80342) iASL Compiler/Disassembler and Tools:
8035
8036iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
8037These are useful C-style macros with the standard definitions. ACPICA
8038bugzilla 898.
8039
8040iASL/DTC: Added support for integer expressions and labels. Support for
8041full
8042expressions for all integer fields in all ACPI tables. Support for labels
8043in
8044"generic" portions of tables such as UEFI. See the iASL reference manual.
8045
8046Debugger: Added a command to display the status of global handlers. The
8047"handlers" command will display op region, fixed event, and miscellaneous
8048global handlers. installation status -- and for op regions, whether
8049default
8050or user-installed handler will be used.
8051
8052iASL: Warn if reserved method incorrectly returns a value. Many
8053predefined
8054names are defined such that they do not return a value. If implemented as
8055a
8056method, issue a warning if such a name explicitly returns a value. ACPICA
8057Bugzilla 855.
8058
8059iASL: Added detection of GPE method name conflicts. Detects a conflict
8060where
8061there are two GPE methods of the form _Lxy and _Exy in the same scope.
8062(For
8063example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
8064
8065iASL/DTC: Fixed a couple input scanner issues with comments and line
8066numbers. Comment remover could get confused and miss a comment ending.
8067Fixed
8068a problem with line counter maintenance.
8069
8070iASL/DTC: Reduced the severity of some errors from fatal to error. There
8071is
8072no need to abort on simple errors within a field definition.
8073
8074Debugger: Simplified the output of the help command. All help output now
8075in
8076a single screen, instead of help subcommands. ACPICA Bugzilla 897.
8077
8078----------------------------------------
807912 January 2011. Summary of changes for version 20110112:
8080
80811) ACPI CA Core Subsystem:
8082
8083Fixed a race condition between method execution and namespace walks that
8084can
8085possibly cause a fault. The problem was apparently introduced in version
808620100528 as a result of a performance optimization that reduces the
8087number
8088of
8089namespace walks upon method exit by using the delete_namespace_subtree
8090function instead of the delete_namespace_by_owner function used
8091previously.
8092Bug is a missing namespace lock in the delete_namespace_subtree function.
8093dana.myers@oracle.com
8094
8095Fixed several issues and a possible fault with the automatic "serialized"
8096method support. History: This support changes a method to "serialized" on
8097the
8098fly if the method generates an AE_ALREADY_EXISTS error, indicating the
8099possibility that it cannot handle reentrancy. This fix repairs a couple
8100of
8101issues seen in the field, especially on machines with many cores:
8102
8103    1) Delete method children only upon the exit of the last thread,
8104       so as to not delete objects out from under other running threads
8105      (and possibly causing a fault.)
8106    2) Set the "serialized" bit for the method only upon the exit of the
8107       Last thread, so as to not cause deadlock when running threads
8108       attempt to exit.
8109    3) Cleanup the use of the AML "MethodFlags" and internal method flags
8110       so that there is no longer any confusion between the two.
8111
8112    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
8113
8114Debugger: Now lock the namespace for duration of a namespace dump.
8115Prevents
8116issues if the namespace is changing dynamically underneath the debugger.
8117Especially affects temporary namespace nodes, since the debugger displays
8118these also.
8119
8120Updated the ordering of include files. The ACPICA headers should appear
8121before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
8122set
8123any necessary compiler-specific defines, etc. Affects the ACPI-related
8124tools
8125and utilities.
8126
8127Updated all ACPICA copyrights and signons to 2011. Added the 2011
8128copyright
8129to all module headers and signons, including the Linux header. This
8130affects
8131virtually every file in the ACPICA core subsystem, iASL compiler, and all
8132utilities.
8133
8134Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
8135project files for VC++ 6.0 are now obsolete. New project files can be
8136found
8137under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
8138details.
8139
8140Example Code and Data Size: These are the sizes for the OS-independent
8141acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8142debug version of the code includes the debug output trace mechanism and
8143has a
8144much larger code and data size.
8145
8146  Previous Release (VC 6.0):
8147    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
8148    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
8149  Current Release (VC 9.0):
8150    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8151    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8152
81532) iASL Compiler/Disassembler and Tools:
8154
8155iASL: Added generic data types to the Data Table compiler. Add "generic"
8156data
8157types such as UINT32, String, Unicode, etc., to simplify the generation
8158of
8159platform-defined tables such as UEFI. Lin Ming.
8160
8161iASL: Added listing support for the Data Table Compiler. Adds listing
8162support
8163(-l) to display actual binary output for each line of input code.
8164
8165----------------------------------------
816609 December 2010. Summary of changes for version 20101209:
8167
81681) ACPI CA Core Subsystem:
8169
8170Completed the major overhaul of the GPE support code that was begun in
8171July
81722010. Major features include: removal of _PRW execution in ACPICA (host
8173executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
8174changes to existing interfaces, simplification of GPE handler operation,
8175and
8176a handful of new interfaces:
8177
8178    AcpiUpdateAllGpes
8179    AcpiFinishGpe
8180    AcpiSetupGpeForWake
8181    AcpiSetGpeWakeMask
8182    One new file, evxfgpe.c to consolidate all external GPE interfaces.
8183
8184See the ACPICA Programmer Reference for full details and programming
8185information. See the new section 4.4 "General Purpose Event (GPE)
8186Support"
8187for a full overview, and section 8.7 "ACPI General Purpose Event
8188Management"
8189for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
8190Ming,
8191Bob Moore, Rafael Wysocki.
8192
8193Implemented a new GPE feature for Windows compatibility, the "Implicit
8194Wake
8195GPE Notify". This feature will automatically issue a Notify(2) on a
8196device
8197when a Wake GPE is received if there is no corresponding GPE method or
8198handler. ACPICA BZ 870.
8199
8200Fixed a problem with the Scope() operator during table parse and load
8201phase.
8202During load phase (table load or method execution), the scope operator
8203should
8204not enter the target into the namespace. Instead, it should open a new
8205scope
8206at the target location. Linux BZ 19462, ACPICA BZ 882.
8207
8208Example Code and Data Size: These are the sizes for the OS-independent
8209acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8210debug version of the code includes the debug output trace mechanism and
8211has a
8212much larger code and data size.
8213
8214  Previous Release:
8215    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
8216    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
8217  Current Release:
8218    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8219    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8220
82212) iASL Compiler/Disassembler and Tools:
8222
8223iASL: Relax the alphanumeric restriction on _CID strings. These strings
8224are
8225"bus-specific" per the ACPI specification, and therefore any characters
8226are
8227acceptable. The only checks that can be performed are for a null string
8228and
8229perhaps for a leading asterisk. ACPICA BZ 886.
8230
8231iASL: Fixed a problem where a syntax error that caused a premature EOF
8232condition on the source file emitted a very confusing error message. The
8233premature EOF is now detected correctly. ACPICA BZ 891.
8234
8235Disassembler: Decode the AccessSize within a Generic Address Structure
8236(byte
8237access, word access, etc.) Note, this field does not allow arbitrary bit
8238access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
8239
8240New: AcpiNames utility - Example namespace dump utility. Shows an example
8241of
8242ACPICA configuration for a minimal namespace dump utility. Uses table and
8243namespace managers, but no AML interpreter. Does not add any
8244functionality
8245over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
8246partition and configure ACPICA. ACPICA BZ 883.
8247
8248AML Debugger: Increased the debugger buffer size for method return
8249objects.
8250Was 4K, increased to 16K. Also enhanced error messages for debugger
8251method
8252execution, including the buffer overflow case.
8253
8254----------------------------------------
825513 October 2010. Summary of changes for version 20101013:
8256
82571) ACPI CA Core Subsystem:
8258
8259Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
8260now
8261clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
8262HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
8263
8264Changed the type of the predefined namespace object _TZ from ThermalZone
8265to
8266Device. This was found to be confusing to the host software that
8267processes
8268the various thermal zones, since _TZ is not really a ThermalZone.
8269However,
8270a
8271Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
8272Zhang.
8273
8274Added Windows Vista SP2 to the list of supported _OSI strings. The actual
8275string is "Windows 2006 SP2".
8276
8277Eliminated duplicate code in AcpiUtExecute* functions. Now that the
8278nsrepair
8279code automatically repairs _HID-related strings, this type of code is no
8280longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
8281878.
8282
8283Example Code and Data Size: These are the sizes for the OS-independent
8284acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8285debug version of the code includes the debug output trace mechanism and
8286has a
8287much larger code and data size.
8288
8289  Previous Release:
8290    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8291    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8292  Current Release:
8293    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8294    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8295
82962) iASL Compiler/Disassembler and Tools:
8297
8298iASL: Implemented additional compile-time validation for _HID strings.
8299The
8300non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
8301length
8302of
8303the string must be exactly seven or eight characters. For both _HID and
8304_CID
8305strings, all characters must be alphanumeric. ACPICA BZ 874.
8306
8307iASL: Allow certain "null" resource descriptors. Some BIOS code creates
8308descriptors that are mostly or all zeros, with the expectation that they
8309will
8310be filled in at runtime. iASL now allows this as long as there is a
8311"resource
8312tag" (name) associated with the descriptor, which gives the ASL a handle
8313needed to modify the descriptor. ACPICA BZ 873.
8314
8315Added single-thread support to the generic Unix application OSL.
8316Primarily
8317for iASL support, this change removes the use of semaphores in the
8318single-
8319threaded ACPICA tools/applications - increasing performance. The
8320_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
8321option. ACPICA BZ 879.
8322
8323AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
8324support
8325for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
8326
8327iASL: Moved all compiler messages to a new file, aslmessages.h.
8328
8329----------------------------------------
833015 September 2010. Summary of changes for version 20100915:
8331
83321) ACPI CA Core Subsystem:
8333
8334Removed the AcpiOsDerivePciId OSL interface. The various host
8335implementations
8336of this function were not OS-dependent and are now obsolete and can be
8337removed from all host OSLs. This function has been replaced by
8338AcpiHwDerivePciId, which is now part of the ACPICA core code.
8339AcpiHwDerivePciId has been implemented without recursion. Adds one new
8340module, hwpci.c. ACPICA BZ 857.
8341
8342Implemented a dynamic repair for _HID and _CID strings. The following
8343problems are now repaired at runtime: 1) Remove a leading asterisk in the
8344string, and 2) the entire string is uppercased. Both repairs are in
8345accordance with the ACPI specification and will simplify host driver
8346code.
8347ACPICA BZ 871.
8348
8349The ACPI_THREAD_ID type is no longer configurable, internally it is now
8350always UINT64. This simplifies the ACPICA code, especially any printf
8351output.
8352UINT64 is the only common data type for all thread_id types across all
8353operating systems. It is now up to the host OSL to cast the native
8354thread_id
8355type to UINT64 before returning the value to ACPICA (via
8356AcpiOsGetThreadId).
8357Lin Ming, Bob Moore.
8358
8359Added the ACPI_INLINE type to enhance the ACPICA configuration. The
8360"inline"
8361keyword is not standard across compilers, and this type allows inline to
8362be
8363configured on a per-compiler basis. Lin Ming.
8364
8365Made the system global AcpiGbl_SystemAwakeAndRunning publicly
8366available.
8367Added an extern for this boolean in acpixf.h. Some hosts utilize this
8368value
8369during suspend/restore operations. ACPICA BZ 869.
8370
8371All code that implements error/warning messages with the "ACPI:" prefix
8372has
8373been moved to a new module, utxferror.c.
8374
8375The UINT64_OVERLAY was moved to utmath.c, which is the only module where
8376it
8377is used. ACPICA BZ 829. Lin Ming, Bob Moore.
8378
8379Example Code and Data Size: These are the sizes for the OS-independent
8380acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8381debug version of the code includes the debug output trace mechanism and
8382has a
8383much larger code and data size.
8384
8385  Previous Release:
8386    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
8387    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
8388  Current Release:
8389    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8390    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8391
83922) iASL Compiler/Disassembler and Tools:
8393
8394iASL/Disassembler: Write ACPI errors to stderr instead of the output
8395file.
8396This keeps the output files free of random error messages that may
8397originate
8398from within the namespace/interpreter code. Used this opportunity to
8399merge
8400all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
8401866. Lin Ming, Bob Moore.
8402
8403Tools: update some printfs for ansi warnings on size_t. Handle width
8404change
8405of size_t on 32-bit versus 64-bit generations. Lin Ming.
8406
8407----------------------------------------
840806 August 2010. Summary of changes for version 20100806:
8409
84101) ACPI CA Core Subsystem:
8411
8412Designed and implemented a new host interface to the _OSI support code.
8413This
8414will allow the host to dynamically add or remove multiple _OSI strings,
8415as
8416well as install an optional handler that is called for each _OSI
8417invocation.
8418Also added a new AML debugger command, 'osi' to display and modify the
8419global
8420_OSI string table, and test support in the AcpiExec utility. See the
8421ACPICA
8422reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
8423New Functions:
8424    AcpiInstallInterface - Add an _OSI string.
8425    AcpiRemoveInterface - Delete an _OSI string.
8426    AcpiInstallInterfaceHandler - Install optional _OSI handler.
8427Obsolete Functions:
8428    AcpiOsValidateInterface - no longer used.
8429New Files:
8430    source/components/utilities/utosi.c
8431
8432Re-introduced the support to enable multi-byte transfers for Embedded
8433Controller (EC) operation regions. A reported problem was found to be a
8434bug
8435in the host OS, not in the multi-byte support. Previously, the maximum
8436data
8437size passed to the EC operation region handler was a single byte. There
8438are
8439often EC Fields larger than one byte that need to be transferred, and it
8440is
8441useful for the EC driver to lock these as a single transaction. This
8442change
8443enables single transfers larger than 8 bits. This effectively changes the
8444access to the EC space from ByteAcc to AnyAcc, and will probably require
8445changes to the host OS Embedded Controller driver to enable 16/32/64/256-
8446bit
8447transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
8448
8449Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
8450prototype in acpiosxf.h had the output value pointer as a (void *).
8451It should be a (UINT64 *). This may affect some host OSL code.
8452
8453Fixed a couple problems with the recently modified Linux makefiles for
8454iASL
8455and AcpiExec. These new makefiles place the generated object files in the
8456local directory so that there can be no collisions between the files that
8457are
8458shared between them that are compiled with different options.
8459
8460Example Code and Data Size: These are the sizes for the OS-independent
8461acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8462debug version of the code includes the debug output trace mechanism and
8463has a
8464much larger code and data size.
8465
8466  Previous Release:
8467    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8468    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8469  Current Release:
8470    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
8471    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
8472
84732) iASL Compiler/Disassembler and Tools:
8474
8475iASL/Disassembler: Added a new option (-da, "disassemble all") to load
8476the
8477namespace from and disassemble an entire group of AML files. Useful for
8478loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
8479and
8480disassembling with one simple command. ACPICA BZ 865. Lin Ming.
8481
8482iASL: Allow multiple invocations of -e option. This change allows
8483multiple
8484uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
8485834.
8486Lin Ming.
8487
8488----------------------------------------
848902 July 2010. Summary of changes for version 20100702:
8490
84911) ACPI CA Core Subsystem:
8492
8493Implemented several updates to the recently added GPE reference count
8494support. The model for "wake" GPEs is changing to give the host OS
8495complete
8496control of these GPEs. Eventually, the ACPICA core will not execute any
8497_PRW
8498methods, since the host already must execute them. Also, additional
8499changes
8500were made to help ensure that the reference counts are kept in proper
8501synchronization with reality. Rafael J. Wysocki.
8502
85031) Ensure that GPEs are not enabled twice during initialization.
85042) Ensure that GPE enable masks stay in sync with the reference count.
85053) Do not inadvertently enable GPEs when writing GPE registers.
85064) Remove the internal wake reference counter and add new AcpiGpeWakeup
8507interface. This interface will set or clear individual GPEs for wakeup.
85085) Remove GpeType argument from AcpiEnable and AcpiDisable. These
8509interfaces
8510are now used for "runtime" GPEs only.
8511
8512Changed the behavior of the GPE install/remove handler interfaces. The
8513GPE
8514is
8515no longer disabled during this process, as it was found to cause problems
8516on
8517some machines. Rafael J. Wysocki.
8518
8519Reverted a change introduced in version 20100528 to enable Embedded
8520Controller multi-byte transfers. This change was found to cause problems
8521with
8522Index Fields and possibly Bank Fields. It will be reintroduced when these
8523problems have been resolved.
8524
8525Fixed a problem with references to Alias objects within Package Objects.
8526A
8527reference to an Alias within the definition of a Package was not always
8528resolved properly. Aliases to objects like Processors, Thermal zones,
8529etc.
8530were resolved to the actual object instead of a reference to the object
8531as
8532it
8533should be. Package objects are only allowed to contain integer, string,
8534buffer, package, and reference objects. Redhat bugzilla 608648.
8535
8536Example Code and Data Size: These are the sizes for the OS-independent
8537acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8538debug version of the code includes the debug output trace mechanism and
8539has a
8540much larger code and data size.
8541
8542  Previous Release:
8543    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8544    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8545  Current Release:
8546    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8547    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8548
85492) iASL Compiler/Disassembler and Tools:
8550
8551iASL: Implemented a new compiler subsystem to allow definition and
8552compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
8553These
8554are called "ACPI Data Tables", and the new compiler is the "Data Table
8555Compiler". This compiler is intended to simplify the existing error-prone
8556process of creating these tables for the BIOS, as well as allowing the
8557disassembly, modification, recompilation, and override of existing ACPI
8558data
8559tables. See the iASL User Guide for detailed information.
8560
8561iASL: Implemented a new Template Generator option in support of the new
8562Data
8563Table Compiler. This option will create examples of all known ACPI tables
8564that can be used as the basis for table development. See the iASL
8565documentation and the -T option.
8566
8567Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
8568Descriptor Table).
8569
8570Updated the Linux makefiles for iASL and AcpiExec to place the generated
8571object files in the local directory so that there can be no collisions
8572between the shared files between them that are generated with different
8573options.
8574
8575Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
8576Use
8577the #define __APPLE__ to enable this support.
8578
8579----------------------------------------
858028 May 2010. Summary of changes for version 20100528:
8581
8582Note: The ACPI 4.0a specification was released on April 5, 2010 and is
8583available at www.acpi.info. This is primarily an errata release.
8584
85851) ACPI CA Core Subsystem:
8586
8587Undefined ACPI tables: We are looking for the definitions for the
8588following
8589ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
8590
8591Implemented support to enable multi-byte transfers for Embedded
8592Controller
8593(EC) operation regions. Previously, the maximum data size passed to the
8594EC
8595operation region handler was a single byte. There are often EC Fields
8596larger
8597than one byte that need to be transferred, and it is useful for the EC
8598driver
8599to lock these as a single transaction. This change enables single
8600transfers
8601larger than 8 bits. This effectively changes the access to the EC space
8602from
8603ByteAcc to AnyAcc, and will probably require changes to the host OS
8604Embedded
8605Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
8606bit
8607transfers. Alexey Starikovskiy, Lin Ming
8608
8609Implemented a performance enhancement for namespace search and access.
8610This
8611change enhances the performance of namespace searches and walks by adding
8612a
8613backpointer to the parent in each namespace node. On large namespaces,
8614this
8615change can improve overall ACPI performance by up to 9X. Adding a pointer
8616to
8617each namespace node increases the overall size of the internal namespace
8618by
8619about 5%, since each namespace entry usually consists of both a namespace
8620node and an ACPI operand object. However, this is the first growth of the
8621namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
8622
8623Implemented a performance optimization that reduces the number of
8624namespace
8625walks. On control method exit, only walk the namespace if the method is
8626known
8627to have created namespace objects outside of its local scope. Previously,
8628the
8629entire namespace was traversed on each control method exit. This change
8630can
8631improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
8632Moore.
8633
8634Added support to truncate I/O addresses to 16 bits for Windows
8635compatibility.
8636Some ASL code has been seen in the field that inadvertently has bits set
8637above bit 15. This feature is optional and is enabled if the BIOS
8638requests
8639any Windows OSI strings. It can also be enabled by the host OS. Matthew
8640Garrett, Bob Moore.
8641
8642Added support to limit the maximum time for the ASL Sleep() operator. To
8643prevent accidental deep sleeps, limit the maximum time that Sleep() will
8644actually sleep. Configurable, the default maximum is two seconds. ACPICA
8645bugzilla 854.
8646
8647Added run-time validation support for the _WDG and_WED Microsoft
8648predefined
8649methods. These objects are defined by "Windows Instrumentation", and are
8650not
8651part of the ACPI spec. ACPICA BZ 860.
8652
8653Expanded all statistic counters used during namespace and device
8654initialization from 16 to 32 bits in order to support very large
8655namespaces.
8656
8657Replaced all instances of %d in printf format specifiers with %u since
8658nearly
8659all integers in ACPICA are unsigned.
8660
8661Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
8662returned
8663as AE_NO_HANDLER.
8664
8665Example Code and Data Size: These are the sizes for the OS-independent
8666acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8667debug version of the code includes the debug output trace mechanism and
8668has a
8669much larger code and data size.
8670
8671  Previous Release:
8672    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8673    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8674  Current Release:
8675    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8676    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8677
86782) iASL Compiler/Disassembler and Tools:
8679
8680iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8681methods. These objects are defined by "Windows Instrumentation", and are
8682not
8683part of the ACPI spec. ACPICA BZ 860.
8684
8685AcpiExec: added option to disable the memory tracking mechanism. The -dt
8686option will disable the tracking mechanism, which improves performance
8687considerably.
8688
8689AcpiExec: Restructured the command line options into -d (disable) and -e
8690(enable) options.
8691
8692----------------------------------------
869328 April 2010. Summary of changes for version 20100428:
8694
86951) ACPI CA Core Subsystem:
8696
8697Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8698including FADT-based and GPE Block Devices, execute any _PRW methods in
8699the
8700new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8701runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8702immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8703Devices. Provides compatibility with other ACPI implementations. Two new
8704files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8705Moore.
8706
8707Fixed a regression introduced in version 20100331 within the table
8708manager
8709where initial table loading could fail. This was introduced in the fix
8710for
8711AcpiReallocateRootTable. Also, renamed some of fields in the table
8712manager
8713data structures to clarify their meaning and use.
8714
8715Fixed a possible allocation overrun during internal object copy in
8716AcpiUtCopySimpleObject. The original code did not correctly handle the
8717case
8718where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8719847.
8720
8721Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8722possible access beyond end-of-allocation. Also, now fully validate
8723descriptor
8724(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8725
8726Example Code and Data Size: These are the sizes for the OS-independent
8727acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8728debug version of the code includes the debug output trace mechanism and
8729has a
8730much larger code and data size.
8731
8732  Previous Release:
8733    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8734    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8735  Current Release:
8736    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8737    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8738
87392) iASL Compiler/Disassembler and Tools:
8740
8741iASL: Implemented Min/Max/Len/Gran validation for address resource
8742descriptors. This change implements validation for the address fields
8743that
8744are common to all address-type resource descriptors. These checks are
8745implemented: Checks for valid Min/Max, length within the Min/Max window,
8746valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8747per
8748table 6-40 in the ACPI 4.0a specification. Also split the large
8749aslrestype1.c
8750and aslrestype2.c files into five new files. ACPICA BZ 840.
8751
8752iASL: Added support for the _Wxx predefined names. This support was
8753missing
8754and these names were not recognized by the compiler as valid predefined
8755names. ACPICA BZ 851.
8756
8757iASL: Added an error for all predefined names that are defined to return
8758no
8759value and thus must be implemented as Control Methods. These include all
8760of
8761the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8762names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8763
8764iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8765an
8766ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8767be
8768dynamically loaded via the Load() operator. Also cleaned up output for
8769the
8770-
8771ta and -tc options. ACPICA BZ 853.
8772
8773Tests: Added a new file with examples of extended iASL error checking.
8774Demonstrates the advanced error checking ability of the iASL compiler.
8775Available at tests/misc/badcode.asl.
8776
8777----------------------------------------
877831 March 2010. Summary of changes for version 20100331:
8779
87801) ACPI CA Core Subsystem:
8781
8782Completed a major update for the GPE support in order to improve support
8783for
8784shared GPEs and to simplify both host OS and ACPICA code. Added a
8785reference
8786count mechanism to support shared GPEs that require multiple device
8787drivers.
8788Several external interfaces have changed. One external interface has been
8789removed. One new external interface was added. Most of the GPE external
8790interfaces now use the GPE spinlock instead of the events mutex (and the
8791Flags parameter for many GPE interfaces has been removed.) See the
8792updated
8793ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8794Rafael
8795Wysocki. ACPICA BZ 831.
8796
8797Changed:
8798    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8799Removed:
8800    AcpiSetGpeType
8801New:
8802    AcpiSetGpe
8803
8804Implemented write support for DataTable operation regions. These regions
8805are
8806defined via the DataTableRegion() operator. Previously, only read support
8807was
8808implemented. The ACPI specification allows DataTableRegions to be
8809read/write,
8810however.
8811
8812Implemented a new subsystem option to force a copy of the DSDT to local
8813memory. Optionally copy the entire DSDT to local memory (instead of
8814simply
8815mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8816replace
8817the original DSDT, creating the need for this option. Default is FALSE,
8818do
8819not copy the DSDT.
8820
8821Implemented detection of a corrupted or replaced DSDT. This change adds
8822support to detect a DSDT that has been corrupted and/or replaced from
8823outside
8824the OS (by firmware). This is typically catastrophic for the system, but
8825has
8826been seen on some machines. Once this problem has been detected, the DSDT
8827copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8828
8829Fixed two problems with AcpiReallocateRootTable during the root table
8830copy.
8831When copying the root table to the new allocation, the length used was
8832incorrect. The new size was used instead of the current table size,
8833meaning
8834too much data was copied. Also, the count of available slots for ACPI
8835tables
8836was not set correctly. Alexey Starikovskiy, Bob Moore.
8837
8838Example Code and Data Size: These are the sizes for the OS-independent
8839acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8840debug version of the code includes the debug output trace mechanism and
8841has a
8842much larger code and data size.
8843
8844  Previous Release:
8845    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8846    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8847  Current Release:
8848    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8849    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8850
88512) iASL Compiler/Disassembler and Tools:
8852
8853iASL: Implement limited typechecking for values returned from predefined
8854control methods. The type of any returned static (unnamed) object is now
8855validated. For example, Return(1). ACPICA BZ 786.
8856
8857iASL: Fixed a predefined name object verification regression. Fixes a
8858problem
8859introduced in version 20100304. An error is incorrectly generated if a
8860predefined name is declared as a static named object with a value defined
8861using the keywords "Zero", "One", or "Ones". Lin Ming.
8862
8863iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8864by
8865reducing the requested registry access rights. ACPICA BZ 842.
8866
8867Disassembler: fixed a possible fault when generating External()
8868statements.
8869Introduced in commit ae7d6fd: Properly handle externals with parent-
8870prefix
8871(carat). Fixes a string length allocation calculation. Lin Ming.
8872
8873----------------------------------------
887404 March 2010. Summary of changes for version 20100304:
8875
88761) ACPI CA Core Subsystem:
8877
8878Fixed a possible problem with the AML Mutex handling function
8879AcpiExReleaseMutex where the function could fault under the very rare
8880condition when the interpreter has blocked, the interpreter lock is
8881released,
8882the interpreter is then reentered via the same thread, and attempts to
8883acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8884Lin
8885Ming.
8886
8887Implemented additional configuration support for the AML "Debug Object".
8888Output from the debug object can now be enabled via a global variable,
8889AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8890debugging.
8891This debug output is now available in the release version of ACPICA
8892instead
8893of just the debug version. Also, the entire debug output module can now
8894be
8895configured out of the ACPICA build if desired. One new file added,
8896executer/exdebug.c. Lin Ming, Bob Moore.
8897
8898Added header support for the ACPI MCHI table (Management Controller Host
8899Interface Table). This table was added in ACPI 4.0, but the defining
8900document
8901has only recently become available.
8902
8903Standardized output of integer values for ACPICA warnings/errors. Always
8904use
89050x prefix for hex output, always use %u for unsigned integer decimal
8906output.
8907Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8908400
8909invocations.) These invocations were converted from the original
8910ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8911
8912Example Code and Data Size: These are the sizes for the OS-independent
8913acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8914debug version of the code includes the debug output trace mechanism and
8915has a
8916much larger code and data size.
8917
8918  Previous Release:
8919    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8920    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8921  Current Release:
8922    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8923    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8924
89252) iASL Compiler/Disassembler and Tools:
8926
8927iASL: Implemented typechecking support for static (non-control method)
8928predefined named objects that are declared with the Name() operator. For
8929example, the type of this object is now validated to be of type Integer:
8930Name(_BBN, 1). This change migrates the compiler to using the core
8931predefined
8932name table instead of maintaining a local version. Added a new file,
8933aslpredef.c. ACPICA BZ 832.
8934
8935Disassembler: Added support for the ACPI 4.0 MCHI table.
8936
8937----------------------------------------
893821 January 2010. Summary of changes for version 20100121:
8939
89401) ACPI CA Core Subsystem:
8941
8942Added the 2010 copyright to all module headers and signons. This affects
8943virtually every file in the ACPICA core subsystem, the iASL compiler, the
8944tools/utilities, and the test suites.
8945
8946Implemented a change to the AcpiGetDevices interface to eliminate
8947unnecessary
8948invocations of the _STA method. In the case where a specific _HID is
8949requested, do not run _STA until a _HID match is found. This eliminates
8950potentially dozens of _STA calls during a search for a particular
8951device/HID,
8952which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8953
8954Implemented an additional repair for predefined method return values.
8955Attempt
8956to repair unexpected NULL elements within returned Package objects.
8957Create
8958an
8959Integer of value zero, a NULL String, or a zero-length Buffer as
8960appropriate.
8961ACPICA BZ 818. Lin Ming, Bob Moore.
8962
8963Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8964the
8965code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8966(with
896764-bit AML integers). It is now obsolete and this change removes it from
8968the
8969ACPICA code base, replaced by UINT64. The original typedef has been
8970retained
8971for now for compatibility with existing device driver code. ACPICA BZ
8972824.
8973
8974Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8975in
8976the parse tree object.
8977
8978Added additional warning options for the gcc-4 generation. Updated the
8979source
8980accordingly. This includes some code restructuring to eliminate
8981unreachable
8982code, elimination of some gotos, elimination of unused return values,
8983some
8984additional casting, and removal of redundant declarations.
8985
8986Example Code and Data Size: These are the sizes for the OS-independent
8987acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8988debug version of the code includes the debug output trace mechanism and
8989has a
8990much larger code and data size.
8991
8992  Previous Release:
8993    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8994    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8995  Current Release:
8996    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8997    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8998
89992) iASL Compiler/Disassembler and Tools:
9000
9001No functional changes for this release.
9002
9003----------------------------------------
900414 December 2009. Summary of changes for version 20091214:
9005
90061) ACPI CA Core Subsystem:
9007
9008Enhanced automatic data type conversions for predefined name repairs.
9009This
9010change expands the automatic repairs/conversions for predefined name
9011return
9012values to make Integers, Strings, and Buffers fully interchangeable.
9013Also,
9014a
9015Buffer can be converted to a Package of Integers if necessary. The
9016nsrepair.c
9017module was completely restructured. Lin Ming, Bob Moore.
9018
9019Implemented automatic removal of null package elements during predefined
9020name
9021repairs. This change will automatically remove embedded and trailing NULL
9022package elements from returned package objects that are defined to
9023contain
9024a
9025variable number of sub-packages. The driver is then presented with a
9026package
9027with no null elements to deal with. ACPICA BZ 819.
9028
9029Implemented a repair for the predefined _FDE and _GTM names. The expected
9030return value for both names is a Buffer of 5 DWORDs. This repair fixes
9031two
9032possible problems (both seen in the field), where a package of integers
9033is
9034returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
9035Kim.
9036
9037Implemented additional module-level code support. This change will
9038properly
9039execute module-level code that is not at the root of the namespace (under
9040a
9041Device object, etc.). Now executes the code within the current scope
9042instead
9043of the root. ACPICA BZ 762. Lin Ming.
9044
9045Fixed possible mutex acquisition errors when running _REG methods. Fixes
9046a
9047problem where mutex errors can occur when running a _REG method that is
9048in
9049the same scope as a method-defined operation region or an operation
9050region
9051under a module-level IF block. This type of code is rare, so the problem
9052has
9053not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
9054
9055Fixed a possible memory leak during module-level code execution. An
9056object
9057could be leaked for each block of executed module-level code if the
9058interpreter slack mode is enabled This change deletes any implicitly
9059returned
9060object from the module-level code block. Lin Ming.
9061
9062Removed messages for successful predefined repair(s). The repair
9063mechanism
9064was considered too wordy. Now, messages are only unconditionally emitted
9065if
9066the return object cannot be repaired. Existing messages for successful
9067repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
9068827.
9069
9070Example Code and Data Size: These are the sizes for the OS-independent
9071acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9072debug version of the code includes the debug output trace mechanism and
9073has a
9074much larger code and data size.
9075
9076  Previous Release:
9077    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
9078    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
9079  Current Release:
9080    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
9081    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
9082
90832) iASL Compiler/Disassembler and Tools:
9084
9085iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
9086files
9087were no longer automatically removed at the termination of the compile.
9088
9089acpiexec: Implemented the -f option to specify default region fill value.
9090This option specifies the value used to initialize buffers that simulate
9091operation regions. Default value is zero. Useful for debugging problems
9092that
9093depend on a specific initial value for a region or field.
9094
9095----------------------------------------
909612 November 2009. Summary of changes for version 20091112:
9097
90981) ACPI CA Core Subsystem:
9099
9100Implemented a post-order callback to AcpiWalkNamespace. The existing
9101interface only has a pre-order callback. This change adds an additional
9102parameter for a post-order callback which will be more useful for bus
9103scans.
9104ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
9105
9106Modified the behavior of the operation region memory mapping cache for
9107SystemMemory. Ensure that the memory mappings created for operation
9108regions
9109do not cross 4K page boundaries. Crossing a page boundary while mapping
9110regions can cause kernel warnings on some hosts if the pages have
9111different
9112attributes. Such regions are probably BIOS bugs, and this is the
9113workaround.
9114Linux BZ 14445. Lin Ming.
9115
9116Implemented an automatic repair for predefined methods that must return
9117sorted lists. This change will repair (by sorting) packages returned by
9118_ALR,
9119_PSS, and _TSS. Drivers can now assume that the packages are correctly
9120sorted
9121and do not contain NULL package elements. Adds one new file,
9122namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
9123
9124Fixed a possible fault during predefined name validation if a return
9125Package
9126object contains NULL elements. Also adds a warning if a NULL element is
9127followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
9128may
9129include repair or removal of all such NULL elements where possible.
9130
9131Implemented additional module-level executable AML code support. This
9132change
9133will execute module-level code that is not at the root of the namespace
9134(under a Device object, etc.) at table load time. Module-level executable
9135AML
9136code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
9137
9138Implemented a new internal function to create Integer objects. This
9139function
9140simplifies miscellaneous object creation code. ACPICA BZ 823.
9141
9142Reduced the severity of predefined repair messages, Warning to Info.
9143Since
9144the object was successfully repaired, a warning is too severe. Reduced to
9145an
9146info message for now. These messages may eventually be changed to debug-
9147only.
9148ACPICA BZ 812.
9149
9150Example Code and Data Size: These are the sizes for the OS-independent
9151acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9152debug version of the code includes the debug output trace mechanism and
9153has a
9154much larger code and data size.
9155
9156  Previous Release:
9157    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
9158    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
9159  Current Release:
9160    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
9161    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
9162
91632) iASL Compiler/Disassembler and Tools:
9164
9165iASL: Implemented Switch() with While(1) so that Break works correctly.
9166This
9167change correctly implements the Switch operator with a surrounding
9168While(1)
9169so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
9170
9171iASL: Added a message if a package initializer list is shorter than
9172package
9173length. Adds a new remark for a Package() declaration if an initializer
9174list
9175exists, but is shorter than the declared length of the package. Although
9176technically legal, this is probably a coding error and it is seen in the
9177field. ACPICA BZ 815. Lin Ming, Bob Moore.
9178
9179iASL: Fixed a problem where the compiler could fault after the maximum
9180number
9181of errors was reached (200).
9182
9183acpixtract: Fixed a possible warning for pointer cast if the compiler
9184warning
9185level set very high.
9186
9187----------------------------------------
918813 October 2009. Summary of changes for version 20091013:
9189
91901) ACPI CA Core Subsystem:
9191
9192Fixed a problem where an Operation Region _REG method could be executed
9193more
9194than once. If a custom address space handler is installed by the host
9195before
9196the "initialize operation regions" phase of the ACPICA initialization,
9197any
9198_REG methods for that address space could be executed twice. This change
9199fixes the problem. ACPICA BZ 427. Lin Ming.
9200
9201Fixed a possible memory leak for the Scope() ASL operator. When the exact
9202invocation of "Scope(\)" is executed (change scope to root), one internal
9203operand object was leaked. Lin Ming.
9204
9205Implemented a run-time repair for the _MAT predefined method. If the _MAT
9206return value is defined as a Field object in the AML, and the field
9207size is less than or equal to the default width of an integer (32 or
920864),_MAT
9209can incorrectly return an Integer instead of a Buffer. ACPICA now
9210automatically repairs this problem. ACPICA BZ 810.
9211
9212Implemented a run-time repair for the _BIF and _BIX predefined methods.
9213The
9214"OEM Information" field is often incorrectly returned as an Integer with
9215value zero if the field is not supported by the platform. This is due to
9216an
9217ambiguity in the ACPI specification. The field should always be a string.
9218ACPICA now automatically repairs this problem by returning a NULL string
9219within the returned Package. ACPICA BZ 807.
9220
9221Example Code and Data Size: These are the sizes for the OS-independent
9222acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9223debug version of the code includes the debug output trace mechanism and
9224has a
9225much larger code and data size.
9226
9227  Previous Release:
9228    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
9229    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
9230  Current Release:
9231    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
9232    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
9233
92342) iASL Compiler/Disassembler and Tools:
9235
9236Disassembler: Fixed a problem where references to external symbols that
9237contained one or more parent-prefixes (carats) were not handled
9238correctly,
9239possibly causing a fault. ACPICA BZ 806. Lin Ming.
9240
9241Disassembler: Restructured the code so that all functions that handle
9242external symbols are in a single module. One new file is added,
9243common/dmextern.c.
9244
9245AML Debugger: Added a max count argument for the Batch command (which
9246executes multiple predefined methods within the namespace.)
9247
9248iASL: Updated the compiler documentation (User Reference.) Available at
9249http://www.acpica.org/documentation/. ACPICA BZ 750.
9250
9251AcpiXtract: Updated for Lint and other formatting changes. Close all open
9252files.
9253
9254----------------------------------------
925503 September 2009. Summary of changes for version 20090903:
9256
92571) ACPI CA Core Subsystem:
9258
9259For Windows Vista compatibility, added the automatic execution of an _INI
9260method located at the namespace root (\_INI). This method is executed at
9261table load time. This support is in addition to the automatic execution
9262of
9263\_SB._INI. Lin Ming.
9264
9265Fixed a possible memory leak in the interpreter for AML package objects
9266if
9267the package initializer list is longer than the defined size of the
9268package.
9269This apparently can only happen if the BIOS changes the package size on
9270the
9271fly (seen in a _PSS object), as ASL compilers do not allow this. The
9272interpreter will truncate the package to the defined size (and issue an
9273error
9274message), but previously could leave the extra objects undeleted if they
9275were
9276pre-created during the argument processing (such is the case if the
9277package
9278consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
9279
9280Fixed a problem seen when a Buffer or String is stored to itself via ASL.
9281This has been reported in the field. Previously, ACPICA would zero out
9282the
9283buffer/string. Now, the operation is treated as a noop. Provides Windows
9284compatibility. ACPICA BZ 803. Lin Ming.
9285
9286Removed an extraneous error message for ASL constructs of the form
9287Store(LocalX,LocalX) when LocalX is uninitialized. These curious
9288statements
9289are seen in many BIOSs and are once again treated as NOOPs and no error
9290is
9291emitted when they are encountered. ACPICA BZ 785.
9292
9293Fixed an extraneous warning message if a _DSM reserved method returns a
9294Package object. _DSM can return any type of object, so validation on the
9295return type cannot be performed. ACPICA BZ 802.
9296
9297Example Code and Data Size: These are the sizes for the OS-independent
9298acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9299debug version of the code includes the debug output trace mechanism and
9300has a
9301much larger code and data size.
9302
9303  Previous Release:
9304    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
9305    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
9306  Current Release:
9307    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
9308    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
9309
93102) iASL Compiler/Disassembler and Tools:
9311
9312iASL: Fixed a problem with the use of the Alias operator and Resource
9313Templates. The correct alias is now constructed and no error is emitted.
9314ACPICA BZ 738.
9315
9316iASL: Implemented the -I option to specify additional search directories
9317for
9318include files. Allows multiple additional search paths for include files.
9319Directories are searched in the order specified on the command line
9320(after
9321the local directory is searched.) ACPICA BZ 800.
9322
9323iASL: Fixed a problem where the full pathname for include files was not
9324emitted for warnings/errors. This caused the IDE support to not work
9325properly. ACPICA BZ 765.
9326
9327iASL: Implemented the -@ option to specify a Windows-style response file
9328containing additional command line options. ACPICA BZ 801.
9329
9330AcpiExec: Added support to load multiple AML files simultaneously (such
9331as
9332a
9333DSDT and multiple SSDTs). Also added support for wildcards within the AML
9334pathname. These features allow all machine tables to be easily loaded and
9335debugged together. ACPICA BZ 804.
9336
9337Disassembler: Added missing support for disassembly of HEST table Error
9338Bank
9339subtables.
9340
9341----------------------------------------
934230 July 2009. Summary of changes for version 20090730:
9343
9344The ACPI 4.0 implementation for ACPICA is complete with this release.
9345
93461) ACPI CA Core Subsystem:
9347
9348ACPI 4.0: Added header file support for all new and changed ACPI tables.
9349Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
9350new
9351for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
9352BERT,
9353EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
9354There
9355have been some ACPI 4.0 changes to other existing tables. Split the large
9356actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
9357
9358ACPI 4.0: Implemented predefined name validation for all new names. There
9359are
936031 new names in ACPI 4.0. The predefined validation module was split into
9361two
9362files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
9363
9364Implemented support for so-called "module-level executable code". This is
9365executable AML code that exists outside of any control method and is
9366intended
9367to be executed at table load time. Although illegal since ACPI 2.0, this
9368type
9369of code still exists and is apparently still being created. Blocks of
9370this
9371code are now detected and executed as intended. Currently, the code
9372blocks
9373must exist under either an If, Else, or While construct; these are the
9374typical cases seen in the field. ACPICA BZ 762. Lin Ming.
9375
9376Implemented an automatic dynamic repair for predefined names that return
9377nested Package objects. This applies to predefined names that are defined
9378to
9379return a variable-length Package of sub-packages. If the number of sub-
9380packages is one, BIOS code is occasionally seen that creates a simple
9381single
9382package with no sub-packages. This code attempts to fix the problem by
9383wrapping a new package object around the existing package. These methods
9384can
9385be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
9386BZ
9387790.
9388
9389Fixed a regression introduced in 20090625 for the AcpiGetDevices
9390interface.
9391The _HID/_CID matching was broken and no longer matched IDs correctly.
9392ACPICA
9393BZ 793.
9394
9395Fixed a problem with AcpiReset where the reset would silently fail if the
9396register was one of the protected I/O ports. AcpiReset now bypasses the
9397port
9398validation mechanism. This may eventually be driven into the
9399AcpiRead/Write
9400interfaces.
9401
9402Fixed a regression related to the recent update of the AcpiRead/Write
9403interfaces. A sleep/suspend could fail if the optional PM2 Control
9404register
9405does not exist during an attempt to write the Bus Master Arbitration bit.
9406(However, some hosts already delete the code that writes this bit, and
9407the
9408code may in fact be obsolete at this date.) ACPICA BZ 799.
9409
9410Fixed a problem where AcpiTerminate could fault if inadvertently called
9411twice
9412in succession. ACPICA BZ 795.
9413
9414Example Code and Data Size: These are the sizes for the OS-independent
9415acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9416debug version of the code includes the debug output trace mechanism and
9417has a
9418much larger code and data size.
9419
9420  Previous Release:
9421    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9422    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9423  Current Release:
9424    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
9425    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
9426
94272) iASL Compiler/Disassembler and Tools:
9428
9429ACPI 4.0: Implemented disassembler support for all new ACPI tables and
9430changes to existing tables. ACPICA BZ 775.
9431
9432----------------------------------------
943325 June 2009. Summary of changes for version 20090625:
9434
9435The ACPI 4.0 Specification was released on June 16 and is available at
9436www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
9437continue for the next few releases.
9438
94391) ACPI CA Core Subsystem:
9440
9441ACPI 4.0: Implemented interpreter support for the IPMI operation region
9442address space. Includes support for bi-directional data buffers and an
9443IPMI
9444address space handler (to be installed by an IPMI device driver.) ACPICA
9445BZ
9446773. Lin Ming.
9447
9448ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
9449Includes
9450support in both the header files and the disassembler.
9451
9452Completed a major update for the AcpiGetObjectInfo external interface.
9453Changes include:
9454 - Support for variable, unlimited length HID, UID, and CID strings.
9455 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
9456etc.)
9457 - Call the _SxW power methods on behalf of a device object.
9458 - Determine if a device is a PCI root bridge.
9459 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
9460These changes will require an update to all callers of this interface.
9461See
9462the updated ACPICA Programmer Reference for details. One new source file
9463has
9464been added - utilities/utids.c. ACPICA BZ 368, 780.
9465
9466Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
9467transfers. The Value parameter has been extended from 32 bits to 64 bits
9468in
9469order to support new ACPI 4.0 tables. These changes will require an
9470update
9471to
9472all callers of these interfaces. See the ACPICA Programmer Reference for
9473details. ACPICA BZ 768.
9474
9475Fixed several problems with AcpiAttachData. The handler was not invoked
9476when
9477the host node was deleted. The data sub-object was not automatically
9478deleted
9479when the host node was deleted. The interface to the handler had an
9480unused
9481parameter, this was removed. ACPICA BZ 778.
9482
9483Enhanced the function that dumps ACPI table headers. All non-printable
9484characters in the string fields are now replaced with '?' (Signature,
9485OemId,
9486OemTableId, and CompilerId.) ACPI tables with non-printable characters in
9487these fields are occasionally seen in the field. ACPICA BZ 788.
9488
9489Fixed a problem with predefined method repair code where the code that
9490attempts to repair/convert an object of incorrect type is only executed
9491on
9492the first time the predefined method is called. The mechanism that
9493disables
9494warnings on subsequent calls was interfering with the repair mechanism.
9495ACPICA BZ 781.
9496
9497Fixed a possible memory leak in the predefined validation/repair code
9498when
9499a
9500buffer is automatically converted to an expected string object.
9501
9502Removed obsolete 16-bit files from the distribution and from the current
9503git
9504tree head. ACPICA BZ 776.
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:  83.4K Code, 17.5K Data, 100.9K Total
9514    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9515  Current Release:
9516    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9517    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9518
95192) iASL Compiler/Disassembler and Tools:
9520
9521ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
9522operation region keyword. ACPICA BZ 771, 772. Lin Ming.
9523
9524ACPI 4.0: iASL - implemented compile-time validation support for all new
9525predefined names and control methods (31 total). ACPICA BZ 769.
9526
9527----------------------------------------
952821 May 2009. Summary of changes for version 20090521:
9529
95301) ACPI CA Core Subsystem:
9531
9532Disabled the preservation of the SCI enable bit in the PM1 control
9533register.
9534The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
9535to
9536be
9537a "preserved" bit - "OSPM always preserves this bit position", section
95384.7.3.2.1. However, some machines fail if this bit is in fact preserved
9539because the bit needs to be explicitly set by the OS as a workaround. No
9540machines fail if the bit is not preserved. Therefore, ACPICA no longer
9541attempts to preserve this bit.
9542
9543Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
9544incorrectly formed _PRT package could cause a fault. Added validation to
9545ensure that each package element is actually a sub-package.
9546
9547Implemented a new interface to install or override a single control
9548method,
9549AcpiInstallMethod. This interface is useful when debugging in order to
9550repair
9551an existing method or to install a missing method without having to
9552override
9553the entire ACPI table. See the ACPICA Programmer Reference for use and
9554examples. Lin Ming, Bob Moore.
9555
9556Fixed several reference count issues with the DdbHandle object that is
9557created from a Load or LoadTable operator. Prevent premature deletion of
9558the
9559object. Also, mark the object as invalid once the table has been
9560unloaded.
9561This is needed because the handle itself may not be deleted after the
9562table
9563unload, depending on whether it has been stored in a named object by the
9564caller. Lin Ming.
9565
9566Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
9567mutexes of the same sync level are acquired but then not released in
9568strict
9569opposite order, the internally maintained Current Sync Level becomes
9570confused
9571and can cause subsequent execution errors. ACPICA BZ 471.
9572
9573Changed the allowable release order for ASL mutex objects. The ACPI 4.0
9574specification has been changed to make the SyncLevel for mutex objects
9575more
9576useful. When releasing a mutex, the SyncLevel of the mutex must now be
9577the
9578same as the current sync level. This makes more sense than the previous
9579rule
9580(SyncLevel less than or equal). This change updates the code to match the
9581specification.
9582
9583Fixed a problem with the local version of the AcpiOsPurgeCache function.
9584The
9585(local) cache must be locked during all cache object deletions. Andrew
9586Baumann.
9587
9588Updated the Load operator to use operation region interfaces. This
9589replaces
9590direct memory mapping with region access calls. Now, all region accesses
9591go
9592through the installed region handler as they should.
9593
9594Simplified and optimized the NsGetNextNode function. Reduced parameter
9595count
9596and reduced code for this frequently used function.
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:  82.8K Code, 17.5K Data, 100.3K Total
9606    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9607  Current Release:
9608    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9609    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9610
96112) iASL Compiler/Disassembler and Tools:
9612
9613Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
9614problems
9615with sub-table disassembly and handling invalid sub-tables. Attempt
9616recovery
9617after an invalid sub-table ID.
9618
9619----------------------------------------
962022 April 2009. Summary of changes for version 20090422:
9621
96221) ACPI CA Core Subsystem:
9623
9624Fixed a compatibility issue with the recently released I/O port
9625protection
9626mechanism. For windows compatibility, 1) On a port protection violation,
9627simply ignore the request and do not return an exception (allow the
9628control
9629method to continue execution.) 2) If only part of the request overlaps a
9630protected port, read/write the individual ports that are not protected.
9631Linux
9632BZ 13036. Lin Ming
9633
9634Enhanced the execution of the ASL/AML BreakPoint operator so that it
9635actually
9636breaks into the AML debugger if the debugger is present. This matches the
9637ACPI-defined behavior.
9638
9639Fixed several possible warnings related to the use of the configurable
9640ACPI_THREAD_ID. This type can now be configured as either an integer or a
9641pointer with no warnings. Also fixes several warnings in printf-like
9642statements for the 64-bit build when the type is configured as a pointer.
9643ACPICA BZ 766, 767.
9644
9645Fixed a number of possible warnings when compiling with gcc 4+ (depending
9646on
9647warning options.) Examples include printf formats, aliasing, unused
9648globals,
9649missing prototypes, missing switch default statements, use of non-ANSI
9650library functions, use of non-ANSI constructs. See generate/unix/Makefile
9651for
9652a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
9653
9654Example Code and Data Size: These are the sizes for the OS-independent
9655acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9656debug version of the code includes the debug output trace mechanism and
9657has a
9658much larger code and data size.
9659
9660  Previous Release:
9661    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9662    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9663  Current Release:
9664    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9665    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9666
96672) iASL Compiler/Disassembler and Tools:
9668
9669iASL: Fixed a generation warning from Bison 2.3 and fixed several
9670warnings
9671on
9672the 64-bit build.
9673
9674iASL: Fixed a problem where the Unix/Linux versions of the compiler could
9675not
9676correctly digest Windows/DOS formatted files (with CR/LF).
9677
9678iASL: Added a new option for "quiet mode" (-va) that produces only the
9679compilation summary, not individual errors and warnings. Useful for large
9680batch compilations.
9681
9682AcpiExec: Implemented a new option (-z) to enable a forced
9683semaphore/mutex
9684timeout that can be used to detect hang conditions during execution of
9685AML
9686code (includes both internal semaphores and AML-defined mutexes and
9687events.)
9688
9689Added new makefiles for the generation of acpica in a generic unix-like
9690environment. These makefiles are intended to generate the acpica tools
9691and
9692utilities from the original acpica git source tree structure.
9693
9694Test Suites: Updated and cleaned up the documentation files. Updated the
9695copyrights to 2009, affecting all source files. Use the new version of
9696iASL
9697with quiet mode. Increased the number of available semaphores in the
9698Windows
9699OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9700added
9701an alternate implementation of the semaphore timeout to allow aslts to
9702execute fully on Cygwin.
9703
9704----------------------------------------
970520 March 2009. Summary of changes for version 20090320:
9706
97071) ACPI CA Core Subsystem:
9708
9709Fixed a possible race condition between AcpiWalkNamespace and dynamic
9710table
9711unloads. Added a reader/writer locking mechanism to allow multiple
9712concurrent
9713namespace walks (readers), but block a dynamic table unload until it can
9714gain
9715exclusive write access to the namespace. This fixes a problem where a
9716table
9717unload could (possibly catastrophically) delete the portion of the
9718namespace
9719that is currently being examined by a walk. Adds a new file, utlock.c,
9720that
9721implements the reader/writer lock mechanism. ACPICA BZ 749.
9722
9723Fixed a regression introduced in version 20090220 where a change to the
9724FADT
9725handling could cause the ACPICA subsystem to access non-existent I/O
9726ports.
9727
9728Modified the handling of FADT register and table (FACS/DSDT) addresses.
9729The
9730FADT can contain both 32-bit and 64-bit versions of these addresses.
9731Previously, the 64-bit versions were favored, meaning that if both 32 and
973264
9733versions were valid, but not equal, the 64-bit version was used. This was
9734found to cause some machines to fail. Now, in this case, the 32-bit
9735version
9736is used instead. This now matches the Windows behavior.
9737
9738Implemented a new mechanism to protect certain I/O ports. Provides
9739Microsoft
9740compatibility and protects the standard PC I/O ports from access via AML
9741code. Adds a new file, hwvalid.c
9742
9743Fixed a possible extraneous warning message from the FADT support. The
9744message warns of a 32/64 length mismatch between the legacy and GAS
9745definitions for a register.
9746
9747Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9748is
9749made obsolete by the port protection mechanism above. It was previously
9750used
9751to validate the entire address range of an operation region, which could
9752be
9753incorrect if the range included illegal ports, but fields within the
9754operation region did not actually access those ports. Validation is now
9755performed on a per-field basis instead of the entire region.
9756
9757Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9758Ignored bits must be "preserved" according to the ACPI spec. Usually,
9759this
9760means a read/modify/write when writing to the register. However, for
9761status
9762registers, writing a one means clear the event. Writing a zero means
9763preserve
9764the event (do not clear.) This behavior is clarified in the ACPI 4.0
9765spec,
9766and the ACPICA code now simply always writes a zero to the ignored bit.
9767
9768Modified the handling of ignored bits for the PM1 A/B Control Registers.
9769As
9770per the ACPI specification, for the control registers, preserve
9771(read/modify/write) all bits that are defined as either reserved or
9772ignored.
9773
9774Updated the handling of write-only bits in the PM1 A/B Control Registers.
9775When reading the register, zero the write-only bits as per the ACPI spec.
9776ACPICA BZ 443. Lin Ming.
9777
9778Removed "Linux" from the list of supported _OSI strings. Linux no longer
9779wants to reply true to this request. The Windows strings are the only
9780paths
9781through the AML that are tested and known to work properly.
9782
9783  Previous Release:
9784    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9785    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9786  Current Release:
9787    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9788    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9789
97902) iASL Compiler/Disassembler and Tools:
9791
9792Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9793and
9794aetables.c
9795
9796----------------------------------------
979720 February 2009. Summary of changes for version 20090220:
9798
97991) ACPI CA Core Subsystem:
9800
9801Optimized the ACPI register locking. Removed locking for reads from the
9802ACPI
9803bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9804is
9805not required when reading the single-bit registers. The
9806AcpiGetRegisterUnlocked function is no longer needed and has been
9807removed.
9808This will improve performance for reads on these registers. ACPICA BZ
9809760.
9810
9811Fixed the parameter validation for AcpiRead/Write. Now return
9812AE_BAD_PARAMETER if the input register pointer is null, and
9813AE_BAD_ADDRESS
9814if
9815the register has an address of zero. Previously, these cases simply
9816returned
9817AE_OK. For optional registers such as PM1B status/enable/control, the
9818caller
9819should check for a valid register address before calling. ACPICA BZ 748.
9820
9821Renamed the external ACPI bit register access functions. Renamed
9822AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9823functions. The new names are AcpiReadBitRegister and
9824AcpiWriteBitRegister.
9825Also, restructured the code for these functions by simplifying the code
9826path
9827and condensing duplicate code to reduce code size.
9828
9829Added new functions to transparently handle the possibly split PM1 A/B
9830registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9831functions
9832now handle the split registers for PM1 Status, Enable, and Control.
9833ACPICA
9834BZ
9835746.
9836
9837Added a function to handle the PM1 control registers,
9838AcpiHwWritePm1Control.
9839This function writes both of the PM1 control registers (A/B). These
9840registers
9841are different than the PM1 A/B status and enable registers in that
9842different
9843values can be written to the A/B registers. Most notably, the SLP_TYP
9844bits
9845can be different, as per the values returned from the _Sx predefined
9846methods.
9847
9848Removed an extra register write within AcpiHwClearAcpiStatus. This
9849function
9850was writing an optional PM1B status register twice. The existing call to
9851the
9852low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9853A/B
9854register. ACPICA BZ 751.
9855
9856Split out the PM1 Status registers from the FADT. Added new globals for
9857these
9858registers (A/B), similar to the way the PM1 Enable registers are handled.
9859Instead of overloading the FADT Event Register blocks. This makes the
9860code
9861clearer and less prone to error.
9862
9863Fixed the warning message for when the platform contains too many ACPI
9864tables
9865for the default size of the global root table data structure. The
9866calculation
9867for the truncation value was incorrect.
9868
9869Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9870obsolete macro, since it is now a simple reference to ->common.type.
9871There
9872were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9873
9874Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9875TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9876simply SLEEP_TYPE. ACPICA BZ 754.
9877
9878Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9879function is only needed on 64-bit host operating systems and is thus not
9880included for 32-bit hosts.
9881
9882Debug output: print the input and result for invocations of the _OSI
9883reserved
9884control method via the ACPI_LV_INFO debug level. Also, reduced some of
9885the
9886verbosity of this debug level. Len Brown.
9887
9888Example Code and Data Size: These are the sizes for the OS-independent
9889acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9890debug version of the code includes the debug output trace mechanism and
9891has a
9892much larger code and data size.
9893
9894  Previous Release:
9895    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9896    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9897  Current Release:
9898    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9899    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9900
99012) iASL Compiler/Disassembler and Tools:
9902
9903Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9904various legal performance profiles.
9905
9906----------------------------------------
990723 January 2009. Summary of changes for version 20090123:
9908
99091) ACPI CA Core Subsystem:
9910
9911Added the 2009 copyright to all module headers and signons. This affects
9912virtually every file in the ACPICA core subsystem, the iASL compiler, and
9913the tools/utilities.
9914
9915Implemented a change to allow the host to override any ACPI table,
9916including
9917dynamically loaded tables. Previously, only the DSDT could be replaced by
9918the
9919host. With this change, the AcpiOsTableOverride interface is called for
9920each
9921table found in the RSDT/XSDT during ACPICA initialization, and also
9922whenever
9923a table is dynamically loaded via the AML Load operator.
9924
9925Updated FADT flag definitions, especially the Boot Architecture flags.
9926
9927Debugger: For the Find command, automatically pad the input ACPI name
9928with
9929underscores if the name is shorter than 4 characters. This enables a
9930match
9931with the actual namespace entry which is itself padded with underscores.
9932
9933Example Code and Data Size: These are the sizes for the OS-independent
9934acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9935debug version of the code includes the debug output trace mechanism and
9936has a
9937much larger code and data size.
9938
9939  Previous Release:
9940    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9941    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9942  Current Release:
9943    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9944    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9945
99462) iASL Compiler/Disassembler and Tools:
9947
9948Fix build error under Bison-2.4.
9949
9950Disassembler: Enhanced FADT support. Added decoding of the Boot
9951Architecture
9952flags. Now decode all flags, regardless of the FADT version. Flag output
9953includes the FADT version which first defined each flag.
9954
9955The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9956and
9957DSDT). Windows only.
9958
9959----------------------------------------
996004 December 2008. Summary of changes for version 20081204:
9961
99621) ACPI CA Core Subsystem:
9963
9964The ACPICA Programmer Reference has been completely updated and revamped
9965for
9966this release. This includes updates to the external interfaces, OSL
9967interfaces, the overview sections, and the debugger reference.
9968
9969Several new ACPICA interfaces have been implemented and documented in the
9970programmer reference:
9971AcpiReset - Writes the reset value to the FADT-defined reset register.
9972AcpiDisableAllGpes - Disable all available GPEs.
9973AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9974AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9975AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9976AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9977AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9978
9979Most of the public ACPI hardware-related interfaces have been moved to a
9980new
9981file, components/hardware/hwxface.c
9982
9983Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9984register lengths within the FADT are now used, and the low level ACPI
9985register access no longer hardcodes the ACPI register lengths. Given that
9986there may be some risk in actually trusting the FADT register lengths, a
9987run-
9988time option was added to fall back to the default hardcoded lengths if
9989the
9990FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9991option is set to true for now, and a warning is issued if a suspicious
9992FADT
9993register length is overridden with the default value.
9994
9995Fixed a reference count issue in NsRepairObject. This problem was
9996introduced
9997in version 20081031 as part of a fix to repair Buffer objects within
9998Packages. Lin Ming.
9999
10000Added semaphore support to the Linux/Unix application OS-services layer
10001(OSL). ACPICA BZ 448. Lin Ming.
10002
10003Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
10004will
10005be implemented in the OSL, or will binary semaphores be used instead.
10006
10007Example Code and Data Size: These are the sizes for the OS-independent
10008acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10009debug version of the code includes the debug output trace mechanism and
10010has a
10011much larger code and data size.
10012
10013  Previous Release:
10014    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
10015    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
10016  Current Release:
10017    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
10018    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
10019
100202) iASL Compiler/Disassembler and Tools:
10021
10022iASL: Completed the '-e' option to include additional ACPI tables in
10023order
10024to
10025aid with disassembly and External statement generation. ACPICA BZ 742.
10026Lin
10027Ming.
10028
10029iASL: Removed the "named object in while loop" error. The compiler cannot
10030determine how many times a loop will execute. ACPICA BZ 730.
10031
10032Disassembler: Implemented support for FADT revision 2 (MS extension).
10033ACPICA
10034BZ 743.
10035
10036Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
10037MCFG).
10038
10039----------------------------------------
1004031 October 2008. Summary of changes for version 20081031:
10041
100421) ACPI CA Core Subsystem:
10043
10044Restructured the ACPICA header files into public/private. acpi.h now
10045includes
10046only the "public" acpica headers. All other acpica headers are "private"
10047and
10048should not be included by acpica users. One new file, accommon.h is used
10049to
10050include the commonly used private headers for acpica code generation.
10051Future
10052plans include moving all private headers to a new subdirectory.
10053
10054Implemented an automatic Buffer->String return value conversion for
10055predefined ACPI methods. For these methods (such as _BIF), added
10056automatic
10057conversion for return objects that are required to be a String, but a
10058Buffer
10059was found instead. This can happen when reading string battery data from
10060an
10061operation region, because it used to be difficult to convert the data
10062from
10063buffer to string from within the ASL. Ensures that the host OS is
10064provided
10065with a valid null-terminated string. Linux BZ 11822.
10066
10067Updated the FACS waking vector interfaces. Split
10068AcpiSetFirmwareWakingVector
10069into two: one for the 32-bit vector, another for the 64-bit vector. This
10070is
10071required because the host OS must setup the wake much differently for
10072each
10073vector (real vs. protected mode, etc.) and the interface itself should
10074not
10075be
10076deciding which vector to use. Also, eliminated the
10077GetFirmwareWakingVector
10078interface, as it served no purpose (only the firmware reads the vector,
10079OS
10080only writes the vector.) ACPICA BZ 731.
10081
10082Implemented a mechanism to escape infinite AML While() loops. Added a
10083loop
10084counter to force exit from AML While loops if the count becomes too
10085large.
10086This can occur in poorly written AML when the hardware does not respond
10087within a while loop and the loop does not implement a timeout. The
10088maximum
10089loop count is configurable. A new exception code is returned when a loop
10090is
10091broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
10092
10093Optimized the execution of AML While loops. Previously, a control state
10094object was allocated and freed for each execution of the loop. The
10095optimization is to simply reuse the control state for each iteration.
10096This
10097speeds up the raw loop execution time by about 5%.
10098
10099Enhanced the implicit return mechanism. For Windows compatibility, return
10100an
10101implicit integer of value zero for methods that contain no executable
10102code.
10103Such methods are seen in the field as stubs (presumably), and can cause
10104drivers to fail if they expect a return value. Lin Ming.
10105
10106Allow multiple backslashes as root prefixes in namepaths. In a fully
10107qualified namepath, allow multiple backslash prefixes. This can happen
10108(and
10109is seen in the field) because of the use of a double-backslash in strings
10110(since backslash is the escape character) causing confusion. ACPICA BZ
10111739
10112Lin Ming.
10113
10114Emit a warning if two different FACS or DSDT tables are discovered in the
10115FADT. Checks if there are two valid but different addresses for the FACS
10116and
10117DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
10118
10119Consolidated the method argument count validation code. Merged the code
10120that
10121validates control method argument counts into the predefined validation
10122module. Eliminates possible multiple warnings for incorrect argument
10123counts.
10124
10125Implemented ACPICA example code. Includes code for ACPICA initialization,
10126handler installation, and calling a control method. Available at
10127source/tools/examples.
10128
10129Added a global pointer for FACS table to simplify internal FACS access.
10130Use
10131the global pointer instead of using AcpiGetTableByIndex for each FACS
10132access.
10133This simplifies the code for the Global Lock and the Firmware Waking
10134Vector(s).
10135
10136Example Code and Data Size: These are the sizes for the OS-independent
10137acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10138debug version of the code includes the debug output trace mechanism and
10139has a
10140much larger code and data size.
10141
10142  Previous Release:
10143    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
10144    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
10145  Current Release:
10146    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
10147    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
10148
101492) iASL Compiler/Disassembler and Tools:
10150
10151iASL: Improved disassembly of external method calls. Added the -e option
10152to
10153allow the inclusion of additional ACPI tables to help with the
10154disassembly
10155of
10156method invocations and the generation of external declarations during the
10157disassembly. Certain external method invocations cannot be disassembled
10158properly without the actual declaration of the method. Use the -e option
10159to
10160include the table where the external method(s) are actually declared.
10161Most
10162useful for disassembling SSDTs that make method calls back to the master
10163DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
10164-d
10165-e dsdt.aml ssdt1.aml
10166
10167iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
10168problem where the use of an alias within a namepath would result in a not
10169found error or cause the compiler to fault. Also now allows forward
10170references from the Alias operator itself. ACPICA BZ 738.
10171
10172----------------------------------------
1017326 September 2008. Summary of changes for version 20080926:
10174
101751) ACPI CA Core Subsystem:
10176
10177Designed and implemented a mechanism to validate predefined ACPI methods
10178and
10179objects. This code validates the predefined ACPI objects (objects whose
10180names
10181start with underscore) that appear in the namespace, at the time they are
10182evaluated. The argument count and the type of the returned object are
10183validated against the ACPI specification. The purpose of this validation
10184is
10185to detect problems with the BIOS-implemented predefined ACPI objects
10186before
10187the results are returned to the ACPI-related drivers. Future enhancements
10188may
10189include actual repair of incorrect return objects where possible. Two new
10190files are nspredef.c and acpredef.h.
10191
10192Fixed a fault in the AML parser if a memory allocation fails during the
10193Op
10194completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
10195
10196Fixed an issue with implicit return compatibility. This change improves
10197the
10198implicit return mechanism to be more compatible with the MS interpreter.
10199Lin
10200Ming, ACPICA BZ 349.
10201
10202Implemented support for zero-length buffer-to-string conversions. Allow
10203zero
10204length strings during interpreter buffer-to-string conversions. For
10205example,
10206during the ToDecimalString and ToHexString operators, as well as implicit
10207conversions. Fiodor Suietov, ACPICA BZ 585.
10208
10209Fixed two possible memory leaks in the error exit paths of
10210AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
10211are
10212similar in that they use a stack of state objects in order to eliminate
10213recursion. The stack must be fully unwound and deallocated if an error
10214occurs. Lin Ming. ACPICA BZ 383.
10215
10216Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
10217global
10218ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
10219Moore ACPICA BZ 442.
10220
10221Removed the obsolete version number in module headers. Removed the
10222"$Revision" number that appeared in each module header. This version
10223number
10224was useful under SourceSafe and CVS, but has no meaning under git. It is
10225not
10226only incorrect, it could also be misleading.
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:  79.7K Code, 16.4K Data,  96.1K Total
10236    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
10237  Current Release:
10238    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
10239    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
10240
10241----------------------------------------
1024229 August 2008. Summary of changes for version 20080829:
10243
102441) ACPI CA Core Subsystem:
10245
10246Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
10247Reference. Changes include the elimination of cheating on the Object
10248field
10249for the DdbHandle subtype, addition of a reference class field to
10250differentiate the various reference types (instead of an AML opcode), and
10251the
10252cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
10253
10254Reduce an error to a warning for an incorrect method argument count.
10255Previously aborted with an error if too few arguments were passed to a
10256control method via the external ACPICA interface. Now issue a warning
10257instead
10258and continue. Handles the case where the method inadvertently declares
10259too
10260many arguments, but does not actually use the extra ones. Applies mainly
10261to
10262the predefined methods. Lin Ming. Linux BZ 11032.
10263
10264Disallow the evaluation of named object types with no intrinsic value.
10265Return
10266AE_TYPE for objects that have no value and therefore evaluation is
10267undefined:
10268Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
10269of
10270these types were allowed, but an exception would be generated at some
10271point
10272during the evaluation. Now, the error is generated up front.
10273
10274Fixed a possible memory leak in the AcpiNsGetExternalPathname function
10275(nsnames.c). Fixes a leak in the error exit path.
10276
10277Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
10278debug
10279levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
10280ACPI_EXCEPTION
10281interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
10282ACPI_LV_EVENTS.
10283
10284Removed obsolete and/or unused exception codes from the acexcep.h header.
10285There is the possibility that certain device drivers may be affected if
10286they
10287use any of these exceptions.
10288
10289The ACPICA documentation has been added to the public git source tree,
10290under
10291acpica/documents. Included are the ACPICA programmer reference, the iASL
10292compiler reference, and the changes.txt release logfile.
10293
10294Example Code and Data Size: These are the sizes for the OS-independent
10295acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10296debug version of the code includes the debug output trace mechanism and
10297has a
10298much larger code and data size.
10299
10300  Previous Release:
10301    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10302    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
10303  Current Release:
10304    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10305    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
10306
103072) iASL Compiler/Disassembler and Tools:
10308
10309Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
10310defines _SCP with 3 arguments. Previous versions defined it with only 1
10311argument. iASL now allows both definitions.
10312
10313iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
10314zero-
10315length subtables when disassembling ACPI tables. Also fixed a couple of
10316errors where a full 16-bit table type field was not extracted from the
10317input
10318properly.
10319
10320acpisrc: Improve comment counting mechanism for generating source code
10321statistics. Count first and last lines of multi-line comments as
10322whitespace,
10323not comment lines. Handle Linux legal header in addition to standard
10324acpica
10325header.
10326
10327----------------------------------------
10328
1032929 July 2008. Summary of changes for version 20080729:
10330
103311) ACPI CA Core Subsystem:
10332
10333Fix a possible deadlock in the GPE dispatch. Remove call to
10334AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
10335attempt
10336to acquire the GPE lock but can deadlock since the GPE lock is already
10337held
10338at dispatch time. This code was introduced in version 20060831 as a
10339response
10340to Linux BZ 6881 and has since been removed from Linux.
10341
10342Add a function to dereference returned reference objects. Examines the
10343return
10344object from a call to AcpiEvaluateObject. Any Index or RefOf references
10345are
10346automatically dereferenced in an attempt to return something useful
10347(these
10348reference types cannot be converted into an external ACPI_OBJECT.)
10349Provides
10350MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
10351
10352x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
10353subtables for the MADT and one new subtable for the SRAT. Includes
10354disassembler and AcpiSrc support. Data from the Intel 64 Architecture
10355x2APIC
10356Specification, June 2008.
10357
10358Additional error checking for pathname utilities. Add error check after
10359all
10360calls to AcpiNsGetPathnameLength. Add status return from
10361AcpiNsBuildExternalPath and check after all calls. Add parameter
10362validation
10363to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
10364
10365Return status from the global init function AcpiUtGlobalInitialize. This
10366is
10367used by both the kernel subsystem and the utilities such as iASL
10368compiler.
10369The function could possibly fail when the caches are initialized. Yang
10370Yi.
10371
10372Add a function to decode reference object types to strings. Created for
10373improved error messages.
10374
10375Improve object conversion error messages. Better error messages during
10376object
10377conversion from internal to the external ACPI_OBJECT. Used for external
10378calls
10379to AcpiEvaluateObject.
10380
10381Example Code and Data Size: These are the sizes for the OS-independent
10382acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10383debug version of the code includes the debug output trace mechanism and
10384has a
10385much larger code and data size.
10386
10387  Previous Release:
10388    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
10389    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10390  Current Release:
10391    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10392    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
10393
103942) iASL Compiler/Disassembler and Tools:
10395
10396Debugger: fix a possible hang when evaluating non-methods. Fixes a
10397problem
10398introduced in version 20080701. If the object being evaluated (via
10399execute
10400command) is not a method, the debugger can hang while trying to obtain
10401non-
10402existent parameters.
10403
10404iASL: relax error for using reserved "_T_x" identifiers. These names can
10405appear in a disassembled ASL file if they were emitted by the original
10406compiler. Instead of issuing an error or warning and forcing the user to
10407manually change these names, issue a remark instead.
10408
10409iASL: error if named object created in while loop. Emit an error if any
10410named
10411object is created within a While loop. If allowed, this code will
10412generate
10413a
10414run-time error on the second iteration of the loop when an attempt is
10415made
10416to
10417create the same named object twice. ACPICA bugzilla 730.
10418
10419iASL: Support absolute pathnames for include files. Add support for
10420absolute
10421pathnames within the Include operator. previously, only relative
10422pathnames
10423were supported.
10424
10425iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
10426Descriptor.
10427The ACPI spec requires one interrupt minimum. BZ 423
10428
10429iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
10430Handles the case for the Interrupt Resource Descriptor where
10431the ResourceSource argument is omitted but ResourceSourceIndex
10432is present. Now leave room for the Index. BZ 426
10433
10434iASL: Prevent error message if CondRefOf target does not exist. Fixes
10435cases
10436where an error message is emitted if the target does not exist. BZ 516
10437
10438iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
10439(get ACPI tables on Windows). This was apparently broken in version
1044020070919.
10441
10442AcpiXtract: Handle EOF while extracting data. Correctly handle the case
10443where
10444the EOF happens immediately after the last table in the input file. Print
10445completion message. Previously, no message was displayed in this case.
10446
10447----------------------------------------
1044801 July 2008. Summary of changes for version 20080701:
10449
104500) Git source tree / acpica.org
10451
10452Fixed a problem where a git-clone from http would not transfer the entire
10453source tree.
10454
104551) ACPI CA Core Subsystem:
10456
10457Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
10458enable bit. Now performs a read-change-write of the enable register
10459instead
10460of simply writing out the cached enable mask. This will prevent
10461inadvertent
10462enabling of GPEs if a rogue GPE is received during initialization (before
10463GPE
10464handlers are installed.)
10465
10466Implemented a copy for dynamically loaded tables. Previously, dynamically
10467loaded tables were simply mapped - but on some machines this memory is
10468corrupted after suspend. Now copy the table to a local buffer. For the
10469OpRegion case, added checksum verify. Use the table length from the table
10470header, not the region length. For the Buffer case, use the table length
10471also. Dennis Noordsij, Bob Moore. BZ 10734
10472
10473Fixed a problem where the same ACPI table could not be dynamically loaded
10474and
10475unloaded more than once. Without this change, a table cannot be loaded
10476again
10477once it has been loaded/unloaded one time. The current mechanism does not
10478unregister a table upon an unload. During a load, if the same table is
10479found,
10480this no longer returns an exception. BZ 722
10481
10482Fixed a problem where the wrong descriptor length was calculated for the
10483EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
10484EndTag
10485are calculated as 12 bytes long, but the actual length in the internal
10486descriptor is 16 because of the round-up to 8 on the 64-bit build.
10487Reported
10488by Linn Crosetto. BZ 728
10489
10490Fixed a possible memory leak in the Unload operator. The DdbHandle
10491returned
10492by Load() did not have its reference count decremented during unload,
10493leading
10494to a memory leak. Lin Ming. BZ 727
10495
10496Fixed a possible memory leak when deleting thermal/processor objects. Any
10497associated notify handlers (and objects) were not being deleted. Fiodor
10498Suietov. BZ 506
10499
10500Fixed the ordering of the ASCII names in the global mutex table to match
10501the
10502actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
10503only.
10504Vegard Nossum. BZ 726
10505
10506Enhanced the AcpiGetObjectInfo interface to return the number of required
10507arguments if the object is a control method. Added this call to the
10508debugger
10509so the proper number of default arguments are passed to a method. This
10510prevents a warning when executing methods from AcpiExec.
10511
10512Added a check for an invalid handle in AcpiGetObjectInfo. Return
10513AE_BAD_PARAMETER if input handle is invalid. BZ 474
10514
10515Fixed an extraneous warning from exconfig.c on the 64-bit build.
10516
10517Example Code and Data Size: These are the sizes for the OS-independent
10518acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10519debug version of the code includes the debug output trace mechanism and
10520has a
10521much larger code and data size.
10522
10523  Previous Release:
10524    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10525    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10526  Current Release:
10527    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
10528    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10529
105302) iASL Compiler/Disassembler and Tools:
10531
10532iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
10533resource descriptor names.
10534
10535iASL: Detect invalid ASCII characters in input (windows version). Removed
10536the
10537"-CF" flag from the flex compile, enables correct detection of non-ASCII
10538characters in the input. BZ 441
10539
10540iASL: Eliminate warning when result of LoadTable is not used. Eliminate
10541the
10542"result of operation not used" warning when the DDB handle returned from
10543LoadTable is not used. The warning is not needed. BZ 590
10544
10545AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
10546method
10547to
10548pass address of table to the AML. Added option to disable OpRegion
10549simulation
10550to allow creation of an OpRegion with a real address that was passed to
10551_CFG.
10552All of this allows testing of the Load and Unload operators from
10553AcpiExec.
10554
10555Debugger: update tables command for unloaded tables. Handle unloaded
10556tables
10557and use the standard table header output routine.
10558
10559----------------------------------------
1056009 June 2008. Summary of changes for version 20080609:
10561
105621) ACPI CA Core Subsystem:
10563
10564Implemented a workaround for reversed _PRT entries. A significant number
10565of
10566BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
10567change dynamically detects and repairs this problem. Provides
10568compatibility
10569with MS ACPI. BZ 6859
10570
10571Simplified the internal ACPI hardware interfaces to eliminate the locking
10572flag parameter from Register Read/Write. Added a new external interface,
10573AcpiGetRegisterUnlocked.
10574
10575Fixed a problem where the invocation of a GPE control method could hang.
10576This
10577was a regression introduced in 20080514. The new method argument count
10578validation mechanism can enter an infinite loop when a GPE method is
10579dispatched. Problem fixed by removing the obsolete code that passed GPE
10580block
10581information to the notify handler via the control method parameter
10582pointer.
10583
10584Fixed a problem where the _SST execution status was incorrectly returned
10585to
10586the caller of AcpiEnterSleepStatePrep. This was a regression introduced
10587in
1058820080514. _SST is optional and a NOT_FOUND exception should never be
10589returned. BZ 716
10590
10591Fixed a problem where a deleted object could be accessed from within the
10592AML
10593parser. This was a regression introduced in version 20080123 as a fix for
10594the
10595Unload operator. Lin Ming. BZ 10669
10596
10597Cleaned up the debug operand dump mechanism. Eliminated unnecessary
10598operands
10599and eliminated the use of a negative index in a loop. Operands are now
10600displayed in the correct order, not backwards. This also fixes a
10601regression
10602introduced in 20080514 on 64-bit systems where the elimination of
10603ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
10604715
10605
10606Fixed a possible memory leak in EvPciConfigRegionSetup where the error
10607exit
10608path did not delete a locally allocated structure.
10609
10610Updated definitions for the DMAR and SRAT tables to synchronize with the
10611current specifications. Includes disassembler support.
10612
10613Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
10614loop termination value was used. Loop terminated on iteration early,
10615missing
10616one mutex. Linn Crosetto
10617
10618Example Code and Data Size: These are the sizes for the OS-independent
10619acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10620debug version of the code includes the debug output trace mechanism and
10621has a
10622much larger code and data size.
10623
10624  Previous Release:
10625    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10626    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10627  Current Release:
10628    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10629    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10630
106312) iASL Compiler/Disassembler and Tools:
10632
10633Disassembler: Implemented support for EisaId() within _CID objects. Now
10634disassemble integer _CID objects back to EisaId invocations, including
10635multiple integers within _CID packages. Includes single-step support for
10636debugger also.
10637
10638Disassembler: Added support for DMAR and SRAT table definition changes.
10639
10640----------------------------------------
1064114 May 2008. Summary of changes for version 20080514:
10642
106431) ACPI CA Core Subsystem:
10644
10645Fixed a problem where GPEs were enabled too early during the ACPICA
10646initialization. This could lead to "handler not installed" errors on some
10647machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
10648This
10649ensures that all operation regions and devices throughout the namespace
10650have
10651been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
10652
10653Implemented a change to the enter sleep code. Moved execution of the _GTS
10654method to just before setting sleep enable bit. The execution was moved
10655from
10656AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
10657immediately before the SLP_EN bit is set, as per the ACPI specification.
10658Luming Yu, BZ 1653.
10659
10660Implemented a fix to disable unknown GPEs (2nd version). Now always
10661disable
10662the GPE, even if ACPICA thinks that that it is already disabled. It is
10663possible that the AML or some other code has enabled the GPE unbeknownst
10664to
10665the ACPICA code.
10666
10667Fixed a problem with the Field operator where zero-length fields would
10668return
10669an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
10670ASL
10671field declarations in Field(), BankField(), and IndexField(). BZ 10606.
10672
10673Implemented a fix for the Load operator, now load the table at the
10674namespace
10675root. This reverts a change introduced in version 20071019. The table is
10676now
10677loaded at the namespace root even though this goes against the ACPI
10678specification. This provides compatibility with other ACPI
10679implementations.
10680The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10681Ming.
10682
10683Fixed a problem where ACPICA would not Load() tables with unusual
10684signatures.
10685Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10686acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10687Therefore, signature validation is worthless. Apparently MS ACPI accepts
10688such
10689signatures, ACPICA must be compatible. BZ 10454.
10690
10691Fixed a possible negative array index in AcpiUtValidateException. Added
10692NULL
10693fields to the exception string arrays to eliminate a -1 subtraction on
10694the
10695SubStatus field.
10696
10697Updated the debug tracking macros to reduce overall code and data size.
10698Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10699instead of pointers to static strings. Jan Beulich and Bob Moore.
10700
10701Implemented argument count checking in control method invocation via
10702AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10703too
10704many. This applies only to extern programmatic control method execution,
10705not
10706method-to-method calls within the AML. Lin Ming.
10707
10708Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10709no
10710longer needed, especially with the removal of 16-bit support. It was
10711replaced
10712mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10713bit
10714on
1071532/64-bit platforms is required.
10716
10717Added the C const qualifier for appropriate string constants -- mostly
10718MODULE_NAME and printf format strings. Jan Beulich.
10719
10720Example Code and Data Size: These are the sizes for the OS-independent
10721acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10722debug version of the code includes the debug output trace mechanism and
10723has a
10724much larger code and data size.
10725
10726  Previous Release:
10727    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10728    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10729  Current Release:
10730    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10731    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10732
107332) iASL Compiler/Disassembler and Tools:
10734
10735Implemented ACPI table revision ID validation in the disassembler. Zero
10736is
10737always invalid. For DSDTs, the ID controls the interpreter integer width.
107381
10739means 32-bit and this is unusual. 2 or greater is 64-bit.
10740
10741----------------------------------------
1074221 March 2008. Summary of changes for version 20080321:
10743
107441) ACPI CA Core Subsystem:
10745
10746Implemented an additional change to the GPE support in order to suppress
10747spurious or stray GPEs. The AcpiEvDisableGpe function will now
10748permanently
10749disable incoming GPEs that are neither enabled nor disabled -- meaning
10750that
10751the GPE is unknown to the system. This should prevent future interrupt
10752floods
10753from that GPE. BZ 6217 (Zhang Rui)
10754
10755Fixed a problem where NULL package elements were not returned to the
10756AcpiEvaluateObject interface correctly. The element was simply ignored
10757instead of returning a NULL ACPI_OBJECT package element, potentially
10758causing
10759a buffer overflow and/or confusing the caller who expected a fixed number
10760of
10761elements. BZ 10132 (Lin Ming, Bob Moore)
10762
10763Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10764Dword,
10765Qword), Field, BankField, and IndexField operators when invoked from
10766inside
10767an executing control method. In this case, these operators created
10768namespace
10769nodes that were incorrectly left marked as permanent nodes instead of
10770temporary nodes. This could cause a problem if there is race condition
10771between an exiting control method and a running namespace walk. (Reported
10772by
10773Linn Crosetto)
10774
10775Fixed a problem where the CreateField and CreateXXXField operators would
10776incorrectly allow duplicate names (the name of the field) with no
10777exception
10778generated.
10779
10780Implemented several changes for Notify handling. Added support for new
10781Notify
10782values (ACPI 2.0+) and improved the Notify debug output. Notify on
10783PowerResource objects is no longer allowed, as per the ACPI
10784specification.
10785(Bob Moore, Zhang Rui)
10786
10787All Reference Objects returned via the AcpiEvaluateObject interface are
10788now
10789marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10790for
10791NULL objects - either NULL package elements or unresolved named
10792references.
10793
10794Fixed a problem where an extraneous debug message was produced for
10795package
10796objects (when debugging enabled). The message "Package List length larger
10797than NumElements count" is now produced in the correct case, and is now
10798an
10799error message rather than a debug message. Added a debug message for the
10800opposite case, where NumElements is larger than the Package List (the
10801package
10802will be padded out with NULL elements as per the ACPI spec.)
10803
10804Implemented several improvements for the output of the ASL "Debug" object
10805to
10806clarify and keep all data for a given object on one output line.
10807
10808Fixed two size calculation issues with the variable-length Start
10809Dependent
10810resource descriptor.
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
10816a much larger code and data size.
10817
10818  Previous Release:
10819    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10820    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10821  Current Release:
10822    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10823    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10824
108252) iASL Compiler/Disassembler and Tools:
10826
10827Fixed a problem with the use of the Switch operator where execution of
10828the
10829containing method by multiple concurrent threads could cause an
10830AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10831actual Switch opcode, it must be simulated with local named temporary
10832variables and if/else pairs. The solution chosen was to mark any method
10833that
10834uses Switch as Serialized, thus preventing multiple thread entries. BZ
10835469.
10836
10837----------------------------------------
1083813 February 2008. Summary of changes for version 20080213:
10839
108401) ACPI CA Core Subsystem:
10841
10842Implemented another MS compatibility design change for GPE/Notify
10843handling.
10844GPEs are now cleared/enabled asynchronously to allow all pending notifies
10845to
10846complete first. It is expected that the OSL will queue the enable request
10847behind all pending notify requests (may require changes to the local host
10848OSL
10849in AcpiOsExecute). Alexey Starikovskiy.
10850
10851Fixed a problem where buffer and package objects passed as arguments to a
10852control method via the external AcpiEvaluateObject interface could cause
10853an
10854AE_AML_INTERNAL exception depending on the order and type of operators
10855executed by the target control method.
10856
10857Fixed a problem where resource descriptor size optimization could cause a
10858problem when a _CRS resource template is passed to a _SRS method. The
10859_SRS
10860resource template must use the same descriptors (with the same size) as
10861returned from _CRS. This change affects the following resource
10862descriptors:
10863IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
108649487)
10865
10866Fixed a problem where a CopyObject to RegionField, BankField, and
10867IndexField
10868objects did not perform an implicit conversion as it should. These types
10869must
10870retain their initial type permanently as per the ACPI specification.
10871However,
10872a CopyObject to all other object types should not perform an implicit
10873conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10874
10875Fixed a problem with the AcpiGetDevices interface where the mechanism to
10876match device CIDs did not examine the entire list of available CIDs, but
10877instead aborted on the first non-matching CID. Andrew Patterson.
10878
10879Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10880was
10881inadvertently changed to return a 16-bit value instead of a 32-bit value,
10882truncating the upper dword of a 64-bit value. This macro is only used to
10883display debug output, so no incorrect calculations were made. Also,
10884reimplemented the macro so that a 64-bit shift is not performed by
10885inefficient compilers.
10886
10887Added missing va_end statements that should correspond with each va_start
10888statement.
10889
10890Example Code and Data Size: These are the sizes for the OS-independent
10891acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10892debug version of the code includes the debug output trace mechanism and
10893has
10894a much larger code and data size.
10895
10896  Previous Release:
10897    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10898    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10899  Current Release:
10900    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10901    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10902
109032) iASL Compiler/Disassembler and Tools:
10904
10905Implemented full disassembler support for the following new ACPI tables:
10906BERT, EINJ, and ERST. Implemented partial disassembler support for the
10907complicated HEST table. These tables support the Windows Hardware Error
10908Architecture (WHEA).
10909
10910----------------------------------------
1091123 January 2008. Summary of changes for version 20080123:
10912
109131) ACPI CA Core Subsystem:
10914
10915Added the 2008 copyright to all module headers and signons. This affects
10916virtually every file in the ACPICA core subsystem, the iASL compiler, and
10917the tools/utilities.
10918
10919Fixed a problem with the SizeOf operator when used with Package and
10920Buffer
10921objects. These objects have deferred execution for some arguments, and
10922the
10923execution is now completed before the SizeOf is executed. This problem
10924caused
10925unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10926BZ
109279558
10928
10929Implemented an enhancement to the interpreter "slack mode". In the
10930absence
10931of
10932an explicit return or an implicitly returned object from the last
10933executed
10934opcode, a control method will now implicitly return an integer of value 0
10935for
10936Microsoft compatibility. (Lin Ming) BZ 392
10937
10938Fixed a problem with the Load operator where an exception was not
10939returned
10940in
10941the case where the table is already loaded. (Lin Ming) BZ 463
10942
10943Implemented support for the use of DDBHandles as an Indexed Reference, as
10944per
10945the ACPI spec. (Lin Ming) BZ 486
10946
10947Implemented support for UserTerm (Method invocation) for the Unload
10948operator
10949as per the ACPI spec. (Lin Ming) BZ 580
10950
10951Fixed a problem with the LoadTable operator where the OemId and
10952OemTableId
10953input strings could cause unexpected failures if they were shorter than
10954the
10955maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10956
10957Implemented support for UserTerm (Method invocation) for the Unload
10958operator
10959as per the ACPI spec. (Lin Ming) BZ 580
10960
10961Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10962HEST,
10963IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10964
10965Example Code and Data Size: These are the sizes for the OS-independent
10966acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10967debug version of the code includes the debug output trace mechanism and
10968has
10969a much larger code and data size.
10970
10971  Previous Release:
10972    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10973    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10974  Current Release:
10975    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10976    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10977
109782) iASL Compiler/Disassembler and Tools:
10979
10980Implemented support in the disassembler for checksum validation on
10981incoming
10982binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10983table
10984header dump at the start of the disassembly.
10985
10986Implemented additional debugging information in the namespace listing
10987file
10988created during compilation. In addition to the namespace hierarchy, the
10989full
10990pathname to each namespace object is displayed.
10991
10992Fixed a problem with the disassembler where invalid ACPI tables could
10993cause
10994faults or infinite loops.
10995
10996Fixed an unexpected parse error when using the optional "parameter types"
10997list in a control method declaration. (Lin Ming) BZ 397
10998
10999Fixed a problem where two External declarations with the same name did
11000not
11001cause an error (Lin Ming) BZ 509
11002
11003Implemented support for full TermArgs (adding Argx, Localx and method
11004invocation) for the ParameterData parameter to the LoadTable operator.
11005(Lin
11006Ming) BZ 583,587
11007
11008----------------------------------------
1100919 December 2007. Summary of changes for version 20071219:
11010
110111) ACPI CA Core Subsystem:
11012
11013Implemented full support for deferred execution for the TermArg string
11014arguments for DataTableRegion. This enables forward references and full
11015operand resolution for the three string arguments. Similar to
11016OperationRegion
11017deferred argument execution.) Lin Ming. BZ 430
11018
11019Implemented full argument resolution support for the BankValue argument
11020to
11021BankField. Previously, only constants were supported, now any TermArg may
11022be
11023used. Lin Ming BZ 387, 393
11024
11025Fixed a problem with AcpiGetDevices where the search of a branch of the
11026device tree could be terminated prematurely. In accordance with the ACPI
11027specification, the search down the current branch is terminated if a
11028device
11029is both not present and not functional (instead of just not present.)
11030Yakui
11031Zhao.
11032
11033Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
11034if
11035the underlying AML code changed the GPE enable registers. Now, any
11036unknown
11037incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
11038disabled
11039instead of simply ignored. Rui Zhang.
11040
11041Fixed a problem with Index Fields where the Index register was
11042incorrectly
11043limited to a maximum of 32 bits. Now any size may be used.
11044
11045Fixed a couple memory leaks associated with "implicit return" objects
11046when
11047the AML Interpreter slack mode is enabled. Lin Ming BZ 349
11048
11049Example Code and Data Size: These are the sizes for the OS-independent
11050acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11051debug version of the code includes the debug output trace mechanism and
11052has
11053a much larger code and data size.
11054
11055  Previous Release:
11056    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
11057    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
11058  Current Release:
11059    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
11060    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
11061
11062----------------------------------------
1106314 November 2007. Summary of changes for version 20071114:
11064
110651) ACPI CA Core Subsystem:
11066
11067Implemented event counters for each of the Fixed Events, the ACPI SCI
11068(interrupt) itself, and control methods executed. Named
11069AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
11070These
11071should be useful for debugging and statistics.
11072
11073Implemented a new external interface, AcpiGetStatistics, to retrieve the
11074contents of the various event counters. Returns the current values for
11075AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
11076AcpiMethodCount. The interface can be expanded in the future if new
11077counters
11078are added. Device drivers should use this interface rather than access
11079the
11080counters directly.
11081
11082Fixed a problem with the FromBCD and ToBCD operators. With some
11083compilers,
11084the ShortDivide function worked incorrectly, causing problems with the
11085BCD
11086functions with large input values. A truncation from 64-bit to 32-bit
11087inadvertently occurred. Internal BZ 435. Lin Ming
11088
11089Fixed a problem with Index references passed as method arguments.
11090References
11091passed as arguments to control methods were dereferenced immediately
11092(before
11093control was passed to the called method). The references are now
11094correctly
11095passed directly to the called method. BZ 5389. Lin Ming
11096
11097Fixed a problem with CopyObject used in conjunction with the Index
11098operator.
11099The reference was incorrectly dereferenced before the copy. The reference
11100is
11101now correctly copied. BZ 5391. Lin Ming
11102
11103Fixed a problem with Control Method references within Package objects.
11104These
11105references are now correctly generated. This completes the package
11106construction overhaul that began in version 20071019.
11107
11108Example Code and Data Size: These are the sizes for the OS-independent
11109acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11110debug version of the code includes the debug output trace mechanism and
11111has
11112a much larger code and data size.
11113
11114  Previous Release:
11115    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
11116    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
11117  Current Release:
11118    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
11119    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
11120
11121
111222) iASL Compiler/Disassembler and Tools:
11123
11124The AcpiExec utility now installs handlers for all of the predefined
11125Operation Region types. New types supported are: PCI_Config, CMOS, and
11126PCIBARTarget.
11127
11128Fixed a problem with the 64-bit version of AcpiExec where the extended
11129(64-
11130bit) address fields for the DSDT and FACS within the FADT were not being
11131used, causing truncation of the upper 32-bits of these addresses. Lin
11132Ming
11133and Bob Moore
11134
11135----------------------------------------
1113619 October 2007. Summary of changes for version 20071019:
11137
111381) ACPI CA Core Subsystem:
11139
11140Fixed a problem with the Alias operator when the target of the alias is a
11141named ASL operator that opens a new scope -- Scope, Device,
11142PowerResource,
11143Processor, and ThermalZone. In these cases, any children of the original
11144operator could not be accessed via the alias, potentially causing
11145unexpected
11146AE_NOT_FOUND exceptions. (BZ 9067)
11147
11148Fixed a problem with the Package operator where all named references were
11149created as object references and left otherwise unresolved. According to
11150the
11151ACPI specification, a Package can only contain Data Objects or references
11152to
11153control methods. The implication is that named references to Data Objects
11154(Integer, Buffer, String, Package, BufferField, Field) should be resolved
11155immediately upon package creation. This is the approach taken with this
11156change. References to all other named objects (Methods, Devices, Scopes,
11157etc.) are all now properly created as reference objects. (BZ 5328)
11158
11159Reverted a change to Notify handling that was introduced in version
1116020070508. This version changed the Notify handling from asynchronous to
11161fully synchronous (Device driver Notify handling with respect to the
11162Notify
11163ASL operator). It was found that this change caused more problems than it
11164solved and was removed by most users.
11165
11166Fixed a problem with the Increment and Decrement operators where the type
11167of
11168the target object could be unexpectedly and incorrectly changed. (BZ 353)
11169Lin Ming.
11170
11171Fixed a problem with the Load and LoadTable operators where the table
11172location within the namespace was ignored. Instead, the table was always
11173loaded into the root or current scope. Lin Ming.
11174
11175Fixed a problem with the Load operator when loading a table from a buffer
11176object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
11177
11178Fixed a problem with the Debug object where a store of a DdbHandle
11179reference
11180object to the Debug object could cause a fault.
11181
11182Added a table checksum verification for the Load operator, in the case
11183where
11184the load is from a buffer. (BZ 578).
11185
11186Implemented additional parameter validation for the LoadTable operator.
11187The
11188length of the input strings SignatureString, OemIdString, and OemTableId
11189are
11190now checked for maximum lengths. (BZ 582) Lin Ming.
11191
11192Example Code and Data Size: These are the sizes for the OS-independent
11193acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11194debug version of the code includes the debug output trace mechanism and
11195has
11196a much larger code and data size.
11197
11198  Previous Release:
11199    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
11200    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
11201  Current Release:
11202    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
11203    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
11204
11205
112062) iASL Compiler/Disassembler:
11207
11208Fixed a problem where if a single file was specified and the file did not
11209exist, no error message was emitted. (Introduced with wildcard support in
11210version 20070917.)
11211
11212----------------------------------------
1121319 September 2007. Summary of changes for version 20070919:
11214
112151) ACPI CA Core Subsystem:
11216
11217Designed and implemented new external interfaces to install and remove
11218handlers for ACPI table-related events. Current events that are defined
11219are
11220LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
11221they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
11222AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
11223
11224Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
11225(acpi_serialized option on Linux) could cause some systems to hang during
11226initialization. (Bob Moore) BZ 8171
11227
11228Fixed a problem where objects of certain types (Device, ThermalZone,
11229Processor, PowerResource) can be not found if they are declared and
11230referenced from within the same control method (Lin Ming) BZ 341
11231
11232Example Code and Data Size: These are the sizes for the OS-independent
11233acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11234debug version of the code includes the debug output trace mechanism and
11235has
11236a much larger code and data size.
11237
11238  Previous Release:
11239    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
11240    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
11241  Current Release:
11242    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
11243    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
11244
11245
112462) iASL Compiler/Disassembler:
11247
11248Implemented support to allow multiple files to be compiled/disassembled
11249in
11250a
11251single invocation. This includes command line wildcard support for both
11252the
11253Windows and Unix versions of the compiler. This feature simplifies the
11254disassembly and compilation of multiple ACPI tables in a single
11255directory.
11256
11257----------------------------------------
1125808 May 2007. Summary of changes for version 20070508:
11259
112601) ACPI CA Core Subsystem:
11261
11262Implemented a Microsoft compatibility design change for the handling of
11263the
11264Notify AML operator. Previously, notify handlers were dispatched and
11265executed completely asynchronously in a deferred thread. The new design
11266still executes the notify handlers in a different thread, but the
11267original
11268thread that executed the Notify() now waits at a synchronization point
11269for
11270the notify handler to complete. Some machines depend on a synchronous
11271Notify
11272operator in order to operate correctly.
11273
11274Implemented support to allow Package objects to be passed as method
11275arguments to the external AcpiEvaluateObject interface. Previously, this
11276would return the AE_NOT_IMPLEMENTED exception. This feature had not been
11277implemented since there were no reserved control methods that required it
11278until recently.
11279
11280Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
11281that
11282contained invalid non-zero values in reserved fields could cause later
11283failures because these fields have meaning in later revisions of the
11284FADT.
11285For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
11286fields
11287are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
11288
11289Fixed a problem where the Global Lock handle was not properly updated if
11290a
11291thread that acquired the Global Lock via executing AML code then
11292attempted
11293to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
11294Joe
11295Liu.
11296
11297Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
11298could be corrupted if the interrupt being removed was at the head of the
11299list. Reported by Linn Crosetto.
11300
11301Example Code and Data Size: These are the sizes for the OS-independent
11302acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11303debug version of the code includes the debug output trace mechanism and
11304has
11305a much larger code and data size.
11306
11307  Previous Release:
11308    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11309    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
11310  Current Release:
11311    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
11312    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
11313
11314----------------------------------------
1131520 March 2007. Summary of changes for version 20070320:
11316
113171) ACPI CA Core Subsystem:
11318
11319Implemented a change to the order of interpretation and evaluation of AML
11320operand objects within the AML interpreter. The interpreter now evaluates
11321operands in the order that they appear in the AML stream (and the
11322corresponding ASL code), instead of in the reverse order (after the
11323entire
11324operand list has been parsed). The previous behavior caused several
11325subtle
11326incompatibilities with the Microsoft AML interpreter as well as being
11327somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
11328
11329Implemented a change to the ACPI Global Lock support. All interfaces to
11330the
11331global lock now allow the same thread to acquire the lock multiple times.
11332This affects the AcpiAcquireGlobalLock external interface to the global
11333lock
11334as well as the internal use of the global lock to support AML fields -- a
11335control method that is holding the global lock can now simultaneously
11336access
11337AML fields that require global lock protection. Previously, in both
11338cases,
11339this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
11340to
11341AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
11342Controller. There is no change to the behavior of the AML Acquire
11343operator,
11344as this can already be used to acquire a mutex multiple times by the same
11345thread. BZ 8066. With assistance from Alexey Starikovskiy.
11346
11347Fixed a problem where invalid objects could be referenced in the AML
11348Interpreter after error conditions. During operand evaluation, ensure
11349that
11350the internal "Return Object" field is cleared on error and only valid
11351pointers are stored there. Caused occasional access to deleted objects
11352that
11353resulted in "large reference count" warning messages. Valery Podrezov.
11354
11355Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
11356on
11357deeply nested control method invocations. BZ 7873, local BZ 487. Valery
11358Podrezov.
11359
11360Fixed an internal problem with the handling of result objects on the
11361interpreter result stack. BZ 7872. Valery Podrezov.
11362
11363Removed obsolete code that handled the case where AML_NAME_OP is the
11364target
11365of a reference (Reference.Opcode). This code was no longer necessary. BZ
113667874. Valery Podrezov.
11367
11368Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
11369was
11370a
11371remnant from the previously discontinued 16-bit support.
11372
11373Example Code and Data Size: These are the sizes for the OS-independent
11374acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11375debug version of the code includes the debug output trace mechanism and
11376has
11377a much larger code and data size.
11378
11379  Previous Release:
11380    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11381    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11382  Current Release:
11383    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11384    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
11385
11386----------------------------------------
1138726 January 2007. Summary of changes for version 20070126:
11388
113891) ACPI CA Core Subsystem:
11390
11391Added the 2007 copyright to all module headers and signons. This affects
11392virtually every file in the ACPICA core subsystem, the iASL compiler, and
11393the utilities.
11394
11395Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
11396during a table load. A bad pointer was passed in the case where the DSDT
11397is
11398overridden, causing a fault in this case.
11399
11400Example Code and Data Size: These are the sizes for the OS-independent
11401acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11402debug version of the code includes the debug output trace mechanism and
11403has
11404a much larger code and data size.
11405
11406  Previous Release:
11407    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11408    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11409  Current Release:
11410    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11411    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11412
11413----------------------------------------
1141415 December 2006. Summary of changes for version 20061215:
11415
114161) ACPI CA Core Subsystem:
11417
11418Support for 16-bit ACPICA has been completely removed since it is no
11419longer
11420necessary and it clutters the code. All 16-bit macros, types, and
11421conditional compiles have been removed, cleaning up and simplifying the
11422code
11423across the entire subsystem. DOS support is no longer needed since the
11424bootable Linux firmware kit is now available.
11425
11426The handler for the Global Lock is now removed during AcpiTerminate to
11427enable a clean subsystem restart, via the implementation of the
11428AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
11429HP)
11430
11431Implemented enhancements to the multithreading support within the
11432debugger
11433to enable improved multithreading debugging and evaluation of the
11434subsystem.
11435(Valery Podrezov)
11436
11437Debugger: Enhanced the Statistics/Memory command to emit the total
11438(maximum)
11439memory used during the execution, as well as the maximum memory consumed
11440by
11441each of the various object types. (Valery Podrezov)
11442
11443Example Code and Data Size: These are the sizes for the OS-independent
11444acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11445debug version of the code includes the debug output trace mechanism and
11446has
11447a much larger code and data size.
11448
11449  Previous Release:
11450    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11451    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11452  Current Release:
11453    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11454    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11455
11456
114572) iASL Compiler/Disassembler and Tools:
11458
11459AcpiExec: Implemented a new option (-m) to display full memory use
11460statistics upon subsystem/program termination. (Valery Podrezov)
11461
11462----------------------------------------
1146309 November 2006. Summary of changes for version 20061109:
11464
114651) ACPI CA Core Subsystem:
11466
11467Optimized the Load ASL operator in the case where the source operand is
11468an
11469operation region. Simply map the operation region memory, instead of
11470performing a bytewise read. (Region must be of type SystemMemory, see
11471below.)
11472
11473Fixed the Load ASL operator for the case where the source operand is a
11474region field. A buffer object is also allowed as the source operand. BZ
11475480
11476
11477Fixed a problem where the Load ASL operator allowed the source operand to
11478be
11479an operation region of any type. It is now restricted to regions of type
11480SystemMemory, as per the ACPI specification. BZ 481
11481
11482Additional cleanup and optimizations for the new Table Manager code.
11483
11484AcpiEnable will now fail if all of the required ACPI tables are not
11485loaded
11486(FADT, FACS, DSDT). BZ 477
11487
11488Added #pragma pack(8/4) to acobject.h to ensure that the structures in
11489this
11490header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
11491manually optimized to be aligned and will not work if it is byte-packed.
11492
11493Example Code and Data Size: These are the sizes for the OS-independent
11494acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11495debug version of the code includes the debug output trace mechanism and
11496has
11497a much larger code and data size.
11498
11499  Previous Release:
11500    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11501    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11502  Current Release:
11503    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11504    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11505
11506
115072) iASL Compiler/Disassembler and Tools:
11508
11509Fixed a problem where the presence of the _OSI predefined control method
11510within complex expressions could cause an internal compiler error.
11511
11512AcpiExec: Implemented full region support for multiple address spaces.
11513SpaceId is now part of the REGION object. BZ 429
11514
11515----------------------------------------
1151611 October 2006. Summary of changes for version 20061011:
11517
115181) ACPI CA Core Subsystem:
11519
11520Completed an AML interpreter performance enhancement for control method
11521execution. Previously a 2-pass parse/execution, control methods are now
11522completely parsed and executed in a single pass. This improves overall
11523interpreter performance by ~25%, reduces code size, and reduces CPU stack
11524use. (Valery Podrezov + interpreter changes in version 20051202 that
11525eliminated namespace loading during the pass one parse.)
11526
11527Implemented _CID support for PCI Root Bridge detection. If the _HID does
11528not
11529match the predefined PCI Root Bridge IDs, the _CID list (if present) is
11530now
11531obtained and also checked for an ID match.
11532
11533Implemented additional support for the PCI _ADR execution: upsearch until
11534a
11535device scope is found before executing _ADR. This allows PCI_Config
11536operation regions to be declared locally within control methods
11537underneath
11538PCI device objects.
11539
11540Fixed a problem with a possible race condition between threads executing
11541AcpiWalkNamespace and the AML interpreter. This condition was removed by
11542modifying AcpiWalkNamespace to (by default) ignore all temporary
11543namespace
11544entries created during any concurrent control method execution. An
11545additional namespace race condition is known to exist between
11546AcpiWalkNamespace and the Load/Unload ASL operators and is still under
11547investigation.
11548
11549Restructured the AML ParseLoop function, breaking it into several
11550subfunctions in order to reduce CPU stack use and improve
11551maintainability.
11552(Mikhail Kouzmich)
11553
11554AcpiGetHandle: Fix for parameter validation to detect invalid
11555combinations
11556of prefix handle and pathname. BZ 478
11557
11558Example Code and Data Size: These are the sizes for the OS-independent
11559acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11560debug version of the code includes the debug output trace mechanism and
11561has
11562a much larger code and data size.
11563
11564  Previous Release:
11565    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11566    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11567  Current Release:
11568    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11569    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11570
115712) iASL Compiler/Disassembler and Tools:
11572
11573Ported the -g option (get local ACPI tables) to the new ACPICA Table
11574Manager
11575to restore original behavior.
11576
11577----------------------------------------
1157827 September 2006. Summary of changes for version 20060927:
11579
115801) ACPI CA Core Subsystem:
11581
11582Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
11583These functions now use a spinlock for mutual exclusion and the interrupt
11584level indication flag is not needed.
11585
11586Fixed a problem with the Global Lock where the lock could appear to be
11587obtained before it is actually obtained. The global lock semaphore was
11588inadvertently created with one unit instead of zero units. (BZ 464)
11589Fiodor
11590Suietov.
11591
11592Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
11593during
11594a read from a buffer or region field. (BZ 458) Fiodor Suietov.
11595
11596Example Code and Data Size: These are the sizes for the OS-independent
11597acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11598debug version of the code includes the debug output trace mechanism and
11599has
11600a much larger code and data size.
11601
11602  Previous Release:
11603    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11604    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11605  Current Release:
11606    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11607    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11608
11609
116102) iASL Compiler/Disassembler and Tools:
11611
11612Fixed a compilation problem with the pre-defined Resource Descriptor
11613field
11614names where an "object does not exist" error could be incorrectly
11615generated
11616if the parent ResourceTemplate pathname places the template within a
11617different namespace scope than the current scope. (BZ 7212)
11618
11619Fixed a problem where the compiler could hang after syntax errors
11620detected
11621in an ElseIf construct. (BZ 453)
11622
11623Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
11624operator. An incorrect output filename was produced when this parameter
11625was
11626a null string (""). Now, the original input filename is used as the AML
11627output filename, with an ".aml" extension.
11628
11629Implemented a generic batch command mode for the AcpiExec utility
11630(execute
11631any AML debugger command) (Valery Podrezov).
11632
11633----------------------------------------
1163412 September 2006. Summary of changes for version 20060912:
11635
116361) ACPI CA Core Subsystem:
11637
11638Enhanced the implementation of the "serialized mode" of the interpreter
11639(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
11640specified, instead of creating a serialization semaphore per control
11641method,
11642the interpreter lock is simply no longer released before a blocking
11643operation during control method execution. This effectively makes the AML
11644Interpreter single-threaded. The overhead of a semaphore per-method is
11645eliminated.
11646
11647Fixed a regression where an error was no longer emitted if a control
11648method
11649attempts to create 2 objects of the same name. This once again returns
11650AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
11651that
11652will dynamically serialize the control method to possible prevent future
11653errors. (BZ 440)
11654
11655Integrated a fix for a problem with PCI Express HID detection in the PCI
11656Config Space setup procedure. (BZ 7145)
11657
11658Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
11659AcpiHwInitialize function - the FADT registers are now validated when the
11660table is loaded.
11661
11662Added two new warnings during FADT verification - 1) if the FADT is
11663larger
11664than the largest known FADT version, and 2) if there is a mismatch
11665between
11666a
1166732-bit block address and the 64-bit X counterpart (when both are non-
11668zero.)
11669
11670Example Code and Data Size: These are the sizes for the OS-independent
11671acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11672debug version of the code includes the debug output trace mechanism and
11673has
11674a much larger code and data size.
11675
11676  Previous Release:
11677    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11678    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11679  Current Release:
11680    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11681    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11682
11683
116842) iASL Compiler/Disassembler and Tools:
11685
11686Fixed a problem with the implementation of the Switch() operator where
11687the
11688temporary variable was declared too close to the actual Switch, instead
11689of
11690at method level. This could cause a problem if the Switch() operator is
11691within a while loop, causing an error on the second iteration. (BZ 460)
11692
11693Disassembler - fix for error emitted for unknown type for target of scope
11694operator. Now, ignore it and continue.
11695
11696Disassembly of an FADT now verifies the input FADT and reports any errors
11697found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11698
11699Disassembly of raw data buffers with byte initialization data now
11700prefixes
11701each output line with the current buffer offset.
11702
11703Disassembly of ASF! table now includes all variable-length data fields at
11704the end of some of the subtables.
11705
11706The disassembler now emits a comment if a buffer appears to be a
11707ResourceTemplate, but cannot be disassembled as such because the EndTag
11708does
11709not appear at the very end of the buffer.
11710
11711AcpiExec - Added the "-t" command line option to enable the serialized
11712mode
11713of the AML interpreter.
11714
11715----------------------------------------
1171631 August 2006. Summary of changes for version 20060831:
11717
117181) ACPI CA Core Subsystem:
11719
11720Miscellaneous fixes for the Table Manager:
11721- Correctly initialize internal common FADT for all 64-bit "X" fields
11722- Fixed a couple table mapping issues during table load
11723- Fixed a couple alignment issues for IA64
11724- Initialize input array to zero in AcpiInitializeTables
11725- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
11726AcpiGetTableByIndex
11727
11728Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11729now
11730immediately disabled to prevent the waking GPE from firing again and to
11731prevent other wake GPEs from interrupting the wake process.
11732
11733Added the AcpiGpeCount global that tracks the number of processed GPEs,
11734to
11735be used for debugging systems with a large number of ACPI interrupts.
11736
11737Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11738both the ACPICA headers and the disassembler.
11739
11740Example Code and Data Size: These are the sizes for the OS-independent
11741acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11742debug version of the code includes the debug output trace mechanism and
11743has
11744a much larger code and data size.
11745
11746  Previous Release:
11747    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11748    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11749  Current Release:
11750    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11751    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11752
11753
117542) iASL Compiler/Disassembler and Tools:
11755
11756Disassembler support for the DMAR ACPI table.
11757
11758----------------------------------------
1175923 August 2006. Summary of changes for version 20060823:
11760
117611) ACPI CA Core Subsystem:
11762
11763The Table Manager component has been completely redesigned and
11764reimplemented. The new design is much simpler, and reduces the overall
11765code
11766and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11767is
11768now possible to obtain the ACPI tables very early during kernel
11769initialization, even before dynamic memory management is initialized.
11770(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11771
11772Obsolete ACPICA interfaces:
11773
11774- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11775init
11776time).
11777- AcpiLoadTable: Not needed.
11778- AcpiUnloadTable: Not needed.
11779
11780New ACPICA interfaces:
11781
11782- AcpiInitializeTables: Must be called before the table manager can be
11783used.
11784- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11785allocated memory after it becomes available.
11786- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11787tables
11788in the RSDT/XSDT.
11789
11790Other ACPICA changes:
11791
11792- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11793Use
11794AcpiOsUnmapMemory to free this mapping.
11795- AcpiGetTable returns the actual mapped table. The mapping is managed
11796internally and must not be deleted by the caller. Use of this interface
11797causes no additional dynamic memory allocation.
11798- AcpiFindRootPointer: Support for physical addressing has been
11799eliminated,
11800it appeared to be unused.
11801- The interface to AcpiOsMapMemory has changed to be consistent with the
11802other allocation interfaces.
11803- The interface to AcpiOsGetRootPointer has changed to eliminate
11804unnecessary
11805parameters.
11806- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1180764-
11808bit platforms. Was previously 64 bits on all platforms.
11809- The interface to the ACPI Global Lock acquire/release macros have
11810changed
11811slightly since ACPICA no longer keeps a local copy of the FACS with a
11812constructed pointer to the actual global lock.
11813
11814Porting to the new table manager:
11815
11816- AcpiInitializeTables: Must be called once, and can be called anytime
11817during the OS initialization process. It allows the host to specify an
11818area
11819of memory to be used to store the internal version of the RSDT/XSDT (root
11820table). This allows the host to access ACPI tables before memory
11821management
11822is initialized and running.
11823- AcpiReallocateRootTable: Can be called after memory management is
11824running
11825to copy the root table to a dynamically allocated array, freeing up the
11826scratch memory specified in the call to AcpiInitializeTables.
11827- AcpiSubsystemInitialize: This existing interface is independent of the
11828Table Manager, and does not have to be called before the Table Manager
11829can
11830be used, it only must be called before the rest of ACPICA can be used.
11831- ACPI Tables: Some changes have been made to the names and structure of
11832the
11833actbl.h and actbl1.h header files and may require changes to existing
11834code.
11835For example, bitfields have been completely removed because of their lack
11836of
11837portability across C compilers.
11838- Update interfaces to the Global Lock acquire/release macros if local
11839versions are used. (see acwin.h)
11840
11841Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11842
11843New files: tbfind.c
11844
11845Example Code and Data Size: These are the sizes for the OS-independent
11846acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11847debug version of the code includes the debug output trace mechanism and
11848has
11849a much larger code and data size.
11850
11851  Previous Release:
11852    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11853    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11854  Current Release:
11855    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11856    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11857
11858
118592) iASL Compiler/Disassembler and Tools:
11860
11861No changes for this release.
11862
11863----------------------------------------
1186421 July 2006. Summary of changes for version 20060721:
11865
118661) ACPI CA Core Subsystem:
11867
11868The full source code for the ASL test suite used to validate the iASL
11869compiler and the ACPICA core subsystem is being released with the ACPICA
11870source for the first time. The source is contained in a separate package
11871and
11872consists of over 1100 files that exercise all ASL/AML operators. The
11873package
11874should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11875Fiodor
11876Suietov)
11877
11878Completed a new design and implementation for support of the ACPI Global
11879Lock. On the OS side, the global lock is now treated as a standard AML
11880mutex. Previously, multiple OS threads could "acquire" the global lock
11881simultaneously. However, this could cause the BIOS to be starved out of
11882the
11883lock - especially in cases such as the Embedded Controller driver where
11884there is a tight coupling between the OS and the BIOS.
11885
11886Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11887The Global Lock interrupt handler no longer queues the execution of a
11888separate thread to signal the global lock semaphore. Instead, the
11889semaphore
11890is signaled directly from the interrupt handler.
11891
11892Implemented support within the AML interpreter for package objects that
11893contain a larger AML length (package list length) than the package
11894element
11895count. In this case, the length of the package is truncated to match the
11896package element count. Some BIOS code apparently modifies the package
11897length
11898on the fly, and this change supports this behavior. Provides
11899compatibility
11900with the MS AML interpreter. (With assistance from Fiodor Suietov)
11901
11902Implemented a temporary fix for the BankValue parameter of a Bank Field
11903to
11904support all constant values, now including the Zero and One opcodes.
11905Evaluation of this parameter must eventually be converted to a full
11906TermArg
11907evaluation. A not-implemented error is now returned (temporarily) for
11908non-
11909constant values for this parameter.
11910
11911Fixed problem reports (Fiodor Suietov) integrated:
11912- Fix for premature object deletion after CopyObject on Operation Region
11913(BZ
11914350)
11915
11916Example Code and Data Size: These are the sizes for the OS-independent
11917acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11918debug version of the code includes the debug output trace mechanism and
11919has
11920a much larger code and data size.
11921
11922  Previous Release:
11923    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
11924    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
11925  Current Release:
11926    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11927    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11928
11929
119302) iASL Compiler/Disassembler and Tools:
11931
11932No changes for this release.
11933
11934----------------------------------------
1193507 July 2006. Summary of changes for version 20060707:
11936
119371) ACPI CA Core Subsystem:
11938
11939Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11940that do not allow the initialization of address pointers within packed
11941structures - even though the hardware itself may support misaligned
11942transfers. Some of the debug data structures are packed by default to
11943minimize size.
11944
11945Added an error message for the case where AcpiOsGetThreadId() returns
11946zero.
11947A non-zero value is required by the core ACPICA code to ensure the proper
11948operation of AML mutexes and recursive control methods.
11949
11950The DSDT is now the only ACPI table that determines whether the AML
11951interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11952but
11953the hooks for per-table 32/64 switching have been removed from the code.
11954A
11955clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11956
11957Fixed a possible leak of an OwnerID in the error path of
11958AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11959deletion to a single place in AcpiTbUninstallTable to correct possible
11960leaks
11961when using the AcpiTbDeleteTablesByType interface (with assistance from
11962Lance Ortiz.)
11963
11964Fixed a problem with Serialized control methods where the semaphore
11965associated with the method could be over-signaled after multiple method
11966invocations.
11967
11968Fixed two issues with the locking of the internal namespace data
11969structure.
11970Both the Unload() operator and AcpiUnloadTable interface now lock the
11971namespace during the namespace deletion associated with the table unload
11972(with assistance from Linn Crosetto.)
11973
11974Fixed problem reports (Valery Podrezov) integrated:
11975- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11976
11977Fixed problem reports (Fiodor Suietov) integrated:
11978- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11979- On Address Space handler deletion, needless deactivation call (BZ 374)
11980- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11981375)
11982- Possible memory leak, Notify sub-objects of Processor, Power,
11983ThermalZone
11984(BZ 376)
11985- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11986- Minimum Length of RSDT should be validated (BZ 379)
11987- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11988Handler (BZ (380)
11989- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11990loaded
11991(BZ 381)
11992
11993Example Code and Data Size: These are the sizes for the OS-independent
11994acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11995debug version of the code includes the debug output trace mechanism and
11996has
11997a much larger code and data size.
11998
11999  Previous Release:
12000    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
12001    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
12002  Current Release:
12003    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
12004    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
12005
12006
120072) iASL Compiler/Disassembler and Tools:
12008
12009Fixed problem reports:
12010Compiler segfault when ASL contains a long (>1024) String declaration (BZ
12011436)
12012
12013----------------------------------------
1201423 June 2006. Summary of changes for version 20060623:
12015
120161) ACPI CA Core Subsystem:
12017
12018Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
12019allows the type to be customized to the host OS for improved efficiency
12020(since a spinlock is usually a very small object.)
12021
12022Implemented support for "ignored" bits in the ACPI registers. According
12023to
12024the ACPI specification, these bits should be preserved when writing the
12025registers via a read/modify/write cycle. There are 3 bits preserved in
12026this
12027manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
12028
12029Implemented the initial deployment of new OSL mutex interfaces. Since
12030some
12031host operating systems have separate mutex and semaphore objects, this
12032feature was requested. The base code now uses mutexes (and the new mutex
12033interfaces) wherever a binary semaphore was used previously. However, for
12034the current release, the mutex interfaces are defined as macros to map
12035them
12036to the existing semaphore interfaces. Therefore, no OSL changes are
12037required
12038at this time. (See acpiosxf.h)
12039
12040Fixed several problems with the support for the control method SyncLevel
12041parameter. The SyncLevel now works according to the ACPI specification
12042and
12043in concert with the Mutex SyncLevel parameter, since the current
12044SyncLevel
12045is a property of the executing thread. Mutual exclusion for control
12046methods
12047is now implemented with a mutex instead of a semaphore.
12048
12049Fixed three instances of the use of the C shift operator in the bitfield
12050support code (exfldio.c) to avoid the use of a shift value larger than
12051the
12052target data width. The behavior of C compilers is undefined in this case
12053and
12054can cause unpredictable results, and therefore the case must be detected
12055and
12056avoided. (Fiodor Suietov)
12057
12058Added an info message whenever an SSDT or OEM table is loaded dynamically
12059via the Load() or LoadTable() ASL operators. This should improve
12060debugging
12061capability since it will show exactly what tables have been loaded
12062(beyond
12063the tables present in the RSDT/XSDT.)
12064
12065Example Code and Data Size: These are the sizes for the OS-independent
12066acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12067debug version of the code includes the debug output trace mechanism and
12068has
12069a much larger code and data size.
12070
12071  Previous Release:
12072    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
12073    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
12074  Current Release:
12075    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
12076    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
12077
12078
120792) iASL Compiler/Disassembler and Tools:
12080
12081No changes for this release.
12082
12083----------------------------------------
1208408 June 2006. Summary of changes for version 20060608:
12085
120861) ACPI CA Core Subsystem:
12087
12088Converted the locking mutex used for the ACPI hardware to a spinlock.
12089This
12090change should eliminate all problems caused by attempting to acquire a
12091semaphore at interrupt level, and it means that all ACPICA external
12092interfaces that directly access the ACPI hardware can be safely called
12093from
12094interrupt level. OSL code that implements the semaphore interfaces should
12095be
12096able to eliminate any workarounds for being called at interrupt level.
12097
12098Fixed a regression introduced in 20060526 where the ACPI device
12099initialization could be prematurely aborted with an AE_NOT_FOUND if a
12100device
12101did not have an optional _INI method.
12102
12103Fixed an IndexField issue where a write to the Data Register should be
12104limited in size to the AccessSize (width) of the IndexField itself. (BZ
12105433,
12106Fiodor Suietov)
12107
12108Fixed problem reports (Valery Podrezov) integrated:
12109- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
12110
12111Fixed problem reports (Fiodor Suietov) integrated:
12112- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
12113
12114Removed four global mutexes that were obsolete and were no longer being
12115used.
12116
12117Example Code and Data Size: These are the sizes for the OS-independent
12118acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12119debug version of the code includes the debug output trace mechanism and
12120has
12121a much larger code and data size.
12122
12123  Previous Release:
12124    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
12125    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
12126  Current Release:
12127    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
12128    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
12129
12130
121312) iASL Compiler/Disassembler and Tools:
12132
12133Fixed a fault when using -g option (get tables from registry) on Windows
12134machines.
12135
12136Fixed problem reports integrated:
12137- Generate error if CreateField NumBits parameter is zero. (BZ 405)
12138- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
12139Suietov)
12140- Global table revision override (-r) is ignored (BZ 413)
12141
12142----------------------------------------
1214326 May 2006. Summary of changes for version 20060526:
12144
121451) ACPI CA Core Subsystem:
12146
12147Restructured, flattened, and simplified the internal interfaces for
12148namespace object evaluation - resulting in smaller code, less CPU stack
12149use,
12150and fewer interfaces. (With assistance from Mikhail Kouzmich)
12151
12152Fixed a problem with the CopyObject operator where the first parameter
12153was
12154not typed correctly for the parser, interpreter, compiler, and
12155disassembler.
12156Caused various errors and unexpected behavior.
12157
12158Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
12159produced incorrect results with some C compilers. Since the behavior of C
12160compilers when the shift value is larger than the datatype width is
12161apparently not well defined, the interpreter now detects this condition
12162and
12163simply returns zero as expected in all such cases. (BZ 395)
12164
12165Fixed problem reports (Valery Podrezov) integrated:
12166- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
12167- Allow interpreter to handle nested method declarations (BZ 5361)
12168
12169Fixed problem reports (Fiodor Suietov) integrated:
12170- AcpiTerminate doesn't free debug memory allocation list objects (BZ
12171355)
12172- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
12173356)
12174- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
12175- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
12176- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
12177- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
12178- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
12179- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
12180- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
12181365)
12182- Status of the Global Initialization Handler call not used (BZ 366)
12183- Incorrect object parameter to Global Initialization Handler (BZ 367)
12184
12185Example Code and Data Size: These are the sizes for the OS-independent
12186acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12187debug version of the code includes the debug output trace mechanism and
12188has
12189a much larger code and data size.
12190
12191  Previous Release:
12192    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
12193    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
12194  Current Release:
12195    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
12196    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
12197
12198
121992) iASL Compiler/Disassembler and Tools:
12200
12201Modified the parser to allow the names IO, DMA, and IRQ to be used as
12202namespace identifiers with no collision with existing resource descriptor
12203macro names. This provides compatibility with other ASL compilers and is
12204most useful for disassembly/recompilation of existing tables without
12205parse
12206errors. (With assistance from Thomas Renninger)
12207
12208Disassembler: fixed an incorrect disassembly problem with the
12209DataTableRegion and CopyObject operators. Fixed a possible fault during
12210disassembly of some Alias operators.
12211
12212----------------------------------------
1221312 May 2006. Summary of changes for version 20060512:
12214
122151) ACPI CA Core Subsystem:
12216
12217Replaced the AcpiOsQueueForExecution interface with a new interface named
12218AcpiOsExecute. The major difference is that the new interface does not
12219have
12220a Priority parameter, this appeared to be useless and has been replaced
12221by
12222a
12223Type parameter. The Type tells the host what type of execution is being
12224requested, such as global lock handler, notify handler, GPE handler, etc.
12225This allows the host to queue and execute the request as appropriate for
12226the
12227request type, possibly using different work queues and different
12228priorities
12229for the various request types. This enables fixes for multithreading
12230deadlock problems such as BZ #5534, and will require changes to all
12231existing
12232OS interface layers. (Alexey Starikovskiy and Bob Moore)
12233
12234Fixed a possible memory leak associated with the support for the so-
12235called
12236"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
12237Suietov)
12238
12239Fixed a problem with the Load() operator where a table load from an
12240operation region could overwrite an internal table buffer by up to 7
12241bytes
12242and cause alignment faults on IPF systems. (With assistance from Luming
12243Yu)
12244
12245Example Code and Data Size: These are the sizes for the OS-independent
12246acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12247debug version of the code includes the debug output trace mechanism and
12248has
12249a much larger code and data size.
12250
12251  Previous Release:
12252    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
12253    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
12254  Current Release:
12255    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
12256    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
12257
12258
12259
122602) iASL Compiler/Disassembler and Tools:
12261
12262Disassembler: Implemented support to cross reference the internal
12263namespace
12264and automatically generate ASL External() statements for symbols not
12265defined
12266within the current table being disassembled. This will simplify the
12267disassembly and recompilation of interdependent tables such as SSDTs
12268since
12269these statements will no longer have to be added manually.
12270
12271Disassembler: Implemented experimental support to automatically detect
12272invocations of external control methods and generate appropriate
12273External()
12274statements. This is problematic because the AML cannot be correctly
12275parsed
12276until the number of arguments for each control method is known.
12277Currently,
12278standalone method invocations and invocations as the source operand of a
12279Store() statement are supported.
12280
12281Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
12282LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
12283LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
12284more readable and likely closer to the original ASL source.
12285
12286----------------------------------------
1228721 April 2006. Summary of changes for version 20060421:
12288
122891) ACPI CA Core Subsystem:
12290
12291Removed a device initialization optimization introduced in 20051216 where
12292the _STA method was not run unless an _INI was also present for the same
12293device. This optimization could cause problems because it could allow
12294_INI
12295methods to be run within a not-present device subtree. (If a not-present
12296device had no _INI, _STA would not be run, the not-present status would
12297not
12298be discovered, and the children of the device would be incorrectly
12299traversed.)
12300
12301Implemented a new _STA optimization where namespace subtrees that do not
12302contain _INI are identified and ignored during device initialization.
12303Selectively running _STA can significantly improve boot time on large
12304machines (with assistance from Len Brown.)
12305
12306Implemented support for the device initialization case where the returned
12307_STA flags indicate a device not-present but functioning. In this case,
12308_INI
12309is not run, but the device children are examined for presence, as per the
12310ACPI specification.
12311
12312Implemented an additional change to the IndexField support in order to
12313conform to MS behavior. The value written to the Index Register is not
12314simply a byte offset, it is a byte offset in units of the access width of
12315the parent Index Field. (Fiodor Suietov)
12316
12317Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
12318interface is called during the creation of all AML operation regions, and
12319allows the host OS to exert control over what addresses it will allow the
12320AML code to access. Operation Regions whose addresses are disallowed will
12321cause a runtime exception when they are actually accessed (will not
12322affect
12323or abort table loading.) See oswinxf or osunixxf for an example
12324implementation.
12325
12326Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
12327interface allows the host OS to match the various "optional"
12328interface/behavior strings for the _OSI predefined control method as
12329appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
12330for an example implementation.
12331
12332Restructured and corrected various problems in the exception handling
12333code
12334paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
12335(with assistance from Takayoshi Kochi.)
12336
12337Modified the Linux source converter to ignore quoted string literals
12338while
12339converting identifiers from mixed to lower case. This will correct
12340problems
12341with the disassembler and other areas where such strings must not be
12342modified.
12343
12344The ACPI_FUNCTION_* macros no longer require quotes around the function
12345name. This allows the Linux source converter to convert the names, now
12346that
12347the converter ignores quoted strings.
12348
12349Example Code and Data Size: These are the sizes for the OS-independent
12350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12351debug version of the code includes the debug output trace mechanism and
12352has
12353a much larger code and data size.
12354
12355  Previous Release:
12356
12357    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
12358    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
12359  Current Release:
12360    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
12361    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
12362
12363
123642) iASL Compiler/Disassembler and Tools:
12365
12366Implemented 3 new warnings for iASL, and implemented multiple warning
12367levels
12368(w2 flag).
12369
123701) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
12371not
12372WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
12373check for the possible timeout, a warning is issued.
12374
123752) Useless operators: If an ASL operator does not specify an optional
12376target
12377operand and it also does not use the function return value from the
12378operator, a warning is issued since the operator effectively does
12379nothing.
12380
123813) Unreferenced objects: If a namespace object is created, but never
12382referenced, a warning is issued. This is a warning level 2 since there
12383are
12384cases where this is ok, such as when a secondary table is loaded that
12385uses
12386the unreferenced objects. Even so, care is taken to only flag objects
12387that
12388don't look like they will ever be used. For example, the reserved methods
12389(starting with an underscore) are usually not referenced because it is
12390expected that the OS will invoke them.
12391
12392----------------------------------------
1239331 March 2006. Summary of changes for version 20060331:
12394
123951) ACPI CA Core Subsystem:
12396
12397Implemented header file support for the following additional ACPI tables:
12398ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
12399support,
12400all current and known ACPI tables are now defined in the ACPICA headers
12401and
12402are available for use by device drivers and other software.
12403
12404Implemented support to allow tables that contain ACPI names with invalid
12405characters to be loaded. Previously, this would cause the table load to
12406fail, but since there are several known cases of such tables on existing
12407machines, this change was made to enable ACPI support for them. Also,
12408this
12409matches the behavior of the Microsoft ACPI implementation.
12410
12411Fixed a couple regressions introduced during the memory optimization in
12412the
1241320060317 release. The namespace node definition required additional
12414reorganization and an internal datatype that had been changed to 8-bit
12415was
12416restored to 32-bit. (Valery Podrezov)
12417
12418Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
12419could be passed through to AcpiOsReleaseObject which is unexpected. Such
12420null pointers are now trapped and ignored, matching the behavior of the
12421previous implementation before the deployment of AcpiOsReleaseObject.
12422(Valery Podrezov, Fiodor Suietov)
12423
12424Fixed a memory mapping leak during the deletion of a SystemMemory
12425operation
12426region where a cached memory mapping was not deleted. This became a
12427noticeable problem for operation regions that are defined within
12428frequently
12429used control methods. (Dana Meyers)
12430
12431Reorganized the ACPI table header files into two main files: one for the
12432ACPI tables consumed by the ACPICA core, and another for the
12433miscellaneous
12434ACPI tables that are consumed by the drivers and other software. The
12435various
12436FADT definitions were merged into one common section and three different
12437tables (ACPI 1.0, 1.0+, and 2.0)
12438
12439Example Code and Data Size: These are the sizes for the OS-independent
12440acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12441debug version of the code includes the debug output trace mechanism and
12442has
12443a much larger code and data size.
12444
12445  Previous Release:
12446    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12447    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12448  Current Release:
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
12452
124532) iASL Compiler/Disassembler and Tools:
12454
12455Disassembler: Implemented support to decode and format all non-AML ACPI
12456tables (tables other than DSDTs and SSDTs.) This includes the new tables
12457added to the ACPICA headers, therefore all current and known ACPI tables
12458are
12459supported.
12460
12461Disassembler: The change to allow ACPI names with invalid characters also
12462enables the disassembly of such tables. Invalid characters within names
12463are
12464changed to '*' to make the name printable; the iASL compiler will still
12465generate an error for such names, however, since this is an invalid ACPI
12466character.
12467
12468Implemented an option for AcpiXtract (-a) to extract all tables found in
12469the
12470input file. The default invocation extracts only the DSDTs and SSDTs.
12471
12472Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
12473makefile for the AcpiXtract utility.
12474
12475----------------------------------------
1247617 March 2006. Summary of changes for version 20060317:
12477
124781) ACPI CA Core Subsystem:
12479
12480Implemented the use of a cache object for all internal namespace nodes.
12481Since there are about 1000 static nodes in a typical system, this will
12482decrease memory use for cache implementations that minimize per-
12483allocation
12484overhead (such as a slab allocator.)
12485
12486Removed the reference count mechanism for internal namespace nodes, since
12487it
12488was deemed unnecessary. This reduces the size of each namespace node by
12489about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
12490case,
12491and 32 bytes for the 64-bit case.
12492
12493Optimized several internal data structures to reduce object size on 64-
12494bit
12495platforms by packing data within the 64-bit alignment. This includes the
12496frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
12497instances corresponding to the namespace objects.
12498
12499Added two new strings for the predefined _OSI method: "Windows 2001.1
12500SP1"
12501and "Windows 2006".
12502
12503Split the allocation tracking mechanism out to a separate file, from
12504utalloc.c to uttrack.c. This mechanism appears to be only useful for
12505application-level code. Kernels may wish to not include uttrack.c in
12506distributions.
12507
12508Removed all remnants of the obsolete ACPI_REPORT_* macros and the
12509associated
12510code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
12511macros.)
12512
12513Code and Data Size: These are the sizes for the acpica.lib produced by
12514the
12515Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12516ACPI
12517driver or OSPM code. The debug version of the code includes the debug
12518output
12519trace mechanism and has a much larger code and data size. Note that these
12520values will vary depending on the efficiency of the compiler and the
12521compiler options used during generation.
12522
12523  Previous Release:
12524    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12525    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12526  Current Release:
12527    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12528    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12529
12530
125312) iASL Compiler/Disassembler and Tools:
12532
12533Implemented an ANSI C version of the acpixtract utility. This version
12534will
12535automatically extract the DSDT and all SSDTs from the input acpidump text
12536file and dump the binary output to separate files. It can also display a
12537summary of the input file including the headers for each table found and
12538will extract any single ACPI table, with any signature. (See
12539source/tools/acpixtract)
12540
12541----------------------------------------
1254210 March 2006. Summary of changes for version 20060310:
12543
125441) ACPI CA Core Subsystem:
12545
12546Tagged all external interfaces to the subsystem with the new
12547ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
12548assist
12549kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
12550macro. The default definition is NULL.
12551
12552Added the ACPI_THREAD_ID type for the return value from
12553AcpiOsGetThreadId.
12554This allows the host to define this as necessary to simplify kernel
12555integration. The default definition is ACPI_NATIVE_UINT.
12556
12557Fixed two interpreter problems related to error processing, the deletion
12558of
12559objects, and placing invalid pointers onto the internal operator result
12560stack. BZ 6028, 6151 (Valery Podrezov)
12561
12562Increased the reference count threshold where a warning is emitted for
12563large
12564reference counts in order to eliminate unnecessary warnings on systems
12565with
12566large namespaces (especially 64-bit.) Increased the value from 0x400 to
125670x800.
12568
12569Due to universal disagreement as to the meaning of the 'c' in the
12570calloc()
12571function, the ACPI_MEM_CALLOCATE macro has been renamed to
12572ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
12573ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
12574ACPI_FREE.
12575
12576Code and Data Size: These are the sizes for the acpica.lib produced by
12577the
12578Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12579ACPI
12580driver or OSPM code. The debug version of the code includes the debug
12581output
12582trace mechanism and has a much larger code and data size. Note that these
12583values will vary depending on the efficiency of the compiler and the
12584compiler options used during generation.
12585
12586  Previous Release:
12587    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12588    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12589  Current Release:
12590    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12591    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12592
12593
125942) iASL Compiler/Disassembler:
12595
12596Disassembler: implemented support for symbolic resource descriptor
12597references. If a CreateXxxxField operator references a fixed offset
12598within
12599a
12600resource descriptor, a name is assigned to the descriptor and the offset
12601is
12602translated to the appropriate resource tag and pathname. The addition of
12603this support brings the disassembled code very close to the original ASL
12604source code and helps eliminate run-time errors when the disassembled
12605code
12606is modified (and recompiled) in such a way as to invalidate the original
12607fixed offsets.
12608
12609Implemented support for a Descriptor Name as the last parameter to the
12610ASL
12611Register() macro. This parameter was inadvertently left out of the ACPI
12612specification, and will be added for ACPI 3.0b.
12613
12614Fixed a problem where the use of the "_OSI" string (versus the full path
12615"\_OSI") caused an internal compiler error. ("No back ptr to op")
12616
12617Fixed a problem with the error message that occurs when an invalid string
12618is
12619used for a _HID object (such as one with an embedded asterisk:
12620"*PNP010A".)
12621The correct message is now displayed.
12622
12623----------------------------------------
1262417 February 2006. Summary of changes for version 20060217:
12625
126261) ACPI CA Core Subsystem:
12627
12628Implemented a change to the IndexField support to match the behavior of
12629the
12630Microsoft AML interpreter. The value written to the Index register is now
12631a
12632byte offset, no longer an index based upon the width of the Data
12633register.
12634This should fix IndexField problems seen on some machines where the Data
12635register is not exactly one byte wide. The ACPI specification will be
12636clarified on this point.
12637
12638Fixed a problem where several resource descriptor types could overrun the
12639internal descriptor buffer due to size miscalculation: VendorShort,
12640VendorLong, and Interrupt. This was noticed on IA64 machines, but could
12641affect all platforms.
12642
12643Fixed a problem where individual resource descriptors were misaligned
12644within
12645the internal buffer, causing alignment faults on IA64 platforms.
12646
12647Code and Data Size: These are the sizes for the acpica.lib produced by
12648the
12649Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12650ACPI
12651driver or OSPM code. The debug version of the code includes the debug
12652output
12653trace mechanism and has a much larger code and data size. Note that these
12654values will vary depending on the efficiency of the compiler and the
12655compiler options used during generation.
12656
12657  Previous Release:
12658    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12659    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12660  Current Release:
12661    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12662    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12663
12664
126652) iASL Compiler/Disassembler:
12666
12667Implemented support for new reserved names: _WDG and _WED are Microsoft
12668extensions for Windows Instrumentation Management, _TDL is a new ACPI-
12669defined method (Throttling Depth Limit.)
12670
12671Fixed a problem where a zero-length VendorShort or VendorLong resource
12672descriptor was incorrectly emitted as a descriptor of length one.
12673
12674----------------------------------------
1267510 February 2006. Summary of changes for version 20060210:
12676
126771) ACPI CA Core Subsystem:
12678
12679Removed a couple of extraneous ACPI_ERROR messages that appeared during
12680normal execution. These became apparent after the conversion from
12681ACPI_DEBUG_PRINT.
12682
12683Fixed a problem where the CreateField operator could hang if the BitIndex
12684or
12685NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12686
12687Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12688failed with an exception. This also fixes a couple of related RefOf and
12689DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12690
12691Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12692of
12693AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12694BZ
126955480)
12696
12697Implemented a memory cleanup at the end of the execution of each
12698iteration
12699of an AML While() loop, preventing the accumulation of outstanding
12700objects.
12701(Valery Podrezov, BZ 5427)
12702
12703Eliminated a chunk of duplicate code in the object resolution code.
12704(Valery
12705Podrezov, BZ 5336)
12706
12707Fixed several warnings during the 64-bit code generation.
12708
12709The AcpiSrc source code conversion tool now inserts one line of
12710whitespace
12711after an if() statement that is followed immediately by a comment,
12712improving
12713readability of the Linux code.
12714
12715Code and Data Size: The current and previous library sizes for the core
12716subsystem are shown below. These are the code and data sizes for the
12717acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12718These
12719values do not include any ACPI driver or OSPM code. The debug version of
12720the
12721code includes the debug output trace mechanism and has a much larger code
12722and data size. Note that these values will vary depending on the
12723efficiency
12724of the compiler and the compiler options used during generation.
12725
12726  Previous Release:
12727    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12728    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12729  Current Release:
12730    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12731    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12732
12733
127342) iASL Compiler/Disassembler:
12735
12736Fixed a problem with the disassembly of a BankField operator with a
12737complex
12738expression for the BankValue parameter.
12739
12740----------------------------------------
1274127 January 2006. Summary of changes for version 20060127:
12742
127431) ACPI CA Core Subsystem:
12744
12745Implemented support in the Resource Manager to allow unresolved
12746namestring
12747references within resource package objects for the _PRT method. This
12748support
12749is in addition to the previously implemented unresolved reference support
12750within the AML parser. If the interpreter slack mode is enabled, these
12751unresolved references will be passed through to the caller as a NULL
12752package
12753entry.
12754
12755Implemented and deployed new macros and functions for error and warning
12756messages across the subsystem. These macros are simpler and generate less
12757code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12758ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12759macros remain defined to allow ACPI drivers time to migrate to the new
12760macros.
12761
12762Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12763the
12764Acquire/Release Lock OSL interfaces.
12765
12766Fixed a problem where Alias ASL operators are sometimes not correctly
12767resolved, in both the interpreter and the iASL compiler.
12768
12769Fixed several problems with the implementation of the
12770ConcatenateResTemplate
12771ASL operator. As per the ACPI specification, zero length buffers are now
12772treated as a single EndTag. One-length buffers always cause a fatal
12773exception. Non-zero length buffers that do not end with a full 2-byte
12774EndTag
12775cause a fatal exception.
12776
12777Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12778interface. (With assistance from Thomas Renninger)
12779
12780Code and Data Size: The current and previous library sizes for the core
12781subsystem are shown below. These are the code and data sizes for the
12782acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12783These
12784values do not include any ACPI driver or OSPM code. The debug version of
12785the
12786code includes the debug output trace mechanism and has a much larger code
12787and data size. Note that these values will vary depending on the
12788efficiency
12789of the compiler and the compiler options used during generation.
12790
12791  Previous Release:
12792    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12793    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12794  Current Release:
12795    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12796    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12797
12798
127992) iASL Compiler/Disassembler:
12800
12801Fixed an internal error that was generated for any forward references to
12802ASL
12803Alias objects.
12804
12805----------------------------------------
1280613 January 2006. Summary of changes for version 20060113:
12807
128081) ACPI CA Core Subsystem:
12809
12810Added 2006 copyright to all module headers and signons. This affects
12811virtually every file in the ACPICA core subsystem, iASL compiler, and the
12812utilities.
12813
12814Enhanced the ACPICA error reporting in order to simplify user migration
12815to
12816the non-debug version of ACPICA. Replaced all instances of the
12817ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12818debug
12819levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12820respectively. This preserves all error and warning messages in the non-
12821debug
12822version of the ACPICA code (this has been referred to as the "debug lite"
12823option.) Over 200 cases were converted to create a total of over 380
12824error/warning messages across the ACPICA code. This increases the code
12825and
12826data size of the default non-debug version of the code somewhat (about
1282713K),
12828but all error/warning reporting may be disabled if desired (and code
12829eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12830configuration option. The size of the debug version of ACPICA remains
12831about
12832the same.
12833
12834Fixed a memory leak within the AML Debugger "Set" command. One object was
12835not properly deleted for every successful invocation of the command.
12836
12837Code and Data Size: The current and previous library sizes for the core
12838subsystem are shown below. These are the code and data sizes for the
12839acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12840These
12841values do not include any ACPI driver or OSPM code. The debug version of
12842the
12843code includes the debug output trace mechanism and has a much larger code
12844and data size. Note that these values will vary depending on the
12845efficiency
12846of the compiler and the compiler options used during generation.
12847
12848  Previous Release:
12849    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12850    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12851  Current Release:
12852    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12853    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12854
12855
128562) iASL Compiler/Disassembler:
12857
12858The compiler now officially supports the ACPI 3.0a specification that was
12859released on December 30, 2005. (Specification is available at
12860www.acpi.info)
12861
12862----------------------------------------
1286316 December 2005. Summary of changes for version 20051216:
12864
128651) ACPI CA Core Subsystem:
12866
12867Implemented optional support to allow unresolved names within ASL Package
12868objects. A null object is inserted in the package when a named reference
12869cannot be located in the current namespace. Enabled via the interpreter
12870slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12871machines
12872that contain such code.
12873
12874Implemented an optimization to the initialization sequence that can
12875improve
12876boot time. During ACPI device initialization, the _STA method is now run
12877if
12878and only if the _INI method exists. The _STA method is used to determine
12879if
12880the device is present; An _INI can only be run if _STA returns present,
12881but
12882it is a waste of time to run the _STA method if the _INI does not exist.
12883(Prototype and assistance from Dong Wei)
12884
12885Implemented use of the C99 uintptr_t for the pointer casting macros if it
12886is
12887available in the current compiler. Otherwise, the default (void *) cast
12888is
12889used as before.
12890
12891Fixed some possible memory leaks found within the execution path of the
12892Break, Continue, If, and CreateField operators. (Valery Podrezov)
12893
12894Fixed a problem introduced in the 20051202 release where an exception is
12895generated during method execution if a control method attempts to declare
12896another method.
12897
12898Moved resource descriptor string constants that are used by both the AML
12899disassembler and AML debugger to the common utilities directory so that
12900these components are independent.
12901
12902Implemented support in the AcpiExec utility (-e switch) to globally
12903ignore
12904exceptions during control method execution (method is not aborted.)
12905
12906Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12907generation.
12908
12909Code and Data Size: The current and previous library sizes for the core
12910subsystem are shown below. These are the code and data sizes for the
12911acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12912These
12913values do not include any ACPI driver or OSPM code. The debug version of
12914the
12915code includes the debug output trace mechanism and has a much larger code
12916and data size. Note that these values will vary depending on the
12917efficiency
12918of the compiler and the compiler options used during generation.
12919
12920  Previous Release:
12921    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12922    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12923  Current Release:
12924    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12925    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12926
12927
129282) iASL Compiler/Disassembler:
12929
12930Fixed a problem where a CPU stack overflow fault could occur if a
12931recursive
12932method call was made from within a Return statement.
12933
12934----------------------------------------
1293502 December 2005. Summary of changes for version 20051202:
12936
129371) ACPI CA Core Subsystem:
12938
12939Modified the parsing of control methods to no longer create namespace
12940objects during the first pass of the parse. Objects are now created only
12941during the execute phase, at the moment the namespace creation operator
12942is
12943encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12944This
12945should eliminate ALREADY_EXISTS exceptions seen on some machines where
12946reentrant control methods are protected by an AML mutex. The mutex will
12947now
12948correctly block multiple threads from attempting to create the same
12949object
12950more than once.
12951
12952Increased the number of available Owner Ids for namespace object tracking
12953from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12954on
12955some machines with a large number of ACPI tables (either static or
12956dynamic).
12957
12958Fixed a problem with the AcpiExec utility where a fault could occur when
12959the
12960-b switch (batch mode) is used.
12961
12962Enhanced the namespace dump routine to output the owner ID for each
12963namespace object.
12964
12965Code and Data Size: The current and previous library sizes for the core
12966subsystem are shown below. These are the code and data sizes for the
12967acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12968These
12969values do not include any ACPI driver or OSPM code. The debug version of
12970the
12971code includes the debug output trace mechanism and has a much larger code
12972and data size. Note that these values will vary depending on the
12973efficiency
12974of the compiler and the compiler options used during generation.
12975
12976  Previous Release:
12977    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12978    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12979  Current Release:
12980    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12981    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12982
12983
129842) iASL Compiler/Disassembler:
12985
12986Fixed a parse error during compilation of certain Switch/Case constructs.
12987To
12988simplify the parse, the grammar now allows for multiple Default
12989statements
12990and this error is now detected and flagged during the analysis phase.
12991
12992Disassembler: The disassembly now includes the contents of the original
12993table header within a comment at the start of the file. This includes the
12994name and version of the original ASL compiler.
12995
12996----------------------------------------
1299717 November 2005. Summary of changes for version 20051117:
12998
129991) ACPI CA Core Subsystem:
13000
13001Fixed a problem in the AML parser where the method thread count could be
13002decremented below zero if any errors occurred during the method parse
13003phase.
13004This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
13005machines.
13006This also fixed a related regression with the mechanism that detects and
13007corrects methods that cannot properly handle reentrancy (related to the
13008deployment of the new OwnerId mechanism.)
13009
13010Eliminated the pre-parsing of control methods (to detect errors) during
13011table load. Related to the problem above, this was causing unwind issues
13012if
13013any errors occurred during the parse, and it seemed to be overkill. A
13014table
13015load should not be aborted if there are problems with any single control
13016method, thus rendering this feature rather pointless.
13017
13018Fixed a problem with the new table-driven resource manager where an
13019internal
13020buffer overflow could occur for small resource templates.
13021
13022Implemented a new external interface, AcpiGetVendorResource. This
13023interface
13024will find and return a vendor-defined resource descriptor within a _CRS
13025or
13026_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
13027Helgaas.
13028
13029Removed the length limit (200) on string objects as per the upcoming ACPI
130303.0A specification. This affects the following areas of the interpreter:
130311)
13032any implicit conversion of a Buffer to a String, 2) a String object
13033result
13034of the ASL Concatenate operator, 3) the String object result of the ASL
13035ToString operator.
13036
13037Fixed a problem in the Windows OS interface layer (OSL) where a
13038WAIT_FOREVER
13039on a semaphore object would incorrectly timeout. This allows the
13040multithreading features of the AcpiExec utility to work properly under
13041Windows.
13042
13043Updated the Linux makefiles for the iASL compiler and AcpiExec to include
13044the recently added file named "utresrc.c".
13045
13046Code and Data Size: The current and previous library sizes for the core
13047subsystem are shown below. These are the code and data sizes for the
13048acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13049These
13050values do not include any ACPI driver or OSPM code. The debug version of
13051the
13052code includes the debug output trace mechanism and has a much larger code
13053and data size. Note that these values will vary depending on the
13054efficiency
13055of the compiler and the compiler options used during generation.
13056
13057  Previous Release:
13058    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
13059    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13060  Current Release:
13061    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
13062    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13063
13064
130652) iASL Compiler/Disassembler:
13066
13067Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
13068specification. For the iASL compiler, this means that string literals
13069within
13070the source ASL can be of any length.
13071
13072Enhanced the listing output to dump the AML code for resource descriptors
13073immediately after the ASL code for each descriptor, instead of in a block
13074at
13075the end of the entire resource template.
13076
13077Enhanced the compiler debug output to dump the entire original parse tree
13078constructed during the parse phase, before any transforms are applied to
13079the
13080tree. The transformed tree is dumped also.
13081
13082----------------------------------------
1308302 November 2005. Summary of changes for version 20051102:
13084
130851) ACPI CA Core Subsystem:
13086
13087Modified the subsystem initialization sequence to improve GPE support.
13088The
13089GPE initialization has been split into two parts in order to defer
13090execution
13091of the _PRW methods (Power Resources for Wake) until after the hardware
13092is
13093fully initialized and the SCI handler is installed. This allows the _PRW
13094methods to access fields protected by the Global Lock. This will fix
13095systems
13096where a NO_GLOBAL_LOCK exception has been seen during initialization.
13097
13098Converted the ACPI internal object disassemble and display code within
13099the
13100AML debugger to fully table-driven operation, reducing code size and
13101increasing maintainability.
13102
13103Fixed a regression with the ConcatenateResTemplate() ASL operator
13104introduced
13105in the 20051021 release.
13106
13107Implemented support for "local" internal ACPI object types within the
13108debugger "Object" command and the AcpiWalkNamespace external interfaces.
13109These local types include RegionFields, BankFields, IndexFields, Alias,
13110and
13111reference objects.
13112
13113Moved common AML resource handling code into a new file, "utresrc.c".
13114This
13115code is shared by both the Resource Manager and the AML Debugger.
13116
13117Code and Data Size: The current and previous library sizes for the core
13118subsystem are shown below. These are the code and data sizes for the
13119acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13120These
13121values do not include any ACPI driver or OSPM code. The debug version of
13122the
13123code includes the debug output trace mechanism and has a much larger code
13124and data size. Note that these values will vary depending on the
13125efficiency
13126of the compiler and the compiler options used during generation.
13127
13128  Previous Release:
13129    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
13130    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
13131  Current Release:
13132    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
13133    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13134
13135
131362) iASL Compiler/Disassembler:
13137
13138Fixed a problem with very large initializer lists (more than 4000
13139elements)
13140for both Buffer and Package objects where the parse stack could overflow.
13141
13142Enhanced the pre-compile source code scan for non-ASCII characters to
13143ignore
13144characters within comment fields. The scan is now always performed and is
13145no
13146longer optional, detecting invalid characters within a source file
13147immediately rather than during the parse phase or later.
13148
13149Enhanced the ASL grammar definition to force early reductions on all
13150list-
13151style grammar elements so that the overall parse stack usage is greatly
13152reduced. This should improve performance and reduce the possibility of
13153parse
13154stack overflow.
13155
13156Eliminated all reduce/reduce conflicts in the iASL parser generation.
13157Also,
13158with the addition of a %expected statement, the compiler generates from
13159source with no warnings.
13160
13161Fixed a possible segment fault in the disassembler if the input filename
13162does not contain a "dot" extension (Thomas Renninger).
13163
13164----------------------------------------
1316521 October 2005. Summary of changes for version 20051021:
13166
131671) ACPI CA Core Subsystem:
13168
13169Implemented support for the EM64T and other x86-64 processors. This
13170essentially entails recognizing that these processors support non-aligned
13171memory transfers. Previously, all 64-bit processors were assumed to lack
13172hardware support for non-aligned transfers.
13173
13174Completed conversion of the Resource Manager to nearly full table-driven
13175operation. Specifically, the resource conversion code (convert AML to
13176internal format and the reverse) and the debug code to dump internal
13177resource descriptors are fully table-driven, reducing code and data size
13178and
13179improving maintainability.
13180
13181The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
13182word
13183on 64-bit processors instead of a fixed 32-bit word. (With assistance
13184from
13185Alexey Starikovskiy)
13186
13187Implemented support within the resource conversion code for the Type-
13188Specific byte within the various ACPI 3.0 *WordSpace macros.
13189
13190Fixed some issues within the resource conversion code for the type-
13191specific
13192flags for both Memory and I/O address resource descriptors. For Memory,
13193implemented support for the MTP and TTP flags. For I/O, split the TRS and
13194TTP flags into two separate fields.
13195
13196Code and Data Size: The current and previous library sizes for the core
13197subsystem are shown below. These are the code and data sizes for the
13198acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13199These
13200values do not include any ACPI driver or OSPM code. The debug version of
13201the
13202code includes the debug output trace mechanism and has a much larger code
13203and data size. Note that these values will vary depending on the
13204efficiency
13205of the compiler and the compiler options used during generation.
13206
13207  Previous Release:
13208    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
13209    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
13210  Current Release:
13211    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
13212    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
13213
13214
13215
132162) iASL Compiler/Disassembler:
13217
13218Relaxed a compiler restriction that disallowed a ResourceIndex byte if
13219the
13220corresponding ResourceSource string was not also present in a resource
13221descriptor declaration. This restriction caused problems with existing
13222AML/ASL code that includes the Index byte without the string. When such
13223AML
13224was disassembled, it could not be compiled without modification. Further,
13225the modified code created a resource template with a different size than
13226the
13227original, breaking code that used fixed offsets into the resource
13228template
13229buffer.
13230
13231Removed a recent feature of the disassembler to ignore a lone
13232ResourceIndex
13233byte. This byte is now emitted if present so that the exact AML can be
13234reproduced when the disassembled code is recompiled.
13235
13236Improved comments and text alignment for the resource descriptor code
13237emitted by the disassembler.
13238
13239Implemented disassembler support for the ACPI 3.0 AccessSize field within
13240a
13241Register() resource descriptor.
13242
13243----------------------------------------
1324430 September 2005. Summary of changes for version 20050930:
13245
132461) ACPI CA Core Subsystem:
13247
13248Completed a major overhaul of the Resource Manager code - specifically,
13249optimizations in the area of the AML/internal resource conversion code.
13250The
13251code has been optimized to simplify and eliminate duplicated code, CPU
13252stack
13253use has been decreased by optimizing function parameters and local
13254variables, and naming conventions across the manager have been
13255standardized
13256for clarity and ease of maintenance (this includes function, parameter,
13257variable, and struct/typedef names.) The update may force changes in some
13258driver code, depending on how resources are handled by the host OS.
13259
13260All Resource Manager dispatch and information tables have been moved to a
13261single location for clarity and ease of maintenance. One new file was
13262created, named "rsinfo.c".
13263
13264The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
13265guarantee that the argument is not evaluated twice, making them less
13266prone
13267to macro side-effects. However, since there exists the possibility of
13268additional stack use if a particular compiler cannot optimize them (such
13269as
13270in the debug generation case), the original macros are optionally
13271available.
13272Note that some invocations of the return_VALUE macro may now cause size
13273mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
13274to
13275eliminate these. (From Randy Dunlap)
13276
13277Implemented a new mechanism to enable debug tracing for individual
13278control
13279methods. A new external interface, AcpiDebugTrace, is provided to enable
13280this mechanism. The intent is to allow the host OS to easily enable and
13281disable tracing for problematic control methods. This interface can be
13282easily exposed to a user or debugger interface if desired. See the file
13283psxface.c for details.
13284
13285AcpiUtCallocate will now return a valid pointer if a length of zero is
13286specified - a length of one is used and a warning is issued. This matches
13287the behavior of AcpiUtAllocate.
13288
13289Code and Data Size: The current and previous library sizes for the core
13290subsystem are shown below. These are the code and data sizes for the
13291acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13292These
13293values do not include any ACPI driver or OSPM code. The debug version of
13294the
13295code includes the debug output trace mechanism and has a much larger code
13296and data size. Note that these values will vary depending on the
13297efficiency
13298of the compiler and the compiler options used during generation.
13299
13300  Previous Release:
13301    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
13302    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
13303  Current Release:
13304    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
13305    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
13306
13307
133082) iASL Compiler/Disassembler:
13309
13310A remark is issued if the effective compile-time length of a package or
13311buffer is zero. Previously, this was a warning.
13312
13313----------------------------------------
1331416 September 2005. Summary of changes for version 20050916:
13315
133161) ACPI CA Core Subsystem:
13317
13318Fixed a problem within the Resource Manager where support for the Generic
13319Register descriptor was not fully implemented. This descriptor is now
13320fully
13321recognized, parsed, disassembled, and displayed.
13322
13323Completely restructured the Resource Manager code to utilize table-driven
13324dispatch and lookup, eliminating many of the large switch() statements.
13325This
13326reduces overall subsystem code size and code complexity. Affects the
13327resource parsing and construction, disassembly, and debug dump output.
13328
13329Cleaned up and restructured the debug dump output for all resource
13330descriptors. Improved readability of the output and reduced code size.
13331
13332Fixed a problem where changes to internal data structures caused the
13333optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
13334
13335Code and Data Size: The current and previous library sizes for the core
13336subsystem are shown below. These are the code and data sizes for the
13337acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13338These
13339values do not include any ACPI driver or OSPM code. The debug version of
13340the
13341code includes the debug output trace mechanism and has a much larger code
13342and data size. Note that these values will vary depending on the
13343efficiency
13344of the compiler and the compiler options used during generation.
13345
13346  Previous Release:
13347    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
13348    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
13349  Current Release:
13350    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
13351    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
13352
13353
133542) iASL Compiler/Disassembler:
13355
13356Updated the disassembler to automatically insert an EndDependentFn()
13357macro
13358into the ASL stream if this macro is missing in the original AML code,
13359simplifying compilation of the resulting ASL module.
13360
13361Fixed a problem in the disassembler where a disassembled ResourceSource
13362string (within a large resource descriptor) was not surrounded by quotes
13363and
13364not followed by a comma, causing errors when the resulting ASL module was
13365compiled. Also, escape sequences within a ResourceSource string are now
13366handled correctly (especially "\\")
13367
13368----------------------------------------
1336902 September 2005. Summary of changes for version 20050902:
13370
133711) ACPI CA Core Subsystem:
13372
13373Fixed a problem with the internal Owner ID allocation and deallocation
13374mechanisms for control method execution and recursive method invocation.
13375This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
13376messages seen on some systems. Recursive method invocation depth is
13377currently limited to 255. (Alexey Starikovskiy)
13378
13379Completely eliminated all vestiges of support for the "module-level
13380executable code" until this support is fully implemented and debugged.
13381This
13382should eliminate the NO_RETURN_VALUE exceptions seen during table load on
13383some systems that invoke this support.
13384
13385Fixed a problem within the resource manager code where the transaction
13386flags
13387for a 64-bit address descriptor were handled incorrectly in the type-
13388specific flag byte.
13389
13390Consolidated duplicate code within the address descriptor resource
13391manager
13392code, reducing overall subsystem code size.
13393
13394Fixed a fault when using the AML debugger "disassemble" command to
13395disassemble individual control methods.
13396
13397Removed references to the "release_current" directory within the Unix
13398release package.
13399
13400Code and Data Size: The current and previous core subsystem library sizes
13401are shown below. These are the code and data sizes for the acpica.lib
13402produced by the Microsoft Visual C++ 6.0 compiler. These values do not
13403include any ACPI driver or OSPM code. The debug version of the code
13404includes
13405the debug output trace mechanism and has a much larger code and data
13406size.
13407Note that these values will vary depending on the efficiency of the
13408compiler
13409and the compiler options used during generation.
13410
13411  Previous Release:
13412    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13413    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13414  Current Release:
13415    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
13416    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
13417
13418
134192) iASL Compiler/Disassembler:
13420
13421Implemented an error check for illegal duplicate values in the interrupt
13422and
13423dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
13424Interrupt().
13425
13426Implemented error checking for the Irq() and IrqNoFlags() macros to
13427detect
13428too many values in the interrupt list (16 max) and invalid values in the
13429list (range 0 - 15)
13430
13431The maximum length string literal within an ASL file is now restricted to
13432200 characters as per the ACPI specification.
13433
13434Fixed a fault when using the -ln option (generate namespace listing).
13435
13436Implemented an error check to determine if a DescriptorName within a
13437resource descriptor has already been used within the current scope.
13438
13439----------------------------------------
1344015 August 2005.  Summary of changes for version 20050815:
13441
134421) ACPI CA Core Subsystem:
13443
13444Implemented a full bytewise compare to determine if a table load request
13445is
13446attempting to load a duplicate table. The compare is performed if the
13447table
13448signatures and table lengths match. This will allow different tables with
13449the same OEM Table ID and revision to be loaded - probably against the
13450ACPI
13451specification, but discovered in the field nonetheless.
13452
13453Added the changes.txt logfile to each of the zipped release packages.
13454
13455Code and Data Size: Current and previous core subsystem library sizes are
13456shown below. These are the code and data sizes for the acpica.lib
13457produced
13458by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13459any ACPI driver or OSPM code. The debug version of the code includes the
13460debug output trace mechanism and has a much larger code and data size.
13461Note
13462that these values will vary depending on the efficiency of the compiler
13463and
13464the compiler options used during generation.
13465
13466  Previous Release:
13467    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13468    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13469  Current Release:
13470    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13471    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13472
13473
134742) iASL Compiler/Disassembler:
13475
13476Fixed a problem where incorrect AML code could be generated for Package
13477objects if optimization is disabled (via the -oa switch).
13478
13479Fixed a problem with where incorrect AML code is generated for variable-
13480length packages when the package length is not specified and the number
13481of
13482initializer values is greater than 255.
13483
13484
13485----------------------------------------
1348629 July 2005.  Summary of changes for version 20050729:
13487
134881) ACPI CA Core Subsystem:
13489
13490Implemented support to ignore an attempt to install/load a particular
13491ACPI
13492table more than once. Apparently there exists BIOS code that repeatedly
13493attempts to load the same SSDT upon certain events. With assistance from
13494Venkatesh Pallipadi.
13495
13496Restructured the main interface to the AML parser in order to correctly
13497handle all exceptional conditions. This will prevent leakage of the
13498OwnerId
13499resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
13500some
13501machines. With assistance from Alexey Starikovskiy.
13502
13503Support for "module level code" has been disabled in this version due to
13504a
13505number of issues that have appeared on various machines. The support can
13506be
13507enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
13508compilation. When the issues are fully resolved, the code will be enabled
13509by
13510default again.
13511
13512Modified the internal functions for debug print support to define the
13513FunctionName parameter as a (const char *) for compatibility with
13514compiler
13515built-in macros such as __FUNCTION__, etc.
13516
13517Linted the entire ACPICA source tree for both 32-bit and 64-bit.
13518
13519Implemented support to display an object count summary for the AML
13520Debugger
13521commands Object and Methods.
13522
13523Code and Data Size: Current and previous core subsystem library sizes are
13524shown below. These are the code and data sizes for the acpica.lib
13525produced
13526by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13527any ACPI driver or OSPM code. The debug version of the code includes the
13528debug output trace mechanism and has a much larger code and data size.
13529Note
13530that these values will vary depending on the efficiency of the compiler
13531and
13532the compiler options used during generation.
13533
13534  Previous Release:
13535    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13536    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13537  Current Release:
13538    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13539    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13540
13541
135422) iASL Compiler/Disassembler:
13543
13544Fixed a regression that appeared in the 20050708 version of the compiler
13545where an error message was inadvertently emitted for invocations of the
13546_OSI
13547reserved control method.
13548
13549----------------------------------------
1355008 July 2005.  Summary of changes for version 20050708:
13551
135521) ACPI CA Core Subsystem:
13553
13554The use of the CPU stack in the debug version of the subsystem has been
13555considerably reduced. Previously, a debug structure was declared in every
13556function that used the debug macros. This structure has been removed in
13557favor of declaring the individual elements as parameters to the debug
13558functions. This reduces the cumulative stack use during nested execution
13559of
13560ACPI function calls at the cost of a small increase in the code size of
13561the
13562debug version of the subsystem. With assistance from Alexey Starikovskiy
13563and
13564Len Brown.
13565
13566Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
13567headers to define a macro that will return the current function name at
13568runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
13569by
13570the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
13571compiler-dependent header, the function name is saved on the CPU stack
13572(one
13573pointer per function.) This mechanism is used because apparently there
13574exists no standard ANSI-C defined macro that that returns the function
13575name.
13576
13577Redesigned and reimplemented the "Owner ID" mechanism used to track
13578namespace objects created/deleted by ACPI tables and control method
13579execution. A bitmap is now used to allocate and free the IDs, thus
13580solving
13581the wraparound problem present in the previous implementation. The size
13582of
13583the namespace node descriptor was reduced by 2 bytes as a result (Alexey
13584Starikovskiy).
13585
13586Removed the UINT32_BIT and UINT16_BIT types that were used for the
13587bitfield
13588flag definitions within the headers for the predefined ACPI tables. These
13589have been replaced by UINT8_BIT in order to increase the code portability
13590of
13591the subsystem. If the use of UINT8 remains a problem, we may be forced to
13592eliminate bitfields entirely because of a lack of portability.
13593
13594Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
13595This
13596is a frequently used function and this improvement increases the
13597performance
13598of the entire subsystem (Alexey Starikovskiy).
13599
13600Fixed several possible memory leaks and the inverse - premature object
13601deletion (Alexey Starikovskiy).
13602
13603Code and Data Size: Current and previous core subsystem library sizes are
13604shown below. These are the code and data sizes for the acpica.lib
13605produced
13606by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13607any ACPI driver or OSPM code. The debug version of the code includes the
13608debug output trace mechanism and has a much larger code and data size.
13609Note
13610that these values will vary depending on the efficiency of the compiler
13611and
13612the compiler options used during generation.
13613
13614  Previous Release:
13615    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13616    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13617  Current Release:
13618    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13619    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13620
13621----------------------------------------
1362224 June 2005.  Summary of changes for version 20050624:
13623
136241) ACPI CA Core Subsystem:
13625
13626Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
13627the host-defined cache object. This allows the OSL implementation to
13628define
13629and type this object in any manner desired, simplifying the OSL
13630implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
13631Linux, and should be defined in the OS-specific header file for other
13632operating systems as required.
13633
13634Changed the interface to AcpiOsAcquireObject to directly return the
13635requested object as the function return (instead of ACPI_STATUS.) This
13636change was made for performance reasons, since this is the purpose of the
13637interface in the first place. AcpiOsAcquireObject is now similar to the
13638AcpiOsAllocate interface.
13639
13640Implemented a new AML debugger command named Businfo. This command
13641displays
13642information about all devices that have an associate _PRT object. The
13643_ADR,
13644_HID, _UID, and _CID are displayed for these devices.
13645
13646Modified the initialization sequence in AcpiInitializeSubsystem to call
13647the
13648OSL interface AcpiOslInitialize first, before any local initialization.
13649This
13650change was required because the global initialization now calls OSL
13651interfaces.
13652
13653Enhanced the Dump command to display the entire contents of Package
13654objects
13655(including all sub-objects and their values.)
13656
13657Restructured the code base to split some files because of size and/or
13658because the code logically belonged in a separate file. New files are
13659listed
13660below. All makefiles and project files included in the ACPI CA release
13661have
13662been updated.
13663    utilities/utcache.c           /* Local cache interfaces */
13664    utilities/utmutex.c           /* Local mutex support */
13665    utilities/utstate.c           /* State object support */
13666    interpreter/parser/psloop.c   /* Main AML parse loop */
13667
13668Code and Data Size: Current and previous core subsystem library sizes are
13669shown below. These are the code and data sizes for the acpica.lib
13670produced
13671by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13672any ACPI driver or OSPM code. The debug version of the code includes the
13673debug output trace mechanism and has a much larger code and data size.
13674Note
13675that these values will vary depending on the efficiency of the compiler
13676and
13677the compiler options used during generation.
13678
13679  Previous Release:
13680    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13681    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13682  Current Release:
13683    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13684    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13685
13686
136872) iASL Compiler/Disassembler:
13688
13689Fixed a regression introduced in version 20050513 where the use of a
13690Package
13691object within a Case() statement caused a compile time exception. The
13692original behavior has been restored (a Match() operator is emitted.)
13693
13694----------------------------------------
1369517 June 2005.  Summary of changes for version 20050617:
13696
136971) ACPI CA Core Subsystem:
13698
13699Moved the object cache operations into the OS interface layer (OSL) to
13700allow
13701the host OS to handle these operations if desired (for example, the Linux
13702OSL will invoke the slab allocator). This support is optional; the
13703compile
13704time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13705cache
13706code in the ACPI CA core. The new OSL interfaces are shown below. See
13707utalloc.c for an example implementation, and acpiosxf.h for the exact
13708interface definitions. With assistance from Alexey Starikovskiy.
13709    AcpiOsCreateCache
13710    AcpiOsDeleteCache
13711    AcpiOsPurgeCache
13712    AcpiOsAcquireObject
13713    AcpiOsReleaseObject
13714
13715Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13716return
13717and restore a flags parameter. This fits better with many OS lock models.
13718Note: the current execution state (interrupt handler or not) is no longer
13719passed to these interfaces. If necessary, the OSL must determine this
13720state
13721by itself, a simple and fast operation. With assistance from Alexey
13722Starikovskiy.
13723
13724Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13725present if the revision of the RSDP was 2 or greater. According to the
13726ACPI
13727specification, the XSDT is optional in all cases, and the table manager
13728therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13729Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13730contain
13731only the RSDT.
13732
13733Fixed an interpreter problem with the Mid() operator in the case of an
13734input
13735string where the resulting output string is of zero length. It now
13736correctly
13737returns a valid, null terminated string object instead of a string object
13738with a null pointer.
13739
13740Fixed a problem with the control method argument handling to allow a
13741store
13742to an Arg object that already contains an object of type Device. The
13743Device
13744object is now correctly overwritten. Previously, an error was returned.
13745
13746
13747Enhanced the debugger Find command to emit object values in addition to
13748the
13749found object pathnames. The output format is the same as the dump
13750namespace
13751command.
13752
13753Enhanced the debugger Set command. It now has the ability to set the
13754value
13755of any Named integer object in the namespace (Previously, only method
13756locals
13757and args could be set.)
13758
13759Code and Data Size: Current and previous core subsystem library sizes are
13760shown below. These are the code and data sizes for the acpica.lib
13761produced
13762by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13763any ACPI driver or OSPM code. The debug version of the code includes the
13764debug output trace mechanism and has a much larger code and data size.
13765Note
13766that these values will vary depending on the efficiency of the compiler
13767and
13768the compiler options used during generation.
13769
13770  Previous Release:
13771    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13772    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13773  Current Release:
13774    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13775    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13776
13777
137782) iASL Compiler/Disassembler:
13779
13780Fixed a regression in the disassembler where if/else/while constructs
13781were
13782output incorrectly. This problem was introduced in the previous release
13783(20050526). This problem also affected the single-step disassembly in the
13784debugger.
13785
13786Fixed a problem where compiling the reserved _OSI method would randomly
13787(but
13788rarely) produce compile errors.
13789
13790Enhanced the disassembler to emit compilable code in the face of
13791incorrect
13792AML resource descriptors. If the optional ResourceSourceIndex is present,
13793but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13794disassembly. Otherwise, the resulting code cannot be compiled without
13795errors.
13796
13797----------------------------------------
1379826 May 2005.  Summary of changes for version 20050526:
13799
138001) ACPI CA Core Subsystem:
13801
13802Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13803the module level (not within a control method.) These opcodes are
13804executed
13805exactly once at the time the table is loaded. This type of code was legal
13806up
13807until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13808in
13809order to provide backwards compatibility with earlier BIOS
13810implementations.
13811This eliminates the "Encountered executable code at module level" warning
13812that was previously generated upon detection of such code.
13813
13814Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13815inadvertently be generated during the lookup of namespace objects in the
13816second pass parse of ACPI tables and control methods. It appears that
13817this
13818problem could occur during the resolution of forward references to
13819namespace
13820objects.
13821
13822Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13823corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13824allows the deadlock detection debug code to be compiled out in the normal
13825case, improving mutex performance (and overall subsystem performance)
13826considerably.
13827
13828Implemented a handful of miscellaneous fixes for possible memory leaks on
13829error conditions and error handling control paths. These fixes were
13830suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13831
13832Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13833(tbxfroot.c)
13834to prevent a fault in this error case.
13835
13836Code and Data Size: Current and previous core subsystem library sizes are
13837shown below. These are the code and data sizes for the acpica.lib
13838produced
13839by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13840any ACPI driver or OSPM code. The debug version of the code includes the
13841debug output trace mechanism and has a much larger code and data size.
13842Note
13843that these values will vary depending on the efficiency of the compiler
13844and
13845the compiler options used during generation.
13846
13847  Previous Release:
13848    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13849    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13850  Current Release:
13851    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13852    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13853
13854
138552) iASL Compiler/Disassembler:
13856
13857Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13858the module level (not within a control method.) These operators will be
13859executed once at the time the table is loaded. This type of code was
13860legal
13861up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13862compiler in order to provide backwards compatibility with earlier BIOS
13863ASL
13864code.
13865
13866The ACPI integer width (specified via the table revision ID or the -r
13867override, 32 or 64 bits) is now used internally during compile-time
13868constant
13869folding to ensure that constants are truncated to 32 bits if necessary.
13870Previously, the revision ID value was only emitted in the AML table
13871header.
13872
13873An error message is now generated for the Mutex and Method operators if
13874the
13875SyncLevel parameter is outside the legal range of 0 through 15.
13876
13877Fixed a problem with the Method operator ParameterTypes list handling
13878(ACPI
138793.0). Previously, more than 2 types or 2 arguments generated a syntax
13880error.
13881The actual underlying implementation of method argument typechecking is
13882still under development, however.
13883
13884----------------------------------------
1388513 May 2005.  Summary of changes for version 20050513:
13886
138871) ACPI CA Core Subsystem:
13888
13889Implemented support for PCI Express root bridges -- added support for
13890device
13891PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13892
13893The interpreter now automatically truncates incoming 64-bit constants to
1389432
13895bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13896This
13897also affects the iASL compiler constant folding. (Note: as per below, the
13898iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13899
13900Fixed a problem where string and buffer objects with "static" pointers
13901(pointers to initialization data within an ACPI table) were not handled
13902consistently. The internal object copy operation now always copies the
13903data
13904to a newly allocated buffer, regardless of whether the source object is
13905static or not.
13906
13907Fixed a problem with the FromBCD operator where an implicit result
13908conversion was improperly performed while storing the result to the
13909target
13910operand. Since this is an "explicit conversion" operator, the implicit
13911conversion should never be performed on the output.
13912
13913Fixed a problem with the CopyObject operator where a copy to an existing
13914named object did not always completely overwrite the existing object
13915stored
13916at name. Specifically, a buffer-to-buffer copy did not delete the
13917existing
13918buffer.
13919
13920Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13921and
13922structs for consistency.
13923
13924Code and Data Size: Current and previous core subsystem library sizes are
13925shown below. These are the code and data sizes for the acpica.lib
13926produced
13927by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13928any ACPI driver or OSPM code. The debug version of the code includes the
13929debug output trace mechanism and has a much larger code and data size.
13930Note
13931that these values will vary depending on the efficiency of the compiler
13932and
13933the compiler options used during generation.
13934
13935  Previous Release:
13936    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13937    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13938  Current Release: (Same sizes)
13939    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13940    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13941
13942
139432) iASL Compiler/Disassembler:
13944
13945The compiler now emits a warning if an attempt is made to generate a 64-
13946bit
13947integer constant from within a 32-bit ACPI table (Revision < 2). The
13948integer
13949is truncated to 32 bits.
13950
13951Fixed a problem with large package objects: if the static length of the
13952package is greater than 255, the "variable length package" opcode is
13953emitted. Previously, this caused an error. This requires an update to the
13954ACPI spec, since it currently (incorrectly) states that packages larger
13955than
13956255 elements are not allowed.
13957
13958The disassembler now correctly handles variable length packages and
13959packages
13960larger than 255 elements.
13961
13962----------------------------------------
1396308 April 2005.  Summary of changes for version 20050408:
13964
139651) ACPI CA Core Subsystem:
13966
13967Fixed three cases in the interpreter where an "index" argument to an ASL
13968function was still (internally) 32 bits instead of the required 64 bits.
13969This was the Index argument to the Index, Mid, and Match operators.
13970
13971The "strupr" function is now permanently local (AcpiUtStrupr), since this
13972is
13973not a POSIX-defined function and not present in most kernel-level C
13974libraries. All references to the C library strupr function have been
13975removed
13976from the headers.
13977
13978Completed the deployment of static functions/prototypes. All prototypes
13979with
13980the static attribute have been moved from the headers to the owning C
13981file.
13982
13983Implemented an extract option (-e) for the AcpiBin utility (AML binary
13984utility). This option allows the utility to extract individual ACPI
13985tables
13986from the output of AcpiDmp. It provides the same functionality of the
13987acpixtract.pl perl script without the worry of setting the correct perl
13988options. AcpiBin runs on Windows and has not yet been generated/validated
13989in
13990the Linux/Unix environment (but should be soon).
13991
13992Updated and fixed the table dump option for AcpiBin (-d). This option
13993converts a single ACPI table to a hex/ascii file, similar to the output
13994of
13995AcpiDmp.
13996
13997Code and Data Size: Current and previous core subsystem library sizes are
13998shown below. These are the code and data sizes for the acpica.lib
13999produced
14000by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14001any ACPI driver or OSPM code. The debug version of the code includes the
14002debug output trace mechanism and has a much larger code and data size.
14003Note
14004that these values will vary depending on the efficiency of the compiler
14005and
14006the compiler options used during generation.
14007
14008  Previous Release:
14009    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
14010    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
14011  Current Release:
14012    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
14013    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
14014
14015
140162) iASL Compiler/Disassembler:
14017
14018Disassembler fix: Added a check to ensure that the table length found in
14019the
14020ACPI table header within the input file is not longer than the actual
14021input
14022file size. This indicates some kind of file or table corruption.
14023
14024----------------------------------------
1402529 March 2005.  Summary of changes for version 20050329:
14026
140271) ACPI CA Core Subsystem:
14028
14029An error is now generated if an attempt is made to create a Buffer Field
14030of
14031length zero (A CreateField with a length operand of zero.)
14032
14033The interpreter now issues a warning whenever executable code at the
14034module
14035level is detected during ACPI table load. This will give some idea of the
14036prevalence of this type of code.
14037
14038Implemented support for references to named objects (other than control
14039methods) within package objects.
14040
14041Enhanced package object output for the debug object. Package objects are
14042now
14043completely dumped, showing all elements.
14044
14045Enhanced miscellaneous object output for the debug object. Any object can
14046now be written to the debug object (for example, a device object can be
14047written, and the type of the object will be displayed.)
14048
14049The "static" qualifier has been added to all local functions across both
14050the
14051core subsystem and the iASL compiler.
14052
14053The number of "long" lines (> 80 chars) within the source has been
14054significantly reduced, by about 1/3.
14055
14056Cleaned up all header files to ensure that all CA/iASL functions are
14057prototyped (even static functions) and the formatting is consistent.
14058
14059Two new header files have been added, acopcode.h and acnames.h.
14060
14061Removed several obsolete functions that were no longer used.
14062
14063Code and Data Size: Current and previous core subsystem library sizes are
14064shown below. These are the code and data sizes for the acpica.lib
14065produced
14066by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14067any ACPI driver or OSPM code. The debug version of the code includes the
14068debug output trace mechanism and has a much larger code and data size.
14069Note
14070that these values will vary depending on the efficiency of the compiler
14071and
14072the compiler options used during generation.
14073
14074  Previous Release:
14075    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14076    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
14077  Current Release:
14078    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
14079    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
14080
14081
14082
140832) iASL Compiler/Disassembler:
14084
14085Fixed a problem with the resource descriptor generation/support. For the
14086ResourceSourceIndex and the ResourceSource fields, both must be present,
14087or
14088both must be not present - can't have one without the other.
14089
14090The compiler now returns non-zero from the main procedure if any errors
14091have
14092occurred during the compilation.
14093
14094
14095----------------------------------------
1409609 March 2005.  Summary of changes for version 20050309:
14097
140981) ACPI CA Core Subsystem:
14099
14100The string-to-buffer implicit conversion code has been modified again
14101after
14102a change to the ACPI specification.  In order to match the behavior of
14103the
14104other major ACPI implementation, the target buffer is no longer truncated
14105if
14106the source string is smaller than an existing target buffer. This change
14107requires an update to the ACPI spec, and should eliminate the recent
14108AE_AML_BUFFER_LIMIT issues.
14109
14110The "implicit return" support was rewritten to a new algorithm that
14111solves
14112the general case. Rather than attempt to determine when a method is about
14113to
14114exit, the result of every ASL operator is saved momentarily until the
14115very
14116next ASL operator is executed. Therefore, no matter how the method exits,
14117there will always be a saved implicit return value. This feature is only
14118enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
14119eliminate
14120AE_AML_NO_RETURN_VALUE errors when enabled.
14121
14122Implemented implicit conversion support for the predicate (operand) of
14123the
14124If, Else, and While operators. String and Buffer arguments are
14125automatically
14126converted to Integers.
14127
14128Changed the string-to-integer conversion behavior to match the new ACPI
14129errata: "If no integer object exists, a new integer is created. The ASCII
14130string is interpreted as a hexadecimal constant. Each string character is
14131interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
14132with the first character as the most significant digit, and ending with
14133the
14134first non-hexadecimal character or end-of-string." This means that the
14135first
14136non-hex character terminates the conversion and this is the code that was
14137changed.
14138
14139Fixed a problem where the ObjectType operator would fail (fault) when
14140used
14141on an Index of a Package which pointed to a null package element. The
14142operator now properly returns zero (Uninitialized) in this case.
14143
14144Fixed a problem where the While operator used excessive memory by not
14145properly popping the result stack during execution. There was no memory
14146leak
14147after execution, however. (Code provided by Valery Podrezov.)
14148
14149Fixed a problem where references to control methods within Package
14150objects
14151caused the method to be invoked, instead of producing a reference object
14152pointing to the method.
14153
14154Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
14155to
14156improve performance and reduce code size. (Code provided by Alexey
14157Starikovskiy.)
14158
14159Code and Data Size: Current and previous core subsystem library sizes are
14160shown below. These are the code and data sizes for the acpica.lib
14161produced
14162by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14163any ACPI driver or OSPM code. The debug version of the code includes the
14164debug output trace mechanism and has a much larger code and data size.
14165Note
14166that these values will vary depending on the efficiency of the compiler
14167and
14168the compiler options used during generation.
14169
14170  Previous Release:
14171    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14172    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
14173  Current Release:
14174    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14175    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
14176
14177
141782) iASL Compiler/Disassembler:
14179
14180Fixed a problem with the Return operator with no arguments. Since the AML
14181grammar for the byte encoding requires an operand for the Return opcode,
14182the
14183compiler now emits a Return(Zero) for this case.  An ACPI specification
14184update has been written for this case.
14185
14186For tables other than the DSDT, namepath optimization is automatically
14187disabled. This is because SSDTs can be loaded anywhere in the namespace,
14188the
14189compiler has no knowledge of where, and thus cannot optimize namepaths.
14190
14191Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
14192inadvertently omitted from the ACPI specification, and will require an
14193update to the spec.
14194
14195The source file scan for ASCII characters is now optional (-a). This
14196change
14197was made because some vendors place non-ascii characters within comments.
14198However, the scan is simply a brute-force byte compare to ensure all
14199characters in the file are in the range 0x00 to 0x7F.
14200
14201Fixed a problem with the CondRefOf operator where the compiler was
14202inappropriately checking for the existence of the target. Since the point
14203of
14204the operator is to check for the existence of the target at run-time, the
14205compiler no longer checks for the target existence.
14206
14207Fixed a problem where errors generated from the internal AML interpreter
14208during constant folding were not handled properly, causing a fault.
14209
14210Fixed a problem with overly aggressive range checking for the Stall
14211operator. The valid range (max 255) is now only checked if the operand is
14212of
14213type Integer. All other operand types cannot be statically checked.
14214
14215Fixed a problem where control method references within the RefOf,
14216DeRefOf,
14217and ObjectType operators were not treated properly. They are now treated
14218as
14219actual references, not method invocations.
14220
14221Fixed and enhanced the "list namespace" option (-ln). This option was
14222broken
14223a number of releases ago.
14224
14225Improved error handling for the Field, IndexField, and BankField
14226operators.
14227The compiler now cleanly reports and recovers from errors in the field
14228component (FieldUnit) list.
14229
14230Fixed a disassembler problem where the optional ResourceDescriptor fields
14231TRS and TTP were not always handled correctly.
14232
14233Disassembler - Comments in output now use "//" instead of "/*"
14234
14235----------------------------------------
1423628 February 2005.  Summary of changes for version 20050228:
14237
142381) ACPI CA Core Subsystem:
14239
14240Fixed a problem where the result of an Index() operator (an object
14241reference) must increment the reference count on the target object for
14242the
14243life of the object reference.
14244
14245Implemented AML Interpreter and Debugger support for the new ACPI 3.0
14246Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
14247WordSpace
14248resource descriptors.
14249
14250Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
14251Space Descriptor" string, indicating interpreter support for the
14252descriptors
14253above.
14254
14255Implemented header support for the new ACPI 3.0 FADT flag bits.
14256
14257Implemented header support for the new ACPI 3.0 PCI Express bits for the
14258PM1
14259status/enable registers.
14260
14261Updated header support for the MADT processor local Apic struct and MADT
14262platform interrupt source struct for new ACPI 3.0 fields.
14263
14264Implemented header support for the SRAT and SLIT ACPI tables.
14265
14266Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
14267flag
14268at runtime.
14269
14270Code and Data Size: Current and previous core subsystem library sizes are
14271shown below. These are the code and data sizes for the acpica.lib
14272produced
14273by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14274any ACPI driver or OSPM code. The debug version of the code includes the
14275debug output trace mechanism and has a much larger code and data size.
14276Note
14277that these values will vary depending on the efficiency of the compiler
14278and
14279the compiler options used during generation.
14280
14281  Previous Release:
14282    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
14283    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
14284  Current Release:
14285    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14286    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
14287
14288
142892) iASL Compiler/Disassembler:
14290
14291Fixed a problem with the internal 64-bit String-to-integer conversion
14292with
14293strings less than two characters long.
14294
14295Fixed a problem with constant folding where the result of the Index()
14296operator can not be considered a constant. This means that Index() cannot
14297be
14298a type3 opcode and this will require an update to the ACPI specification.
14299
14300Disassembler: Implemented support for the TTP, MTP, and TRS resource
14301descriptor fields. These fields were inadvertently ignored and not output
14302in
14303the disassembly of the resource descriptor.
14304
14305
14306 ----------------------------------------
1430711 February 2005.  Summary of changes for version 20050211:
14308
143091) ACPI CA Core Subsystem:
14310
14311Implemented ACPI 3.0 support for implicit conversion within the Match()
14312operator. MatchObjects can now be of type integer, buffer, or string
14313instead
14314of just type integer.  Package elements are implicitly converted to the
14315type
14316of the MatchObject. This change aligns the behavior of Match() with the
14317behavior of the other logical operators (LLess(), etc.) It also requires
14318an
14319errata change to the ACPI specification as this support was intended for
14320ACPI 3.0, but was inadvertently omitted.
14321
14322Fixed a problem with the internal implicit "to buffer" conversion.
14323Strings
14324that are converted to buffers will cause buffer truncation if the string
14325is
14326smaller than the target buffer. Integers that are converted to buffers
14327will
14328not cause buffer truncation, only zero extension (both as per the ACPI
14329spec.) The problem was introduced when code was added to truncate the
14330buffer, but this should not be performed in all cases, only the string
14331case.
14332
14333Fixed a problem with the Buffer and Package operators where the
14334interpreter
14335would get confused if two such operators were used as operands to an ASL
14336operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
14337stack was not being popped after the execution of these operators,
14338resulting
14339in an AE_NO_RETURN_VALUE exception.
14340
14341Fixed a problem with constructs of the form Store(Index(...),...). The
14342reference object returned from Index was inadvertently resolved to an
14343actual
14344value. This problem was introduced in version 20050114 when the behavior
14345of
14346Store() was modified to restrict the object types that can be used as the
14347source operand (to match the ACPI specification.)
14348
14349Reduced excessive stack use within the AcpiGetObjectInfo procedure.
14350
14351Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
14352
14353Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
14354
14355Code and Data Size: Current and previous core subsystem library sizes are
14356shown below. These are the code and data sizes for the acpica.lib
14357produced
14358by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14359any ACPI driver or OSPM code. The debug version of the code includes the
14360debug output trace mechanism and has a much larger code and data size.
14361Note
14362that these values will vary depending on the efficiency of the compiler
14363and
14364the compiler options used during generation.
14365
14366  Previous Release:
14367    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
14368    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
14369  Current Release:
14370    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
14371    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
14372
14373
143742) iASL Compiler/Disassembler:
14375
14376Fixed a code generation problem in the constant folding optimization code
14377where incorrect code was generated if a constant was reduced to a buffer
14378object (i.e., a reduced type 5 opcode.)
14379
14380Fixed a typechecking problem for the ToBuffer operator. Caused by an
14381incorrect return type in the internal opcode information table.
14382
14383----------------------------------------
1438425 January 2005.  Summary of changes for version 20050125:
14385
143861) ACPI CA Core Subsystem:
14387
14388Fixed a recently introduced problem with the Global Lock where the
14389underlying semaphore was not created.  This problem was introduced in
14390version 20050114, and caused an AE_AML_NO_OPERAND exception during an
14391Acquire() operation on _GL.
14392
14393The local object cache is now optional, and is disabled by default. Both
14394AcpiExec and the iASL compiler enable the cache because they run in user
14395mode and this enhances their performance. #define
14396ACPI_ENABLE_OBJECT_CACHE
14397to enable the local cache.
14398
14399Fixed an issue in the internal function AcpiUtEvaluateObject concerning
14400the
14401optional "implicit return" support where an error was returned if no
14402return
14403object was expected, but one was implicitly returned. AE_OK is now
14404returned
14405in this case and the implicitly returned object is deleted.
14406AcpiUtEvaluateObject is only occasionally used, and only to execute
14407reserved
14408methods such as _STA and _INI where the return type is known up front.
14409
14410Fixed a few issues with the internal convert-to-integer code. It now
14411returns
14412an error if an attempt is made to convert a null string, a string of only
14413blanks/tabs, or a zero-length buffer. This affects both implicit
14414conversion
14415and explicit conversion via the ToInteger() operator.
14416
14417The internal debug code in AcpiUtAcquireMutex has been commented out. It
14418is
14419not needed for normal operation and should increase the performance of
14420the
14421entire subsystem. The code remains in case it is needed for debug
14422purposes
14423again.
14424
14425The AcpiExec source and makefile are included in the Unix/Linux package
14426for
14427the first time.
14428
14429Code and Data Size: Current and previous core subsystem library sizes are
14430shown below. These are the code and data sizes for the acpica.lib
14431produced
14432by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14433any ACPI driver or OSPM code. The debug version of the code includes the
14434debug output trace mechanism and has a much larger code and data size.
14435Note
14436that these values will vary depending on the efficiency of the compiler
14437and
14438the compiler options used during generation.
14439
14440  Previous Release:
14441    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14442    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14443  Current Release:
14444    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
14445    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
14446
144472) iASL Compiler/Disassembler:
14448
14449Switch/Case support: A warning is now issued if the type of the Switch
14450value
14451cannot be determined at compile time. For example, Switch(Arg0) will
14452generate the warning, and the type is assumed to be an integer. As per
14453the
14454ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
14455the
14456warning.
14457
14458Switch/Case support: Implemented support for buffer and string objects as
14459the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
14460buffers and strings.
14461
14462Switch/Case support: The emitted code for the LEqual() comparisons now
14463uses
14464the switch value as the first operand, not the second. The case value is
14465now
14466the second operand, and this allows the case value to be implicitly
14467converted to the type of the switch value, not the other way around.
14468
14469Switch/Case support: Temporary variables are now emitted immediately
14470within
14471the control method, not at the global level. This means that there are
14472now
1447336 temps available per-method, not 36 temps per-module as was the case
14474with
14475the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
14476
14477----------------------------------------
1447814 January 2005.  Summary of changes for version 20050114:
14479
14480Added 2005 copyright to all module headers.  This affects every module in
14481the core subsystem, iASL compiler, and the utilities.
14482
144831) ACPI CA Core Subsystem:
14484
14485Fixed an issue with the String-to-Buffer conversion code where the string
14486null terminator was not included in the buffer after conversion, but
14487there
14488is existing ASL that assumes the string null terminator is included. This
14489is
14490the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
14491introduced in the previous version when the code was updated to correctly
14492set the converted buffer size as per the ACPI specification. The ACPI
14493spec
14494is ambiguous and will be updated to specify that the null terminator must
14495be
14496included in the converted buffer. This also affects the ToBuffer() ASL
14497operator.
14498
14499Fixed a problem with the Mid() ASL/AML operator where it did not work
14500correctly on Buffer objects. Newly created sub-buffers were not being
14501marked
14502as initialized.
14503
14504
14505Fixed a problem in AcpiTbFindTable where incorrect string compares were
14506performed on the OemId and OemTableId table header fields.  These fields
14507are
14508not null terminated, so strncmp is now used instead of strcmp.
14509
14510Implemented a restriction on the Store() ASL/AML operator to align the
14511behavior with the ACPI specification.  Previously, any object could be
14512used
14513as the source operand.  Now, the only objects that may be used are
14514Integers,
14515Buffers, Strings, Packages, Object References, and DDB Handles.  If
14516necessary, the original behavior can be restored by enabling the
14517EnableInterpreterSlack flag.
14518
14519Enhanced the optional "implicit return" support to allow an implicit
14520return
14521value from methods that are invoked externally via the AcpiEvaluateObject
14522interface.  This enables implicit returns from the _STA and _INI methods,
14523for example.
14524
14525Changed the Revision() ASL/AML operator to return the current version of
14526the
14527AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
14528returned
14529the supported ACPI version (This is the function of the _REV method).
14530
14531Updated the _REV predefined method to return the currently supported
14532version
14533of ACPI, now 3.
14534
14535Implemented batch mode option for the AcpiExec utility (-b).
14536
14537Code and Data Size: Current and previous core subsystem library sizes are
14538shown below. These are the code and data sizes for the acpica.lib
14539produced
14540by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14541any ACPI driver or OSPM code. The debug version of the code includes the
14542debug output trace mechanism and has a much larger code and data size.
14543Note
14544that these values will vary depending on the efficiency of the compiler
14545and
14546the compiler options used during generation.
14547
14548  Previous Release:
14549    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14550    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14551  Current Release:
14552    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14553    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14554
14555----------------------------------------
1455610 December 2004.  Summary of changes for version 20041210:
14557
14558ACPI 3.0 support is nearing completion in both the iASL compiler and the
14559ACPI CA core subsystem.
14560
145611) ACPI CA Core Subsystem:
14562
14563Fixed a problem in the ToDecimalString operator where the resulting
14564string
14565length was incorrectly calculated. The length is now calculated exactly,
14566eliminating incorrect AE_STRING_LIMIT exceptions.
14567
14568Fixed a problem in the ToHexString operator to allow a maximum 200
14569character
14570string to be produced.
14571
14572Fixed a problem in the internal string-to-buffer and buffer-to-buffer
14573copy
14574routine where the length of the resulting buffer was not truncated to the
14575new size (if the target buffer already existed).
14576
14577Code and Data Size: Current and previous core subsystem library sizes are
14578shown below. These are the code and data sizes for the acpica.lib
14579produced
14580by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14581any ACPI driver or OSPM code. The debug version of the code includes the
14582debug output trace mechanism and has a much larger code and data size.
14583Note
14584that these values will vary depending on the efficiency of the compiler
14585and
14586the compiler options used during generation.
14587
14588  Previous Release:
14589    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14590    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14591  Current Release:
14592    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14593    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14594
14595
145962) iASL Compiler/Disassembler:
14597
14598Implemented the new ACPI 3.0 resource template macros - DWordSpace,
14599ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
14600Includes support in the disassembler.
14601
14602Implemented support for the new (ACPI 3.0) parameter to the Register
14603macro,
14604AccessSize.
14605
14606Fixed a problem where the _HE resource name for the Interrupt macro was
14607referencing bit 0 instead of bit 1.
14608
14609Implemented check for maximum 255 interrupts in the Interrupt macro.
14610
14611Fixed a problem with the predefined resource descriptor names where
14612incorrect AML code was generated if the offset within the resource buffer
14613was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
14614but did not update the surrounding package lengths.
14615
14616Changes to the Dma macro:  All channels within the channel list must be
14617in
14618the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
14619optional (default is BusMaster).
14620
14621Implemented check for maximum 7 data bytes for the VendorShort macro.
14622
14623The ReadWrite parameter is now optional for the Memory32 and similar
14624macros.
14625
14626----------------------------------------
1462703 December 2004.  Summary of changes for version 20041203:
14628
146291) ACPI CA Core Subsystem:
14630
14631The low-level field insertion/extraction code (exfldio) has been
14632completely
14633rewritten to eliminate unnecessary complexity, bugs, and boundary
14634conditions.
14635
14636Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
14637ToDecimalString
14638operators where the input operand could be inadvertently deleted if no
14639conversion was necessary (e.g., if the input to ToInteger was an Integer
14640object.)
14641
14642Fixed a problem with the ToDecimalString and ToHexString where an
14643incorrect
14644exception code was returned if the resulting string would be > 200 chars.
14645AE_STRING_LIMIT is now returned.
14646
14647Fixed a problem with the Concatenate operator where AE_OK was always
14648returned, even if the operation failed.
14649
14650Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
14651semaphores to be allocated.
14652
14653Code and Data Size: Current and previous core subsystem library sizes are
14654shown below. These are the code and data sizes for the acpica.lib
14655produced
14656by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14657any ACPI driver or OSPM code. The debug version of the code includes the
14658debug output trace mechanism and has a much larger code and data size.
14659Note
14660that these values will vary depending on the efficiency of the compiler
14661and
14662the compiler options used during generation.
14663
14664  Previous Release:
14665    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14666    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14667  Current Release:
14668    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14669    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14670
14671
146722) iASL Compiler/Disassembler:
14673
14674Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
14675recently introduced in 20041119.
14676
14677Fixed a problem with the ToUUID macro where the upper nybble of each
14678buffer
14679byte was inadvertently set to zero.
14680
14681----------------------------------------
1468219 November 2004.  Summary of changes for version 20041119:
14683
146841) ACPI CA Core Subsystem:
14685
14686Fixed a problem in the internal ConvertToInteger routine where new
14687integers
14688were not truncated to 32 bits for 32-bit ACPI tables. This routine
14689converts
14690buffers and strings to integers.
14691
14692Implemented support to store a value to an Index() on a String object.
14693This
14694is an ACPI 2.0 feature that had not yet been implemented.
14695
14696Implemented new behavior for storing objects to individual package
14697elements
14698(via the Index() operator). The previous behavior was to invoke the
14699implicit
14700conversion rules if an object was already present at the index.  The new
14701behavior is to simply delete any existing object and directly store the
14702new
14703object. Although the ACPI specification seems unclear on this subject,
14704other
14705ACPI implementations behave in this manner.  (This is the root of the
14706AE_BAD_HEX_CONSTANT issue.)
14707
14708Modified the RSDP memory scan mechanism to support the extended checksum
14709for
14710ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14711RSDP signature is found with a valid checksum.
14712
14713Code and Data Size: Current and previous core subsystem library sizes are
14714shown below. These are the code and data sizes for the acpica.lib
14715produced
14716by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14717any ACPI driver or OSPM code. The debug version of the code includes the
14718debug output trace mechanism and has a much larger code and data size.
14719Note
14720that these values will vary depending on the efficiency of the compiler
14721and
14722the compiler options used during generation.
14723
14724  Previous Release:
14725    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14726    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14727  Current Release:
14728    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14729    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14730
14731
147322) iASL Compiler/Disassembler:
14733
14734Fixed a missing semicolon in the aslcompiler.y file.
14735
14736----------------------------------------
1473705 November 2004.  Summary of changes for version 20041105:
14738
147391) ACPI CA Core Subsystem:
14740
14741Implemented support for FADT revision 2.  This was an interim table
14742(between
14743ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14744
14745Implemented optional support to allow uninitialized LocalX and ArgX
14746variables in a control method.  The variables are initialized to an
14747Integer
14748object with a value of zero.  This support is enabled by setting the
14749AcpiGbl_EnableInterpreterSlack flag to TRUE.
14750
14751Implemented support for Integer objects for the SizeOf operator.  Either
147524
14753or 8 is returned, depending on the current integer size (32-bit or 64-
14754bit,
14755depending on the parent table revision).
14756
14757Fixed a problem in the implementation of the SizeOf and ObjectType
14758operators
14759where the operand was resolved to a value too early, causing incorrect
14760return values for some objects.
14761
14762Fixed some possible memory leaks during exceptional conditions.
14763
14764Code and Data Size: Current and previous core subsystem library sizes are
14765shown below. These are the code and data sizes for the acpica.lib
14766produced
14767by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14768any ACPI driver or OSPM code. The debug version of the code includes the
14769debug output trace mechanism and has a much larger code and data size.
14770Note
14771that these values will vary depending on the efficiency of the compiler
14772and
14773the compiler options used during generation.
14774
14775  Previous Release:
14776    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14777    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14778  Current Release:
14779    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14780    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14781
14782
147832) iASL Compiler/Disassembler:
14784
14785Implemented support for all ACPI 3.0 reserved names and methods.
14786
14787Implemented all ACPI 3.0 grammar elements in the front-end, including
14788support for semicolons.
14789
14790Implemented the ACPI 3.0 Function() and ToUUID() macros
14791
14792Fixed a problem in the disassembler where a Scope() operator would not be
14793emitted properly if the target of the scope was in another table.
14794
14795----------------------------------------
1479615 October 2004.  Summary of changes for version 20041015:
14797
14798Note:  ACPI CA is currently undergoing an in-depth and complete formal
14799evaluation to test/verify the following areas. Other suggestions are
14800welcome. This will result in an increase in the frequency of releases and
14801the number of bug fixes in the next few months.
14802  - Functional tests for all ASL/AML operators
14803  - All implicit/explicit type conversions
14804  - Bit fields and operation regions
14805  - 64-bit math support and 32-bit-only "truncated" math support
14806  - Exceptional conditions, both compiler and interpreter
14807  - Dynamic object deletion and memory leaks
14808  - ACPI 3.0 support when implemented
14809  - External interfaces to the ACPI subsystem
14810
14811
148121) ACPI CA Core Subsystem:
14813
14814Fixed two alignment issues on 64-bit platforms - within debug statements
14815in
14816AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14817Address
14818field within the non-aligned ACPI generic address structure.
14819
14820Fixed a problem in the Increment and Decrement operators where incorrect
14821operand resolution could result in the inadvertent modification of the
14822original integer when the integer is passed into another method as an
14823argument and the arg is then incremented/decremented.
14824
14825Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14826bit
14827BCD number were truncated during conversion.
14828
14829Fixed a problem in the ToDecimal operator where the length of the
14830resulting
14831string could be set incorrectly too long if the input operand was a
14832Buffer
14833object.
14834
14835Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14836(0)
14837within a buffer would prematurely terminate a compare between buffer
14838objects.
14839
14840Added a check for string overflow (>200 characters as per the ACPI
14841specification) during the Concatenate operator with two string operands.
14842
14843Code and Data Size: Current and previous core subsystem library sizes are
14844shown below. These are the code and data sizes for the acpica.lib
14845produced
14846by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14847any ACPI driver or OSPM code. The debug version of the code includes the
14848debug output trace mechanism and has a much larger code and data size.
14849Note
14850that these values will vary depending on the efficiency of the compiler
14851and
14852the compiler options used during generation.
14853
14854  Previous Release:
14855    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14856    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14857  Current Release:
14858    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14859    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14860
14861
14862
148632) iASL Compiler/Disassembler:
14864
14865Allow the use of the ObjectType operator on uninitialized Locals and Args
14866(returns 0 as per the ACPI specification).
14867
14868Fixed a problem where the compiler would fault if there was a syntax
14869error
14870in the FieldName of all of the various CreateXXXField operators.
14871
14872Disallow the use of lower case letters within the EISAID macro, as per
14873the
14874ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14875Where
14876U is an uppercase letter and N is a hex digit.
14877
14878
14879----------------------------------------
1488006 October 2004.  Summary of changes for version 20041006:
14881
148821) ACPI CA Core Subsystem:
14883
14884Implemented support for the ACPI 3.0 Timer operator. This ASL function
14885implements a 64-bit timer with 100 nanosecond granularity.
14886
14887Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14888implement the ACPI 3.0 Timer operator.  This allows the host OS to
14889implement
14890the timer with the best clock available. Also, it keeps the core
14891subsystem
14892out of the clock handling business, since the host OS (usually) performs
14893this function.
14894
14895Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14896functions use a 64-bit address which is part of the packed ACPI Generic
14897Address Structure. Since the structure is non-aligned, the alignment
14898macros
14899are now used to extract the address to a local variable before use.
14900
14901Fixed a problem where the ToInteger operator assumed all input strings
14902were
14903hexadecimal. The operator now handles both decimal strings and hex
14904strings
14905(prefixed with "0x").
14906
14907Fixed a problem where the string length in the string object created as a
14908result of the internal ConvertToString procedure could be incorrect. This
14909potentially affected all implicit conversions and also the
14910ToDecimalString
14911and ToHexString operators.
14912
14913Fixed two problems in the ToString operator. If the length parameter was
14914zero, an incorrect string object was created and the value of the input
14915length parameter was inadvertently changed from zero to Ones.
14916
14917Fixed a problem where the optional ResourceSource string in the
14918ExtendedIRQ
14919resource macro was ignored.
14920
14921Simplified the interfaces to the internal division functions, reducing
14922code
14923size and complexity.
14924
14925Code and Data Size: Current and previous core subsystem library sizes are
14926shown below. These are the code and data sizes for the acpica.lib
14927produced
14928by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14929any ACPI driver or OSPM code. The debug version of the code includes the
14930debug output trace mechanism and has a much larger code and data size.
14931Note
14932that these values will vary depending on the efficiency of the compiler
14933and
14934the compiler options used during generation.
14935
14936  Previous Release:
14937    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14938    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14939  Current Release:
14940    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14941    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14942
14943
149442) iASL Compiler/Disassembler:
14945
14946Implemented support for the ACPI 3.0 Timer operator.
14947
14948Fixed a problem where the Default() operator was inadvertently ignored in
14949a
14950Switch/Case block.  This was a problem in the translation of the Switch
14951statement to If...Else pairs.
14952
14953Added support to allow a standalone Return operator, with no parentheses
14954(or
14955operands).
14956
14957Fixed a problem with code generation for the ElseIf operator where the
14958translated Else...If parse tree was improperly constructed leading to the
14959loss of some code.
14960
14961----------------------------------------
1496222 September 2004.  Summary of changes for version 20040922:
14963
149641) ACPI CA Core Subsystem:
14965
14966Fixed a problem with the implementation of the LNot() operator where
14967"Ones"
14968was not returned for the TRUE case. Changed the code to return Ones
14969instead
14970of (!Arg) which was usually 1. This change affects iASL constant folding
14971for
14972this operator also.
14973
14974Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14975not
14976initialized properly -- Now zero the entire buffer in this case where the
14977buffer already exists.
14978
14979Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14980Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14981related code considerably. This will require changes/updates to all OS
14982interface layers (OSLs.)
14983
14984Implemented a new external interface, AcpiInstallExceptionHandler, to
14985allow
14986a system exception handler to be installed. This handler is invoked upon
14987any
14988run-time exception that occurs during control method execution.
14989
14990Added support for the DSDT in AcpiTbFindTable. This allows the
14991DataTableRegion() operator to access the local copy of the DSDT.
14992
14993Code and Data Size: Current and previous core subsystem library sizes are
14994shown below. These are the code and data sizes for the acpica.lib
14995produced
14996by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14997any ACPI driver or OSPM code. The debug version of the code includes the
14998debug output trace mechanism and has a much larger code and data size.
14999Note
15000that these values will vary depending on the efficiency of the compiler
15001and
15002the compiler options used during generation.
15003
15004  Previous Release:
15005    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
15006    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
15007  Current Release:
15008    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
15009    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
15010
15011
150122) iASL Compiler/Disassembler:
15013
15014Fixed a problem with constant folding and the LNot operator. LNot was
15015returning 1 in the TRUE case, not Ones as per the ACPI specification.
15016This
15017could result in the generation of an incorrect folded/reduced constant.
15018
15019End-Of-File is now allowed within a "//"-style comment.  A parse error no
15020longer occurs if such a comment is at the very end of the input ASL
15021source
15022file.
15023
15024Implemented the "-r" option to override the Revision in the table header.
15025The initial use of this option will be to simplify the evaluation of the
15026AML
15027interpreter by allowing a single ASL source module to be compiled for
15028either
1502932-bit or 64-bit integers.
15030
15031
15032----------------------------------------
1503327 August 2004.  Summary of changes for version 20040827:
15034
150351) ACPI CA Core Subsystem:
15036
15037- Implemented support for implicit object conversion in the non-numeric
15038logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
15039and
15040LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
15041the second operand is implicitly converted on the fly to match the type
15042of
15043the first operand.  For example:
15044
15045    LEqual (Source1, Source2)
15046
15047Source1 and Source2 must each evaluate to an integer, a string, or a
15048buffer.
15049The data type of Source1 dictates the required type of Source2. Source2
15050is
15051implicitly converted if necessary to match the type of Source1.
15052
15053- Updated and corrected the behavior of the string conversion support.
15054The
15055rules concerning conversion of buffers to strings (according to the ACPI
15056specification) are as follows:
15057
15058ToDecimalString - explicit byte-wise conversion of buffer to string of
15059decimal values (0-255) separated by commas. ToHexString - explicit byte-
15060wise
15061conversion of buffer to string of hex values (0-FF) separated by commas.
15062ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
15063byte
15064copy with no transform except NULL terminated. Any other implicit buffer-
15065to-
15066string conversion - byte-wise conversion of buffer to string of hex
15067values
15068(0-FF) separated by spaces.
15069
15070- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
15071
15072- Fixed a problem in AcpiNsGetPathnameLength where the returned length
15073was
15074one byte too short in the case of a node in the root scope.  This could
15075cause a fault during debug output.
15076
15077- Code and Data Size: Current and previous core subsystem library sizes
15078are
15079shown below.  These are the code and data sizes for the acpica.lib
15080produced
15081by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15082any ACPI driver or OSPM code.  The debug version of the code includes the
15083debug output trace mechanism and has a much larger code and data size.
15084Note
15085that these values will vary depending on the efficiency of the compiler
15086and
15087the compiler options used during generation.
15088
15089  Previous Release:
15090    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
15091    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
15092  Current Release:
15093    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
15094    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
15095
15096
150972) iASL Compiler/Disassembler:
15098
15099- Fixed a Linux generation error.
15100
15101
15102----------------------------------------
1510316 August 2004.  Summary of changes for version 20040816:
15104
151051) ACPI CA Core Subsystem:
15106
15107Designed and implemented support within the AML interpreter for the so-
15108called "implicit return".  This support returns the result of the last
15109ASL
15110operation within a control method, in the absence of an explicit Return()
15111operator.  A few machines depend on this behavior, even though it is not
15112explicitly supported by the ASL language.  It is optional support that
15113can
15114be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
15115
15116Removed support for the PCI_Config address space from the internal low
15117level
15118hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
15119support was not used internally, and would not work correctly anyway
15120because
15121the PCI bus number and segment number were not supported.  There are
15122separate interfaces for PCI configuration space access because of the
15123unique
15124interface.
15125
15126Code and Data Size: Current and previous core subsystem library sizes are
15127shown below.  These are the code and data sizes for the acpica.lib
15128produced
15129by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15130any ACPI driver or OSPM code.  The debug version of the code includes the
15131debug output trace mechanism and has a much larger code and data size.
15132Note
15133that these values will vary depending on the efficiency of the compiler
15134and
15135the compiler options used during generation.
15136
15137  Previous Release:
15138    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
15139    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
15140  Current Release:
15141    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
15142    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
15143
15144
151452) iASL Compiler/Disassembler:
15146
15147Fixed a problem where constants in ASL expressions at the root level (not
15148within a control method) could be inadvertently truncated during code
15149generation.  This problem was introduced in the 20040715 release.
15150
15151
15152----------------------------------------
1515315 July 2004.  Summary of changes for version 20040715:
15154
151551) ACPI CA Core Subsystem:
15156
15157Restructured the internal HW GPE interfaces to pass/track the current
15158state
15159of interrupts (enabled/disabled) in order to avoid possible deadlock and
15160increase flexibility of the interfaces.
15161
15162Implemented a "lexicographical compare" for String and Buffer objects
15163within
15164the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
15165-
15166as per further clarification to the ACPI specification.  Behavior is
15167similar
15168to C library "strcmp".
15169
15170Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
15171external function.  In the 32-bit non-debug case, the stack use has been
15172reduced from 168 bytes to 32 bytes.
15173
15174Deployed a new run-time configuration flag,
15175AcpiGbl_EnableInterpreterSlack,
15176whose purpose is to allow the AML interpreter to forgive certain bad AML
15177constructs.  Default setting is FALSE.
15178
15179Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
15180IO
15181support code.  If enabled, it allows field access to go beyond the end of
15182a
15183region definition if the field is within the region length rounded up to
15184the
15185next access width boundary (a common coding error.)
15186
15187Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
15188ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
15189these
15190symbols are lowercase by the latest version of the AcpiSrc tool.
15191
15192The prototypes for the PCI interfaces in acpiosxf.h have been updated to
15193rename "Register" to simply "Reg" to prevent certain compilers from
15194complaining.
15195
15196Code and Data Size: Current and previous core subsystem library sizes are
15197shown below.  These are the code and data sizes for the acpica.lib
15198produced
15199by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15200any ACPI driver or OSPM code.  The debug version of the code includes the
15201debug output trace mechanism and has a much larger code and data size.
15202Note
15203that these values will vary depending on the efficiency of the compiler
15204and
15205the compiler options used during generation.
15206
15207  Previous Release:
15208    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15209    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
15210  Current Release:
15211    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
15212    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
15213
15214
152152) iASL Compiler/Disassembler:
15216
15217Implemented full support for Package objects within the Case() operator.
15218Note: The Break() operator is currently not supported within Case blocks
15219(TermLists) as there is some question about backward compatibility with
15220ACPI
152211.0 interpreters.
15222
15223
15224Fixed a problem where complex terms were not supported properly within
15225the
15226Switch() operator.
15227
15228Eliminated extraneous warning for compiler-emitted reserved names of the
15229form "_T_x".  (Used in Switch/Case operators.)
15230
15231Eliminated optimization messages for "_T_x" objects and small constants
15232within the DefinitionBlock operator.
15233
15234
15235----------------------------------------
1523615 June 2004.  Summary of changes for version 20040615:
15237
152381) ACPI CA Core Subsystem:
15239
15240Implemented support for Buffer and String objects (as per ACPI 2.0) for
15241the
15242following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
15243LLessEqual.
15244
15245All directory names in the entire source package are lower case, as they
15246were in earlier releases.
15247
15248Implemented "Disassemble" command in the AML debugger that will
15249disassemble
15250a single control method.
15251
15252Code and Data Size: Current and previous core subsystem library sizes are
15253shown below.  These are the code and data sizes for the acpica.lib
15254produced
15255by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15256any ACPI driver or OSPM code.  The debug version of the code includes the
15257debug output trace mechanism and has a much larger code and data size.
15258Note
15259that these values will vary depending on the efficiency of the compiler
15260and
15261the compiler options used during generation.
15262
15263  Previous Release:
15264    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
15265    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
15266
15267  Current Release:
15268    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15269    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
15270
15271
152722) iASL Compiler/Disassembler:
15273
15274Implemented support for Buffer and String objects (as per ACPI 2.0) for
15275the
15276following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
15277LLessEqual.
15278
15279All directory names in the entire source package are lower case, as they
15280were in earlier releases.
15281
15282Fixed a fault when using the -g or -d<nofilename> options if the FADT was
15283not found.
15284
15285Fixed an issue with the Windows version of the compiler where later
15286versions
15287of Windows place the FADT in the registry under the name "FADT" and not
15288"FACP" as earlier versions did.  This applies when using the -g or -
15289d<nofilename> options.  The compiler now looks for both strings as
15290necessary.
15291
15292Fixed a problem with compiler namepath optimization where a namepath
15293within
15294the Scope() operator could not be optimized if the namepath was a subpath
15295of
15296the current scope path.
15297
15298----------------------------------------
1529927 May 2004.  Summary of changes for version 20040527:
15300
153011) ACPI CA Core Subsystem:
15302
15303Completed a new design and implementation for EBDA (Extended BIOS Data
15304Area)
15305support in the RSDP scan code.  The original code improperly scanned for
15306the
15307EBDA by simply scanning from memory location 0 to 0x400.  The correct
15308method
15309is to first obtain the EBDA pointer from within the BIOS data area, then
15310scan 1K of memory starting at the EBDA pointer.  There appear to be few
15311if
15312any machines that place the RSDP in the EBDA, however.
15313
15314Integrated a fix for a possible fault during evaluation of BufferField
15315arguments.  Obsolete code that was causing the problem was removed.
15316
15317Found and fixed a problem in the Field Support Code where data could be
15318corrupted on a bit field read that starts on an aligned boundary but does
15319not end on an aligned boundary.  Merged the read/write "datum length"
15320calculation code into a common procedure.
15321
15322Rolled in a couple of changes to the FreeBSD-specific header.
15323
15324
15325Code and Data Size: Current and previous core subsystem library sizes are
15326shown below.  These are the code and data sizes for the acpica.lib
15327produced
15328by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15329any ACPI driver or OSPM code.  The debug version of the code includes the
15330debug output trace mechanism and has a much larger code and data size.
15331Note
15332that these values will vary depending on the efficiency of the compiler
15333and
15334the compiler options used during generation.
15335
15336  Previous Release:
15337    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15338    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
15339  Current Release:
15340    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
15341    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
15342
15343
153442) iASL Compiler/Disassembler:
15345
15346Fixed a generation warning produced by some overly-verbose compilers for
15347a
1534864-bit constant.
15349
15350----------------------------------------
1535114 May 2004.  Summary of changes for version 20040514:
15352
153531) ACPI CA Core Subsystem:
15354
15355Fixed a problem where hardware GPE enable bits sometimes not set properly
15356during and after GPE method execution.  Result of 04/27 changes.
15357
15358Removed extra "clear all GPEs" when sleeping/waking.
15359
15360Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
15361AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
15362to
15363the new AcpiEv* calls as appropriate.
15364
15365ACPI_OS_NAME was removed from the OS-specific headers.  The default name
15366is
15367now "Microsoft Windows NT" for maximum compatibility.  However this can
15368be
15369changed by modifying the acconfig.h file.
15370
15371Allow a single invocation of AcpiInstallNotifyHandler for a handler that
15372traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
15373
15374Run _INI methods on ThermalZone objects.  This is against the ACPI
15375specification, but there is apparently ASL code in the field that has
15376these
15377_INI methods, and apparently "other" AML interpreters execute them.
15378
15379Performed a full 16/32/64 bit lint that resulted in some small changes.
15380
15381Added a sleep simulation command to the AML debugger to test sleep code.
15382
15383Code and Data Size: Current and previous core subsystem library sizes are
15384shown below.  These are the code and data sizes for the acpica.lib
15385produced
15386by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15387any ACPI driver or OSPM code.  The debug version of the code includes the
15388debug output trace mechanism and has a much larger code and data size.
15389Note
15390that these values will vary depending on the efficiency of the compiler
15391and
15392the compiler options used during generation.
15393
15394  Previous Release:
15395    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15396    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15397  Current Release:
15398    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15399    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
15400
15401----------------------------------------
1540227 April 2004.  Summary of changes for version 20040427:
15403
154041) ACPI CA Core Subsystem:
15405
15406Completed a major overhaul of the GPE handling within ACPI CA.  There are
15407now three types of GPEs:  wake-only, runtime-only, and combination
15408wake/run.
15409The only GPEs allowed to be combination wake/run are for button-style
15410devices such as a control-method power button, control-method sleep
15411button,
15412or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
15413not
15414referenced by any _PRW methods are marked for "runtime" and hardware
15415enabled.  Any GPE that is referenced by a _PRW method is marked for
15416"wake"
15417(and disabled at runtime).  However, at sleep time, only those GPEs that
15418have been specifically enabled for wake via the AcpiEnableGpe interface
15419will
15420actually be hardware enabled.
15421
15422A new external interface has been added, AcpiSetGpeType(), that is meant
15423to
15424be used by device drivers to force a GPE to a particular type.  It will
15425be
15426especially useful for the drivers for the button devices mentioned above.
15427
15428Completed restructuring of the ACPI CA initialization sequence so that
15429default operation region handlers are installed before GPEs are
15430initialized
15431and the _PRW methods are executed.  This will prevent errors when the
15432_PRW
15433methods attempt to access system memory or I/O space.
15434
15435GPE enable/disable no longer reads the GPE enable register.  We now keep
15436the
15437enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
15438thus no longer depend on the hardware to maintain these bits.
15439
15440Always clear the wake status and fixed/GPE status bits before sleep, even
15441for state S5.
15442
15443Improved the AML debugger output for displaying the GPE blocks and their
15444current status.
15445
15446Added new strings for the _OSI method, of the form "Windows 2001 SPx"
15447where
15448x = 0,1,2,3,4.
15449
15450Fixed a problem where the physical address was incorrectly calculated
15451when
15452the Load() operator was used to directly load from an Operation Region
15453(vs.
15454loading from a Field object.)  Also added check for minimum table length
15455for
15456this case.
15457
15458Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
15459mutex release.
15460
15461Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
15462consistency with the other fields returned.
15463
15464Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
15465structure for each GPE in the system, so the size of this structure is
15466important.
15467
15468CPU stack requirement reduction:  Cleaned up the method execution and
15469object
15470evaluation paths so that now a parameter structure is passed, instead of
15471copying the various method parameters over and over again.
15472
15473In evregion.c:  Correctly exit and reenter the interpreter region if and
15474only if dispatching an operation region request to a user-installed
15475handler.
15476Do not exit/reenter when dispatching to a default handler (e.g., default
15477system memory or I/O handlers)
15478
15479
15480Notes for updating drivers for the new GPE support.  The following
15481changes
15482must be made to ACPI-related device drivers that are attached to one or
15483more
15484GPEs: (This information will be added to the ACPI CA Programmer
15485Reference.)
15486
154871) AcpiInstallGpeHandler no longer automatically enables the GPE, you
15488must
15489explicitly call AcpiEnableGpe.
154902) There is a new interface called AcpiSetGpeType. This should be called
15491before enabling the GPE.  Also, this interface will automatically disable
15492the GPE if it is currently enabled.
154933) AcpiEnableGpe no longer supports a GPE type flag.
15494
15495Specific drivers that must be changed:
154961) EC driver:
15497    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
15498AeGpeHandler, NULL);
15499    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
15500    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
15501
155022) Button Drivers (Power, Lid, Sleep):
15503Run _PRW method under parent device
15504If _PRW exists: /* This is a control-method button */
15505    Extract GPE number and possibly GpeDevice
15506    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
15507    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
15508
15509For all other devices that have _PRWs, we automatically set the GPE type
15510to
15511ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
15512This
15513must be done on a selective basis, usually requiring some kind of user
15514app
15515to allow the user to pick the wake devices.
15516
15517
15518Code and Data Size: Current and previous core subsystem library sizes are
15519shown below.  These are the code and data sizes for the acpica.lib
15520produced
15521by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15522any ACPI driver or OSPM code.  The debug version of the code includes the
15523debug output trace mechanism and has a much larger code and data size.
15524Note
15525that these values will vary depending on the efficiency of the compiler
15526and
15527the compiler options used during generation.
15528
15529  Previous Release:
15530    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15531    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15532  Current Release:
15533
15534    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15535    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15536
15537
15538
15539----------------------------------------
1554002 April 2004.  Summary of changes for version 20040402:
15541
155421) ACPI CA Core Subsystem:
15543
15544Fixed an interpreter problem where an indirect store through an ArgX
15545parameter was incorrectly applying the "implicit conversion rules" during
15546the store.  From the ACPI specification: "If the target is a method local
15547or
15548argument (LocalX or ArgX), no conversion is performed and the result is
15549stored directly to the target".  The new behavior is to disable implicit
15550conversion during ALL stores to an ArgX.
15551
15552Changed the behavior of the _PRW method scan to ignore any and all errors
15553returned by a given _PRW.  This prevents the scan from aborting from the
15554failure of any single _PRW.
15555
15556Moved the runtime configuration parameters from the global init procedure
15557to
15558static variables in acglobal.h.  This will allow the host to override the
15559default values easily.
15560
15561Code and Data Size: Current and previous core subsystem library sizes are
15562shown below.  These are the code and data sizes for the acpica.lib
15563produced
15564by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15565any ACPI driver or OSPM code.  The debug version of the code includes the
15566debug output trace mechanism and has a much larger code and data size.
15567Note
15568that these values will vary depending on the efficiency of the compiler
15569and
15570the compiler options used during generation.
15571
15572  Previous Release:
15573    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15574    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15575  Current Release:
15576    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15577    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15578
15579
155802) iASL Compiler/Disassembler:
15581
15582iASL now fully disassembles SSDTs.  However, External() statements are
15583not
15584generated automatically for unresolved symbols at this time.  This is a
15585planned feature for future implementation.
15586
15587Fixed a scoping problem in the disassembler that occurs when the type of
15588the
15589target of a Scope() operator is overridden.  This problem caused an
15590incorrectly nested internal namespace to be constructed.
15591
15592Any warnings or errors that are emitted during disassembly are now
15593commented
15594out automatically so that the resulting file can be recompiled without
15595any
15596hand editing.
15597
15598----------------------------------------
1559926 March 2004.  Summary of changes for version 20040326:
15600
156011) ACPI CA Core Subsystem:
15602
15603Implemented support for "wake" GPEs via interaction between GPEs and the
15604_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
15605identified as a WAKE GPE and by default will no longer be enabled at
15606runtime.  Previously, we were blindly enabling all GPEs with a
15607corresponding
15608_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
15609We
15610believe this has been the cause of thousands of "spurious" GPEs on some
15611systems.
15612
15613This new GPE behavior is can be reverted to the original behavior (enable
15614ALL GPEs at runtime) via a runtime flag.
15615
15616Fixed a problem where aliased control methods could not access objects
15617properly.  The proper scope within the namespace was not initialized
15618(transferred to the target of the aliased method) before executing the
15619target method.
15620
15621Fixed a potential race condition on internal object deletion on the
15622return
15623object in AcpiEvaluateObject.
15624
15625Integrated a fix for resource descriptors where both _MEM and _MTP were
15626being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
15627wide, 0x0F instead of 0x03.)
15628
15629Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
15630preventing
15631a
15632fault in some cases.
15633
15634Updated Notify() values for debug statements in evmisc.c
15635
15636Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
15637
15638Code and Data Size: Current and previous core subsystem library sizes are
15639shown below.  These are the code and data sizes for the acpica.lib
15640produced
15641by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15642any ACPI driver or OSPM code.  The debug version of the code includes the
15643debug output trace mechanism and has a much larger code and data size.
15644Note
15645that these values will vary depending on the efficiency of the compiler
15646and
15647the compiler options used during generation.
15648
15649  Previous Release:
15650
15651    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15652    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15653  Current Release:
15654    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15655    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15656
15657----------------------------------------
1565811 March 2004.  Summary of changes for version 20040311:
15659
156601) ACPI CA Core Subsystem:
15661
15662Fixed a problem where errors occurring during the parse phase of control
15663method execution did not abort cleanly.  For example, objects created and
15664installed in the namespace were not deleted.  This caused all subsequent
15665invocations of the method to return the AE_ALREADY_EXISTS exception.
15666
15667Implemented a mechanism to force a control method to "Serialized"
15668execution
15669if the method attempts to create namespace objects. (The root of the
15670AE_ALREADY_EXISTS problem.)
15671
15672Implemented support for the predefined _OSI "internal" control method.
15673Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
15674and
15675"Windows 2001.1", and can be easily upgraded for new strings as
15676necessary.
15677This feature will allow "other" operating systems to execute the fully
15678tested, "Windows" code path through the ASL code
15679
15680Global Lock Support:  Now allows multiple acquires and releases with any
15681internal thread.  Removed concept of "owning thread" for this special
15682mutex.
15683
15684Fixed two functions that were inappropriately declaring large objects on
15685the
15686CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
15687during
15688method execution considerably.
15689
15690Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15691S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15692
15693Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15694defined on the machine.
15695
15696Implemented two runtime options:  One to force all control method
15697execution
15698to "Serialized" to mimic Windows behavior, another to disable _OSI
15699support
15700if it causes problems on a given machine.
15701
15702Code and Data Size: Current and previous core subsystem library sizes are
15703shown below.  These are the code and data sizes for the acpica.lib
15704produced
15705by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15706any ACPI driver or OSPM code.  The debug version of the code includes the
15707debug output trace mechanism and has a much larger code and data size.
15708Note
15709that these values will vary depending on the efficiency of the compiler
15710and
15711the compiler options used during generation.
15712
15713  Previous Release:
15714    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15715    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15716  Current Release:
15717    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15718    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15719
157202) iASL Compiler/Disassembler:
15721
15722Fixed an array size problem for FreeBSD that would cause the compiler to
15723fault.
15724
15725----------------------------------------
1572620 February 2004.  Summary of changes for version 20040220:
15727
15728
157291) ACPI CA Core Subsystem:
15730
15731Implemented execution of _SxD methods for Device objects in the
15732GetObjectInfo interface.
15733
15734Fixed calls to _SST method to pass the correct arguments.
15735
15736Added a call to _SST on wake to restore to "working" state.
15737
15738Check for End-Of-Buffer failure case in the WalkResources interface.
15739
15740Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15741structures to the beginning of the file.
15742
15743After wake, clear GPE status register(s) before enabling GPEs.
15744
15745After wake, clear/enable power button.  (Perhaps we should clear/enable
15746all
15747fixed events upon wake.)
15748
15749Fixed a couple of possible memory leaks in the Namespace manager.
15750
15751Integrated latest acnetbsd.h file.
15752
15753----------------------------------------
1575411 February 2004.  Summary of changes for version 20040211:
15755
15756
157571) ACPI CA Core Subsystem:
15758
15759Completed investigation and implementation of the call-by-reference
15760mechanism for control method arguments.
15761
15762Fixed a problem where a store of an object into an indexed package could
15763fail if the store occurs within a different method than the method that
15764created the package.
15765
15766Fixed a problem where the ToDecimal operator could return incorrect
15767results.
15768
15769Fixed a problem where the CopyObject operator could fail on some of the
15770more
15771obscure objects (e.g., Reference objects.)
15772
15773Improved the output of the Debug object to display buffer, package, and
15774index objects.
15775
15776Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15777return
15778the expected result.
15779
15780Added permanent ACPI_REPORT_ERROR macros for all instances of the
15781ACPI_AML_INTERNAL exception.
15782
15783Integrated latest version of acfreebsd.h
15784
15785----------------------------------------
1578616 January 2004.  Summary of changes for version 20040116:
15787
15788The purpose of this release is primarily to update the copyright years in
15789each module, thus causing a huge number of diffs.  There are a few small
15790functional changes, however.
15791
157921) ACPI CA Core Subsystem:
15793
15794Improved error messages when there is a problem finding one or more of
15795the
15796required base ACPI tables
15797
15798Reintroduced the definition of APIC_HEADER in actbl.h
15799
15800Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15801
15802Removed extraneous reference to NewObj in dsmthdat.c
15803
158042) iASL compiler
15805
15806Fixed a problem introduced in December that disabled the correct
15807disassembly
15808of Resource Templates
15809
15810
15811----------------------------------------
1581203 December 2003.  Summary of changes for version 20031203:
15813
158141) ACPI CA Core Subsystem:
15815
15816Changed the initialization of Operation Regions during subsystem
15817init to perform two entire walks of the ACPI namespace; The first
15818to initialize the regions themselves, the second to execute the
15819_REG methods.  This fixed some interdependencies across _REG
15820methods found on some machines.
15821
15822Fixed a problem where a Store(Local0, Local1) could simply update
15823the object reference count, and not create a new copy of the
15824object if the Local1 is uninitialized.
15825
15826Implemented support for the _SST reserved method during sleep
15827transitions.
15828
15829Implemented support to clear the SLP_TYP and SLP_EN bits when
15830waking up, this is apparently required by some machines.
15831
15832When sleeping, clear the wake status only if SleepState is not S5.
15833
15834Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15835pointer arithmetic advanced a string pointer too far.
15836
15837Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15838could be returned if the requested table has not been loaded.
15839
15840Within the support for IRQ resources, restructured the handling of
15841the active and edge/level bits.
15842
15843Fixed a few problems in AcpiPsxExecute() where memory could be
15844leaked under certain error conditions.
15845
15846Improved error messages for the cases where the ACPI mode could
15847not be entered.
15848
15849Code and Data Size: Current and previous core subsystem library
15850sizes are shown below.  These are the code and data sizes for the
15851acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15852these values do not include any ACPI driver or OSPM code.  The
15853debug version of the code includes the debug output trace
15854mechanism and has a much larger code and data size.  Note that
15855these values will vary depending on the efficiency of the compiler
15856and the compiler options used during generation.
15857
15858  Previous Release (20031029):
15859    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15860    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15861  Current Release:
15862    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15863    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15864
158652) iASL Compiler/Disassembler:
15866
15867Implemented a fix for the iASL disassembler where a bad index was
15868generated.  This was most noticeable on 64-bit platforms
15869
15870
15871----------------------------------------
1587229 October 2003.  Summary of changes for version 20031029:
15873
158741) ACPI CA Core Subsystem:
15875
15876
15877Fixed a problem where a level-triggered GPE with an associated
15878_Lxx control method was incorrectly cleared twice.
15879
15880Fixed a problem with the Field support code where an access can
15881occur beyond the end-of-region if the field is non-aligned but
15882extends to the very end of the parent region (resulted in an
15883AE_AML_REGION_LIMIT exception.)
15884
15885Fixed a problem with ACPI Fixed Events where an RT Clock handler
15886would not get invoked on an RTC event.  The RTC event bitmasks for
15887the PM1 registers were not being initialized properly.
15888
15889Implemented support for executing _STA and _INI methods for
15890Processor objects.  Although this is currently not part of the
15891ACPI specification, there is existing ASL code that depends on the
15892init-time execution of these methods.
15893
15894Implemented and deployed a GetDescriptorName function to decode
15895the various types of internal descriptors.  Guards against null
15896descriptors during debug output also.
15897
15898Implemented and deployed a GetNodeName function to extract the 4-
15899character namespace node name.  This function simplifies the debug
15900and error output, as well as guarding against null pointers during
15901output.
15902
15903Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15904simplify the debug and error output of 64-bit integers.  This
15905macro replaces the HIDWORD and LODWORD macros for dumping these
15906integers.
15907
15908Updated the implementation of the Stall() operator to only call
15909AcpiOsStall(), and also return an error if the operand is larger
15910than 255.  This preserves the required behavior of not
15911relinquishing the processor, as would happen if AcpiOsSleep() was
15912called for "long stalls".
15913
15914Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15915initialized are now treated as NOOPs.
15916
15917Cleaned up a handful of warnings during 64-bit generation.
15918
15919Fixed a reported error where and incorrect GPE number was passed
15920to the GPE dispatch handler.  This value is only used for error
15921output, however.  Used this opportunity to clean up and streamline
15922the GPE dispatch code.
15923
15924Code and Data Size: Current and previous core subsystem library
15925sizes are shown below.  These are the code and data sizes for the
15926acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15927these values do not include any ACPI driver or OSPM code.  The
15928
15929debug version of the code includes the debug output trace
15930mechanism and has a much larger code and data size.  Note that
15931these values will vary depending on the efficiency of the compiler
15932and the compiler options used during generation.
15933
15934  Previous Release (20031002):
15935    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15936    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15937  Current Release:
15938    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15939    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15940
15941
159422) iASL Compiler/Disassembler:
15943
15944Updated the iASL compiler to return an error if the operand to the
15945Stall() operator is larger than 255.
15946
15947
15948----------------------------------------
1594902 October 2003.  Summary of changes for version 20031002:
15950
15951
159521) ACPI CA Core Subsystem:
15953
15954Fixed a problem with Index Fields where the index was not
15955incremented for fields that require multiple writes to the
15956index/data registers (Fields that are wider than the data
15957register.)
15958
15959Fixed a problem with all Field objects where a write could go
15960beyond the end-of-field if the field was larger than the access
15961granularity and therefore required multiple writes to complete the
15962request.  An extra write beyond the end of the field could happen
15963inadvertently.
15964
15965Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15966would incorrectly be returned if the width of the Data Register
15967was larger than the specified field access width.
15968
15969Completed fixes for LoadTable() and Unload() and verified their
15970operation.  Implemented full support for the "DdbHandle" object
15971throughout the ACPI CA subsystem.
15972
15973Implemented full support for the MADT and ECDT tables in the ACPI
15974CA header files.  Even though these tables are not directly
15975consumed by ACPI CA, the header definitions are useful for ACPI
15976device drivers.
15977
15978Integrated resource descriptor fixes posted to the Linux ACPI
15979list.  This included checks for minimum descriptor length, and
15980support for trailing NULL strings within descriptors that have
15981optional string elements.
15982
15983Code and Data Size: Current and previous core subsystem library
15984sizes are shown below.  These are the code and data sizes for the
15985acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15986these values do not include any ACPI driver or OSPM code.  The
15987debug version of the code includes the debug output trace
15988mechanism and has a much larger code and data size.  Note that
15989these values will vary depending on the efficiency of the compiler
15990and the compiler options used during generation.
15991
15992  Previous Release (20030918):
15993    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15994    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15995  Current Release:
15996    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15997    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15998
15999
160002) iASL Compiler:
16001
16002Implemented detection of non-ASCII characters within the input
16003source ASL file.  This catches attempts to compile binary (AML)
16004files early in the compile, with an informative error message.
16005
16006Fixed a problem where the disassembler would fault if the output
16007filename could not be generated or if the output file could not be
16008opened.
16009
16010----------------------------------------
1601118 September 2003.  Summary of changes for version 20030918:
16012
16013
160141) ACPI CA Core Subsystem:
16015
16016Found and fixed a longstanding problem with the late execution of
16017the various deferred AML opcodes (such as Operation Regions,
16018Buffer Fields, Buffers, and Packages).  If the name string
16019specified for the name of the new object placed the object in a
16020scope other than the current scope, the initialization/execution
16021of the opcode failed.  The solution to this problem was to
16022implement a mechanism where the late execution of such opcodes
16023does not attempt to lookup/create the name a second time in an
16024incorrect scope.  This fixes the "region size computed
16025incorrectly" problem.
16026
16027Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
16028Global Lock AE_BAD_PARAMETER error.
16029
16030Fixed several 64-bit issues with prototypes, casting and data
16031types.
16032
16033Removed duplicate prototype from acdisasm.h
16034
16035Fixed an issue involving EC Operation Region Detach (Shaohua Li)
16036
16037Code and Data Size: Current and previous core subsystem library
16038sizes are shown below.  These are the code and data sizes for the
16039acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16040these values do not include any ACPI driver or OSPM code.  The
16041debug version of the code includes the debug output trace
16042mechanism and has a much larger code and data size.  Note that
16043these values will vary depending on the efficiency of the compiler
16044and the compiler options used during generation.
16045
16046  Previous Release:
16047
16048    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
16049    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
16050  Current Release:
16051    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
16052    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
16053
16054
160552) Linux:
16056
16057Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
16058correct sleep time in seconds.
16059
16060----------------------------------------
1606114 July 2003.  Summary of changes for version 20030619:
16062
160631) ACPI CA Core Subsystem:
16064
16065Parse SSDTs in order discovered, as opposed to reverse order
16066(Hrvoje Habjanic)
16067
16068Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
16069Klausner,
16070   Nate Lawson)
16071
16072
160732) Linux:
16074
16075Dynamically allocate SDT list (suggested by Andi Kleen)
16076
16077proc function return value cleanups (Andi Kleen)
16078
16079Correctly handle NMI watchdog during long stalls (Andrew Morton)
16080
16081Make it so acpismp=force works (reported by Andrew Morton)
16082
16083
16084----------------------------------------
1608519 June 2003.  Summary of changes for version 20030619:
16086
160871) ACPI CA Core Subsystem:
16088
16089Fix To/FromBCD, eliminating the need for an arch-specific #define.
16090
16091Do not acquire a semaphore in the S5 shutdown path.
16092
16093Fix ex_digits_needed for 0. (Takayoshi Kochi)
16094
16095Fix sleep/stall code reversal. (Andi Kleen)
16096
16097Revert a change having to do with control method calling
16098semantics.
16099
161002) Linux:
16101
16102acpiphp update (Takayoshi Kochi)
16103
16104Export acpi_disabled for sonypi (Stelian Pop)
16105
16106Mention acpismp=force in config help
16107
16108Re-add acpitable.c and acpismp=force. This improves backwards
16109
16110compatibility and also cleans up the code to a significant degree.
16111
16112Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
16113
16114----------------------------------------
1611522 May 2003.  Summary of changes for version 20030522:
16116
161171) ACPI CA Core Subsystem:
16118
16119Found and fixed a reported problem where an AE_NOT_FOUND error
16120occurred occasionally during _BST evaluation.  This turned out to
16121be an Owner ID allocation issue where a called method did not get
16122a new ID assigned to it.  Eventually, (after 64k calls), the Owner
16123ID UINT16 would wraparound so that the ID would be the same as the
16124caller's and the called method would delete the caller's
16125namespace.
16126
16127Implemented extended error reporting for control methods that are
16128aborted due to a run-time exception.  Output includes the exact
16129AML instruction that caused the method abort, a dump of the method
16130locals and arguments at the time of the abort, and a trace of all
16131nested control method calls.
16132
16133Modified the interpreter to allow the creation of buffers of zero
16134length from the AML code. Implemented new code to ensure that no
16135attempt is made to actually allocate a memory buffer (of length
16136zero) - instead, a simple buffer object with a NULL buffer pointer
16137and length zero is created.  A warning is no longer issued when
16138the AML attempts to create a zero-length buffer.
16139
16140Implemented a workaround for the "leading asterisk issue" in
16141_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
16142asterisk is automatically removed if present in any HID, UID, or
16143CID strings.  The iASL compiler will still flag this asterisk as
16144an error, however.
16145
16146Implemented full support for _CID methods that return a package of
16147multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
16148now additionally returns a device _CID list if present.  This
16149required a change to the external interface in order to pass an
16150ACPI_BUFFER object as a parameter since the _CID list is of
16151variable length.
16152
16153Fixed a problem with the new AE_SAME_HANDLER exception where
16154handler initialization code did not know about this exception.
16155
16156Code and Data Size: Current and previous core subsystem library
16157sizes are shown below.  These are the code and data sizes for the
16158acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16159these values do not include any ACPI driver or OSPM code.  The
16160debug version of the code includes the debug output trace
16161mechanism and has a much larger code and data size.  Note that
16162these values will vary depending on the efficiency of the compiler
16163and the compiler options used during generation.
16164
16165  Previous Release (20030509):
16166    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
16167    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
16168  Current Release:
16169    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
16170    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
16171
16172
161732) Linux:
16174
16175Fixed a bug in which we would reinitialize the ACPI interrupt
16176after it was already working, thus disabling all ACPI and the IRQs
16177for any other device sharing the interrupt. (Thanks to Stian
16178Jordet)
16179
16180Toshiba driver update (John Belmonte)
16181
16182Return only 0 or 1 for our interrupt handler status (Andrew
16183Morton)
16184
16185
161863) iASL Compiler:
16187
16188Fixed a reported problem where multiple (nested) ElseIf()
16189statements were not handled correctly by the compiler, resulting
16190in incorrect warnings and incorrect AML code.  This was a problem
16191in both the ASL parser and the code generator.
16192
16193
161944) Documentation:
16195
16196Added changes to existing interfaces, new exception codes, and new
16197text concerning reference count object management versus garbage
16198collection.
16199
16200----------------------------------------
1620109 May 2003.  Summary of changes for version 20030509.
16202
16203
162041) ACPI CA Core Subsystem:
16205
16206Changed the subsystem initialization sequence to hold off
16207installation of address space handlers until the hardware has been
16208initialized and the system has entered ACPI mode.  This is because
16209the installation of space handlers can cause _REG methods to be
16210run.  Previously, the _REG methods could potentially be run before
16211ACPI mode was enabled.
16212
16213Fixed some memory leak issues related to address space handler and
16214notify handler installation.  There were some problems with the
16215reference count mechanism caused by the fact that the handler
16216objects are shared across several namespace objects.
16217
16218Fixed a reported problem where reference counts within the
16219namespace were not properly updated when named objects created by
16220method execution were deleted.
16221
16222Fixed a reported problem where multiple SSDTs caused a deletion
16223issue during subsystem termination.  Restructured the table data
16224structures to simplify the linked lists and the related code.
16225
16226Fixed a problem where the table ID associated with secondary
16227tables (SSDTs) was not being propagated into the namespace objects
16228created by those tables.  This would only present a problem for
16229tables that are unloaded at run-time, however.
16230
16231Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
16232type as the length parameter (instead of UINT32).
16233
16234Solved a long-standing problem where an ALREADY_EXISTS error
16235appears on various systems.  This problem could happen when there
16236are multiple PCI_Config operation regions under a single PCI root
16237bus.  This doesn't happen very frequently, but there are some
16238systems that do this in the ASL.
16239
16240Fixed a reported problem where the internal DeleteNode function
16241was incorrectly handling the case where a namespace node was the
16242first in the parent's child list, and had additional peers (not
16243the only child, but first in the list of children.)
16244
16245Code and Data Size: Current core subsystem library sizes are shown
16246below.  These are the code and data sizes for the acpica.lib
16247produced by the Microsoft Visual C++ 6.0 compiler, and these
16248values do not include any ACPI driver or OSPM code.  The debug
16249version of the code includes the debug output trace mechanism and
16250has a much larger code and data size.  Note that these values will
16251vary depending on the efficiency of the compiler and the compiler
16252options used during generation.
16253
16254  Previous Release
16255    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
16256    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
16257  Current Release:
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
16261
162622) Linux:
16263
16264Allow ":" in OS override string (Ducrot Bruno)
16265
16266Kobject fix (Greg KH)
16267
16268
162693 iASL Compiler/Disassembler:
16270
16271Fixed a problem in the generation of the C source code files (AML
16272is emitted in C source statements for BIOS inclusion) where the
16273Ascii dump that appears within a C comment at the end of each line
16274could cause a compile time error if the AML sequence happens to
16275have an open comment or close comment sequence embedded.
16276
16277
16278----------------------------------------
1627924 April 2003.  Summary of changes for version 20030424.
16280
16281
162821) ACPI CA Core Subsystem:
16283
16284Support for big-endian systems has been implemented.  Most of the
16285support has been invisibly added behind big-endian versions of the
16286ACPI_MOVE_* macros.
16287
16288Fixed a problem in AcpiHwDisableGpeBlock() and
16289AcpiHwClearGpeBlock() where an incorrect offset was passed to the
16290low level hardware write routine.  The offset parameter was
16291actually eliminated from the low level read/write routines because
16292they had become obsolete.
16293
16294Fixed a problem where a handler object was deleted twice during
16295the removal of a fixed event handler.
16296
16297
162982) Linux:
16299
16300A fix for SMP systems with link devices was contributed by
16301
16302Compaq's Dan Zink.
16303
16304(2.5) Return whether we handled the interrupt in our IRQ handler.
16305(Linux ISRs no longer return void, so we can propagate the handler
16306return value from the ACPI CA core back to the OS.)
16307
16308
16309
163103) Documentation:
16311
16312The ACPI CA Programmer Reference has been updated to reflect new
16313interfaces and changes to existing interfaces.
16314
16315----------------------------------------
1631628 March 2003.  Summary of changes for version 20030328.
16317
163181) ACPI CA Core Subsystem:
16319
16320The GPE Block Device support has been completed.  New interfaces
16321are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
16322interfaces (enable, disable, clear, getstatus) have been split
16323into separate interfaces for Fixed Events and General Purpose
16324Events (GPEs) in order to support GPE Block Devices properly.
16325
16326Fixed a problem where the error message "Failed to acquire
16327semaphore" would appear during operations on the embedded
16328controller (EC).
16329
16330Code and Data Size: Current core subsystem library sizes are shown
16331below.  These are the code and data sizes for the acpica.lib
16332produced by the Microsoft Visual C++ 6.0 compiler, and these
16333values do not include any ACPI driver or OSPM code.  The debug
16334version of the code includes the debug output trace mechanism and
16335has a much larger code and data size.  Note that these values will
16336vary depending on the efficiency of the compiler and the compiler
16337options used during generation.
16338
16339  Previous Release
16340    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
16341    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
16342  Current Release:
16343    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
16344    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
16345
16346
16347----------------------------------------
1634828 February 2003.  Summary of changes for version 20030228.
16349
16350
163511) ACPI CA Core Subsystem:
16352
16353The GPE handling and dispatch code has been completely overhauled
16354in preparation for support of GPE Block Devices (ID ACPI0006).
16355This affects internal data structures and code only; there should
16356be no differences visible externally.  One new file has been
16357added, evgpeblk.c
16358
16359The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
16360fields that are used to determine the GPE block lengths.  The
16361REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
16362structures are ignored.  This is per the ACPI specification but it
16363isn't very clear.  The full 256 Block 0/1 GPEs are now supported
16364(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
16365
16366In the SCI interrupt handler, removed the read of the PM1_CONTROL
16367register to look at the SCI_EN bit.  On some machines, this read
16368causes an SMI event and greatly slows down SCI events.  (This may
16369in fact be the cause of slow battery status response on some
16370systems.)
16371
16372Fixed a problem where a store of a NULL string to a package object
16373could cause the premature deletion of the object.  This was seen
16374during execution of the battery _BIF method on some systems,
16375resulting in no battery data being returned.
16376
16377Added AcpiWalkResources interface to simplify parsing of resource
16378lists.
16379
16380Code and Data Size: Current core subsystem library sizes are shown
16381below.  These are the code and data sizes for the acpica.lib
16382produced by the Microsoft Visual C++ 6.0 compiler, and these
16383values do not include any ACPI driver or OSPM code.  The debug
16384version of the code includes the debug output trace mechanism and
16385has a much larger code and data size.  Note that these values will
16386vary depending on the efficiency of the compiler and the compiler
16387options used during generation.
16388
16389  Previous Release
16390    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16391    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16392  Current Release:
16393    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
16394    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
16395
16396
163972) Linux
16398
16399S3 fixes (Ole Rohne)
16400
16401Update ACPI PHP driver with to use new acpi_walk_resource API
16402(Bjorn Helgaas)
16403
16404Add S4BIOS support (Pavel Machek)
16405
16406Map in entire table before performing checksum (John Stultz)
16407
16408Expand the mem= cmdline to allow the specification of reserved and
16409ACPI DATA blocks (Pavel Machek)
16410
16411Never use ACPI on VISWS
16412
16413Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
16414
16415Revert a change that allowed P_BLK lengths to be 4 or 5. This is
16416causing us to think that some systems support C2 when they really
16417don't.
16418
16419Do not count processor objects for non-present CPUs (Thanks to
16420Dominik Brodowski)
16421
16422
164233) iASL Compiler:
16424
16425Fixed a problem where ASL include files could not be found and
16426opened.
16427
16428Added support for the _PDC reserved name.
16429
16430
16431----------------------------------------
1643222 January 2003.  Summary of changes for version 20030122.
16433
16434
164351) ACPI CA Core Subsystem:
16436
16437Added a check for constructs of the form:  Store (Local0, Local0)
16438where Local0 is not initialized.  Apparently, some BIOS
16439programmers believe that this is a NOOP.  Since this store doesn't
16440do anything anyway, the new prototype behavior will ignore this
16441error.  This is a case where we can relax the strict checking in
16442the interpreter in the name of compatibility.
16443
16444
164452) Linux
16446
16447The AcpiSrc Source Conversion Utility has been released with the
16448Linux package for the first time.  This is the utility that is
16449used to convert the ACPI CA base source code to the Linux version.
16450
16451(Both) Handle P_BLK lengths shorter than 6 more gracefully
16452
16453(Both) Move more headers to include/acpi, and delete an unused
16454header.
16455
16456(Both) Move drivers/acpi/include directory to include/acpi
16457
16458(Both) Boot functions don't use cmdline, so don't pass it around
16459
16460(Both) Remove include of unused header (Adrian Bunk)
16461
16462(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
16463the
16464former now also includes the latter, acpiphp.h only needs the one,
16465now.
16466
16467(2.5) Make it possible to select method of bios restoring after S3
16468resume. [=> no more ugly ifdefs] (Pavel Machek)
16469
16470(2.5) Make proc write interfaces work (Pavel Machek)
16471
16472(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
16473
16474(2.5) Break out ACPI Perf code into its own module, under cpufreq
16475(Dominik Brodowski)
16476
16477(2.4) S4BIOS support (Ducrot Bruno)
16478
16479(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
16480Visinoni)
16481
16482
164833) iASL Compiler:
16484
16485Added support to disassemble SSDT and PSDTs.
16486
16487Implemented support to obtain SSDTs from the Windows registry if
16488available.
16489
16490
16491----------------------------------------
1649209 January 2003.  Summary of changes for version 20030109.
16493
164941) ACPI CA Core Subsystem:
16495
16496Changed the behavior of the internal Buffer-to-String conversion
16497function.  The current ACPI specification states that the contents
16498of the buffer are "converted to a string of two-character
16499hexadecimal numbers, each separated by a space".  Unfortunately,
16500this definition is not backwards compatible with existing ACPI 1.0
16501implementations (although the behavior was not defined in the ACPI
165021.0 specification).  The new behavior simply copies data from the
16503buffer to the string until a null character is found or the end of
16504the buffer is reached.  The new String object is always null
16505terminated.  This problem was seen during the generation of _BIF
16506battery data where incorrect strings were returned for battery
16507type, etc.  This will also require an errata to the ACPI
16508specification.
16509
16510Renamed all instances of NATIVE_UINT and NATIVE_INT to
16511ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
16512
16513Copyright in all module headers (both Linux and non-Linux) has be
16514updated to 2003.
16515
16516Code and Data Size: Current core subsystem library sizes are shown
16517below.  These are the code and data sizes for the acpica.lib
16518produced by the Microsoft Visual C++ 6.0 compiler, and these
16519values do not include any ACPI driver or OSPM code.  The debug
16520version of the code includes the debug output trace mechanism and
16521has a much larger code and data size.  Note that these values will
16522vary depending on the efficiency of the compiler and the compiler
16523options used during generation.
16524
16525  Previous Release
16526    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16527    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16528  Current Release:
16529    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16530    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16531
16532
165332) Linux
16534
16535Fixed an oops on module insertion/removal (Matthew Tippett)
16536
16537(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
16538
16539(2.5) Replace pr_debug (Randy Dunlap)
16540
16541(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
16542
16543(Both) Eliminate spawning of thread from timer callback, in favor
16544of schedule_work()
16545
16546(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
16547
16548(Both) Added define for Fixed Function HW region (Matthew Wilcox)
16549
16550(Both) Add missing statics to button.c (Pavel Machek)
16551
16552Several changes have been made to the source code translation
16553utility that generates the Linux Code in order to make the code
16554more "Linux-like":
16555
16556All typedefs on structs and unions have been removed in keeping
16557with the Linux coding style.
16558
16559Removed the non-Linux SourceSafe module revision number from each
16560module header.
16561
16562Completed major overhaul of symbols to be lowercase for linux.
16563Doubled the number of symbols that are lowercase.
16564
16565Fixed a problem where identifiers within procedure headers and
16566within quotes were not fully lower cased (they were left with a
16567starting capital.)
16568
16569Some C macros whose only purpose is to allow the generation of 16-
16570bit code are now completely removed in the Linux code, increasing
16571readability and maintainability.
16572
16573----------------------------------------
16574
1657512 December 2002.  Summary of changes for version 20021212.
16576
16577
165781) ACPI CA Core Subsystem:
16579
16580Fixed a problem where the creation of a zero-length AML Buffer
16581would cause a fault.
16582
16583Fixed a problem where a Buffer object that pointed to a static AML
16584buffer (in an ACPI table) could inadvertently be deleted, causing
16585memory corruption.
16586
16587Fixed a problem where a user buffer (passed in to the external
16588ACPI CA interfaces) could be overwritten if the buffer was too
16589small to complete the operation, causing memory corruption.
16590
16591Fixed a problem in the Buffer-to-String conversion code where a
16592string of length one was always returned, regardless of the size
16593of the input Buffer object.
16594
16595Removed the NATIVE_CHAR data type across the entire source due to
16596lack of need and lack of consistent use.
16597
16598Code and Data Size: Current core subsystem library sizes are shown
16599below.  These are the code and data sizes for the acpica.lib
16600produced by the Microsoft Visual C++ 6.0 compiler, and these
16601values do not include any ACPI driver or OSPM code.  The debug
16602version of the code includes the debug output trace mechanism and
16603has a much larger code and data size.  Note that these values will
16604vary depending on the efficiency of the compiler and the compiler
16605options used during generation.
16606
16607  Previous Release
16608    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16609    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16610  Current Release:
16611    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16612    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16613
16614
16615----------------------------------------
1661605 December 2002.  Summary of changes for version 20021205.
16617
166181) ACPI CA Core Subsystem:
16619
16620Fixed a problem where a store to a String or Buffer object could
16621cause corruption of the DSDT if the object type being stored was
16622the same as the target object type and the length of the object
16623being stored was equal to or smaller than the original (existing)
16624target object.  This was seen to cause corruption of battery _BIF
16625buffers if the _BIF method modified the buffer on the fly.
16626
16627Fixed a problem where an internal error was generated if a control
16628method invocation was used in an OperationRegion, Buffer, or
16629Package declaration.  This was caused by the deferred parsing of
16630the control method and thus the deferred creation of the internal
16631method object.  The solution to this problem was to create the
16632internal method object at the moment the method is encountered in
16633the first pass - so that subsequent references to the method will
16634able to obtain the required parameter count and thus properly
16635parse the method invocation.  This problem presented itself as an
16636AE_AML_INTERNAL during the pass 1 parse phase during table load.
16637
16638Fixed a problem where the internal String object copy routine did
16639not always allocate sufficient memory for the target String object
16640and caused memory corruption.  This problem was seen to cause
16641"Allocation already present in list!" errors as memory allocation
16642became corrupted.
16643
16644Implemented a new function for the evaluation of namespace objects
16645that allows the specification of the allowable return object
16646types.  This simplifies a lot of code that checks for a return
16647object of one or more specific objects returned from the
16648evaluation (such as _STA, etc.)  This may become and external
16649function if it would be useful to ACPI-related drivers.
16650
16651Completed another round of prefixing #defines with "ACPI_" for
16652clarity.
16653
16654Completed additional code restructuring to allow more modular
16655linking for iASL compiler and AcpiExec.  Several files were split
16656creating new files.  New files:  nsparse.c dsinit.c evgpe.c
16657
16658Implemented an abort mechanism to terminate an executing control
16659method via the AML debugger.  This feature is useful for debugging
16660control methods that depend (wait) for specific hardware
16661responses.
16662
16663Code and Data Size: Current core subsystem library sizes are shown
16664below.  These are the code and data sizes for the acpica.lib
16665produced by the Microsoft Visual C++ 6.0 compiler, and these
16666values do not include any ACPI driver or OSPM code.  The debug
16667version of the code includes the debug output trace mechanism and
16668has a much larger code and data size.  Note that these values will
16669vary depending on the efficiency of the compiler and the compiler
16670options used during generation.
16671
16672  Previous Release
16673    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16674    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16675  Current Release:
16676    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16677    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16678
16679
166802) iASL Compiler/Disassembler
16681
16682Fixed a compiler code generation problem for "Interrupt" Resource
16683Descriptors.  If specified in the ASL, the optional "Resource
16684Source Index" and "Resource Source" fields were not inserted into
16685the correct location within the AML resource descriptor, creating
16686an invalid descriptor.
16687
16688Fixed a disassembler problem for "Interrupt" resource descriptors.
16689The optional "Resource Source Index" and "Resource Source" fields
16690were ignored.
16691
16692
16693----------------------------------------
1669422 November 2002.  Summary of changes for version 20021122.
16695
16696
166971) ACPI CA Core Subsystem:
16698
16699Fixed a reported problem where an object stored to a Method Local
16700or Arg was not copied to a new object during the store - the
16701object pointer was simply copied to the Local/Arg.  This caused
16702all subsequent operations on the Local/Arg to also affect the
16703original source of the store operation.
16704
16705Fixed a problem where a store operation to a Method Local or Arg
16706was not completed properly if the Local/Arg contained a reference
16707(from RefOf) to a named field.  The general-purpose store-to-
16708namespace-node code is now used so that this case is handled
16709automatically.
16710
16711Fixed a problem where the internal object copy routine would cause
16712a protection fault if the object being copied was a Package and
16713contained either 1) a NULL package element or 2) a nested sub-
16714package.
16715
16716Fixed a problem with the GPE initialization that resulted from an
16717ambiguity in the ACPI specification.  One section of the
16718specification states that both the address and length of the GPE
16719block must be zero if the block is not supported.  Another section
16720implies that only the address need be zero if the block is not
16721supported.  The code has been changed so that both the address and
16722the length must be non-zero to indicate a valid GPE block (i.e.,
16723if either the address or the length is zero, the GPE block is
16724invalid.)
16725
16726Code and Data Size: Current core subsystem library sizes are shown
16727below.  These are the code and data sizes for the acpica.lib
16728produced by the Microsoft Visual C++ 6.0 compiler, and these
16729values do not include any ACPI driver or OSPM code.  The debug
16730version of the code includes the debug output trace mechanism and
16731has a much larger code and data size.  Note that these values will
16732vary depending on the efficiency of the compiler and the compiler
16733options used during generation.
16734
16735  Previous Release
16736    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16737    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16738  Current Release:
16739    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16740    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16741
16742
167432) Linux
16744
16745Cleaned up EC driver. Exported an external EC read/write
16746interface. By going through this, other drivers (most notably
16747sonypi) will be able to serialize access to the EC.
16748
16749
167503) iASL Compiler/Disassembler
16751
16752Implemented support to optionally generate include files for both
16753ASM and C (the -i switch).  This simplifies BIOS development by
16754automatically creating include files that contain external
16755declarations for the symbols that are created within the
16756
16757(optionally generated) ASM and C AML source files.
16758
16759
16760----------------------------------------
1676115 November 2002.  Summary of changes for version 20021115.
16762
167631) ACPI CA Core Subsystem:
16764
16765Fixed a memory leak problem where an error during resolution of
16766
16767method arguments during a method invocation from another method
16768failed to cleanup properly by deleting all successfully resolved
16769argument objects.
16770
16771Fixed a problem where the target of the Index() operator was not
16772correctly constructed if the source object was a package.  This
16773problem has not been detected because the use of a target operand
16774with Index() is very rare.
16775
16776Fixed a problem with the Index() operator where an attempt was
16777made to delete the operand objects twice.
16778
16779Fixed a problem where an attempt was made to delete an operand
16780twice during execution of the CondRefOf() operator if the target
16781did not exist.
16782
16783Implemented the first of perhaps several internal create object
16784functions that create and initialize a specific object type.  This
16785consolidates duplicated code wherever the object is created, thus
16786shrinking the size of the subsystem.
16787
16788Implemented improved debug/error messages for errors that occur
16789during nested method invocations.  All executing method pathnames
16790are displayed (with the error) as the call stack is unwound - thus
16791simplifying debug.
16792
16793Fixed a problem introduced in the 10/02 release that caused
16794premature deletion of a buffer object if a buffer was used as an
16795ASL operand where an integer operand is required (Thus causing an
16796implicit object conversion from Buffer to Integer.)  The change in
16797the 10/02 release was attempting to fix a memory leak (albeit
16798incorrectly.)
16799
16800Code and Data Size: Current core subsystem library sizes are shown
16801below.  These are the code and data sizes for the acpica.lib
16802produced by the Microsoft Visual C++ 6.0 compiler, and these
16803values do not include any ACPI driver or OSPM code.  The debug
16804version of the code includes the debug output trace mechanism and
16805has a much larger code and data size.  Note that these values will
16806vary depending on the efficiency of the compiler and the compiler
16807options used during generation.
16808
16809  Previous Release
16810    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16811    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16812  Current Release:
16813    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16814    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16815
16816
168172) Linux
16818
16819Changed the implementation of the ACPI semaphores to use down()
16820instead of down_interruptable().  It is important that the
16821execution of ACPI control methods not be interrupted by signals.
16822Methods must run to completion, or the system may be left in an
16823unknown/unstable state.
16824
16825Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16826(Shawn Starr)
16827
16828
168293) iASL Compiler/Disassembler
16830
16831
16832Changed the default location of output files.  All output files
16833are now placed in the current directory by default instead of in
16834the directory of the source file.  This change may affect some
16835existing makefiles, but it brings the behavior of the compiler in
16836line with other similar tools.  The location of the output files
16837can be overridden with the -p command line switch.
16838
16839
16840----------------------------------------
1684111 November 2002.  Summary of changes for version 20021111.
16842
16843
168440) ACPI Specification 2.0B is released and is now available at:
16845http://www.acpi.info/index.html
16846
16847
168481) ACPI CA Core Subsystem:
16849
16850Implemented support for the ACPI 2.0 SMBus Operation Regions.
16851This includes the early detection and handoff of the request to
16852the SMBus region handler (avoiding all of the complex field
16853support code), and support for the bidirectional return packet
16854from an SMBus write operation.  This paves the way for the
16855development of SMBus drivers in each host operating system.
16856
16857Fixed a problem where the semaphore WAIT_FOREVER constant was
16858defined as 32 bits, but must be 16 bits according to the ACPI
16859specification.  This had the side effect of causing ASL
16860Mutex/Event timeouts even though the ASL code requested a wait
16861forever.  Changed all internal references to the ACPI timeout
16862parameter to 16 bits to prevent future problems.  Changed the name
16863of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16864
16865Code and Data Size: Current core subsystem library sizes are shown
16866below.  These are the code and data sizes for the acpica.lib
16867produced by the Microsoft Visual C++ 6.0 compiler, and these
16868values do not include any ACPI driver or OSPM code.  The debug
16869version of the code includes the debug output trace mechanism and
16870has a much larger code and data size.  Note that these values will
16871vary depending on the efficiency of the compiler and the compiler
16872options used during generation.
16873
16874  Previous Release
16875    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16876    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16877  Current Release:
16878    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16879    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16880
16881
168822) Linux
16883
16884Module loading/unloading fixes (John Cagle)
16885
16886
168873) iASL Compiler/Disassembler
16888
16889Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16890
16891Implemented support for the disassembly of all SMBus protocol
16892keywords (SMBQuick, SMBWord, etc.)
16893
16894----------------------------------------
1689501 November 2002.  Summary of changes for version 20021101.
16896
16897
168981) ACPI CA Core Subsystem:
16899
16900Fixed a problem where platforms that have a GPE1 block but no GPE0
16901block were not handled correctly.  This resulted in a "GPE
16902overlap" error message.  GPE0 is no longer required.
16903
16904Removed code added in the previous release that inserted nodes
16905into the namespace in alphabetical order.  This caused some side-
16906effects on various machines.  The root cause of the problem is
16907still under investigation since in theory, the internal ordering
16908of the namespace nodes should not matter.
16909
16910
16911Enhanced error reporting for the case where a named object is not
16912found during control method execution.  The full ACPI namepath
16913(name reference) of the object that was not found is displayed in
16914this case.
16915
16916Note: as a result of the overhaul of the namespace object types in
16917the previous release, the namespace nodes for the predefined
16918scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16919instead of ACPI_TYPE_ANY.  This simplifies the namespace
16920management code but may affect code that walks the namespace tree
16921looking for specific object types.
16922
16923Code and Data Size: Current core subsystem library sizes are shown
16924below.  These are the code and data sizes for the acpica.lib
16925produced by the Microsoft Visual C++ 6.0 compiler, and these
16926values do not include any ACPI driver or OSPM code.  The debug
16927version of the code includes the debug output trace mechanism and
16928has a much larger code and data size.  Note that these values will
16929vary depending on the efficiency of the compiler and the compiler
16930options used during generation.
16931
16932  Previous Release
16933    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16934    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16935  Current Release:
16936    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16937    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16938
16939
169402) Linux
16941
16942Fixed a problem introduced in the previous release where the
16943Processor and Thermal objects were not recognized and installed in
16944/proc.  This was related to the scope type change described above.
16945
16946
169473) iASL Compiler/Disassembler
16948
16949Implemented the -g option to get all of the required ACPI tables
16950from the registry and save them to files (Windows version of the
16951compiler only.)  The required tables are the FADT, FACS, and DSDT.
16952
16953Added ACPI table checksum validation during table disassembly in
16954order to catch corrupted tables.
16955
16956
16957----------------------------------------
1695822 October 2002.  Summary of changes for version 20021022.
16959
169601) ACPI CA Core Subsystem:
16961
16962Implemented a restriction on the Scope operator that the target
16963must already exist in the namespace at the time the operator is
16964encountered (during table load or method execution).  In other
16965words, forward references are not allowed and Scope() cannot
16966create a new object. This changes the previous behavior where the
16967interpreter would create the name if not found.  This new behavior
16968correctly enables the search-to-root algorithm during namespace
16969lookup of the target name.  Because of this upsearch, this fixes
16970the known Compaq _SB_.OKEC problem and makes both the AML
16971interpreter and iASL compiler compatible with other ACPI
16972implementations.
16973
16974Completed a major overhaul of the internal ACPI object types for
16975the ACPI Namespace and the associated operand objects.  Many of
16976these types had become obsolete with the introduction of the two-
16977pass namespace load.  This cleanup simplifies the code and makes
16978the entire namespace load mechanism much clearer and easier to
16979understand.
16980
16981Improved debug output for tracking scope opening/closing to help
16982diagnose scoping issues.  The old scope name as well as the new
16983scope name are displayed.  Also improved error messages for
16984problems with ASL Mutex objects and error messages for GPE
16985problems.
16986
16987Cleaned up the namespace dump code, removed obsolete code.
16988
16989All string output (for all namespace/object dumps) now uses the
16990common ACPI string output procedure which handles escapes properly
16991and does not emit non-printable characters.
16992
16993Fixed some issues with constants in the 64-bit version of the
16994local C library (utclib.c)
16995
16996
169972) Linux
16998
16999EC Driver:  No longer attempts to acquire the Global Lock at
17000interrupt level.
17001
17002
170033) iASL Compiler/Disassembler
17004
17005Implemented ACPI 2.0B grammar change that disallows all Type 1 and
170062 opcodes outside of a control method.  This means that the
17007"executable" operators (versus the "namespace" operators) cannot
17008be used at the table level; they can only be used within a control
17009method.
17010
17011Implemented the restriction on the Scope() operator where the
17012target must already exist in the namespace at the time the
17013operator is encountered (during ASL compilation). In other words,
17014forward references are not allowed and Scope() cannot create a new
17015object.  This makes the iASL compiler compatible with other ACPI
17016implementations and makes the Scope() implementation adhere to the
17017ACPI specification.
17018
17019Fixed a problem where namepath optimization for the Alias operator
17020was optimizing the wrong path (of the two namepaths.)  This caused
17021a "Missing alias link" error message.
17022
17023Fixed a problem where an "unknown reserved name" warning could be
17024incorrectly generated for names like "_SB" when the trailing
17025underscore is not used in the original ASL.
17026
17027Fixed a problem where the reserved name check did not handle
17028NamePaths with multiple NameSegs correctly.  The first nameseg of
17029the NamePath was examined instead of the last NameSeg.
17030
17031
17032----------------------------------------
17033
1703402 October 2002.  Summary of changes for this release.
17035
17036
170371) ACPI CA Core Subsystem version 20021002:
17038
17039Fixed a problem where a store/copy of a string to an existing
17040string did not always set the string length properly in the String
17041object.
17042
17043Fixed a reported problem with the ToString operator where the
17044behavior was identical to the ToHexString operator instead of just
17045simply converting a raw buffer to a string data type.
17046
17047Fixed a problem where CopyObject and the other "explicit"
17048conversion operators were not updating the internal namespace node
17049type as part of the store operation.
17050
17051Fixed a memory leak during implicit source operand conversion
17052where the original object was not deleted if it was converted to a
17053new object of a different type.
17054
17055Enhanced error messages for all problems associated with namespace
17056lookups.  Common procedure generates and prints the lookup name as
17057well as the formatted status.
17058
17059Completed implementation of a new design for the Alias support
17060within the namespace.  The existing design did not handle the case
17061where a new object was assigned to one of the two names due to the
17062use of an explicit conversion operator, resulting in the two names
17063pointing to two different objects.  The new design simply points
17064the Alias name to the original name node - not to the object.
17065This results in a level of indirection that must be handled in the
17066name resolution mechanism.
17067
17068Code and Data Size: Current core subsystem library sizes are shown
17069below.  These are the code and data sizes for the acpica.lib
17070produced by the Microsoft Visual C++ 6.0 compiler, and these
17071values do not include any ACPI driver or OSPM code.  The debug
17072version of the code includes the debug output trace mechanism and
17073has a larger code and data size.  Note that these values will vary
17074depending on the efficiency of the compiler and the compiler
17075options used during generation.
17076
17077  Previous Release
17078    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
17079    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
17080  Current Release:
17081    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
17082    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
17083
17084
170852) Linux
17086
17087Initialize thermal driver's timer before it is used. (Knut
17088Neumann)
17089
17090Allow handling negative celsius values. (Kochi Takayoshi)
17091
17092Fix thermal management and make trip points. R/W (Pavel Machek)
17093
17094Fix /proc/acpi/sleep. (P. Christeas)
17095
17096IA64 fixes. (David Mosberger)
17097
17098Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
17099
17100Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
17101Brodowski)
17102
17103
171043) iASL Compiler/Disassembler
17105
17106Clarified some warning/error messages.
17107
17108
17109----------------------------------------
1711018 September 2002.  Summary of changes for this release.
17111
17112
171131) ACPI CA Core Subsystem version 20020918:
17114
17115Fixed a reported problem with reference chaining (via the Index()
17116and RefOf() operators) in the ObjectType() and SizeOf() operators.
17117The definition of these operators includes the dereferencing of
17118all chained references to return information on the base object.
17119
17120Fixed a problem with stores to indexed package elements - the
17121existing code would not complete the store if an "implicit
17122conversion" was not performed.  In other words, if the existing
17123object (package element) was to be replaced completely, the code
17124didn't handle this case.
17125
17126Relaxed typechecking on the ASL "Scope" operator to allow the
17127target name to refer to an object of type Integer, String, or
17128Buffer, in addition to the scoping object types (Device,
17129predefined Scopes, Processor, PowerResource, and ThermalZone.)
17130This allows existing AML code that has workarounds for a bug in
17131Windows to function properly.  A warning is issued, however.  This
17132affects both the AML interpreter and the iASL compiler. Below is
17133an example of this type of ASL code:
17134
17135      Name(DEB,0x00)
17136      Scope(DEB)
17137      {
17138
17139Fixed some reported problems with 64-bit integer support in the
17140local implementation of C library functions (clib.c)
17141
17142
171432) Linux
17144
17145Use ACPI fix map region instead of IOAPIC region, since it is
17146undefined in non-SMP.
17147
17148Ensure that the SCI has the proper polarity and trigger, even on
17149systems that do not have an interrupt override entry in the MADT.
17150
171512.5 big driver reorganization (Pat Mochel)
17152
17153Use early table mapping code from acpitable.c (Andi Kleen)
17154
17155New blacklist entries (Andi Kleen)
17156
17157Blacklist improvements. Split blacklist code out into a separate
17158file. Move checking the blacklist to very early. Previously, we
17159would use ACPI tables, and then halfway through init, check the
17160blacklist -- too late. Now, it's early enough to completely fall-
17161back to non-ACPI.
17162
17163
171643) iASL Compiler/Disassembler version 20020918:
17165
17166Fixed a problem where the typechecking code didn't know that an
17167alias could point to a method.  In other words, aliases were not
17168being dereferenced during typechecking.
17169
17170
17171----------------------------------------
1717229 August 2002.  Summary of changes for this release.
17173
171741) ACPI CA Core Subsystem Version 20020829:
17175
17176If the target of a Scope() operator already exists, it must be an
17177object type that actually opens a scope -- such as a Device,
17178Method, Scope, etc.  This is a fatal runtime error.  Similar error
17179check has been added to the iASL compiler also.
17180
17181Tightened up the namespace load to disallow multiple names in the
17182same scope.  This previously was allowed if both objects were of
17183the same type.  (i.e., a lookup was the same as entering a new
17184name).
17185
17186
171872) Linux
17188
17189Ensure that the ACPI interrupt has the proper trigger and
17190polarity.
17191
17192local_irq_disable is extraneous. (Matthew Wilcox)
17193
17194Make "acpi=off" actually do what it says, and not use the ACPI
17195interpreter *or* the tables.
17196
17197Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
17198Takayoshi)
17199
17200
172013) iASL Compiler/Disassembler  Version 20020829:
17202
17203Implemented namepath optimization for name declarations.  For
17204example, a declaration like "Method (\_SB_.ABCD)" would get
17205optimized to "Method (ABCD)" if the declaration is within the
17206\_SB_ scope.  This optimization is in addition to the named
17207reference path optimization first released in the previous
17208version. This would seem to complete all possible optimizations
17209for namepaths within the ASL/AML.
17210
17211If the target of a Scope() operator already exists, it must be an
17212object type that actually opens a scope -- such as a Device,
17213Method, Scope, etc.
17214
17215Implemented a check and warning for unreachable code in the same
17216block below a Return() statement.
17217
17218Fixed a problem where the listing file was not generated if the
17219compiler aborted if the maximum error count was exceeded (200).
17220
17221Fixed a problem where the typechecking of method return values was
17222broken.  This includes the check for a return value when the
17223method is invoked as a TermArg (a return value is expected.)
17224
17225Fixed a reported problem where EOF conditions during a quoted
17226string or comment caused a fault.
17227
17228
17229----------------------------------------
1723015 August 2002.  Summary of changes for this release.
17231
172321) ACPI CA Core Subsystem Version 20020815:
17233
17234Fixed a reported problem where a Store to a method argument that
17235contains a reference did not perform the indirect store correctly.
17236This problem was created during the conversion to the new
17237reference object model - the indirect store to a method argument
17238code was not updated to reflect the new model.
17239
17240Reworked the ACPI mode change code to better conform to ACPI 2.0,
17241handle corner cases, and improve code legibility (Kochi Takayoshi)
17242
17243Fixed a problem with the pathname parsing for the carat (^)
17244prefix.  The heavy use of the carat operator by the new namepath
17245optimization in the iASL compiler uncovered a problem with the AML
17246interpreter handling of this prefix.  In the case where one or
17247more carats precede a single nameseg, the nameseg was treated as
17248standalone and the search rule (to root) was inadvertently
17249applied.  This could cause both the iASL compiler and the
17250interpreter to find the wrong object or to miss the error that
17251should occur if the object does not exist at that exact pathname.
17252
17253Found and fixed the problem where the HP Pavilion DSDT would not
17254load.  This was a relatively minor tweak to the table loading code
17255(a problem caused by the unexpected encounter with a method
17256invocation not within a control method), but it does not solve the
17257overall issue of the execution of AML code at the table level.
17258This investigation is still ongoing.
17259
17260Code and Data Size: Current core subsystem library sizes are shown
17261below.  These are the code and data sizes for the acpica.lib
17262produced by the Microsoft Visual C++ 6.0 compiler, and these
17263values do not include any ACPI driver or OSPM code.  The debug
17264version of the code includes the debug output trace mechanism and
17265has a larger code and data size.  Note that these values will vary
17266depending on the efficiency of the compiler and the compiler
17267options used during generation.
17268
17269  Previous Release
17270    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
17271    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
17272  Current Release:
17273    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
17274    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
17275
17276
172772) Linux
17278
17279Remove redundant slab.h include (Brad Hards)
17280
17281Fix several bugs in thermal.c (Herbert Nachtnebel)
17282
17283Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
17284
17285Change acpi_system_suspend to use updated irq functions (Pavel
17286Machek)
17287
17288Export acpi_get_firmware_table (Matthew Wilcox)
17289
17290Use proper root proc entry for ACPI (Kochi Takayoshi)
17291
17292Fix early-boot table parsing (Bjorn Helgaas)
17293
17294
172953) iASL Compiler/Disassembler
17296
17297Reworked the compiler options to make them more consistent and to
17298use two-letter options where appropriate.  We were running out of
17299sensible letters.   This may break some makefiles, so check the
17300current options list by invoking the compiler with no parameters.
17301
17302Completed the design and implementation of the ASL namepath
17303optimization option for the compiler.  This option optimizes all
17304references to named objects to the shortest possible path.  The
17305first attempt tries to utilize a single nameseg (4 characters) and
17306the "search-to-root" algorithm used by the interpreter.  If that
17307cannot be used (because either the name is not in the search path
17308or there is a conflict with another object with the same name),
17309the pathname is optimized using the carat prefix (usually a
17310shorter string than specifying the entire path from the root.)
17311
17312Implemented support to obtain the DSDT from the Windows registry
17313(when the disassembly option is specified with no input file).
17314Added this code as the implementation for AcpiOsTableOverride in
17315the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
17316utility) to scan memory for the DSDT to the AcpiOsTableOverride
17317function in the DOS OSL to make the disassembler truly OS
17318independent.
17319
17320Implemented a new option to disassemble and compile in one step.
17321When used without an input filename, this option will grab the
17322DSDT from the local machine, disassemble it, and compile it in one
17323step.
17324
17325Added a warning message for invalid escapes (a backslash followed
17326by any character other than the allowable escapes).  This catches
17327the quoted string error "\_SB_" (which should be "\\_SB_" ).
17328
17329Also, there are numerous instances in the ACPI specification where
17330this error occurs.
17331
17332Added a compiler option to disable all optimizations.  This is
17333basically the "compatibility mode" because by using this option,
17334the AML code will come out exactly the same as other ASL
17335compilers.
17336
17337Added error messages for incorrectly ordered dependent resource
17338functions.  This includes: missing EndDependentFn macro at end of
17339dependent resource list, nested dependent function macros (both
17340start and end), and missing StartDependentFn macro.  These are
17341common errors that should be caught at compile time.
17342
17343Implemented _OSI support for the disassembler and compiler.  _OSI
17344must be included in the namespace for proper disassembly (because
17345the disassembler must know the number of arguments.)
17346
17347Added an "optimization" message type that is optional (off by
17348default).  This message is used for all optimizations - including
17349constant folding, integer optimization, and namepath optimization.
17350
17351----------------------------------------
1735225 July 2002.  Summary of changes for this release.
17353
17354
173551) ACPI CA Core Subsystem Version 20020725:
17356
17357The AML Disassembler has been enhanced to produce compilable ASL
17358code and has been integrated into the iASL compiler (see below) as
17359well as the single-step disassembly for the AML debugger and the
17360disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
17361resource templates and macros are fully supported.  The
17362disassembler has been tested on over 30 different AML files,
17363producing identical AML when the resulting disassembled ASL file
17364is recompiled with the same ASL compiler.
17365
17366Modified the Resource Manager to allow zero interrupts and zero
17367dma channels during the GetCurrentResources call.  This was
17368causing problems on some platforms.
17369
17370Added the AcpiOsRedirectOutput interface to the OSL to simplify
17371output redirection for the AcpiOsPrintf and AcpiOsVprintf
17372interfaces.
17373
17374Code and Data Size: Current core subsystem library sizes are shown
17375below.  These are the code and data sizes for the acpica.lib
17376produced by the Microsoft Visual C++ 6.0 compiler, and these
17377values do not include any ACPI driver or OSPM code.  The debug
17378version of the code includes the debug output trace mechanism and
17379has a larger code and data size.  Note that these values will vary
17380depending on the efficiency of the compiler and the compiler
17381options used during generation.
17382
17383  Previous Release
17384    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17385    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17386  Current Release:
17387    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
17388    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
17389
17390
173912) Linux
17392
17393Fixed a panic in the EC driver (Dominik Brodowski)
17394
17395Implemented checksum of the R/XSDT itself during Linux table scan
17396(Richard Schaal)
17397
17398
173993) iASL compiler
17400
17401The AML disassembler is integrated into the compiler.  The "-d"
17402option invokes the disassembler  to completely disassemble an
17403input AML file, producing as output a text ASL file with the
17404extension ".dsl" (to avoid name collisions with existing .asl
17405source files.)  A future enhancement will allow the disassembler
17406to obtain the BIOS DSDT from the registry under Windows.
17407
17408Fixed a problem with the VendorShort and VendorLong resource
17409descriptors where an invalid AML sequence was created.
17410
17411Implemented a fix for BufferData term in the ASL parser.  It was
17412inadvertently defined twice, allowing invalid syntax to pass and
17413causing reduction conflicts.
17414
17415Fixed a problem where the Ones opcode could get converted to a
17416value of zero if "Ones" was used where a byte, word or dword value
17417was expected.  The 64-bit value is now truncated to the correct
17418size with the correct value.
17419
17420
17421
17422----------------------------------------
1742302 July 2002.  Summary of changes for this release.
17424
17425
174261) ACPI CA Core Subsystem Version 20020702:
17427
17428The Table Manager code has been restructured to add several new
17429features.  Tables that are not required by the core subsystem
17430(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
17431validated in any way and are returned from AcpiGetFirmwareTable if
17432requested.  The AcpiOsTableOverride interface is now called for
17433each table that is loaded by the subsystem in order to allow the
17434host to override any table it chooses.  Previously, only the DSDT
17435could be overridden.  Added one new files, tbrsdt.c and
17436tbgetall.c.
17437
17438Fixed a problem with the conversion of internal package objects to
17439external objects (when a package is returned from a control
17440method.)  The return buffer length was set to zero instead of the
17441proper length of the package object.
17442
17443Fixed a reported problem with the use of the RefOf and DeRefOf
17444operators when passing reference arguments to control methods.  A
17445new type of Reference object is used internally for references
17446produced by the RefOf operator.
17447
17448Added additional error messages in the Resource Manager to explain
17449AE_BAD_DATA errors when they occur during resource parsing.
17450
17451Split the AcpiEnableSubsystem into two primitives to enable a
17452finer granularity initialization sequence.  These two calls should
17453be called in this order: AcpiEnableSubsystem (flags),
17454AcpiInitializeObjects (flags).  The flags parameter remains the
17455same.
17456
17457
174582) Linux
17459
17460Updated the ACPI utilities module to understand the new style of
17461fully resolved package objects that are now returned from the core
17462subsystem.  This eliminates errors of the form:
17463
17464    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
17465    acpi_utils-0430 [145] acpi_evaluate_reference:
17466        Invalid element in package (not a device reference)
17467
17468The method evaluation utility uses the new buffer allocation
17469scheme instead of calling AcpiEvaluate Object twice.
17470
17471Added support for ECDT. This allows the use of the Embedded
17472
17473Controller before the namespace has been fully initialized, which
17474is necessary for ACPI 2.0 support, and for some laptops to
17475initialize properly. (Laptops using ECDT are still rare, so only
17476limited testing was performed of the added functionality.)
17477
17478Fixed memory leaks in the EC driver.
17479
17480Eliminated a brittle code structure in acpi_bus_init().
17481
17482Eliminated the acpi_evaluate() helper function in utils.c. It is
17483no longer needed since acpi_evaluate_object can optionally
17484allocate memory for the return object.
17485
17486Implemented fix for keyboard hang when getting battery readings on
17487some systems (Stephen White)
17488
17489PCI IRQ routing update (Dominik Brodowski)
17490
17491Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
17492support
17493
17494----------------------------------------
1749511 June 2002.  Summary of changes for this release.
17496
17497
174981) ACPI CA Core Subsystem Version 20020611:
17499
17500Fixed a reported problem where constants such as Zero and One
17501appearing within _PRT packages were not handled correctly within
17502the resource manager code.  Originally reported against the ASL
17503compiler because the code generator now optimizes integers to
17504their minimal AML representation (i.e. AML constants if possible.)
17505The _PRT code now handles all AML constant opcodes correctly
17506(Zero, One, Ones, Revision).
17507
17508Fixed a problem with the Concatenate operator in the AML
17509interpreter where a buffer result object was incorrectly marked as
17510not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
17511
17512All package sub-objects are now fully resolved before they are
17513returned from the external ACPI interfaces.  This means that name
17514strings are resolved to object handles, and constant operators
17515(Zero, One, Ones, Revision) are resolved to Integers.
17516
17517Implemented immediate resolution of the AML Constant opcodes
17518(Zero, One, Ones, Revision) to Integer objects upon detection
17519within the AML stream. This has simplified and reduced the
17520generated code size of the subsystem by eliminating about 10
17521switch statements for these constants (which previously were
17522contained in Reference objects.)  The complicating issues are that
17523the Zero opcode is used as a "placeholder" for unspecified
17524optional target operands and stores to constants are defined to be
17525no-ops.
17526
17527Code and Data Size: Current core subsystem library sizes are shown
17528below. These are the code and data sizes for the acpica.lib
17529produced by the Microsoft Visual C++ 6.0 compiler, and these
17530values do not include any ACPI driver or OSPM code.  The debug
17531version of the code includes the debug output trace mechanism and
17532has a larger code and data size.  Note that these values will vary
17533depending on the efficiency of the compiler and the compiler
17534options used during generation.
17535
17536  Previous Release
17537    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17538    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17539  Current Release:
17540    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17541    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17542
17543
175442) Linux
17545
17546
17547Added preliminary support for obtaining _TRA data for PCI root
17548bridges (Bjorn Helgaas).
17549
17550
175513) iASL Compiler Version X2046:
17552
17553Fixed a problem where the "_DDN" reserved name was defined to be a
17554control method with one argument.  There are no arguments, and
17555_DDN does not have to be a control method.
17556
17557Fixed a problem with the Linux version of the compiler where the
17558source lines printed with error messages were the wrong lines.
17559This turned out to be the "LF versus CR/LF" difference between
17560Windows and Unix.  This appears to be the longstanding issue
17561concerning listing output and error messages.
17562
17563Fixed a problem with the Linux version of compiler where opcode
17564names within error messages were wrong.  This was caused by a
17565slight difference in the output of the Flex tool on Linux versus
17566Windows.
17567
17568Fixed a problem with the Linux compiler where the hex output files
17569contained some garbage data caused by an internal buffer overrun.
17570
17571
17572----------------------------------------
1757317 May 2002.  Summary of changes for this release.
17574
17575
175761) ACPI CA Core Subsystem Version 20020517:
17577
17578Implemented a workaround to an BIOS bug discovered on the HP
17579OmniBook where the FADT revision number and the table size are
17580inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
17581behavior is to fallback to using only the ACPI 1.0 fields of the
17582FADT if the table is too small to be a ACPI 2.0 table as claimed
17583by the revision number.  Although this is a BIOS bug, this is a
17584case where the workaround is simple enough and with no side
17585effects, so it seemed prudent to add it.  A warning message is
17586issued, however.
17587
17588Implemented minimum size checks for the fixed-length ACPI tables -
17589- the FADT and FACS, as well as consistency checks between the
17590revision number and the table size.
17591
17592Fixed a reported problem in the table override support where the
17593new table pointer was incorrectly treated as a physical address
17594instead of a logical address.
17595
17596Eliminated the use of the AE_AML_ERROR exception and replaced it
17597with more descriptive codes.
17598
17599Fixed a problem where an exception would occur if an ASL Field was
17600defined with no named Field Units underneath it (used by some
17601index fields).
17602
17603Code and Data Size: Current core subsystem library sizes are shown
17604below.  These are the code and data sizes for the acpica.lib
17605produced by the Microsoft Visual C++ 6.0 compiler, and these
17606values do not include any ACPI driver or OSPM code.  The debug
17607version of the code includes the debug output trace mechanism and
17608has a larger code and data size.  Note that these values will vary
17609depending on the efficiency of the compiler and the compiler
17610options used during generation.
17611
17612  Previous Release
17613    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17614    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17615  Current Release:
17616    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17617    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17618
17619
17620
176212) Linux
17622
17623Much work done on ACPI init (MADT and PCI IRQ routing support).
17624(Paul D. and Dominik Brodowski)
17625
17626Fix PCI IRQ-related panic on boot (Sam Revitch)
17627
17628Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
17629
17630Fix "MHz" typo (Dominik Brodowski)
17631
17632Fix RTC year 2000 issue (Dominik Brodowski)
17633
17634Preclude multiple button proc entries (Eric Brunet)
17635
17636Moved arch-specific code out of include/platform/aclinux.h
17637
176383) iASL Compiler Version X2044:
17639
17640Implemented error checking for the string used in the EISAID macro
17641(Usually used in the definition of the _HID object.)  The code now
17642strictly enforces the PnP format - exactly 7 characters, 3
17643uppercase letters and 4 hex digits.
17644
17645If a raw string is used in the definition of the _HID object
17646(instead of the EISAID macro), the string must contain all
17647alphanumeric characters (e.g., "*PNP0011" is not allowed because
17648of the asterisk.)
17649
17650Implemented checking for invalid use of ACPI reserved names for
17651most of the name creation operators (Name, Device, Event, Mutex,
17652OperationRegion, PowerResource, Processor, and ThermalZone.)
17653Previously, this check was only performed for control methods.
17654
17655Implemented an additional check on the Name operator to emit an
17656error if a reserved name that must be implemented in ASL as a
17657control method is used.  We know that a reserved name must be a
17658method if it is defined with input arguments.
17659
17660The warning emitted when a namespace object reference is not found
17661during the cross reference phase has been changed into an error.
17662The "External" directive should be used for names defined in other
17663modules.
17664
17665
176664) Tools and Utilities
17667
17668The 16-bit tools (adump16 and aexec16) have been regenerated and
17669tested.
17670
17671Fixed a problem with the output of both acpidump and adump16 where
17672the indentation of closing parentheses and brackets was not
17673
17674aligned properly with the parent block.
17675
17676
17677----------------------------------------
1767803 May 2002.  Summary of changes for this release.
17679
17680
176811) ACPI CA Core Subsystem Version 20020503:
17682
17683Added support a new OSL interface that allows the host operating
17684
17685system software to override the DSDT found in the firmware -
17686AcpiOsTableOverride.  With this interface, the OSL can examine the
17687version of the firmware DSDT and replace it with a different one
17688if desired.
17689
17690Added new external interfaces for accessing ACPI registers from
17691device drivers and other system software - AcpiGetRegister and
17692AcpiSetRegister.  This was simply an externalization of the
17693existing AcpiHwBitRegister interfaces.
17694
17695Fixed a regression introduced in the previous build where the
17696ASL/AML CreateField operator always returned an error,
17697"destination must be a NS Node".
17698
17699Extended the maximum time (before failure) to successfully enable
17700ACPI mode to 3 seconds.
17701
17702Code and Data Size: Current core subsystem library sizes are shown
17703below.  These are the code and data sizes for the acpica.lib
17704produced by the Microsoft Visual C++ 6.0 compiler, and these
17705values do not include any ACPI driver or OSPM code.  The debug
17706version of the code includes the debug output trace mechanism and
17707has a larger code and data size.  Note that these values will vary
17708depending on the efficiency of the compiler and the compiler
17709options used during generation.
17710
17711  Previous Release
17712    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17713    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17714  Current Release:
17715    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17716    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17717
17718
177192) Linux
17720
17721Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17722free. While 3 out of 4 of our in-house systems work fine, the last
17723one still hangs when testing the LAPIC timer.
17724
17725Renamed many files in 2.5 kernel release to omit "acpi_" from the
17726name.
17727
17728Added warning on boot for Presario 711FR.
17729
17730Sleep improvements (Pavel Machek)
17731
17732ACPI can now be built without CONFIG_PCI enabled.
17733
17734IA64: Fixed memory map functions (JI Lee)
17735
17736
177373) iASL Compiler Version X2043:
17738
17739Added support to allow the compiler to be integrated into the MS
17740VC++ development environment for one-button compilation of single
17741files or entire projects -- with error-to-source-line mapping.
17742
17743Implemented support for compile-time constant folding for the
17744Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17745specification.  This allows the ASL writer to use expressions
17746instead of Integer/Buffer/String constants in terms that must
17747evaluate to constants at compile time and will also simplify the
17748emitted AML in any such sub-expressions that can be folded
17749(evaluated at compile-time.)  This increases the size of the
17750compiler significantly because a portion of the ACPI CA AML
17751interpreter is included within the compiler in order to pre-
17752evaluate constant expressions.
17753
17754
17755Fixed a problem with the "Unicode" ASL macro that caused the
17756compiler to fault.  (This macro is used in conjunction with the
17757_STR reserved name.)
17758
17759Implemented an AML opcode optimization to use the Zero, One, and
17760Ones opcodes where possible to further reduce the size of integer
17761constants and thus reduce the overall size of the generated AML
17762code.
17763
17764Implemented error checking for new reserved terms for ACPI version
177652.0A.
17766
17767Implemented the -qr option to display the current list of ACPI
17768reserved names known to the compiler.
17769
17770Implemented the -qc option to display the current list of ASL
17771operators that are allowed within constant expressions and can
17772therefore be folded at compile time if the operands are constants.
17773
17774
177754) Documentation
17776
17777Updated the Programmer's Reference for new interfaces, data types,
17778and memory allocation model options.
17779
17780Updated the iASL Compiler User Reference to apply new format and
17781add information about new features and options.
17782
17783----------------------------------------
1778419 April 2002.  Summary of changes for this release.
17785
177861) ACPI CA Core Subsystem Version 20020419:
17787
17788The source code base for the Core Subsystem has been completely
17789cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17790versions.  The Lint option files used are included in the
17791/acpi/generate/lint directory.
17792
17793Implemented enhanced status/error checking across the entire
17794Hardware manager subsystem.  Any hardware errors (reported from
17795the OSL) are now bubbled up and will abort a running control
17796method.
17797
17798
17799Fixed a problem where the per-ACPI-table integer width (32 or 64)
17800was stored only with control method nodes, causing a fault when
17801non-control method code was executed during table loading.  The
17802solution implemented uses a global variable to indicate table
17803width across the entire ACPI subsystem.  Therefore, ACPI CA does
17804not support mixed integer widths across different ACPI tables
17805(DSDT, SSDT).
17806
17807Fixed a problem where NULL extended fields (X fields) in an ACPI
178082.0 ACPI FADT caused the table load to fail.  Although the
17809existing ACPI specification is a bit fuzzy on this topic, the new
17810behavior is to fall back on a ACPI 1.0 field if the corresponding
17811ACPI 2.0 X field is zero (even though the table revision indicates
17812a full ACPI 2.0 table.)  The ACPI specification will be updated to
17813clarify this issue.
17814
17815Fixed a problem with the SystemMemory operation region handler
17816where memory was always accessed byte-wise even if the AML-
17817specified access width was larger than a byte.  This caused
17818problems on systems with memory-mapped I/O.  Memory is now
17819accessed with the width specified.  On systems that do not support
17820non-aligned transfers, a check is made to guarantee proper address
17821alignment before proceeding in order to avoid an AML-caused
17822alignment fault within the kernel.
17823
17824
17825Fixed a problem with the ExtendedIrq resource where only one byte
17826of the 4-byte Irq field was extracted.
17827
17828Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
17829function was out of date and required a rewrite.
17830
17831Code and Data Size: Current core subsystem library sizes are shown
17832below.  These are the code and data sizes for the acpica.lib
17833produced by the Microsoft Visual C++ 6.0 compiler, and these
17834values do not include any ACPI driver or OSPM code.  The debug
17835version of the code includes the debug output trace mechanism and
17836has a larger code and data size.  Note that these values will vary
17837depending on the efficiency of the compiler and the compiler
17838options used during generation.
17839
17840  Previous Release
17841    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17842    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17843  Current Release:
17844    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17845    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17846
17847
178482) Linux
17849
17850PCI IRQ routing fixes (Dominik Brodowski)
17851
17852
178533) iASL Compiler Version X2042:
17854
17855Implemented an additional compile-time error check for a field
17856unit whose size + minimum access width would cause a run-time
17857access beyond the end-of-region.  Previously, only the field size
17858itself was checked.
17859
17860The Core subsystem and iASL compiler now share a common parse
17861object in preparation for compile-time evaluation of the type
178623/4/5 ASL operators.
17863
17864
17865----------------------------------------
17866Summary of changes for this release: 03_29_02
17867
178681) ACPI CA Core Subsystem Version 20020329:
17869
17870Implemented support for late evaluation of TermArg operands to
17871Buffer and Package objects.  This allows complex expressions to be
17872used in the declarations of these object types.
17873
17874Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
178751.0, if the field was larger than 32 bits, it was returned as a
17876buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17877the field is returned as a buffer only if the field is larger than
1787864 bits.  The TableRevision is now considered when making this
17879conversion to avoid incompatibility with existing ASL code.
17880
17881Implemented logical addressing for AcpiOsGetRootPointer.  This
17882allows an RSDP with either a logical or physical address.  With
17883this support, the host OS can now override all ACPI tables with
17884one logical RSDP.  Includes implementation of  "typed" pointer
17885support to allow a common data type for both physical and logical
17886pointers internally.  This required a change to the
17887AcpiOsGetRootPointer interface.
17888
17889Implemented the use of ACPI 2.0 Generic Address Structures for all
17890GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
17891mapped I/O for these ACPI features.
17892
17893Initialization now ignores not only non-required tables (All
17894tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17895not validate the table headers of unrecognized tables.
17896
17897Fixed a problem where a notify handler could only be
17898installed/removed on an object of type Device.  All "notify"
17899
17900objects are now supported -- Devices, Processor, Power, and
17901Thermal.
17902
17903Removed most verbosity from the ACPI_DB_INFO debug level.  Only
17904critical information is returned when this debug level is enabled.
17905
17906Code and Data Size: Current core subsystem library sizes are shown
17907below.  These are the code and data sizes for the acpica.lib
17908produced by the Microsoft Visual C++ 6.0 compiler, and these
17909values do not include any ACPI driver or OSPM code.  The debug
17910version of the code includes the debug output trace mechanism and
17911has a larger code and data size.  Note that these values will vary
17912depending on the efficiency of the compiler and the compiler
17913options used during generation.
17914
17915  Previous Release
17916    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17917    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17918  Current Release:
17919    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17920    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17921
17922
179232) Linux:
17924
17925The processor driver (acpi_processor.c) now fully supports ACPI
179262.0-based processor performance control (e.g. Intel(R)
17927SpeedStep(TM) technology) Note that older laptops that only have
17928the Intel "applet" interface are not supported through this.  The
17929'limit' and 'performance' interface (/proc) are fully functional.
17930[Note that basic policy for controlling performance state
17931transitions will be included in the next version of ospmd.]  The
17932idle handler was modified to more aggressively use C2, and PIIX4
17933errata handling underwent a complete overhaul (big thanks to
17934Dominik Brodowski).
17935
17936Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17937based devices in the ACPI namespace are now dynamically bound
17938(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17939This allows, among other things, ACPI to resolve bus numbers for
17940subordinate PCI bridges.
17941
17942Enhanced PCI IRQ routing to get the proper bus number for _PRT
17943entries defined underneath PCI bridges.
17944
17945Added IBM 600E to bad bios list due to invalid _ADR value for
17946PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17947
17948In the process of adding full MADT support (e.g. IOAPIC) for IA32
17949(acpi.c, mpparse.c) -- stay tuned.
17950
17951Added back visual differentiation between fixed-feature and
17952control-method buttons in dmesg.  Buttons are also subtyped (e.g.
17953button/power/PWRF) to simplify button identification.
17954
17955We no longer use -Wno-unused when compiling debug. Please ignore
17956any "_THIS_MODULE defined but not used" messages.
17957
17958Can now shut down the system using "magic sysrq" key.
17959
17960
179613) iASL Compiler version 2041:
17962
17963Fixed a problem where conversion errors for hex/octal/decimal
17964constants were not reported.
17965
17966Implemented a fix for the General Register template Address field.
17967This field was 8 bits when it should be 64.
17968
17969Fixed a problem where errors/warnings were no longer being emitted
17970within the listing output file.
17971
17972Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17973exactly 4 characters, alphanumeric only.
17974
17975
17976
17977
17978----------------------------------------
17979Summary of changes for this release: 03_08_02
17980
17981
179821) ACPI CA Core Subsystem Version 20020308:
17983
17984Fixed a problem with AML Fields where the use of the "AccessAny"
17985keyword could cause an interpreter error due to attempting to read
17986or write beyond the end of the parent Operation Region.
17987
17988Fixed a problem in the SystemMemory Operation Region handler where
17989an attempt was made to map memory beyond the end of the region.
17990This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17991errors on some Linux systems.
17992
17993Fixed a problem where the interpreter/namespace "search to root"
17994algorithm was not functioning for some object types.  Relaxed the
17995internal restriction on the search to allow upsearches for all
17996external object types as well as most internal types.
17997
17998
179992) Linux:
18000
18001We now use safe_halt() macro versus individual calls to sti | hlt.
18002
18003Writing to the processor limit interface should now work. "echo 1"
18004will increase the limit, 2 will decrease, and 0 will reset to the
18005
18006default.
18007
18008
180093) ASL compiler:
18010
18011Fixed segfault on Linux version.
18012
18013
18014----------------------------------------
18015Summary of changes for this release: 02_25_02
18016
180171) ACPI CA Core Subsystem:
18018
18019
18020Fixed a problem where the GPE bit masks were not initialized
18021properly, causing erratic GPE behavior.
18022
18023Implemented limited support for multiple calling conventions.  The
18024code can be generated with either the VPL (variable parameter
18025list, or "C") convention, or the FPL (fixed parameter list, or
18026"Pascal") convention.  The core subsystem is about 3.4% smaller
18027when generated with FPL.
18028
18029
180302) Linux
18031
18032Re-add some /proc/acpi/event functionality that was lost during
18033the rewrite
18034
18035Resolved issue with /proc events for fixed-feature buttons showing
18036up as the system device.
18037
18038Fixed checks on C2/C3 latencies to be inclusive of maximum values.
18039
18040Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
18041
18042Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
18043
18044Fixed limit interface & usage to fix bugs with passive cooling
18045hysterisis.
18046
18047Restructured PRT support.
18048
18049
18050----------------------------------------
18051Summary of changes for this label: 02_14_02
18052
18053
180541) ACPI CA Core Subsystem:
18055
18056Implemented support in AcpiLoadTable to allow loading of FACS and
18057FADT tables.
18058
18059Support for the now-obsolete interim 0.71 64-bit ACPI tables has
18060been removed.  All 64-bit platforms should be migrated to the ACPI
180612.0 tables.  The actbl71.h header has been removed from the source
18062tree.
18063
18064All C macros defined within the subsystem have been prefixed with
18065"ACPI_" to avoid collision with other system include files.
18066
18067Removed the return value for the two AcpiOsPrint interfaces, since
18068it is never used and causes lint warnings for ignoring the return
18069value.
18070
18071Added error checking to all internal mutex acquire and release
18072calls.  Although a failure from one of these interfaces is
18073probably a fatal system error, these checks will cause the
18074immediate abort of the currently executing method or interface.
18075
18076Fixed a problem where the AcpiSetCurrentResources interface could
18077fault.  This was a side effect of the deployment of the new memory
18078allocation model.
18079
18080Fixed a couple of problems with the Global Lock support introduced
18081in the last major build.  The "common" (1.0/2.0) internal FACS was
18082being overwritten with the FACS signature and clobbering the
18083Global Lock pointer.  Also, the actual firmware FACS was being
18084unmapped after construction of the "common" FACS, preventing
18085access to the actual Global Lock field within it.  The "common"
18086internal FACS is no longer installed as an actual ACPI table; it
18087is used simply as a global.
18088
18089Code and Data Size: Current core subsystem library sizes are shown
18090below.  These are the code and data sizes for the acpica.lib
18091produced by the Microsoft Visual C++ 6.0 compiler, and these
18092values do not include any ACPI driver or OSPM code.  The debug
18093version of the code includes the debug output trace mechanism and
18094has a larger code and data size.  Note that these values will vary
18095depending on the efficiency of the compiler and the compiler
18096options used during generation.
18097
18098  Previous Release (02_07_01)
18099    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
18100    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
18101  Current Release:
18102    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
18103    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
18104
18105
181062) Linux
18107
18108Updated Linux-specific code for core macro and OSL interface
18109changes described above.
18110
18111Improved /proc/acpi/event. It now can be opened only once and has
18112proper poll functionality.
18113
18114Fixed and restructured power management (acpi_bus).
18115
18116Only create /proc "view by type" when devices of that class exist.
18117
18118Fixed "charging/discharging" bug (and others) in acpi_battery.
18119
18120Improved thermal zone code.
18121
18122
181233) ASL Compiler, version X2039:
18124
18125
18126Implemented the new compiler restriction on ASL String hex/octal
18127escapes to non-null, ASCII values.  An error results if an invalid
18128value is used.  (This will require an ACPI 2.0 specification
18129change.)
18130
18131AML object labels that are output to the optional C and ASM source
18132are now prefixed with both the ACPI table signature and table ID
18133to help guarantee uniqueness within a large BIOS project.
18134
18135
18136----------------------------------------
18137Summary of changes for this label: 02_01_02
18138
181391) ACPI CA Core Subsystem:
18140
18141ACPI 2.0 support is complete in the entire Core Subsystem and the
18142ASL compiler. All new ACPI 2.0 operators are implemented and all
18143other changes for ACPI 2.0 support are complete.  With
18144simultaneous code and data optimizations throughout the subsystem,
18145ACPI 2.0 support has been implemented with almost no additional
18146cost in terms of code and data size.
18147
18148Implemented a new mechanism for allocation of return buffers.  If
18149the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
18150be allocated on behalf of the caller.  Consolidated all return
18151buffer validation and allocation to a common procedure.  Return
18152buffers will be allocated via the primary OSL allocation interface
18153since it appears that a separate pool is not needed by most users.
18154If a separate pool is required for these buffers, the caller can
18155still use the original mechanism and pre-allocate the buffer(s).
18156
18157Implemented support for string operands within the DerefOf
18158operator.
18159
18160Restructured the Hardware and Event managers to be table driven,
18161simplifying the source code and reducing the amount of generated
18162code.
18163
18164Split the common read/write low-level ACPI register bitfield
18165procedure into a separate read and write, simplifying the code
18166considerably.
18167
18168Obsoleted the AcpiOsCallocate OSL interface.  This interface was
18169used only a handful of times and didn't have enough critical mass
18170for a separate interface.  Replaced with a common calloc procedure
18171in the core.
18172
18173Fixed a reported problem with the GPE number mapping mechanism
18174that allows GPE1 numbers to be non-contiguous with GPE0.
18175Reorganized the GPE information and shrunk a large array that was
18176originally large enough to hold info for all possible GPEs (256)
18177to simply large enough to hold all GPEs up to the largest GPE
18178number on the machine.
18179
18180Fixed a reported problem with resource structure alignment on 64-
18181bit platforms.
18182
18183Changed the AcpiEnableEvent and AcpiDisableEvent external
18184interfaces to not require any flags for the common case of
18185enabling/disabling a GPE.
18186
18187Implemented support to allow a "Notify" on a Processor object.
18188
18189Most TBDs in comments within the source code have been resolved
18190and eliminated.
18191
18192
18193Fixed a problem in the interpreter where a standalone parent
18194prefix (^) was not handled correctly in the interpreter and
18195debugger.
18196
18197Removed obsolete and unnecessary GPE save/restore code.
18198
18199Implemented Field support in the ASL Load operator.  This allows a
18200table to be loaded from a named field, in addition to loading a
18201table directly from an Operation Region.
18202
18203Implemented timeout and handle support in the external Global Lock
18204interfaces.
18205
18206Fixed a problem in the AcpiDump utility where pathnames were no
18207longer being generated correctly during the dump of named objects.
18208
18209Modified the AML debugger to give a full display of if/while
18210predicates instead of just one AML opcode at a time.  (The
18211predicate can have several nested ASL statements.)  The old method
18212was confusing during single stepping.
18213
18214Code and Data Size: Current core subsystem library sizes are shown
18215below. These are the code and data sizes for the acpica.lib
18216produced by the Microsoft Visual C++ 6.0 compiler, and these
18217values do not include any ACPI driver or OSPM code.  The debug
18218version of the code includes the debug output trace mechanism and
18219has a larger code and data size.  Note that these values will vary
18220depending on the efficiency of the compiler and the compiler
18221options used during generation.
18222
18223  Previous Release (12_18_01)
18224     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
18225     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
18226   Current Release:
18227     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
18228     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
18229
182302) Linux
18231
18232 Implemented fix for PIIX reverse throttling errata (Processor
18233driver)
18234
18235Added new Limit interface (Processor and Thermal drivers)
18236
18237New thermal policy (Thermal driver)
18238
18239Many updates to /proc
18240
18241Battery "low" event support (Battery driver)
18242
18243Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
18244
18245IA32 - IA64 initialization unification, no longer experimental
18246
18247Menuconfig options redesigned
18248
182493) ASL Compiler, version X2037:
18250
18251Implemented several new output features to simplify integration of
18252AML code into  firmware: 1) Output the AML in C source code with
18253labels for each named ASL object.  The    original ASL source code
18254is interleaved as C comments. 2) Output the AML in ASM source code
18255with labels and interleaved ASL    source. 3) Output the AML in
18256raw hex table form, in either C or ASM.
18257
18258Implemented support for optional string parameters to the
18259LoadTable operator.
18260
18261Completed support for embedded escape sequences within string
18262literals.  The compiler now supports all single character escapes
18263as well as the Octal and Hex escapes.  Note: the insertion of a
18264null byte into a string literal (via the hex/octal escape) causes
18265the string to be immediately terminated.  A warning is issued.
18266
18267Fixed a problem where incorrect AML was generated for the case
18268where an ASL namepath consists of a single parent prefix (
18269
18270) with no trailing name segments.
18271
18272The compiler has been successfully generated with a 64-bit C
18273compiler.
18274
18275
18276
18277
18278----------------------------------------
18279Summary of changes for this label: 12_18_01
18280
182811) Linux
18282
18283Enhanced blacklist with reason and severity fields. Any table's
18284signature may now be used to identify a blacklisted system.
18285
18286Call _PIC control method to inform the firmware which interrupt
18287model the OS is using. Turn on any disabled link devices.
18288
18289Cleaned up busmgr /proc error handling (Andreas Dilger)
18290
18291 2) ACPI CA Core Subsystem:
18292
18293Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
18294while loop)
18295
18296Completed implementation of the ACPI 2.0 "Continue",
18297"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
18298operators.  All new ACPI 2.0 operators are now implemented in both
18299the ASL compiler and the AML interpreter.  The only remaining ACPI
183002.0 task is support for the String data type in the DerefOf
18301operator.  Fixed a problem with AcquireMutex where the status code
18302was lost if the caller had to actually wait for the mutex.
18303
18304Increased the maximum ASL Field size from 64K bits to 4G bits.
18305
18306Completed implementation of the external Global Lock interfaces --
18307AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
18308Handler parameters were added.
18309
18310Completed another pass at removing warnings and issues when
18311compiling with 64-bit compilers.  The code now compiles cleanly
18312with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
18313add and subtract (diff) macros have changed considerably.
18314
18315
18316Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1831764-bit platforms, 32-bits on all others.  This type is used
18318wherever memory allocation and/or the C sizeof() operator is used,
18319and affects the OSL memory allocation interfaces AcpiOsAllocate
18320and AcpiOsCallocate.
18321
18322Implemented sticky user breakpoints in the AML debugger.
18323
18324Code and Data Size: Current core subsystem library sizes are shown
18325below. These are the code and data sizes for the acpica.lib
18326produced by the Microsoft Visual C++ 6.0 compiler, and these
18327values do not include any ACPI driver or OSPM code.  The debug
18328version of the code includes the debug output trace mechanism and
18329has a larger code and data size. Note that these values will vary
18330depending on the efficiency of the compiler and the compiler
18331options used during generation.
18332
18333  Previous Release (12_05_01)
18334     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
18335     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
18336   Current Release:
18337     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
18338     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
18339
18340 3) ASL Compiler, version X2034:
18341
18342Now checks for (and generates an error if detected) the use of a
18343Break or Continue statement without an enclosing While statement.
18344
18345
18346Successfully generated the compiler with the Intel 64-bit C
18347compiler.
18348
18349 ----------------------------------------
18350Summary of changes for this label: 12_05_01
18351
18352 1) ACPI CA Core Subsystem:
18353
18354The ACPI 2.0 CopyObject operator is fully implemented.  This
18355operator creates a new copy of an object (and is also used to
18356bypass the "implicit conversion" mechanism of the Store operator.)
18357
18358The ACPI 2.0 semantics for the SizeOf operator are fully
18359implemented.  The change is that performing a SizeOf on a
18360reference object causes an automatic dereference of the object to
18361the actual value before the size is evaluated. This behavior was
18362undefined in ACPI 1.0.
18363
18364The ACPI 2.0 semantics for the Extended IRQ resource descriptor
18365have been implemented.  The interrupt polarity and mode are now
18366independently set.
18367
18368Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
18369appearing in Package objects were not properly converted to
18370integers when the internal Package was converted to an external
18371object (via the AcpiEvaluateObject interface.)
18372
18373Fixed a problem with the namespace object deletion mechanism for
18374objects created by control methods.  There were two parts to this
18375problem: 1) Objects created during the initialization phase method
18376parse were not being deleted, and 2) The object owner ID mechanism
18377to track objects was broken.
18378
18379Fixed a problem where the use of the ASL Scope operator within a
18380control method would result in an invalid opcode exception.
18381
18382Fixed a problem introduced in the previous label where the buffer
18383length required for the _PRT structure was not being returned
18384correctly.
18385
18386Code and Data Size: Current core subsystem library sizes are shown
18387below. These are the code and data sizes for the acpica.lib
18388produced by the Microsoft Visual C++ 6.0 compiler, and these
18389values do not include any ACPI driver or OSPM code.  The debug
18390version of the code includes the debug output trace mechanism and
18391has a larger code and data size.  Note that these values will vary
18392depending on the efficiency of the compiler and the compiler
18393options used during generation.
18394
18395  Previous Release (11_20_01)
18396     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
18397     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
18398
18399  Current Release:
18400     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
18401     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
18402
18403 2) Linux:
18404
18405Updated all files to apply cleanly against 2.4.16.
18406
18407Added basic PCI Interrupt Routing Table (PRT) support for IA32
18408(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
18409version supports both static and dynamic PRT entries, but dynamic
18410entries are treated as if they were static (not yet
18411reconfigurable).  Architecture- specific code to use this data is
18412absent on IA32 but should be available shortly.
18413
18414Changed the initialization sequence to start the ACPI interpreter
18415(acpi_init) prior to initialization of the PCI driver (pci_init)
18416in init/main.c.  This ordering is required to support PRT and
18417facilitate other (future) enhancement.  A side effect is that the
18418ACPI bus driver and certain device drivers can no longer be loaded
18419as modules.
18420
18421Modified the 'make menuconfig' options to allow PCI Interrupt
18422Routing support to be included without the ACPI Bus and other
18423device drivers.
18424
18425 3) ASL Compiler, version X2033:
18426
18427Fixed some issues with the use of the new CopyObject and
18428DataTableRegion operators.  Both are fully functional.
18429
18430 ----------------------------------------
18431Summary of changes for this label: 11_20_01
18432
18433 20 November 2001.  Summary of changes for this release.
18434
18435 1) ACPI CA Core Subsystem:
18436
18437Updated Index support to match ACPI 2.0 semantics.  Storing a
18438Integer, String, or Buffer to an Index of a Buffer will store only
18439the least-significant byte of the source to the Indexed buffer
18440byte.  Multiple writes are not performed.
18441
18442Fixed a problem where the access type used in an AccessAs ASL
18443operator was not recorded correctly into the field object.
18444
18445Fixed a problem where ASL Event objects were created in a
18446signalled state. Events are now created in an unsignalled state.
18447
18448The internal object cache is now purged after table loading and
18449initialization to reduce the use of dynamic kernel memory -- on
18450the assumption that object use is greatest during the parse phase
18451of the entire table (versus the run-time use of individual control
18452methods.)
18453
18454ACPI 2.0 variable-length packages are now fully operational.
18455
18456Code and Data Size: Code and Data optimizations have permitted new
18457feature development with an actual reduction in the library size.
18458Current core subsystem library sizes are shown below.  These are
18459the code and data sizes for the acpica.lib produced by the
18460Microsoft Visual C++ 6.0 compiler, and these values do not include
18461any ACPI driver or OSPM code.  The debug version of the code
18462includes the debug output trace mechanism and has a larger code
18463and data size.  Note that these values will vary depending on the
18464efficiency of the compiler and the compiler options used during
18465generation.
18466
18467  Previous Release (11_09_01):
18468     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18469     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18470
18471  Current Release:
18472     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
18473     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
18474
18475 2) Linux:
18476
18477Enhanced the ACPI boot-time initialization code to allow the use
18478of Local APIC tables for processor enumeration on IA-32, and to
18479pave the way for a fully MPS-free boot (on SMP systems) in the
18480near future.  This functionality replaces
18481arch/i386/kernel/acpitables.c, which was introduced in an earlier
184822.4.15-preX release.  To enable this feature you must add
18483"acpi_boot=on" to the kernel command line -- see the help entry
18484for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
18485the works...
18486
18487Restructured the configuration options to allow boot-time table
18488parsing support without inclusion of the ACPI Interpreter (and
18489other) code.
18490
18491NOTE: This release does not include fixes for the reported events,
18492power-down, and thermal passive cooling issues (coming soon).
18493
18494 3) ASL Compiler:
18495
18496Added additional typechecking for Fields within restricted access
18497Operation Regions.  All fields within EC and CMOS regions must be
18498declared with ByteAcc. All fields within SMBus regions must be
18499declared with the BufferAcc access type.
18500
18501Fixed a problem where the listing file output of control methods
18502no longer interleaved the actual AML code with the ASL source
18503code.
18504
18505
18506
18507
18508----------------------------------------
18509Summary of changes for this label: 11_09_01
18510
185111) ACPI CA Core Subsystem:
18512
18513Implemented ACPI 2.0-defined support for writes to fields with a
18514Buffer, String, or Integer source operand that is smaller than the
18515target field. In these cases, the source operand is zero-extended
18516to fill the target field.
18517
18518Fixed a problem where a Field starting bit offset (within the
18519parent operation region) was calculated incorrectly if the
18520
18521alignment of the field differed from the access width.  This
18522affected CreateWordField, CreateDwordField, CreateQwordField, and
18523possibly other fields that use the "AccessAny" keyword.
18524
18525Fixed a problem introduced in the 11_02_01 release where indirect
18526stores through method arguments did not operate correctly.
18527
185282) Linux:
18529
18530Implemented boot-time ACPI table parsing support
18531(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
18532facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
18533legacy BIOS interfaces (e.g. MPS) for the configuration of system
18534processors, memory, and interrupts during setup_arch().  Note that
18535this patch does not include the required architecture-specific
18536changes required to apply this information -- subsequent patches
18537will be posted for both IA32 and IA64 to achieve this.
18538
18539Added low-level sleep support for IA32 platforms, courtesy of Pat
18540Mochel. This allows IA32 systems to transition to/from various
18541sleeping states (e.g. S1, S3), although the lack of a centralized
18542driver model and power-manageable drivers will prevent its
18543(successful) use on most systems.
18544
18545Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
18546submenu, unified IA32 and IA64 options, added new "Boot using ACPI
18547tables" option, etc.
18548
18549Increased the default timeout for the EC driver from 1ms to 10ms
18550(1000 cycles of 10us) to try to address AE_TIME errors during EC
18551transactions.
18552
18553 ----------------------------------------
18554Summary of changes for this label: 11_02_01
18555
185561) ACPI CA Core Subsystem:
18557
18558ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
18559(QWordAcc keyword). All ACPI 2.0 64-bit support is now
18560implemented.
18561
18562OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
18563changes to support ACPI 2.0 Qword field access.  Read/Write
18564PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
18565accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
18566the value parameter for the address space handler interface is now
18567an ACPI_INTEGER.  OSL implementations of these interfaces must now
18568handle the case where the Width parameter is 64.
18569
18570Index Fields: Fixed a problem where unaligned bit assembly and
18571disassembly for IndexFields was not supported correctly.
18572
18573Index and Bank Fields:  Nested Index and Bank Fields are now
18574supported. During field access, a check is performed to ensure
18575that the value written to an Index or Bank register is not out of
18576the range of the register.  The Index (or Bank) register is
18577written before each access to the field data. Future support will
18578include allowing individual IndexFields to be wider than the
18579DataRegister width.
18580
18581Fields: Fixed a problem where the AML interpreter was incorrectly
18582attempting to write beyond the end of a Field/OpRegion.  This was
18583a boundary case that occurred when a DWORD field was written to a
18584BYTE access OpRegion, forcing multiple writes and causing the
18585interpreter to write one datum too many.
18586
18587Fields: Fixed a problem with Field/OpRegion access where the
18588starting bit address of a field was incorrectly calculated if the
18589current access type was wider than a byte (WordAcc, DwordAcc, or
18590QwordAcc).
18591
18592Fields: Fixed a problem where forward references to individual
18593FieldUnits (individual Field names within a Field definition) were
18594not resolved during the AML table load.
18595
18596Fields: Fixed a problem where forward references from a Field
18597definition to the parent Operation Region definition were not
18598resolved during the AML table load.
18599
18600Fields: Duplicate FieldUnit names within a scope are now detected
18601during AML table load.
18602
18603Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
18604returned an incorrect name for the root node.
18605
18606Code and Data Size: Code and Data optimizations have permitted new
18607feature development with an actual reduction in the library size.
18608Current core subsystem library sizes are shown below.  These are
18609the code and data sizes for the acpica.lib produced by the
18610Microsoft Visual C++ 6.0 compiler, and these values do not include
18611any ACPI driver or OSPM code.  The debug version of the code
18612includes the debug output trace mechanism and has a larger code
18613and data size.  Note that these values will vary depending on the
18614efficiency of the compiler and the compiler options used during
18615generation.
18616
18617  Previous Release (10_18_01):
18618     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18619     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18620
18621  Current Release:
18622     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18623     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18624
18625 2) Linux:
18626
18627Improved /proc processor output (Pavel Machek) Re-added
18628MODULE_LICENSE("GPL") to all modules.
18629
18630 3) ASL Compiler version X2030:
18631
18632Duplicate FieldUnit names within a scope are now detected and
18633flagged as errors.
18634
18635 4) Documentation:
18636
18637Programmer Reference updated to reflect OSL and address space
18638handler interface changes described above.
18639
18640----------------------------------------
18641Summary of changes for this label: 10_18_01
18642
18643ACPI CA Core Subsystem:
18644
18645Fixed a problem with the internal object reference count mechanism
18646that occasionally caused premature object deletion. This resolves
18647all of the outstanding problem reports where an object is deleted
18648in the middle of an interpreter evaluation.  Although this problem
18649only showed up in rather obscure cases, the solution to the
18650problem involved an adjustment of all reference counts involving
18651objects attached to namespace nodes.
18652
18653Fixed a problem with Field support in the interpreter where
18654writing to an aligned field whose length is an exact multiple (2
18655or greater) of the field access granularity would cause an attempt
18656to write beyond the end of the field.
18657
18658The top level AML opcode execution functions within the
18659interpreter have been renamed with a more meaningful and
18660consistent naming convention.  The modules exmonad.c and
18661exdyadic.c were eliminated.  New modules are exoparg1.c,
18662exoparg2.c, exoparg3.c, and exoparg6.c.
18663
18664Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
18665
18666Fixed a problem where the AML debugger was causing some internal
18667objects to not be deleted during subsystem termination.
18668
18669Fixed a problem with the external AcpiEvaluateObject interface
18670where the subsystem would fault if the named object to be
18671evaluated referred to a constant such as Zero, Ones, etc.
18672
18673Fixed a problem with IndexFields and BankFields where the
18674subsystem would fault if the index, data, or bank registers were
18675not defined in the same scope as the field itself.
18676
18677Added printf format string checking for compilers that support
18678this feature.  Corrected more than 50 instances of issues with
18679format specifiers within invocations of ACPI_DEBUG_PRINT
18680throughout the core subsystem code.
18681
18682The ASL "Revision" operator now returns the ACPI support level
18683implemented in the core - the value "2" since the ACPI 2.0 support
18684is more than 50% implemented.
18685
18686Enhanced the output of the AML debugger "dump namespace" command
18687to output in a more human-readable form.
18688
18689Current core subsystem library code sizes are shown below.  These
18690
18691are the code and data sizes for the acpica.lib produced by the
18692Microsoft Visual C++ 6.0 compiler, and these values do not include
18693any ACPI driver or OSPM code.  The debug version of the code
18694includes the full debug trace mechanism -- leading to a much
18695
18696larger code and data size.  Note that these values will vary
18697depending on the efficiency of the compiler and the compiler
18698options used during generation.
18699
18700     Previous Label (09_20_01):
18701     Non-Debug Version:    65K Code,     5K Data,     70K Total
18702     Debug Version:       138K Code,    58K Data,    196K Total
18703
18704     This Label:
18705
18706     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18707     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18708
18709Linux:
18710
18711Implemented a "Bad BIOS Blacklist" to track machines that have
18712known ASL/AML problems.
18713
18714Enhanced the /proc interface for the thermal zone driver and added
18715support for _HOT (the critical suspend trip point).  The 'info'
18716file now includes threshold/policy information, and allows setting
18717of _SCP (cooling preference) and _TZP (polling frequency) values
18718to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18719frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18720preference to the passive/quiet mode (if supported by the ASL).
18721
18722Implemented a workaround for a gcc bug that resuted in an OOPs
18723when loading the control method battery driver.
18724
18725 ----------------------------------------
18726Summary of changes for this label: 09_20_01
18727
18728 ACPI CA Core Subsystem:
18729
18730The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18731modified to allow individual GPE levels to be flagged as wake-
18732enabled (i.e., these GPEs are to remain enabled when the platform
18733sleeps.)
18734
18735The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18736support wake-enabled GPEs.  This means that upon entering the
18737sleep state, all GPEs that are not wake-enabled are disabled.
18738When leaving the sleep state, these GPEs are re-enabled.
18739
18740A local double-precision divide/modulo module has been added to
18741enhance portability to OS kernels where a 64-bit math library is
18742not available.  The new module is "utmath.c".
18743
18744Several optimizations have been made to reduce the use of CPU
18745stack.  Originally over 2K, the maximum stack usage is now below
187462K at 1860  bytes (1.82k)
18747
18748Fixed a problem with the AcpiGetFirmwareTable interface where the
18749root table pointer was not mapped into a logical address properly.
18750
18751Fixed a problem where a NULL pointer was being dereferenced in the
18752interpreter code for the ASL Notify operator.
18753
18754Fixed a problem where the use of the ASL Revision operator
18755returned an error. This operator now returns the current version
18756of the ACPI CA core subsystem.
18757
18758Fixed a problem where objects passed as control method parameters
18759to AcpiEvaluateObject were always deleted at method termination.
18760However, these objects may end up being stored into the namespace
18761by the called method.  The object reference count mechanism was
18762applied to these objects instead of a force delete.
18763
18764Fixed a problem where static strings or buffers (contained in the
18765AML code) that are declared as package elements within the ASL
18766code could cause a fault because the interpreter would attempt to
18767delete them.  These objects are now marked with the "static
18768object" flag to prevent any attempt to delete them.
18769
18770Implemented an interpreter optimization to use operands directly
18771from the state object instead of extracting the operands to local
18772variables.  This reduces stack use and code size, and improves
18773performance.
18774
18775The module exxface.c was eliminated as it was an unnecessary extra
18776layer of code.
18777
18778Current core subsystem library code sizes are shown below.  These
18779are the code and data sizes for the acpica.lib produced by the
18780Microsoft Visual C++ 6.0 compiler, and these values do not include
18781any ACPI driver or OSPM code.  The debug version of the code
18782includes the full debug trace mechanism -- leading to a much
18783larger code and data size.  Note that these values will vary
18784depending on the efficiency of the compiler and the compiler
18785options used during generation.
18786
18787  Non-Debug Version:  65K Code,   5K Data,   70K Total
18788(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
18789Total  (Previously 195K)
18790
18791Linux:
18792
18793Support for ACPI 2.0 64-bit integers has been added.   All ACPI
18794Integer objects are now 64 bits wide
18795
18796All Acpi data types and structures are now in lower case.  Only
18797Acpi macros are upper case for differentiation.
18798
18799 Documentation:
18800
18801Changes to the external interfaces as described above.
18802
18803 ----------------------------------------
18804Summary of changes for this label: 08_31_01
18805
18806 ACPI CA Core Subsystem:
18807
18808A bug with interpreter implementation of the ASL Divide operator
18809was found and fixed.  The implicit function return value (not the
18810explicit store operands) was returning the remainder instead of
18811the quotient.  This was a longstanding bug and it fixes several
18812known outstanding issues on various platforms.
18813
18814The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18815been further optimized for size.  There are 700 invocations of the
18816DEBUG_PRINT macro alone, so each optimization reduces the size of
18817the debug version of the subsystem significantly.
18818
18819A stack trace mechanism has been implemented.  The maximum stack
18820usage is about 2K on 32-bit platforms.  The debugger command "stat
18821stack" will display the current maximum stack usage.
18822
18823All public symbols and global variables within the subsystem are
18824now prefixed with the string "Acpi".  This keeps all of the
18825symbols grouped together in a kernel map, and avoids conflicts
18826with other kernel subsystems.
18827
18828Most of the internal fixed lookup tables have been moved into the
18829code segment via the const operator.
18830
18831Several enhancements have been made to the interpreter to both
18832reduce the code size and improve performance.
18833
18834Current core subsystem library code sizes are shown below.  These
18835are the code and data sizes for the acpica.lib produced by the
18836Microsoft Visual C++ 6.0 compiler, and these values do not include
18837any ACPI driver or OSPM code.  The debug version of the code
18838includes the full debug trace mechanism which contains over 700
18839invocations of the DEBUG_PRINT macro, 500 function entry macro
18840invocations, and over 900 function exit macro invocations --
18841leading to a much larger code and data size.  Note that these
18842values will vary depending on the efficiency of the compiler and
18843the compiler options used during generation.
18844
18845        Non-Debug Version:  64K Code,   5K Data,   69K Total
18846Debug Version:     137K Code,  58K Data,  195K Total
18847
18848 Linux:
18849
18850Implemented wbinvd() macro, pending a kernel-wide definition.
18851
18852Fixed /proc/acpi/event to handle poll() and short reads.
18853
18854 ASL Compiler, version X2026:
18855
18856Fixed a problem introduced in the previous label where the AML
18857
18858code emitted for package objects produced packages with zero
18859length.
18860
18861 ----------------------------------------
18862Summary of changes for this label: 08_16_01
18863
18864ACPI CA Core Subsystem:
18865
18866The following ACPI 2.0 ASL operators have been implemented in the
18867AML interpreter (These are already supported by the Intel ASL
18868compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18869ToBuffer.  Support for 64-bit AML constants is implemented in the
18870AML parser, debugger, and disassembler.
18871
18872The internal memory tracking mechanism (leak detection code) has
18873been upgraded to reduce the memory overhead (a separate tracking
18874block is no longer allocated for each memory allocation), and now
18875supports all of the internal object caches.
18876
18877The data structures and code for the internal object caches have
18878been coelesced and optimized so that there is a single cache and
18879memory list data structure and a single group of functions that
18880implement generic cache management.  This has reduced the code
18881size in both the debug and release versions of the subsystem.
18882
18883The DEBUG_PRINT macro(s) have been optimized for size and replaced
18884by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
18885different, because it generates a single call to an internal
18886function.  This results in a savings of about 90 bytes per
18887invocation, resulting in an overall code and data savings of about
1888816% in the debug version of the subsystem.
18889
18890 Linux:
18891
18892Fixed C3 disk corruption problems and re-enabled C3 on supporting
18893machines.
18894
18895Integrated low-level sleep code by Patrick Mochel.
18896
18897Further tweaked source code Linuxization.
18898
18899Other minor fixes.
18900
18901 ASL Compiler:
18902
18903Support for ACPI 2.0 variable length packages is fixed/completed.
18904
18905Fixed a problem where the optional length parameter for the ACPI
189062.0 ToString operator.
18907
18908Fixed multiple extraneous error messages when a syntax error is
18909detected within the declaration line of a control method.
18910
18911 ----------------------------------------
18912Summary of changes for this label: 07_17_01
18913
18914ACPI CA Core Subsystem:
18915
18916Added a new interface named AcpiGetFirmwareTable to obtain any
18917ACPI table via the ACPI signature.  The interface can be called at
18918any time during kernel initialization, even before the kernel
18919virtual memory manager is initialized and paging is enabled.  This
18920allows kernel subsystems to obtain ACPI tables very early, even
18921before the ACPI CA subsystem is initialized.
18922
18923Fixed a problem where Fields defined with the AnyAcc attribute
18924could be resolved to the incorrect address under the following
18925conditions: 1) the field width is larger than 8 bits and 2) the
18926parent operation region is not defined on a DWORD boundary.
18927
18928Fixed a problem where the interpreter is not being locked during
18929namespace initialization (during execution of the _INI control
18930methods), causing an error when an attempt is made to release it
18931later.
18932
18933ACPI 2.0 support in the AML Interpreter has begun and will be
18934ongoing throughout the rest of this year.  In this label, The Mod
18935operator is implemented.
18936
18937Added a new data type to contain full PCI addresses named
18938ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18939and Function values.
18940
18941 Linux:
18942
18943Enhanced the Linux version of the source code to change most
18944capitalized ACPI type names to lowercase. For example, all
18945instances of ACPI_STATUS are changed to acpi_status.  This will
18946result in a large diff, but the change is strictly cosmetic and
18947aligns the CA code closer to the Linux coding standard.
18948
18949OSL Interfaces:
18950
18951The interfaces to the PCI configuration space have been changed to
18952add the PCI Segment number and to split the single 32-bit combined
18953DeviceFunction field into two 16-bit fields.  This was
18954accomplished by moving the four values that define an address in
18955PCI configuration space (segment, bus, device, and function) to
18956the new ACPI_PCI_ID structure.
18957
18958The changes to the PCI configuration space interfaces led to a
18959reexamination of the complete set of address space access
18960interfaces for PCI, I/O, and Memory.  The previously existing 18
18961interfaces have proven difficult to maintain (any small change
18962must be propagated across at least 6 interfaces) and do not easily
18963allow for future expansion to 64 bits if necessary.  Also, on some
18964systems, it would not be appropriate to demultiplex the access
18965width (8, 16, 32,or 64) before calling the OSL if the
18966corresponding native OS interfaces contain a similar access width
18967parameter.  For these reasons, the 18 address space interfaces
18968have been replaced by these 6 new ones:
18969
18970AcpiOsReadPciConfiguration
18971AcpiOsWritePciConfiguration
18972AcpiOsReadMemory
18973AcpiOsWriteMemory
18974AcpiOsReadPort
18975AcpiOsWritePort
18976
18977Added a new interface named AcpiOsGetRootPointer to allow the OSL
18978to perform the platform and/or OS-specific actions necessary to
18979obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
18980interface will simply call down to the CA core to perform the low-
18981memory search for the table.  On IA-64, the RSDP is obtained from
18982EFI.  Migrating this interface to the OSL allows the CA core to
18983
18984remain OS and platform independent.
18985
18986Added a new interface named AcpiOsSignal to provide a generic
18987"function code and pointer" interface for various miscellaneous
18988signals and notifications that must be made to the host OS.   The
18989first such signals are intended to support the ASL Fatal and
18990Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
18991interface has been obsoleted.
18992
18993The definition of the AcpiFormatException interface has been
18994changed to simplify its use.  The caller no longer must supply a
18995buffer to the call; A pointer to a const string is now returned
18996directly.  This allows the call to be easily used in printf
18997statements, etc. since the caller does not have to manage a local
18998buffer.
18999
19000
19001 ASL Compiler, Version X2025:
19002
19003The ACPI 2.0 Switch/Case/Default operators have been implemented
19004and are fully functional.  They will work with all ACPI 1.0
19005interpreters, since the operators are simply translated to If/Else
19006pairs.
19007
19008The ACPI 2.0 ElseIf operator is implemented and will also work
19009with 1.0 interpreters, for the same reason.
19010
19011Implemented support for ACPI 2.0 variable-length packages.  These
19012packages have a separate opcode, and their size is determined by
19013the interpreter at run-time.
19014
19015Documentation The ACPI CA Programmer Reference has been updated to
19016reflect the new interfaces and changes to existing interfaces.
19017
19018 ------------------------------------------
19019Summary of changes for this label: 06_15_01
19020
19021 ACPI CA Core Subsystem:
19022
19023Fixed a problem where a DWORD-accessed field within a Buffer
19024object would get its byte address inadvertently rounded down to
19025the nearest DWORD.  Buffers are always Byte-accessible.
19026
19027 ASL Compiler, version X2024:
19028
19029Fixed a problem where the Switch() operator would either fault or
19030hang the compiler.  Note however, that the AML code for this ACPI
190312.0 operator is not yet implemented.
19032
19033Compiler uses the new AcpiOsGetTimer interface to obtain compile
19034timings.
19035
19036Implementation of the CreateField operator automatically converts
19037a reference to a named field within a resource descriptor from a
19038byte offset to a bit offset if required.
19039
19040Added some missing named fields from the resource descriptor
19041support. These are the names that are automatically created by the
19042compiler to reference fields within a descriptor.  They are only
19043valid at compile time and are not passed through to the AML
19044interpreter.
19045
19046Resource descriptor named fields are now typed as Integers and
19047subject to compile-time typechecking when used in expressions.
19048
19049 ------------------------------------------
19050Summary of changes for this label: 05_18_01
19051
19052 ACPI CA Core Subsystem:
19053
19054Fixed a couple of problems in the Field support code where bits
19055from adjacent fields could be returned along with the proper field
19056bits. Restructured the field support code to improve performance,
19057readability and maintainability.
19058
19059New DEBUG_PRINTP macro automatically inserts the procedure name
19060into the output, saving hundreds of copies of procedure name
19061strings within the source, shrinking the memory footprint of the
19062debug version of the core subsystem.
19063
19064 Source Code Structure:
19065
19066The source code directory tree was restructured to reflect the
19067current organization of the component architecture.  Some files
19068and directories have been moved and/or renamed.
19069
19070 Linux:
19071
19072Fixed leaking kacpidpc processes.
19073
19074Fixed queueing event data even when /proc/acpi/event is not
19075opened.
19076
19077 ASL Compiler, version X2020:
19078
19079Memory allocation performance enhancement - over 24X compile time
19080improvement on large ASL files.  Parse nodes and namestring
19081buffers are now allocated from a large internal compiler buffer.
19082
19083The temporary .SRC file is deleted unless the "-s" option is
19084specified
19085
19086The "-d" debug output option now sends all output to the .DBG file
19087instead of the console.
19088
19089"External" second parameter is now optional
19090
19091"ElseIf" syntax now properly allows the predicate
19092
19093Last operand to "Load" now recognized as a Target operand
19094
19095Debug object can now be used anywhere as a normal object.
19096
19097ResourceTemplate now returns an object of type BUFFER
19098
19099EISAID now returns an object of type INTEGER
19100
19101"Index" now works with a STRING operand
19102
19103"LoadTable" now accepts optional parameters
19104
19105"ToString" length parameter is now optional
19106
19107"Interrupt (ResourceType," parse error fixed.
19108
19109"Register" with a user-defined region space parse error fixed
19110
19111Escaped backslash at the end of a string ("\\") scan/parse error
19112fixed
19113
19114"Revision" is now an object of type INTEGER.
19115
19116
19117
19118------------------------------------------
19119Summary of changes for this label: 05_02_01
19120
19121Linux:
19122
19123/proc/acpi/event now blocks properly.
19124
19125Removed /proc/sys/acpi. You can still dump your DSDT from
19126/proc/acpi/dsdt.
19127
19128 ACPI CA Core Subsystem:
19129
19130Fixed a problem introduced in the previous label where some of the
19131"small" resource descriptor types were not recognized.
19132
19133Improved error messages for the case where an ASL Field is outside
19134the range of the parent operation region.
19135
19136 ASL Compiler, version X2018:
19137
19138
19139Added error detection for ASL Fields that extend beyond the length
19140of the parent operation region (only if the length of the region
19141is known at compile time.)  This includes fields that have a
19142minimum access width that is smaller than the parent region, and
19143individual field units that are partially or entirely beyond the
19144extent of the parent.
19145
19146
19147
19148------------------------------------------
19149Summary of changes for this label: 04_27_01
19150
19151 ACPI CA Core Subsystem:
19152
19153Fixed a problem where the namespace mutex could be released at the
19154wrong time during execution of AcpiRemoveAddressSpaceHandler.
19155
19156Added optional thread ID output for debug traces, to simplify
19157debugging of multiple threads.  Added context switch notification
19158when the debug code realizes that a different thread is now
19159executing ACPI code.
19160
19161Some additional external data types have been prefixed with the
19162string "ACPI_" for consistency.  This may effect existing code.
19163The data types affected are the external callback typedefs - e.g.,
19164
19165WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
19166
19167 Linux:
19168
19169Fixed an issue with the OSL semaphore implementation where a
19170thread was waking up with an error from receiving a SIGCHLD
19171signal.
19172
19173Linux version of ACPI CA now uses the system C library for string
19174manipulation routines instead of a local implementation.
19175
19176Cleaned up comments and removed TBDs.
19177
19178 ASL Compiler, version X2017:
19179
19180Enhanced error detection and reporting for all file I/O
19181operations.
19182
19183 Documentation:
19184
19185Programmer Reference updated to version 1.06.
19186
19187
19188
19189------------------------------------------
19190Summary of changes for this label: 04_13_01
19191
19192 ACPI CA Core Subsystem:
19193
19194Restructured support for BufferFields and RegionFields.
19195BankFields support is now fully operational.  All known 32-bit
19196limitations on field sizes have been removed.  Both BufferFields
19197and (Operation) RegionFields are now supported by the same field
19198management code.
19199
19200Resource support now supports QWORD address and IO resources. The
1920116/32/64 bit address structures and the Extended IRQ structure
19202have been changed to properly handle Source Resource strings.
19203
19204A ThreadId of -1 is now used to indicate a "mutex not acquired"
19205condition internally and must never be returned by AcpiOsThreadId.
19206This reserved value was changed from 0 since Unix systems allow a
19207thread ID of 0.
19208
19209Linux:
19210
19211Driver code reorganized to enhance portability
19212
19213Added a kernel configuration option to control ACPI_DEBUG
19214
19215Fixed the EC driver to honor _GLK.
19216
19217ASL Compiler, version X2016:
19218
19219Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
19220address space was set to 0, not 0x7f as it should be.
19221
19222 ------------------------------------------
19223Summary of changes for this label: 03_13_01
19224
19225 ACPI CA Core Subsystem:
19226
19227During ACPI initialization, the _SB_._INI method is now run if
19228present.
19229
19230Notify handler fix - notifies are deferred until the parent method
19231completes execution.  This fixes the "mutex already acquired"
19232issue seen occasionally.
19233
19234Part of the "implicit conversion" rules in ACPI 2.0 have been
19235found to cause compatibility problems with existing ASL/AML.  The
19236convert "result-to-target-type" implementation has been removed
19237for stores to method Args and Locals.  Source operand conversion
19238is still fully implemented.  Possible changes to ACPI 2.0
19239specification pending.
19240
19241Fix to AcpiRsCalculatePciRoutingTableLength to return correct
19242length.
19243
19244Fix for compiler warnings for 64-bit compiles.
19245
19246 Linux:
19247
19248/proc output aligned for easier parsing.
19249
19250Release-version compile problem fixed.
19251
19252New kernel configuration options documented in Configure.help.
19253
19254IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
19255context" message.
19256
19257 OSPM:
19258
19259Power resource driver integrated with bus manager.
19260
19261Fixed kernel fault during active cooling for thermal zones.
19262
19263Source Code:
19264
19265The source code tree has been restructured.
19266
19267
19268
19269------------------------------------------
19270Summary of changes for this label: 03_02_01
19271
19272 Linux OS Services Layer (OSL):
19273
19274Major revision of all Linux-specific code.
19275
19276Modularized all ACPI-specific drivers.
19277
19278Added new thermal zone and power resource drivers.
19279
19280Revamped /proc interface (new functionality is under /proc/acpi).
19281
19282New kernel configuration options.
19283
19284 Linux known issues:
19285
19286New kernel configuration options not documented in Configure.help
19287yet.
19288
19289
19290Module dependencies not currently implemented. If used, they
19291should be loaded in this order: busmgr, power, ec, system,
19292processor, battery, ac_adapter, button, thermal.
19293
19294Modules will not load if CONFIG_MODVERSION is set.
19295
19296IBM 600E - entering S5 may reboot instead of shutting down.
19297
19298IBM 600E - Sleep button may generate "Invalid <NULL> context"
19299message.
19300
19301Some systems may fail with "execution mutex already acquired"
19302message.
19303
19304 ACPI CA Core Subsystem:
19305
19306Added a new OSL Interface, AcpiOsGetThreadId.  This was required
19307for the  deadlock detection code. Defined to return a non-zero, 32-
19308bit thread ID for the currently executing thread.  May be a non-
19309zero constant integer on single-thread systems.
19310
19311Implemented deadlock detection for internal subsystem mutexes.  We
19312may add conditional compilation for this code (debug only) later.
19313
19314ASL/AML Mutex object semantics are now fully supported.  This
19315includes multiple acquires/releases by owner and support for the
19316
19317Mutex SyncLevel parameter.
19318
19319A new "Force Release" mechanism automatically frees all ASL
19320Mutexes that have been acquired but not released when a thread
19321exits the interpreter.  This forces conformance to the ACPI spec
19322("All mutexes must be released when an invocation exits") and
19323prevents deadlocked ASL threads.  This mechanism can be expanded
19324(later) to monitor other resource acquisitions if OEM ASL code
19325continues to misbehave (which it will).
19326
19327Several new ACPI exception codes have been added for the Mutex
19328support.
19329
19330Recursive method calls are now allowed and supported (the ACPI
19331spec does in fact allow recursive method calls.)  The number of
19332recursive calls is subject to the restrictions imposed by the
19333SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
19334parameter.
19335
19336Implemented support for the SyncLevel parameter for control
19337methods (ACPI 2.0 feature)
19338
19339Fixed a deadlock problem when multiple threads attempted to use
19340the interpreter.
19341
19342Fixed a problem where the string length of a String package
19343element was not always set in a package returned from
19344AcpiEvaluateObject.
19345
19346Fixed a problem where the length of a String package element was
19347not always included in the length of the overall package returned
19348from AcpiEvaluateObject.
19349
19350Added external interfaces (Acpi*) to the ACPI debug memory
19351manager.  This manager keeps a list of all outstanding
19352allocations, and can therefore detect memory leaks and attempts to
19353free memory blocks more than once. Useful for code such as the
19354power manager, etc.  May not be appropriate for device drivers.
19355Performance with the debug code enabled is slow.
19356
19357The ACPI Global Lock is now an optional hardware element.
19358
19359 ASL Compiler Version X2015:
19360
19361Integrated changes to allow the compiler to be generated on
19362multiple platforms.
19363
19364Linux makefile added to generate the compiler on Linux
19365
19366 Source Code:
19367
19368All platform-specific headers have been moved to their own
19369subdirectory, Include/Platform.
19370
19371New source file added, Interpreter/ammutex.c
19372
19373New header file, Include/acstruct.h
19374
19375 Documentation:
19376
19377The programmer reference has been updated for the following new
19378interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
19379
19380 ------------------------------------------
19381Summary of changes for this label: 02_08_01
19382
19383Core ACPI CA Subsystem: Fixed a problem where an error was
19384incorrectly returned if the return resource buffer was larger than
19385the actual data (in the resource interfaces).
19386
19387References to named objects within packages are resolved to the
19388
19389full pathname string before packages are returned directly (via
19390the AcpiEvaluateObject interface) or indirectly via the resource
19391interfaces.
19392
19393Linux OS Services Layer (OSL):
19394
19395Improved /proc battery interface.
19396
19397
19398Added C-state debugging output and other miscellaneous fixes.
19399
19400ASL Compiler Version X2014:
19401
19402All defined method arguments can now be used as local variables,
19403including the ones that are not actually passed in as parameters.
19404The compiler tracks initialization of the arguments and issues an
19405exception if they are used without prior assignment (just like
19406locals).
19407
19408The -o option now specifies a filename prefix that is used for all
19409output files, including the AML output file.  Otherwise, the
19410default behavior is as follows:  1) the AML goes to the file
19411specified in the DSDT.  2) all other output files use the input
19412source filename as the base.
19413
19414 ------------------------------------------
19415Summary of changes for this label: 01_25_01
19416
19417Core ACPI CA Subsystem: Restructured the implementation of object
19418store support within the  interpreter.  This includes support for
19419the Store operator as well  as any ASL operators that include a
19420target operand.
19421
19422Partially implemented support for Implicit Result-to-Target
19423conversion. This is when a result object is converted on the fly
19424to the type of  an existing target object.  Completion of this
19425support is pending  further analysis of the ACPI specification
19426concerning this matter.
19427
19428CPU-specific code has been removed from the subsystem (hardware
19429directory).
19430
19431New Power Management Timer functions added
19432
19433Linux OS Services Layer (OSL): Moved system state transition code
19434to the core, fixed it, and modified  Linux OSL accordingly.
19435
19436Fixed C2 and C3 latency calculations.
19437
19438
19439We no longer use the compilation date for the version message on
19440initialization, but retrieve the version from AcpiGetSystemInfo().
19441
19442Incorporated for fix Sony VAIO machines.
19443
19444Documentation:  The Programmer Reference has been updated and
19445reformatted.
19446
19447
19448ASL Compiler:  Version X2013: Fixed a problem where the line
19449numbering and error reporting could get out  of sync in the
19450presence of multiple include files.
19451
19452 ------------------------------------------
19453Summary of changes for this label: 01_15_01
19454
19455Core ACPI CA Subsystem:
19456
19457Implemented support for type conversions in the execution of the
19458ASL  Concatenate operator (The second operand is converted to
19459match the type  of the first operand before concatenation.)
19460
19461Support for implicit source operand conversion is partially
19462implemented.   The ASL source operand types Integer, Buffer, and
19463String are freely  interchangeable for most ASL operators and are
19464converted by the interpreter  on the fly as required.  Implicit
19465Target operand conversion (where the  result is converted to the
19466target type before storing) is not yet implemented.
19467
19468Support for 32-bit and 64-bit BCD integers is implemented.
19469
19470Problem fixed where a field read on an aligned field could cause a
19471read  past the end of the field.
19472
19473New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
19474does not return a value, but the caller expects one.  (The ASL
19475compiler flags this as a warning.)
19476
19477ASL Compiler:
19478
19479Version X2011:
194801. Static typechecking of all operands is implemented. This
19481prevents the use of invalid objects (such as using a Package where
19482an Integer is required) at compile time instead of at interpreter
19483run-time.
194842. The ASL source line is printed with ALL errors and warnings.
194853. Bug fix for source EOF without final linefeed.
194864. Debug option is split into a parse trace and a namespace trace.
194875. Namespace output option (-n) includes initial values for
19488integers and strings.
194896. Parse-only option added for quick syntax checking.
194907. Compiler checks for duplicate ACPI name declarations
19491
19492Version X2012:
194931. Relaxed typechecking to allow interchangeability between
19494strings, integers, and buffers.  These types are now converted by
19495the interpreter at runtime.
194962. Compiler reports time taken by each internal subsystem in the
19497debug         output file.
19498
19499
19500 ------------------------------------------
19501Summary of changes for this label: 12_14_00
19502
19503ASL Compiler:
19504
19505This is the first official release of the compiler. Since the
19506compiler requires elements of the Core Subsystem, this label
19507synchronizes everything.
19508
19509------------------------------------------
19510Summary of changes for this label: 12_08_00
19511
19512
19513Fixed a problem where named references within the ASL definition
19514of both OperationRegions and CreateXXXFields did not work
19515properly.  The symptom was an AE_AML_OPERAND_TYPE during
19516initialization of the region/field. This is similar (but not
19517related internally) to the problem that was fixed in the last
19518label.
19519
19520Implemented both 32-bit and 64-bit support for the BCD ASL
19521functions ToBCD and FromBCD.
19522
19523Updated all legal headers to include "2000" in the copyright
19524years.
19525
19526 ------------------------------------------
19527Summary of changes for this label: 12_01_00
19528
19529Fixed a problem where method invocations within the ASL definition
19530of both OperationRegions and CreateXXXFields did not work
19531properly.  The symptom was an AE_AML_OPERAND_TYPE during
19532initialization of the region/field:
19533
19534  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
19535[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
19536(0x3005)
19537
19538Fixed a problem where operators with more than one nested
19539subexpression would fail.  The symptoms were varied, by mostly
19540AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
19541problem that has gone unnoticed until now.
19542
19543  Subtract (Add (1,2), Multiply (3,4))
19544
19545Fixed a problem where AcpiGetHandle didn't quite get fixed in the
19546previous build (The prefix part of a relative path was handled
19547incorrectly).
19548
19549Fixed a problem where Operation Region initialization failed if
19550the operation region name was a "namepath" instead of a simple
19551"nameseg". Symptom was an AE_NO_OPERAND error.
19552
19553Fixed a problem where an assignment to a local variable via the
19554indirect RefOf mechanism only worked for the first such
19555assignment.  Subsequent assignments were ignored.
19556
19557 ------------------------------------------
19558Summary of changes for this label: 11_15_00
19559
19560ACPI 2.0 table support with backwards support for ACPI 1.0 and the
195610.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
19562the AML  interpreter does NOT have support for the new 2.0 ASL
19563grammar terms at this time.
19564
19565All ACPI hardware access is via the GAS structures in the ACPI 2.0
19566FADT.
19567
19568All physical memory addresses across all platforms are now 64 bits
19569wide. Logical address width remains dependent on the platform
19570(i.e., "void *").
19571
19572AcpiOsMapMemory interface changed to a 64-bit physical address.
19573
19574The AML interpreter integer size is now 64 bits, as per the ACPI
195752.0 specification.
19576
19577For backwards compatibility with ACPI 1.0, ACPI tables with a
19578revision number less than 2 use 32-bit integers only.
19579
19580Fixed a problem where the evaluation of OpRegion operands did not
19581always resolve them to numbers properly.
19582
19583------------------------------------------
19584Summary of changes for this label: 10_20_00
19585
19586Fix for CBN_._STA issue.  This fix will allow correct access to
19587CBN_ OpRegions when the _STA returns 0x8.
19588
19589Support to convert ACPI constants (Ones, Zeros, One) to actual
19590values before a package object is returned
19591
19592Fix for method call as predicate to if/while construct causing
19593incorrect if/while behavior
19594
19595Fix for Else block package lengths sometimes calculated wrong (if
19596block > 63 bytes)
19597
19598Fix for Processor object length field, was always zero
19599
19600Table load abort if FACP sanity check fails
19601
19602Fix for problem with Scope(name) if name already exists
19603
19604Warning emitted if a named object referenced cannot be found
19605(resolved) during method execution.
19606
19607
19608
19609
19610
19611------------------------------------------
19612Summary of changes for this label: 9_29_00
19613
19614New table initialization interfaces: AcpiInitializeSubsystem no
19615longer has any parameters AcpiFindRootPointer - Find the RSDP (if
19616necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
19617>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
19618AcpiLoadTables
19619
19620Note: These interface changes require changes to all existing OSDs
19621
19622The PCI_Config default address space handler is always installed
19623at the root namespace object.
19624
19625-------------------------------------------
19626Summary of changes for this label: 09_15_00
19627
19628The new initialization architecture is implemented.  New
19629interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
19630AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
19631
19632(Namespace is automatically loaded when a table is loaded)
19633
19634The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1963552 bytes to 32 bytes.  There is usually one of these for every
19636namespace object, so the memory savings is significant.
19637
19638Implemented just-in-time evaluation of the CreateField operators.
19639
19640Bug fixes for IA-64 support have been integrated.
19641
19642Additional code review comments have been implemented
19643
19644The so-called "third pass parse" has been replaced by a final walk
19645through the namespace to initialize all operation regions (address
19646spaces) and fields that have not yet been initialized during the
19647execution of the various _INI and REG methods.
19648
19649New file - namespace/nsinit.c
19650
19651-------------------------------------------
19652Summary of changes for this label: 09_01_00
19653
19654Namespace manager data structures have been reworked to change the
19655primary  object from a table to a single object.  This has
19656resulted in dynamic memory  savings of 3X within the namespace and
196572X overall in the ACPI CA subsystem.
19658
19659Fixed problem where the call to AcpiEvFindPciRootBuses was
19660inadvertently left  commented out.
19661
19662Reduced the warning count when generating the source with the GCC
19663compiler.
19664
19665Revision numbers added to each module header showing the
19666SourceSafe version of the file.  Please refer to this version
19667number when giving us feedback or comments on individual modules.
19668
19669The main object types within the subsystem have been renamed to
19670clarify their  purpose:
19671
19672ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
19673ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
19674ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
19675
19676NOTE: no changes to the initialization sequence are included in
19677this label.
19678
19679-------------------------------------------
19680Summary of changes for this label: 08_23_00
19681
19682Fixed problem where TerminateControlMethod was being called
19683multiple times per  method
19684
19685Fixed debugger problem where single stepping caused a semaphore to
19686be  oversignalled
19687
19688Improved performance through additional parse object caching -
19689added  ACPI_EXTENDED_OP type
19690
19691-------------------------------------------
19692Summary of changes for this label: 08_10_00
19693
19694Parser/Interpreter integration:  Eliminated the creation of
19695complete parse trees  for ACPI tables and control methods.
19696Instead, parse subtrees are created and  then deleted as soon as
19697they are processed (Either entered into the namespace or  executed
19698by the interpreter).  This reduces the use of dynamic kernel
19699memory  significantly. (about 10X)
19700
19701Exception codes broken into classes and renumbered.  Be sure to
19702recompile all  code that includes acexcep.h.  Hopefully we won't
19703have to renumber the codes  again now that they are split into
19704classes (environment, programmer, AML code,  ACPI table, and
19705internal).
19706
19707Fixed some additional alignment issues in the Resource Manager
19708subcomponent
19709
19710Implemented semaphore tracking in the AcpiExec utility, and fixed
19711several places  where mutexes/semaphores were being unlocked
19712without a corresponding lock  operation.  There are no known
19713semaphore or mutex "leaks" at this time.
19714
19715Fixed the case where an ASL Return operator is used to return an
19716unnamed  package.
19717
19718-------------------------------------------
19719Summary of changes for this label: 07_28_00
19720
19721Fixed a problem with the way addresses were calculated in
19722AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
19723manifested itself when a Field was  created with WordAccess or
19724DwordAccess, but the field unit defined within the  Field was less
19725
19726than a Word or Dword.
19727
19728Fixed a problem in AmlDumpOperands() module's loop to pull
19729operands off of the  operand stack to display information. The
19730problem manifested itself as a TLB  error on 64-bit systems when
19731accessing an operand stack with two or more  operands.
19732
19733Fixed a problem with the PCI configuration space handlers where
19734context was  getting confused between accesses. This required a
19735change to the generic address  space handler and address space
19736setup definitions. Handlers now get both a  global handler context
19737(this is the one passed in by the user when executing
19738AcpiInstallAddressSpaceHandler() and a specific region context
19739that is unique to  each region (For example, the _ADR, _SEG and
19740_BBN values associated with a  specific region). The generic
19741function definitions have changed to the  following:
19742
19743typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19744UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19745*HandlerContext, // This used to be void *Context void
19746*RegionContext); // This is an additional parameter
19747
19748typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19749RegionHandle, UINT32 Function, void *HandlerContext,  void
19750**RegionContext); // This used to be **ReturnContext
19751
19752-------------------------------------------
19753Summary of changes for this label: 07_21_00
19754
19755Major file consolidation and rename.  All files within the
19756interpreter have been  renamed as well as most header files.  This
19757was done to prevent collisions with  existing files in the host
19758OSs -- filenames such as "config.h" and "global.h"  seem to be
19759quite common.  The VC project files have been updated.  All
19760makefiles  will require modification.
19761
19762The parser/interpreter integration continues in Phase 5 with the
19763implementation  of a complete 2-pass parse (the AML is parsed
19764twice) for each table;  This  avoids the construction of a huge
19765parse tree and therefore reduces the amount of  dynamic memory
19766required by the subsystem.  Greater use of the parse object cache
19767means that performance is unaffected.
19768
19769Many comments from the two code reviews have been rolled in.
19770
19771The 64-bit alignment support is complete.
19772
19773-------------------------------------------
19774Summary of changes for this label: 06_30_00
19775
19776With a nod and a tip of the hat to the technology of yesteryear,
19777we've added  support in the source code for 80 column output
19778devices.  The code is now mostly  constrained to 80 columns or
19779less to support environments and editors that 1)  cannot display
19780or print more than 80 characters on a single line, and 2) cannot
19781disable line wrapping.
19782
19783A major restructuring of the namespace data structure has been
19784completed.  The  result is 1) cleaner and more
19785understandable/maintainable code, and 2) a  significant reduction
19786in the dynamic memory requirement for each named ACPI  object
19787(almost half).
19788
19789-------------------------------------------
19790Summary of changes for this label: 06_23_00
19791
19792Linux support has been added.  In order to obtain approval to get
19793the ACPI CA  subsystem into the Linux kernel, we've had to make
19794quite a few changes to the  base subsystem that will affect all
19795users (all the changes are generic and OS- independent).  The
19796effects of these global changes have been somewhat far  reaching.
19797Files have been merged and/or renamed and interfaces have been
19798renamed.   The major changes are described below.
19799
19800Osd* interfaces renamed to AcpiOs* to eliminate namespace
19801pollution/confusion  within our target kernels.  All OSD
19802interfaces must be modified to match the new  naming convention.
19803
19804Files merged across the subsystem.  A number of the smaller source
19805and header  files have been merged to reduce the file count and
19806increase the density of the  existing files.  There are too many
19807to list here.  In general, makefiles that  call out individual
19808files will require rebuilding.
19809
19810Interpreter files renamed.  All interpreter files now have the
19811prefix am*  instead of ie* and is*.
19812
19813Header files renamed:  The acapi.h file is now acpixf.h.  The
19814acpiosd.h file is  now acpiosxf.h.  We are removing references to
19815the acronym "API" since it is  somewhat windowsy. The new name is
19816"external interface" or xface or xf in the  filenames.j
19817
19818
19819All manifest constants have been forced to upper case (some were
19820mixed case.)   Also, the string "ACPI_" has been prepended to many
19821(not all) of the constants,  typedefs, and structs.
19822
19823The globals "DebugLevel" and "DebugLayer" have been renamed
19824"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
19825
19826All other globals within the subsystem are now prefixed with
19827"AcpiGbl_" Internal procedures within the subsystem are now
19828prefixed with "Acpi" (with only  a few exceptions).  The original
19829two-letter abbreviation for the subcomponent  remains after "Acpi"
19830- for example, CmCallocate became AcpiCmCallocate.
19831
19832Added a source code translation/conversion utility.  Used to
19833generate the Linux  source code, it can be modified to generate
19834other types of source as well. Can  also be used to cleanup
19835existing source by removing extraneous spaces and blank  lines.
19836Found in tools/acpisrc/*
19837
19838OsdUnMapMemory was renamed to OsdUnmapMemory and then
19839AcpiOsUnmapMemory.  (UnMap  became Unmap).
19840
19841A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19842When set to  one, this indicates that the caller wants to use the
19843
19844semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
19845both types.  However, implementers of this  call may want to use
19846different OS primitives depending on the type of semaphore
19847requested.  For example, some operating systems provide separate
19848
19849"mutex" and  "semaphore" interfaces - where the mutex interface is
19850much faster because it  doesn't have all the overhead of a full
19851semaphore implementation.
19852
19853Fixed a deadlock problem where a method that accesses the PCI
19854address space can  block forever if it is the first access to the
19855space.
19856
19857-------------------------------------------
19858Summary of changes for this label: 06_02_00
19859
19860Support for environments that cannot handle unaligned data
19861accesses (e.g.  firmware and OS environments devoid of alignment
19862handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19863been added (via configurable macros) in  these three areas: -
19864Transfer of data from the raw AML byte stream is done via byte
19865moves instead of    word/dword/qword moves. - External objects are
19866aligned within the user buffer, including package   elements (sub-
19867objects). - Conversion of name strings to UINT32 Acpi Names is now
19868done byte-wise.
19869
19870The Store operator was modified to mimic Microsoft's
19871implementation when storing  to a Buffer Field.
19872
19873Added a check of the BM_STS bit before entering C3.
19874
19875The methods subdirectory has been obsoleted and removed.  A new
19876file, cmeval.c  subsumes the functionality.
19877
19878A 16-bit (DOS) version of AcpiExec has been developed.  The
19879makefile is under  the acpiexec directory.
19880