1----------------------------------------
228 June 2023. Summary of changes for version 20230628:
3
40) Global changes:
5
6Fixed 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.
7
8Added 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.
9
10Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5.
11
121) ACPICA kernel-resident subsystem:
13
14Added port definitions for CDAT SSLBIS. Add upstream port and any port definitions for SSLBIS. Reported by: Dave Jiang dave.jiang@intel.com.
15
16Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang dave.jiang@intel.com.
17
181) ACPICA kernel-resident subsystem:
19
20Fix 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.
21
22Also, 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.
23
242) iASL Compiler/Disassembler and ACPICA tools:.
25
26IASL/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.
27
28AcpiExec: 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.
29
30AcpiExec: 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.
31----------------------------------------
3231 March 2023. Summary of changes for version 20230331:
33
34This release is available at https://acpica.org/downloads
35
360) Global changes:
37
38
39Update all copyright notices to the year 2023. This effects all source
40modules, as well as utility signons.
41Add OS-specific support for Zephyr RTOS.
42Fix miscellaneous code that accesses various objects.
43Remove some dead code.
44Add C ?Flexible Array? support.
45Add support for 64 bit LoongArch compilation.
46Add first batch of RISC-V related definitions.
47Performed a global automated update to remove tabs, fix indentation
48issues, etc.
49
501) ACPICA kernel-resident subsystem:
51
52hwvalid: Drop port I/O validation.
53
542) ACPICA tools and utilities:
55
56iASL: Added full macro support in the preprocessor. Example:
57#define ABCD(a,b,c,d) a+b+c-d
58
59Known macro support limitations (at this time):
60	No support for multi-line #define macros (backslash continuation
61lines)
62	No support for the C-style ternary operator
63	No support for the stringizing operator (#)
64	No support for the concatenation (token pasting) operator (##)
65	No support for variable number of macro arguments
66
67Add support for AMD Secure Processor Table (ASPT) version 1.
68Add support for Arm's MPAM ACPI table version 2.
69ACPI 6.5: MADT: add support for trace buffer extension in GICC.
70Headers: Delete bogus NodeArray array of pointers from AEST table.
71PHAT table support is still ongoing.
72
73
74----------------------------------------
7520 October 2022. Summary of changes for version 20221020:
76
77This release is available at https://acpica.org/downloads
78
790) Global changes:
80
81Allow disabling of -Werror. For distro maintainers having `-Werror` can
82delay update of GCC. Since every GCC release might add new warnings that
83were not yet captured, it might break the build of packages. With this
84change, distros can now build with `NOWERROR=TRUE` instead of patching
85either the errors or the makefiles. The default behavior keeps on using
86`-Werror`.
87
881) ACPICA kernel-resident subsystem:
89
90Added support for FFH Operation Region special context data. FFH(Fixed
91Function Hardware) Opregion is approved to be added in ACPI 6.5 via code
92first approach[1]. It requires special context data similar to GPIO and
93Generic Serial Bus as it needs to know platform specific offset and
94length.
95
96Reverted this commit "executer/exsystem: Warn about sleeps greater than
9710 ms." Due to user complaints about valid sleeps greater than 10ms seen
98in some existing machines -- generating lots of warnings.
99
100Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that
101EBDA region must be at least 1KiB in size. Because this is not
102guaranteed, it might happen that while scanning the memory for RSDP
103pointer, the kernel touches memory above 640KiB. This is unwanted as the
104VGA memory range may not be decoded or even present when running under
105virtualization.
106
107Check that EBDA pointer is in valid memory. If the memory at 0x40e is
108uninitialized, the retrieved physical memory address of EBDA may be
109beyond the low memory (i.e. above 640K). If so, the kernel may
110unintentionally access the VGA memory, that might not be decoded or even
111present in case of virtualization.
112
1132) iASL Compiler/Disassembler and ACPICA tools:
114
115Completed the existing partial support for the CDAT "table". Although
116this isn't technically an ACPI table (It doesn't go into the XSDT), it is
117possible to support this table in the Data Table compiler. Created one
118new file, "utilities/utcksum.c", used to centralize checksum
119generation/validation into one location. Includes changes to makefiles
120and MSVC project files.
121
122Updated support for the IORT table - update to version E.e
123
124Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table
125
126iASL: Added CCEL table to both compiler/disassembler.
127
128iASL: NHLT table: Fixed compilation of optional undocumented fields
129
130iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763
131("iASL: Add CCEL table to both compiler/disassembler") introduced the
132iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL
133table member reference. To fix it,  change ACPI_TDEL_OFFSET with
134ACPI_CCEL_OFFSET.
135
136----------------------------------------
13731 March 2022. Summary of changes for version 20220331:
138
1390) Global changes:
140
141Update all copyright notices to the year 2022. This effects all source
142modules, as well as utility signons.
143
144
1451) ACPICA kernel-resident subsystem:
146
147For the ASL Sleep() operator, issue a warning if the sleep value is
148greater than 10 Milliseconds. Quick boottime is important, so warn about
149sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350
150ms, so excessive delays should be called out. 10 ms is chosen randomly,
151but three of such delays would already make up ten percent of the
152boottime.
153
154Namespace: Avoid attempting to walk the Namespace if the Namespace does
155not exist.
156
157AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the
158LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a
159pass/fail integer. Now load returns a pass/fail integer, as well as
160storing the return value in an optional 2nd argument.
161
162Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid
163"performing pointer subtraction with a null pointer has undefined
164behavior" compiler warnings, use uintptr_t and offsetof() that are always
165available during Linux kernel builds to define ACPI_UINTPTR_T and the
166ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code
167in the Linux kernel.
168
169Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted
170by superm1.
171
172executer/exsystem: Inform users about ACPI spec violation for the Stall()
173operator. Values greater than 100 microseconds violate the ACPI
174specification, so warn users about it. From the ACPI Specification
175version 6.2 Errata A, 19.6.128 *Stall (Stall for a Short Time)*:
176> The implementation of Stall is OS-specific, but must not relinquish
177> control of the processor. Because of this, delays longer than 100
178> microseconds must use Sleep instead of Stall.
179
180
1812) iASL Compiler/Disassembler and ACPICA tools:
182
183Data Table Compiler/Disassembler: Add support for the APMT table - ARM
184Performance Monitoring Unit table. Submitted by @bwicaksononv.
185
186Data Table Compiler/Disassembler: For MADT, add support for the OEM-
187defined subtables (Types 0x80-0x7F).
188
189Data Table Compiler: Fixed a problem with support for the SDEV table,
190where a subtable Length was not computed correctly.
191
192Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT
193Acpi table support.
194
195Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and
196add template. Submitted by MasterDrogo.
197
198Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz:
199iASL/NHLT: Rename linux specific structures to DeviceInfo to improve
200readability of the code.
201iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint.
202Undocumented bytes at the end of Endpoint Descriptor can be present
203independently of Linux-specific structures. Their size can also vary.
204iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4
205bytes of size and then an amount of bytes specified by size. All of the
206terminators that I've seen had a size equal to 4, but theoretically it
207can vary.
208
209iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
210
211iASL: Remove a remark due to excessive output. Removed a remark for
212duplicate Offset() operators, due to a user complaint.
213
214----------------------------------------
21517 December 2021. Summary of changes for version 20211217:
216
2171) ACPICA kernel-resident subsystem:
218
219Hardware: Do not flush CPU cache when entering S4 and S5. According to
220ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to
221S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of
222the sleep state. Blind cache flush on entering S5 causes problems for
223TDX.
224
225Avoid subobject buffer overflow when validating RSDP signature. Since the
226Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to
227it is only to a 4-char array, and so trying to read past the 4th
228character, as will be done when it is an RSDP, reads beyond the bounds of
229the accessed member. Contributed by jrtc27.
230
231Add support for PCC Opregion special context data. PCC Opregion added in
232ACPIC 6.3 requires special context data similar to GPIO and Generic
233Serial Bus as it needs to know the internal PCC buffer and its length as
234well as the PCC channel index when the opregion handler is being executed
235by the OSPM. Adds support for the special context data needed by PCC
236Opregion. Submitted by Sudeep Holla <sudeep.holla@arm.com>
237
2382) iASL Compiler/Disassembler and ACPICA tools:
239
240iASL: Completed compiler support for the NHLT ACPI table.
241
242iASL/NHLT table: Fixed a reported problem where a fault would occur
243during disassembly of a "Linux-Specific" section if the "Specific Data"
244part was not present.
245
246iASL: Added full support (compiler and disassembler) for the AGDI ACPI
247table. Contributed by: Ilkka Koskinen <ilkka@os.amperecomputing.com>.
248
249iASL: Added full support for the TDEL ACPI table.
250
251iASL table compiler: FADT support updates:
2521) Allow the 32-bit DSDT address to be zero.
2532) Issue error if both the 32-bit and 64-bit DSDT addresses are zero.
254
255iASL: Fix unaligned accesses to local cache allocations. Contributed by
256jrtc27.
257
258iASL: Open binary input files in binary mode, not text mode Affects
259binary input AML files, as well as binary data table files, for
260disassembly.
261
262----------------------------------------
26330 September 2021. Summary of changes for version 20210930:
264
265This release is available at https://acpica.org/downloads
266
2671) ACPICA kernel-resident subsystem:
268
269Hardware: Avoid evaluating methods too early during system resume. During
270wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called
271and it tries to get memory from the OS in order to evaluate a control
272method, but if KFENCE is enabled in the Linux kernel, the memory
273allocation attempt causes an IRQ work to be queued and a self-IPI to be
274sent to the CPU running the code which requires the memory controller to
275be ready, so if that happens too early in the wakeup path, it doesn't
276work.
277
278Prevent that from taking place by calling AcpiGetSleepTypeData() for S0
279upfront, when preparing to enter a given sleep state, and saving the data
280obtained by it for later use during system wakeup.
281
282Added a new _OSI string, "Windows 2020". Posted by superm1.
283
2842) iASL Compiler/Disassembler and ACPICA tools:
285
286iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS
287objects:
288New/latest rules: Under a Device Object:
289         1) If _PRS is present, must have _CRS and _SRS
290         2) If _SRS is present, must have _PRS (_PRS requires _CRS and
291_SRS)
292         3) If _DIS is present, must have _SRS (_SRS requires _PRS, _PRS
293requires _CRS and _SRS)
294         4) If _SRS is present, probably should have a _DIS (Remark only)
295
296iASL table disassembler: Added disassembly support for the NHLT ACPI
297table. Note: support for Vendor-defined microphone arrays and SNR
298extensions are not supported at this time -- mostly due to a lack of
299example tables. Actual compiler support for NHLT is forthcoming.
300
301Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It
302uses the same subtable structure as the existing Generic Initiator
303Affinity type.
304
305Added the flag for online capable in the MADT, introduced in ACPI 6.3.
306Posted by superm1.
307
3083) ACPICA documentation: Updated the legal info (that appears at the
309start of the Documents) to clarify distribution rights that are granted.
310
311
312----------------------------------------
31330 July 2021. Summary of changes for version 20210730:
314
315This release is available at https://acpica.org/downloads
316
3171) ACPICA kernel-resident subsystem:
318
3192) iASL Compiler/Disassembler and ACPICA tools:
320
321iasl: Check usage of _CRS, _DIS, _PRS, and _SRS objects (July 2021).
322  Under the Device Object:
323  1) If _DIS is present, must have a _CRS and _SRS
324  2) If _PRS is present, must have a _CRS, _DIS, and _SRS
325  3) If _SRS is present, must have a _CRS and _DIS
326A warning will be issued for each of these cases.
327Note: For existing ASL/projects, these warnings may be disabled by
328specifying this on the command line:
329"-vw 3141"
330
331iASL Table Disassembler/Table compiler: Fix for WPBT table with no
332command-line arguments. Handle the case where the Command-line
333Arguments table field does not exist (zero).
334
335Headers: Add new DBG2 Serial Port Subtypes
336The Microsoft Debug Port Table 2 (DBG2) specification revision
337September 21, 2020 comprises additional Serial Port Subtypes [1].
338Reflect that in the actbl1.h header file. Submitted by:
339semihalf-wojtas-marcin
340
341iASL: Add full support for the AEST table (data compiler)
342Includes support in the table compiler and the disassembler.
343
344Add PRMT module header to facilitate parsing.
345This structure is used in to parse PRMT in other Operating Systems
346that relies on using subtable headers in order to parse ACPI tables.
347Although the PRMT doesn't have "subtables" it has a list of module
348information structures that act as subtables.
349
350iASL: Table disassembler: Add missing strings to decode subtable types.
351Includes the MADT and CEDT tables.
352
353
354----------------------------------------
35504 June 2021. Summary of changes for version 20210604:
356
3571) ACPICA kernel-resident subsystem:
358
359Cleaned up (delete) the context mutex during local address handler object
360deletion.
361
362Fixed a memory leak caused by the _CID repair function.
363
364Added support for PlatformRtMechanism OperationRegion handler. Adds a new
365utility function, AcpiUtConvertUuidToString. Writing a buffer to a
366PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
367input buffer contains 26 bytes containing 9 bytes of status, a command
368byte and a 16-byte UUID. This change will simply pass this incoming
369buffer to a handler registered by the OS.
370
3712) iASL Compiler/Disassembler and ACPICA tools:
372
373Added full support for the PRMT ACPI table (Platform Runtime Mechanism
374Table). Includes support in the iASL compiler, the disassembler, and the
375template generator.
376
377Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
378
379Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
380table.
381
382Added full support for the SVKL (Storage Volume Key Location Table) ACPI
383table. Header file support from Kuppuswamy Sathyanarayanan
384<sathyanarayanan.kuppuswamy@linux.intel.com>.
385
386Completed full support for the IVRS (I/O Virtualization Reporting
387Structure) ACPI table. Added compiler support for IVRS, updated
388disassembler support. Adds a new utility, UtIsIdInteger, to determine if
389a HID/CID is an integer or a string.
390
391Headers: Added more structs to the CEDT table: CXL fixed memory window
392structure.
393
394ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
395
396----------------------------------------
39731 March 2021. Summary of changes for version 20210331:
398
399This release is available at https://acpica.org/downloads, and includes
400all ACPI 6.4 support
401
4021) ACPICA kernel-resident subsystem:
403ACPI 6.4: iASL: deprecate DDBHandleObj keyword
404Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
405allocating an object using kmalloc(), but then frees it
406using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
407Fixed a race condition in generic serial bus operation region handler.
408Fixed by Hans de Goede.
409
4102) iASL Compiler/Disassembler and ACPICA tools:
411
412ACPI 6.4: NFIT: add Location Cookie field
413ACPI 6.4: HMAT: add new fields/flags
414ACPI 6.4: Add new flags in SRAT
415ACPI 6.4: add SDEV secure access components
416ACPI 6.4: add Csi2Bus resource template
417ACPI 6.4: add support for PHAT table
418ACPI 6.4: add support for PMTT table
419Add disassembly support for the IVRS table. Compilation of the table is
420not yet complete.
421Fixed a potential infinite loop due to type mismatch. The for-loop is
422using a UINT8 counter and comparing the upper
423limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
424the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
425will wrap around to zero and the loop will never exit. I suspect
426the AslGbl_ExpectedMessagesIndex is never that high, but fixing
427this does future proof the code and cleans up static analysis
428warnings.Colin King.
429iASL/TableCompiler: update it with IORT table E.b revision changes. From
430shamiali2008.
431iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
432off-by: Jean-Philippe Brucker.
433iASL/TableCompiler: Add compilation support for CEDT table. Also, update
434the CEDT template.
435
436----------------------------------------
43705 January 2021. Summary of changes for version 20210105:
438
439This release is available at https://acpica.org/downloads
440
441
4421) ACPICA kernel-resident subsystem:
443
444Updated all copyrights to 2021. This affects all ACPICA source code
445modules.
446
4472) iASL Compiler/Disassembler and ACPICA tools:
448
449ASL test suite (ASLTS): Updated all copyrights to 2021.
450
451Tools and utilities: Updated all signon copyrights to 2021.
452
453iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
454MTMR. Al Stone.
455
456
457----------------------------------------
45817 December 2020. Summary of changes for version 20201217:
459
460This release is available at https://acpica.org/downloads
461
462
4631) ACPICA kernel-resident subsystem:
464
465Note: The implementation of ACPI 6.4 is underway, and is expected to be
466mostly finished next month, when ACPI 6.4 is released.
467
468From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
469several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
470enable this.
471
472AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
473These included a few casts, as well as a null pointer check.
474
475Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
476implicit fallthrough, as well as __attribute__((__fallthrough__)) and
477comments to explicitly denote that cases of fallthrough were intentional.
478Clang also supports this warning and statement attribute, but not the
479comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
480of GCC. With assistance from @nickdesaulniers.
481
4822) iASL Compiler/Disassembler and ACPICA tools:
483
484Added improvement to method call analysis by saving the return type and
485relaxing certain cases of type checking.
486
487iASL Table Compiler: Improved info messages. Added a message to the -T
488option for when the default template (DSDT) is used.
489Also added a note for when multiple SSDTs are created with a DSDT that
490the SSDTs are created in the same file as the DSDT.
491
492
493----------------------------------------
494
49513 November 2020. Summary of changes for version 20201113:
496
497This release is available at https://acpica.org/downloads
498
499
5001) ACPICA kernel-resident subsystem:
501
502Interpreter: fixed a memory leak by using use existing buffer in _HID
503repair. There was a memory leak that occurred when a _CID object is
504defined as a package containing string objects. When _CID is checked for
505any possible repairs, it calls a helper function to repair _HID (because
506_CID basically contains multiple _HID entries). The _HID repair function
507assumes that string objects are standalone objects that are not contained
508inside of any packages. The _HID repair function replaced the string
509object with a brand new object and attempted to delete the old object by
510decrementing the reference count of the old object. Strings inside of
511packages have a reference count of 2 so the _HID repair function leaves
512this object in a dangling state and causes a memory leak. Instead of
513allocating a brand new object and removing the old object, use the
514existing object when repairing the _HID object.
515
516Added function trace macros to improve namespace debugging. The namespace
517repair mechanism does not have function tracing macros. Add several trace
518macros to improve debuggability.
519
520Handle "orphan" _REG methods for GPIO OpRegions. Before this change
521AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
522matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
523Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
524The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
525UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
526to potential issues with checks for OpRegion availability, or in other
527words checks if _REG has been called for the OpRegion which the ACPI code
528wants to use. Except for the "orphan" EC handling, ACPICA core does not
529call _REG on an ACPI node which does not define an OpRegion matching the
530type being registered; and the reference design DSDT, from which most
531Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
532UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
533were assigned ACPI controlled functions in the reference design. Together
534this leads to the perfect storm, at least on the Cherry Trail based
535Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
536and has added the Cherry Trail specific UserDefined(0x93) opregion to its
537GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
538availability check for the standard GeneralPurposeIo OpRegion. This
539clearly is a bug in the DSDT, but this does work under Windows. This
540issue leads to the intel vbtn driver reporting the device always being in
541tablet-mode at boot, even if it is in laptop mode. Which in turn causes
542userspace to ignore touchpad events. So in other words, this issue causes
543the touchpad to not work at boot. This change fixes this by extending the
544"orphan" _REG method handling to also apply to GPIO address-space
545handlers.
546
547
5482) iASL Compiler/Disassembler and ACPICA tools:
549
550iASL: Added more info to namespace dump file (-ln option). In a separate
551section of the dump file (after the main namespace dump), emit the full
552pathname for each namespace node, its type, and the ASL filename and line
553number where it is declared.
554
555AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
556x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
557is omitted, all iASL exceptions are displayed.
558
559iASL: Use StringLiteral instead of StringData for some ASL macros. The
560use of the stringData rule allows for some "string" oriented opcodes
561(Such as ToString, ToHexString, etc.) None of which make sense with the
562macros in question. This change modifies the StringData part of the rule
563for these macros to a simple string  literal - thus disallowing the use
564of ToString, ToHexString, etc.
565The following ASL operators (macros) are affected:
566EisaId
567Fprintf
568Printf
569ToUuid
570Unicode
571Note: The MS compiler requires the use of string literals for these
572operators also.
573
574iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
575the list of "known" UUIDs for the input to the ToUUID macro.
576
577Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
578NFIT table.
579
580
581----------------------------------------
582
58325 September 2020. Summary of changes for version 20200925:
584
585This release is available at https://acpica.org/downloads
586
587
5881) ACPICA kernel-resident subsystem:
589
590Preserve memory opregion mappings. The ACPICA's strategy with respect to
591the handling of memory mappings associated with memory operation regions
592is to avoid mapping the entire region at once which may be problematic at
593least in principle (for example, it may lead to conflicts with
594overlapping mappings having different attributes created by drivers).  It
595may also be wasteful, because memory opregions on some systems take up
596vastchunks of address space while the fields in those regions actually
597accessed by AML are sparsely distributed.
598
599For this reason, a one-page "window" is mapped for a given opregion on
600the first memory access through it and if that "window" does not cover an
601address range accessed through that opregion subsequently, it is unmapped
602and a new "window" is mapped to replace it.  Next, if the new "window" is
603not sufficient to access memory through the opregion in question in the
604future, it will be replaced with yet another "window" and so on.  That
605may lead to a suboptimal sequence of memory mapping and unmapping
606operations, for example if two fields in one opregion separated from each
607other by a sufficiently wide chunk of unused address space are accessed
608in an alternating pattern.
609
610Added support for 64 bit risc-v compilation.  Useful for acpica tools and
611incorporating ACPICA into the Firmware Test Suite. Colin Ian King
612<colin.king@canonical.com>.
613
614Added support for SMBus predefined names (from SMBus Control Method
615Interface Specification, Version 1.0, December 10, 1999. New predefined
616names:
617    _SBA
618    _SBI
619    _SBR
620    _SBT
621    _SBW
622
623AML Disassembler: Added a new command, "All <NameSeg>". This command will
624evaluate all objects in the current namespace whose NameString contains
625the input NameSeg as the last element of the NameString. Useful for
626debugging.
627
628
6292) iASL Compiler/Disassembler and ACPICA tools:
630
631iASL: fixed a crash that occurred when predefined objects return packages
632with lengths that exceed the initializer list.
633
634iASL: added more detail to external resolution error message when
635compiling multiple definition blocks.
636
637iASL: added a remark for an attempt to create a nameseg or namestring
638containing lower-case letters. This should prevent declaring multiple
639namesegs or namestrings in an attempt to refer to different objects (with
640different cases), but actually refer to the same object(s).
641
642iASL: improve alias analysis by saving object type. If the alias is a
643method type, the parameter count is also recorded.
644
645AcpiExec: Increase the default loop timeout value. Was 1 second, is now
64610 seconds. Prevents unnecessary timeouts when executing control methods
647from the command line.
648
649AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
650list. Includes:
651    Memory Device
652    Generic Buttons Device
653    NVDIMM Root Device
654    Control Method Battery
655    Device Graphs for _DSD method
656    Hierarchical Data Extension
657....ARM CoreSight Graph
658
659----------------------------------------
660
661
66217 July 2020. Summary of changes for version 20200717:
663
664This release is available at https://acpica.org/downloads
665
666
6671) ACPICA kernel-resident subsystem:
668
669Do not increment OperationRegion reference counts for field units. Recent
670server firmware has revealed that this reference count can overflow on
671large servers that declare many field units (thousands) under the same
672OperationRegion. This occurs because each field unit declaration will add
673a reference count to the source OperationRegion. This release solves the
674reference count overflow for OperationRegion objects by preventing
675fieldUnits from incrementing their parent OperationRegion's reference
676count.
677
678Replaced one-element arrays with flexible-arrays, which were introduced
679in C99.
680
681Restored the readme file containing the directions for generation of
682ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
683located at: generate/msvc2017/readme.txt
684
6852) iASL Compiler/Disassembler and ACPICA tools:
686
687iASL: Fixed a regression found in version 20200214. Prevent iASL from
688emitting an extra byte of garbage data when control methods declared a
689single parameter type without using braces. This extra byte is known to
690cause a blue screen on the Windows AML interpreter.
691
692iASL: Made a change to allow external declarations to specify the type of
693a named object even when some name segments are not defined.
694This change allows the following ASL code to compile (When DEV0 is not
695defined or not defined yet):
696
697    External (\_SB.DEV0.OBJ1, IntObj)
698    External (\_SB.DEV0, DeviceObj)
699
700iASL: Fixed a problem where method names in "Alias ()" statement could be
701misinterpreted. They are now interpreted correctly as method invocations.
702
703iASL: capture a method parameter count (Within the Method info segment,
704as well as the argument node) when using parameter type lists.
705
706----------------------------------------
707
708
70928 May 2020. Summary of changes for version 20200528:
710
711
7121) ACPICA kernel-resident subsystem:
713
714Removed old/obsolete Visual Studio files which were used to build the
715Windows versions of the ACPICA tools. Since we have moved to Visual
716Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
717project files. The new subdirectory and solution file are located at:
718
719    acpica/generate/msvc2017/AcpiComponents.sln
720
721
7222) iASL Compiler/Disassembler and ACPICA tools:
723
724iASL: added support for a new OperationRegion Address Space (subtype):
725PlatformRtMechanism. Support for this new keyword is being released for
726early prototyping. It will appear in the next release of the ACPI
727specification.
728
729iASL: do not optimize the NameString parameter of the CondRefOf operator.
730In the previous iASL compiler release, the NameString parameter of the
731CondRefOf was optimized. There is evidence that some implementations of
732the AML interpreter do not perform the recursive search-to-parent search
733during the execution of the CondRefOf operator. Therefore, the CondRefOf
734operator behaves differently when the NameString parameter is a single
735name segment (a NameSeg) as opposed to a full NamePath (starting at the
736root scope) or a NameString containing parent prefixes.
737
738iASL: Prevent an inadvertent remark message. This change prevents a
739remark if within a control method the following exist:
7401) An Operation Region is defined, and
7412) A Field operator is defined that refers to the region.
742This happens because at the top level, the Field operator does not
743actually create a new named object, it simply references the operation
744region.
745
746Removed support for the acpinames utility. The acpinames was a simple
747utility used to populate and display the ACPI namespace without executing
748any AML code. However, ACPICA now supports executable opcodes outside of
749control methods. This means that executable AML opcodes such as If and
750Store opcodes need to be executed during table load. Therefore, acpinames
751would need to be updated to match the same behavior as the acpiexec
752utility and since acpiexec can already dump the entire namespace (via the
753'namespace' command), we no longer have the need to maintain acpinames.
754
755    In order to dump the contents of the ACPI namespace using acpiexec,
756execute the following command from the command line:
757
758        acpiexec -b "n" [aml files]
759
760----------------------------------------
761
762
76330 April 2020. Summary of changes for version 20200430:
764
7651) ACPICA kernel-resident subsystem:
766
767Cleaned up the coding style of a couple of global variables
768(AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
769AcpiProtocolLengths was made static, and the definition of
770AcpiGbl_NextCmdNum was moved to acglobal.h.
771
772
7732) iASL Compiler/Disassembler and ACPICA tools:
774
775iASL DataTable Compiler:  Fixed a segfault on errors that aren't directly
776associated with a field.
777
778Disassembler: has been made more resilient so that it will continue to
779parse AML even if the AML generates ACPI namespace errors. This enables
780iASL to disassemble some AML that may have been compiled using older
781versions of iASL that no longer compile with newer versions of iASL.
782
783iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
784was a mixup where _NIG required one parameter and _NIH required zero
785parameters. This change swaps these parameter requirements. Now it is
786required that _NIH must be called with one parameter and _NIG requires
787zero parameters.
788
789iASL: Allow use of undefined externals as long as they are protected by
790an if (CondRefOf (...)) block when compiling multiple definition blocks.
791
792iASL: Fixed the type override behavior of named objects that are declared
793as External. External declarations will no longer override the type of
794the actual definition if it already exists.
795
796AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
797command line wildcard support on Windows. Note: the AcpiNames utility is
798essentially redundant with the AcpiExec utility (using the "namespace"
799command) and is therefore deprecated. It will be removed in future
800releases of ACPICA.
801
802Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
803operators. The disassembler is intended to emit existing ASL code as-is.
804Therefore, error messages emitted during disassembly should be ignored or
805handled in a way such that the disassembler can continue to parse the
806AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
807parsing for create operators in order to complete parsing ASL termlists.
808
809iASL DataTable Compiler: IVRS table: fix potentially uninitialized
810variable warning. Some compilers catch potential uninitialized variables.
811This is done by examining branches of if/else statements. This change
812replaces an "else if" with an "else" to fix the uninitialized variable
813warning.
814
815
816----------------------------------------
81726 March 2020. Summary of changes for version 20200326:
818
819
8201) ACPICA kernel-resident subsystem:
821
822Performed a code clean-up to prevent build errors on early versions of
823GCC-10.
824
825Added the NHLT table signature. iASL data table compiler/disassembler
826support for this table is coming soon.
827
828
8292) iASL Compiler/Disassembler and ACPICA tools:
830
831AcpiExec: Fixed several problems with the namespace initialization file
832(-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
833errors, several seg faults, and enhancements to line parsing within the
834init file. In addition, each object found in the init file and it's new
835value is displayed, as well as any such entries that do not have a
836corresponding name in the namespace. For reference, the syntax for the
837various supported data types are presented below:
838	PCHG 0x777788889999BBBB	// Integer
839	\DEV1.STR1 "XYZ"			// String
840	BUF1 (88 99 AA)			// Buffer
841	PKG1 [0x1111 0x2222]		// Package
842	\BF1 0x7980				// BufferField
843	RCRV 0x0123456789ABCDEF	// Field Unit
844
845iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
846can be used anywhere in a given ASL file to configure iASL to expect an
847iASL compiler error code on the line where this macro was placed. If the
848error code does not exist, an error is generated. This is intended to be
849used for ACPICA's ASL test suite, but can be used by ASL developers as
850well.
851
852iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
853IVRS table parsing supported only IVHD type 10h structures. Parsing an
854IVHD type 11h caused the iasl to report unknown subtable type. Add
855necessary structure definition for IVHD type 11h and apply correct
856parsing method based on subtable type. Micha? ?ygowski.
857
858iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
859According to AMD IOMMU Specification Revision 3.05 the reserved field
860should be IOMMU Feature Reporting. Change the name of the field to the
861correct one. Micha? ?ygowski.
862
863acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
864based on suggestions by David Seifert and Benjamin Berg.
865
866iASL: table compiler: removed an unused variable (DtCompilerParserResult)
867causing linking errors. Patch based on suggestions by David Seifert and
868Benjamin Berg.
869
870iASL: table compiler: make LexBuffer static to avoid linking errors in
871newer compilers. Patch based on suggestions by David Seifert and Benjamin
872Berg.
873
874iASL: fixed type matching between External and Named objects. External
875object types can only be expressed with ACPI object type values that are
876defined in the ACPI spec. However, iASL uses ACPI object type values that
877are local to ACPICA in addition to the values defined in the ACPI spec.
878This change implements type matching to map some object type values
879specific to ACPICA to ones that are defined in the ACPI spec.
880
881iASL: Dropped the type mismatch compiler error that can arise from
882External declarations to a warning. This warning can occur when there is
883a type difference between the external declaration and the actual object
884declaration (when compiling multiple files/modules simultaneously).
885
886iASL: removed an incorrect error message regarding externals. This change
887removes an incorrect error that is emitted when a duplicate external
888declaration does not contain a type that opens a scope. This is incorrect
889because the duplicate external with conflicting types are already caught
890by iASL and it doesn't make any sense to enforce what this conflicting
891type should be.
892
893AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
894surrounded by parens. Otherwise, a logical statement that applies a
895logical not operator to this macro could result in a computation that
896applies the operator to the left side of the logical and but not the
897right. Reported-by: John Levon <john.levon@joyent.com>
898
899Fixed a problem with the local version of sprint(): On 32-bit, the
900provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
901String + Size will wrap, meaning End < Start, and
902AcpiUtBoundStringOutput() will never output anything as a result. The
903symptom seen of this was acpixtract failing to output anything -- with a
904custom build that included utprint.c. Signed-off-by: John Levon
905<john.levon@joyent.com>
906
907iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
908ACPI specification.
909
910
911----------------------------------------
91214 February 2020. Summary of changes for version 20200214:
913
914
9151) ACPICA kernel-resident subsystem:
916
917Enable sleep button on ACPI legacy wake:  Hibernation (S4) is triggered
918in a guest when it receives a sleep trigger from the hypervisor. When the
919guest resumes from this power state, it does not see the SleepEnabled
920bit. In other words, the sleepHibernation (S4) is triggered in a guest
921when it receives a sleep trigger from the hypervisor. When the guest
922resumes from this power state, it does not see the SleepEnabled bit. In
923other words, the sleep button is not enabled on waking from an S4 state.
924This causes subsequent invocation of sleep state to fail since the
925guest.button is not enabled on waking from an S4 state. This causes
926subsequent invocation of sleep state to fail in the guest. Fix this
927problem by enabling the sleep button in ACPI legacy wake. From Anchal
928Agarwal <anchalag@amazon.com>.
929
930Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
931for checking the status bits of all enabled GPEs in one go. It is needed
932to distinguish spurious SCIs from genuine ones when deciding whether or
933not to wake up the system from suspend-to-idle.
934
935Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
936using HOST in their environment to represent the host name for their
937machines. Avoid this problem by renaming this variable from HOST to
938ACPI_HOST.
939
940MSVC 2017 project files: Enable multiprocessor generation to improve
941build performance.
942
943Added a macro to get the byte width of a Generic Address structure. New
944ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
945ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
946
947
9482) iASL Compiler/Disassembler and ACPICA tools:
949
950iASL: Implemented full support for the (optional, rarely used) ReturnType
951and ParameterTypesList for the Method, Function, and External operators.
952For Method declarations, the number of individual ParameterTypes must
953match the declaration of the number of arguments (NumArgs). This also
954Fixes a problem with the External operator where extra/extraneous bytes
955were emitted in the AML code if the optional ReturnType/ParameterTypes
956were specified for a MethodObj declaration.
957New error message:
9581) Method NumArgs count does not match length of ParameterTypes list
959
960iASL: Implemented detection of type mismatches between External
961declarations and named object declarations. Also, detect type mismatches
962between multiple External declarations of the same Name.
963New error messages:
9641) Type mismatch between external declaration and actual object
965declaration detected
9662) Type mismatch between multiple external declarations detected
967
968iASL: Implemented new error messages for External operators that specify
969a ReturnType and/or ParameterTypesList for any object type other than
970control methods (MethodObj).
971New error messages:
9721) Return type is only allowed for Externals declared as MethodObj
9732) Parameter type is only allowed for Externals declared as MethodObj
974
975iASL: Implemented two new remark/warning messages for ASL code that
976creates named objects from within a control method. This is very
977inefficient since the named object must be created and deleted each time
978the method is executed.
979New messages:
9801) Creation of named objects within a method is highly inefficient, use
981globals or method local variables instead (remark)
9822) Static OperationRegion should be declared outside control method
983(warning)
984
985iASL: Improved illegal forward reference detection by adding support to
986detect forward-reference method invocations.
987
988iASL: Detect and issue an error message for NameStrings that contain too
989many individual NameSegs (>255). This is an AML limitation that is
990defined in the ACPI specification.
991New message:
9921) NameString contains too many NameSegs (>255)
993
994acpidump: windows: use GetSystemFirmwareTable API for all tables except
995SSDT. By using this API, acpidump is able to get all tables in the XSDT
996
997iASL: Removed unused parser file and updated msvc2017 project files.
998Removed the obsolete AslCompiler.y from the repository.
999
1000iASL: msvc2017: Fixed macros in the file dependency list to prevent
1001unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
1002
1003Disassembler: Prevent spilling error messages to the output file. All
1004errors are directed to the console instead. These error messages
1005prevented re-compilation of the resulting disassembled ASL output file
1006(.DSL).
1007
1008
1009----------------------------------------
101010 January 2020. Summary of changes for version 20200110:
1011
1012
10131) ACPICA kernel-resident subsystem:
1014
1015Updated all copyrights to 2020. This affects all ACPICA source code
1016modules.
1017
1018
10192) iASL Compiler/Disassembler and ACPICA tools:
1020
1021ASL test suite (ASLTS): Updated all copyrights to 2020.
1022
1023Tools and utilities: Updated all signon copyrights to 2020.
1024
1025iASL: fix forward reference analysis for field declarations. Fixes
1026forward reference analysis for field declarations by searching the
1027parent scope for the named object when the object is not present in
1028the current scope.
1029
1030iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
1031full pathname of the name that already exists is printed.
1032
1033iASL: Enhance duplicate Case() detection for buffers. Add check for
1034buffers with no initializer list (these buffers will be filled with
1035zeros at runtime.)
1036
1037
1038----------------------------------------
103913 December 2019. Summary of changes for version 20191213:
1040
1041
10421) ACPICA kernel-resident subsystem:
1043
1044Return a Buffer object for all fields created via the CreateField
1045operator. Previously, an Integer would be returned if the size of
1046the field was less than or equal to the current size of an Integer.
1047Although this goes against the ACPI specification, it provides
1048compatibility with other ACPI implementations. Also updated the
1049ASLTS test suite to reflect this new behavior.
1050
10512) iASL Compiler/Disassembler and ACPICA tools:
1052
1053iASL: Implemented detection of (and throw an error for) duplicate
1054values for Case statements within a single Switch statement. Duplicate
1055Integers, Strings, and Buffers are supported.
1056
1057iASL: Fix error logging issue during multiple file compilation --
1058Switch to the correct input file during error node creation.
1059
1060iASL: For duplicate named object creation, now emit an error instead
1061of a warning - since this will cause a runtime error.
1062
1063AcpiSrc: Add unix line-ending support for non-Windows builds.
1064
1065iASL: Add an error condition for an attempt to create a NameString
1066with > 255 NameSegs (the max allowable via the AML definition).
1067
1068
1069----------------------------------------
107018 October 2019. Summary of changes for version 20191018:
1071
1072
10731) ACPICA kernel-resident subsystem:
1074
1075Debugger: added a new command: ?Fields [address space ID]?. This command
1076dumps the contents of all field units that are defined within the
1077namespace with a particular address space ID.
1078
1079Modified the external interface AcpiLoadTable() to return a table index.
1080This table index can be used for unloading a table for debugging.
1081    ACPI_STATUS
1082    AcpiLoadTable (
1083        ACPI_TABLE_HEADER       *Table,
1084        UINT32                  *TableIndex))
1085
1086Implemented a new external interface: AcpiUnloadTable() This new function
1087takes a table index as an argument and unloads the table. Useful for
1088debugging only.
1089    ACPI_STATUS
1090    AcpiUnloadTable (
1091        UINT32                  TableIndex))
1092
1093Ported the AcpiNames utility to use the new table initialization
1094sequence. The utility was broken before this change. Also, it was
1095required to include most of the AML interpreter into the utility in order
1096to process table initialization (module-level code execution.)
1097
1098Update for results from running Clang V8.0.1. This fixes all "dead
1099assignment" warnings. There are still several "Dereference of NULL
1100pointer" warnings, but these have been found to be false positive
1101warnings.
1102
1103
11042) iASL Compiler/Disassembler and ACPICA tools:
1105
1106iASL: numerous table compiler changes to ensure that the usage of
1107yacc/bison syntax is POSIX-compliant.
1108
1109iASL/disassembler: several simple bug fixes in the data table
1110disassembler.
1111
1112Acpiexec: expanded the initialization file (the -fi option) to initialize
1113strings, buffers, packages, and field units.
1114
1115
1116----------------------------------------
111716 August 2019. Summary of changes for version 20190816:
1118
1119This release is available at https://acpica.org/downloads
1120
1121
11221) ACPICA kernel-resident subsystem:
1123
1124Modified the OwnerId mechanism to allow for more Owner Ids. The previous
1125limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
1126exceptions on machines with a large number of initialization threads,
1127many CPU cores and nested initialization control methods.
1128
1129Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
1130checking if the given GPE (as represented by a GPE device handle and a
1131GPE number) is currently active and dispatching it (if that's the case)
1132outside of interrupt context.
1133
1134Table load: exit the interpreter before initializing objects within the
1135new table This prevents re-acquiring the interpreter lock when loading
1136tables
1137
1138Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
1139uk Kim
1140
1141Macros: removed pointer math on a null pointer. Causes warnings on some
1142compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
1143instead of using arithmetic.
1144
1145Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
1146across all "printf-like" internal functions. Also, cleanup all calls to
1147such functions (both in 32-bit mode and 64-bit mode) now that they are
1148analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
1149
1150
11512) iASL Compiler/Disassembler and ACPICA tools:
1152
1153iASL: implemented a new data table compiler flex/bison front-end. This
1154change is internal and is not intended to result in changes to the
1155compiled code. This new compiler front-end can be invoked using the -tp
1156option for now, until the old mechanism is removed.
1157
1158ASLTS: Implemented a new data table compiler test suite. This test suite
1159generates all table templates and compile/disassemble/re-compile/binary-
1160compare each file.
1161
1162iASL: return -1 if AML files were not generated due to compiler errors
1163
1164iASL: added a warning on use of the now-legacy ASL Processor () keyword.
1165
1166iASL: added an error on _UID object declaration that returns a String
1167within a Processor () declaration. A _UID for a processor must be an
1168Integer.
1169
1170iASL: added a null terminator to name strings that consist only of
1171multiple parent prefixes (^)
1172
1173iASL: added support to compile both ASL and data table files in a single
1174command.
1175
1176Updated the tool generation project files that were recently migrated to
1177MSVC 2017 to eliminate all new warnings. The new project files appear in
1178the directory \acpica\generate\msvc2017. This change effectively
1179deprecates the older project files in \acpica\generate\msvc9.
1180
1181
1182----------------------------------------
118303 July 2019. Summary of changes for version 20190703:
1184
1185
11861) ACPICA kernel-resident subsystem:
1187
1188Remove legacy module-level support code. There were still some remnants
1189of the legacy module-level code executions. Since we no longer support
1190this option, this is essentially dead code and has been removed from the
1191ACPICA source.
1192
1193iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1194scope. If these named objects are declared outside the root scope, they
1195will not be invoked by any host Operating System.
1196
1197Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
1198one) can be enabled in two situations. First, the GPEs with existing _Lxx
1199and _Exx methods are enabled implicitly by ACPICA during system
1200initialization.  Second, the GPEs without these methods (like GPEs listed
1201by _PRW objects for wakeup devices) need to be enabled directly by the
1202code that is going to use them (e.g. ACPI power management or device
1203drivers).
1204
1205In the former case, if the status of a given GPE is set to start with,
1206its handler method (either _Lxx or _Exx) needs to be invoked to take care
1207of the events (possibly) signaled before the GPE was enabled. In the
1208latter case, however, the first caller of AcpiEnableGpe() for a given GPE
1209should not be expected to care about any events that might be signaled
1210through it earlier.  In that case, it is better to clear the status of
1211the GPE before enabling it, to prevent stale events from triggering
1212unwanted actions (like spurious system resume, for example).
1213
1214For this reason, modify AcpiEvAddGpeReference() to take an additional
1215boolean argument indicating whether or not the GPE status needs to be
1216cleared when its reference counter changes from zero to one and make
1217AcpiEnableGpe() pass TRUE to it through that new argument.
1218
1219
12202) iASL Compiler/Disassembler and ACPICA tools:
1221
1222The tool generation process has been migrated to MSVC 2017, and all
1223project files have been upgraded. The new project files appear in the
1224directory \acpica\generate\msvc2017. This change effectively deprecates
1225the older project files in \acpica\generate\msvc9.
1226
1227iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1228scope. If these named objects are declared outside the root scope, they
1229will not be invoked by any host Operating System
1230
1231----------------------------------------
123209 May 2019. Summary of changes for version 20190509:
1233
1234
12351) ACPICA kernel-resident subsystem:
1236
1237Revert commit  6c43e1a ("ACPICA: Clear status of GPEs before enabling
1238them") that causes problems with Thunderbolt controllers to occur if a
1239dock device is connected at init time (the xhci_hcd and thunderbolt
1240modules crash which prevents peripherals connected through them from
1241working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
1242Dispatch active GPEs at init time") to get undone, so the problem
1243addressed by commit ecc1165b8b74 appears again as a result of it.
1244
1245
12462) iASL Compiler/Disassembler and ACPICA tools:
1247
1248Reverted iASL: Additional forward reference detection. This change
1249reverts forward reference detection for field declarations. The feature
1250unintentionally emitted AML bytecode with incorrect package lengths for
1251some ASL code related to Fields and OperationRegions. This malformed AML
1252can cause systems to crash
1253during boot. The malformed AML bytecode is emitted in iASL version
125420190329 and 20190405.
1255
1256iASL: improve forward reference detection. This change improves forward
1257reference detection for named objects inside of scopes. If a parse object
1258has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
1259a named object that is declared later in the AML bytecode. This is
1260allowed if the reference is inside of a method and the declaration is
1261outside of a method like so:
1262
1263DefinitionBlock(...)
1264{
1265    Method (TEST)
1266    {
1267        Return (NUM0)
1268    }
1269    Name (NUM0,0)
1270}
1271
1272However, if the declaration and reference are both in the same method or
1273outside any methods, this is a forward reference and should be marked as
1274an error because it would result in runtime errors.
1275
1276DefinitionBlock(...)
1277{
1278    Name (BUFF, Buffer (NUM0) {}) // Forward reference
1279    Name (NUM0, 0x0)
1280
1281    Method (TEST)
1282    {
1283        Local0 = NUM1
1284        Name (NUM1, 0x1) // Forward reference
1285        return (Local0)
1286    }
1287}
1288
1289iASL: Implemented additional buffer overflow analysis for BufferField
1290declarations. Check if a buffer index argument to a create buffer field
1291operation is beyond the end of the target buffer.
1292
1293This affects these AML operators:
1294
1295   AML_CREATE_FIELD_OP
1296   AML_CREATE_BIT_FIELD_OP
1297   AML_CREATE_BYTE_FIELD_OP
1298   AML_CREATE_WORD_FIELD_OP
1299   AML_CREATE_DWORD_FIELD_OP
1300   AML_CREATE_QWORD_FIELD_OP
1301
1302 There are three conditions that must be satisfied in order to allow this
1303validation at compile time:
1304
1305   1) The length of the target buffer must be an integer constant
1306   2) The index specified in the create* must be an integer constant
1307   3) For CreateField, the bit length argument must be non-zero.
1308
1309Example:
1310    Name (BUF1, Buffer() {1,2})
1311    CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1312
1313dsdt.asl     14:     CreateField (BUF1, 7, 9, CF03)  // 3: ERR
1314Error    6165 -                           ^ Buffer index beyond end of
1315target buffer
1316
1317
1318----------------------------------------
131905 April 2019. Summary of changes for version 20190405:
1320
1321
13221) ACPICA kernel-resident subsystem:
1323
1324Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
1325unconditionally clearing ACPI IRQs during suspend/resume") was added
1326earlier to stop clearing of event status bits unconditionally on suspend
1327and resume paths. Though this change fixed an issue on suspend path, it
1328introduced regressions on several resume paths. In the case of S0ix,
1329events are enabled as part of device suspend path. If status bits for the
1330events are set when they are enabled, it could result in premature wake
1331from S0ix. If status is cleared for any event that is being enabled so
1332that any stale events are cleared out. In case of S0ix, events are
1333enabled as part of device suspend path. If status bits for the events are
1334set when they are enabled, it could result in premature wake from S0ix.
1335
1336This change ensures that status is cleared for any event that is being
1337enabled so that any stale events are cleared out.
1338
1339
13402) iASL Compiler/Disassembler and ACPICA tools:
1341
1342iASL: Implemented an enhanced multiple file compilation that combines
1343named objects from all input files to a single namespace. With this
1344feature, any unresolved external declarations as well as duplicate named
1345object declarations can be detected during compilation rather than
1346generating errors much later at runtime. The following commands are
1347examples that utilize this feature:
1348    iasl dsdt.asl ssdt.asl
1349    iasl dsdt.asl ssdt1.asl ssdt2.asl
1350    iasl dsdt.asl ssdt*.asl
1351
1352----------------------------------------
135329 March 2019. Summary of changes for version 20190329:
1354
1355
13561) ACPICA kernel-resident subsystem:
1357
1358Namespace support: Remove the address nodes from global list after method
1359termination. The global address list contains pointers to namespace nodes
1360that represent Operation Regions. This change properly removes Operation
1361Region namespace nodes that are declared dynamically during method
1362execution.
1363
1364Linux: Use a different debug default than ACPICA. There was a divergence
1365between Linux and the ACPICA codebases. In order to resolve this
1366divergence, Linux now declares its own debug default in aclinux.h
1367
1368Renamed some internal macros to improve code understanding and
1369maintenance. The macros below all operate on single 4-character ACPI
1370NameSegs, not generic strings (old -> new):
1371    ACPI_NAME_SIZE    -> ACPI_NAMESEG_SIZE
1372    ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
1373    ACPI_MOVE_NAME    -> ACPI_COPY_NAMESEG
1374
1375Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
1376table.
1377
1378Test suite: Update makefiles, add PCC operation region support
1379
1380
13812) iASL Compiler/Disassembler and Tools:
1382
1383iASL: Implemented additional illegal forward reference detection. Now
1384detect and emit an error upon detection of a forward reference from a
1385Field to an Operation Region. This will fail at runtime if allowed to
1386pass the compiler.
1387
1388AcpiExec: Add an address list check for dynamic Operation Regions. This
1389feature performs a sanity test for each node the global address list.
1390This is done in order to ensure that all dynamic operation regions are
1391properly removed from the global address list and no dangling pointers
1392are left behind.
1393
1394Disassembler: Improved generation of resource pathnames. This change
1395improves the code that generates resource descriptor and resource tag
1396pathnames. The original code used a bunch of str* C library functions
1397that caused warnings on some compilers.
1398
1399iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
1400function can overwrite buffers if the calling code is not very careful.
1401In the case of generating a module/table header, use of memmove is a
1402better implementation.
1403
1404
14053) Status of new features that have not been completed at this time:
1406
1407iASL: Implementing an enhanced multiple file compilation into a single
1408namespace feature (Status): This feature will be released soon, and
1409allows multiple ASL files to be compiled into the same single namespace.
1410By doing so, any unresolved external declarations as well as duplicate
1411named object declarations can be detected during compilation (rather than
1412later during runtime). The following commands are examples that utilize
1413this feature:
1414    iasl dsdt.asl ssdt.asl
1415    iasl dsdt.asl ssdt1.asl ssdt2.asl
1416    iasl dsdt.asl ssdt*.asl
1417
1418ASL tutorial status: Feedback is being gathered internally and the
1419current plan is to publish this tutorial on the ACPICA website after a
1420final review by a tech writer.
1421
1422----------------------------------------
142315 February 2019. Summary of changes for version 20190215:
1424
1425
14260) Support for ACPI specification version 6.3:
1427
1428Add PCC operation region support for the AML interpreter. This adds PCC
1429operation region support in the AML interpreter and a default handler for
1430acpiexec. The change also renames the PCC region address space keyword to
1431PlatformCommChannel.
1432
1433Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
1434These methods provide OSPM with health information and device boot
1435status.
1436
1437PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
1438defines if the trigger needs to be invoked by OSPM before or at the end
1439of kernel crash dump processing/handling operation.
1440
1441SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
1442is used for describing devices such as heterogeneous processors,
1443accelerators, GPUs, and IO devices with integrated compute or DMA
1444engines.
1445
1446MADT: Add support for statistical profiling in GICC. Statistical
1447profiling extension (SPE) is an architecture-specific feature for ARM.
1448
1449MADT: Add online capable flag. If this bit is set, system hardware
1450supports enabling this processor during OS runtime.
1451
1452New Error Disconnect Recover Notification value. There are a number of
1453scenarios where system Firmware in collaboration with hardware may
1454disconnect one or more devices from the rest of the system for purposes
1455of error containment. Firmware can use this new notification value to
1456alert OSPM of such a removal.
1457
1458PPTT: New additional fields in Processor Structure Flags. These flags
1459provide more information about processor topology.
1460
1461NFIT/Disassembler: Change a field name from "Address Range" to "Region
1462Type".
1463
1464HMAT updates: make several existing fields to be reserved as well as
1465rename subtable 0 to "memory proximity domain attributes".
1466
1467GTDT: Add support for new GTDT Revision 3. This revision adds information
1468for the EL2 timer.
1469
1470iASL: Update the HMAT example template for new fields.
1471
1472iASL: Add support for the new revision of the GTDT (Rev 3).
1473
1474
14751) ACPICA kernel-resident subsystem:
1476
1477AML Parser: fix the main AML parse loop to correctly skip erroneous
1478extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
1479byte extended opcodes. If an error occurs during an AML table load, the
1480AML parser will continue loading the table by skipping the offending
1481opcode. This implements a "load table at any cost" philosophy.
1482
1483
14842) iASL Compiler/Disassembler and Tools:
1485
1486iASL: Add checks for illegal object references, such as a reference
1487outside of method to an object within a method. Such an object is only
1488temporary.
1489
1490iASL: Emit error for creation of a zero-length operation region. Such a
1491region is rather pointless. If encountered, a runtime error is also
1492implemented in the interpreter.
1493
1494Debugger: Fix a possible fault with the "test objects" command.
1495
1496iASL: Makefile: support parent directory filenames containing embedded
1497spaces.
1498
1499iASL: Update the TPM2 template to revision 4.
1500
1501iASL: Add the ability to report specific warnings or remarks as errors.
1502
1503Disassembler: Disassemble OEMx tables as actual AML byte code.
1504Previously, these tables were treated as "unknown table".
1505
1506iASL: Add definition and disassembly for TPM2 revision 3.
1507
1508iASL: Add support for TPM2 rev 3 compilation.
1509
1510
1511----------------------------------------
151208 January 2019. Summary of changes for version 20190108:
1513
1514
15151) ACPICA kernel-resident subsystem:
1516
1517Updated all copyrights to 2019. This affects all source code modules.
1518
1519
15202) iASL Compiler/Disassembler and Tools:
1521
1522ASL test suite (ASLTS): Updated all copyrights to 2019.
1523
1524Tools: Updated all signon copyrights to 2019.
1525
1526AcpiExec: Added a new option to dump extra information concerning any
1527memory leaks detected by the internal object/cache tracking mechanism. -
1528va
1529
1530iASL: Updated the table template for the TPM2 table to the newest version
1531of the table (Revision 4)
1532
1533
1534----------------------------------------
153513 December 2018. Summary of changes for version 20181213:
1536
1537
15381) ACPICA Kernel-resident Subsystem:
1539
1540Fixed some buffer length issues with the GenericSerialBus, related to two
1541of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
1542which are rarely seen in the field. For these, the LEN field of the ASL
1543buffer is now ignored. Hans de Goede
1544
1545Implemented a new object evaluation trace mechanism for control methods
1546and data objects. This includes nested control methods. It is
1547particularly useful for examining the ACPI execution during system
1548initialization since the output is relatively terse. The flag below
1549enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
1550   #define ACPI_LV_EVALUATION          0x00080000
1551
1552Examples:
1553   Enter evaluation       :  _SB.PCI0._INI (Method)
1554   Exit evaluation        :  _SB.PCI0._INI
1555   Enter evaluation       :  _OSI (Method)
1556   Exit evaluation        :  _OSI
1557   Enter evaluation       :  _SB.PCI0.TEST (Method)
1558   Nested method call     :     _SB.PCI0.NST1
1559   Exit nested method     :     _SB.PCI0.NST1
1560   Exit evaluation        :  _SB.PCI0.TEST
1561
1562Added two recently-defined _OSI strings. See
1563https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
1564osi.
1565   "Windows 2018"
1566   "Windows 2018.2"
1567
1568Update for buffer-to-string conversions via the ToHexString ASL operator.
1569A "0x" is now prepended to each of the hex values in the output string.
1570This provides compatibility with other ACPI implementations. The ACPI
1571specification is somewhat vague on this issue.
1572   Example output string after conversion:
1573"0x01,0x02,0x03,0x04,0x05,0x06"
1574
1575Return a run-time error for TermArg expressions within individual package
1576elements. Although this is technically supported by the ASL grammar,
1577other ACPI implementations do not support this either. Also, this fixes a
1578fault if this type of construct is ever encountered (it never has been).
1579
1580
15812) iASL Compiler/Disassembler and Tools:
1582
1583iASL: Implemented a new compile option (-ww) that will promote individual
1584warnings and remarks to errors. This is intended to enhance the firmware
1585build process.
1586
1587AcpiExec: Implemented a new command-line option (-eo) to support the new
1588object evaluation trace mechanism described above.
1589
1590Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1591instead of a "unknown table" message.
1592
1593AcpiHelp: Improved support for the "special" predefined names such as
1594_Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
1595used for "xx" and "x".
1596
1597----------------------------------------
159831 October 2018. Summary of changes for version 20181031:
1599
1600
1601An Operation Region regression was fixed by properly adding address
1602ranges to a global list during initialization. This allows OS to
1603accurately check for overlapping regions between native devices (such as
1604PCI) and Operation regions as well as checking for region conflicts
1605between two Operation Regions.
1606
1607Added support for the 2-byte extended opcodes in the code/feature that
1608attempts to continue parsing during the table load phase. Skip parsing
1609Device declarations (and other extended opcodes) when an error occurs
1610during parsing. Previously, only single-byte opcodes were supported.
1611
1612Cleanup: Simplified the module-level code support by eliminating a
1613useless global variable (AcpiGbl_GroupModuleLeveCode).
1614
1615
16162) iASL Compiler/Disassembler and Tools:
1617
1618iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1619could cause a fault in the preprocessor. This was an inadvertent side-
1620effect from moving more allocations/frees to the local cache/memory
1621mechanism.
1622
1623iASL: Enhanced error detection by validating that all NameSeg elements
1624within a NamePatch actually exist. The previous behavior was spotty at
1625best, and such errors could be improperly ignored at compiler time (never
1626at runtime, however. There are two new error messages, as shown in the
1627examples below:
1628
1629dsdt.asl     33:     CreateByteField (TTTT.BXXX, 1, CBF1)
1630Error    6161 -                              ^ One or more objects within
1631the Pathname do not exist (TTTT.BXXX)
1632
1633dsdt.asl     34:     CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1634Error    6160 -        One or more prefix Scopes do not exist ^
1635(BBBB.CBF1)
1636
1637iASL: Disassembler/table-compiler: Added support for the static data
1638table TPM2 revision 3 (an older version of TPM2). The support has been
1639added for the compiler and the disassembler.
1640
1641Fixed compilation of DOS format data table file on Unix/Linux systems.
1642iASL now properly detects line continuations (\) for DOS format data
1643table definition language files on when executing on Unix/Linux.
1644
1645----------------------------------------
164603 October 2018. Summary of changes for version 20181003:
1647
1648
16492) iASL Compiler/Disassembler and Tools:
1650
1651Fixed a regression introduced in version 20180927 that could cause the
1652compiler to fault, especially with NamePaths containing one or more
1653carats (^). Such as: ^^_SB_PCI0
1654
1655Added a new remark for the Sleep() operator when the sleep time operand
1656is larger than one second. This is a very long time for the ASL/BIOS code
1657and may not be what was intended by the ASL writer.
1658
1659----------------------------------------
166027 September 2018. Summary of changes for version 20180927:
1661
1662
16631) ACPICA kernel-resident subsystem:
1664
1665Updated the GPE support to clear the status of all ACPI events when
1666entering any/all sleep states in order to avoid premature wakeups. In
1667theory, this may cause some wakeup events to be missed, but the
1668likelihood of this is small. This change restores the original behavior
1669of the ACPICA code in order to fix a regression seen from the previous
1670"Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1671This regression could cause some systems to incorrectly wake immediately.
1672
1673Updated the execution of the _REG methods during initialization and
1674namespace loading to bring the behavior into closer conformance to the
1675ACPI specification and other ACPI implementations:
1676
1677From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1678    "Control methods must assume all operation regions are inaccessible
1679until the _REG(RegionSpace, 1) method is executed"
1680
1681    "The exceptions to this rule are:
16821.  OSPM must guarantee that the following operation regions are always
1683accessible:
1684    SystemIO operation regions.
1685    SystemMemory operation regions when accessing memory returned by the
1686System Address Map reporting interfaces."
1687
1688Since the state of both the SystemIO and SystemMemory address spaces are
1689defined by the specification to never change, this ACPICA change ensures
1690that now _REG is never called on them. This solves some problems seen in
1691the field and provides compatibility with other ACPI implementations. An
1692update to the upcoming new version of the ACPI specification will help
1693clarify this behavior.
1694
1695Updated the implementation of support for the Generic Serial Bus. For the
1696"bidirectional" protocols, the internal implementation now automatically
1697creates a return data buffer of the maximum size (255). This handles the
1698worst-case for data that is returned from the serial bus handler, and
1699fixes some problems seen in the field. This new buffer is directly
1700returned to the ASL. As such, there is no true "bidirectional" buffer,
1701which matches the ACPI specification. This is the reason for the "double
1702store" seen in the example ASL code in the specification, shown below:
1703
1704Word Process Call (AttribProcessCall):
1705    OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
1706    Field(TOP1, BufferAcc, NoLock, Preserve)
1707    {
1708        FLD1, 8, // Virtual register at command value 1.
1709    }
1710
1711    Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
1712                             // as BUFF
1713    CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
1714
1715    Store(0x5416, DATA)               // Save 0x5416 into the data buffer
1716    Store(Store(BUFF, FLD1), BUFF)    // Invoke a write/read Process Call
1717transaction
1718                           // This is the "double store". The write to
1719                           // FLD1 returns a new buffer, which is stored
1720                           // back into BUFF with the second Store.
1721
1722
17232) iASL Compiler/Disassembler and Tools:
1724
1725iASL: Implemented detection of extraneous/redundant uses of the Offset()
1726operator within a Field Unit list. A remark is now issued for these. For
1727example, the first two of the Offset() operators below are extraneous.
1728Because both the compiler and the interpreter track the offsets
1729automatically, these Offsets simply refer to the current offset and are
1730unnecessary. Note, when optimization is enabled, the iASL compiler will
1731in fact remove the redundant Offset operators and will not emit any AML
1732code for them.
1733
1734    OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
1735    Field (OPR1)
1736    {
1737        Offset (0),     // Never needed
1738        FLD1, 32,
1739        Offset (4),     // Redundant, offset is already 4 (bytes)
1740        FLD2, 8,
1741        Offset (64),    // OK use of Offset.
1742        FLD3, 16,
1743    }
1744dsdt.asl     14:         Offset (0),
1745Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1746operator
1747
1748dsdt.asl     16:         Offset (4),
1749Remark   2158 -                 ^ Unnecessary/redundant use of Offset
1750operator
1751
1752----------------------------------------
175310 August 2018. Summary of changes for version 20180810:
1754
1755
17561) ACPICA kernel-resident subsystem:
1757
1758Initial ACPI table loading: Attempt to continue loading ACPI tables
1759regardless of malformed AML. Since migrating table initialization to the
1760new module-level code support, the AML interpreter rejected tables upon
1761any ACPI error encountered during table load. This is a problem because
1762non-serious ACPI errors during table load do not necessarily mean that
1763the entire definition block (DSDT or SSDT) is invalid. This change
1764improves the table loading by ignoring some types of errors that can be
1765generated by incorrect AML. This can range from object type errors, scope
1766errors, and index errors.
1767
1768Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1769during suspend/resume. The status of ACPI events is no longer cleared
1770when entering the ACPI S5 system state (power off) which caused some
1771systems to power up immediately after turning off power in certain
1772situations. This was a functional regression. It was fixed by clearing
1773the status of all ACPI events again when entering S5 (for system-wide
1774suspend or hibernation the clearing of the status of all events is not
1775desirable, as it might cause the kernel to miss wakeup events sometimes).
1776Rafael Wysocki.
1777
1778
17792) iASL Compiler/Disassembler and Tools:
1780
1781AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1782elements listed in the initialization file were previously initialized
1783after the table load and before executing module-level code blocks.
1784Recent changes in the module-level code support means that the table load
1785becomes a large control method execution. If fields are used within
1786module-level code and we are executing with the -fi option, the
1787initialization values were used to initialize the namespace object(s)
1788only after the table was finished loading. This change Provides an early
1789initialization of objects specified in the initialization file so that
1790field unit values are populated during the table load (not after the
1791load).
1792
1793AcpiExec: Fixed a small memory leak regression that could result in
1794warnings during exit of the utility. These warnings were similar to
1795these:
1796    0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1797    0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1798
1799----------------------------------------
180029 June 2018. Summary of changes for version 20180629:
1801
1802
18031) iASL Compiler/Disassembler and Tools:
1804
1805iASL: Fixed a regression related to the use of the ASL External
1806statement. Error checking for the use of the External() statement has
1807been relaxed. Previously, a restriction on the use of External meant that
1808the referenced named object was required to be defined in a different
1809table (an SSDT). Thus it would be an error to declare an object as an
1810external and then define the same named object in the same table. For
1811example:
1812    DefinitionBlock (...)
1813    {
1814        External (DEV1)
1815        Device (DEV1){...} // This was an error
1816    }
1817However, this behavior has caused regressions in some existing ASL code,
1818because there is code that depends on named objects and externals (with
1819the same name) being declared in the same table. This change will allow
1820the ASL code above to compile without errors or warnings.
1821
1822iASL: Implemented ASL language extensions for four operators to make some
1823of their arguments optional instead of required:
1824    1) Field (RegionName, AccessType, LockRule, UpdateRule)
1825    2) BankField (RegionName, BankName, BankValue,
1826                AccessType, LockRule, UpdateRule)
1827    3) IndexField (IndexName, DataName,
1828                AccessType, LockRule, UpdateRule)
1829For the Field operators above, the AccessType, LockRule, and UpdateRule
1830are now optional arguments. The default values are:
1831        AccessType: AnyAcc
1832        LockRule:   NoLock
1833        UpdateRule: Preserve
1834    4) Mutex (MutexName, SyncLevel)
1835For this operator, the SyncLevel argument is now optional. This argument
1836is rarely used in any meaningful way by ASL code, and thus it makes sense
1837to make it optional. The default value is:
1838        SyncLevel:  0
1839
1840iASL: Attempted use of the ASL Unload() operator now results in the
1841following warning:
1842    "Unload is not supported by all operating systems"
1843This is in fact very true, and the Unload operator may be completely
1844deprecated in the near future.
1845
1846AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1847file. Recent changes in the ACPICA module-level code support altered the
1848table load/initialization sequence . This means that the table load has
1849become a large method execution of the table itself. If Operation Region
1850Fields are used within any module-level code and the -fi option was
1851specified, the initialization values were populated only after the table
1852had completely finished loading (and thus the module-level code had
1853already been executed). This change moves the initialization of objects
1854listed in the initialization file to before the table is executed as a
1855method. Field unit values are now initialized before the table execution
1856is performed.
1857
1858----------------------------------------
185931 May 2018. Summary of changes for version 20180531:
1860
1861
18621) ACPICA kernel-resident Subsystem:
1863
1864Implemented additional support to help ensure that a DSDT or SSDT is
1865fully loaded even if errors are incurred during the load. The majority of
1866the problems that are seen is the failure of individual AML operators
1867that occur during execution of any module-level code (MLC) existing in
1868the table. This support adds a mechanism to abort the current ASL
1869statement (AML opcode), emit an error message, and to simply move on to
1870the next opcode -- instead of aborting the entire table load. This is
1871different than the execution of a control method where the entire method
1872is aborted upon any error. The goal is to perform a very "best effort" to
1873load the ACPI tables. The most common MLC errors that have been seen in
1874the field are direct references to unresolved ASL/AML symbols (referenced
1875directly without the use of the CondRefOf operator to validate the
1876symbol). This new ACPICA behavior is now compatible with other ACPI
1877implementations.
1878
1879Interpreter: The Unload AML operator is no longer supported for the
1880reasons below. An AE_NOT_IMPLEMENTED exception is returned.
18811) A correct implementation on at least some hosts may not be possible.
18822) Other ACPI implementations do not correctly/fully support it.
18833) It requires host device driver support which is not known to exist.
1884    (To properly support namespace unload out from underneath.)
18854) This AML operator has never been seen in the field.
1886
1887Parser: Added a debug option to dump AML parse sub-trees as they are
1888being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1889ACPI_DB_PARSE_TREES.
1890
1891Debugger: Reduced the verbosity for errors incurred during table load and
1892module-level code execution.
1893
1894Completed an investigation into adding a namespace node "owner list"
1895instead of the current "owner ID" associated with namespace nodes. This
1896list would link together all nodes that are owned by an individual
1897control method. The purpose would be to enhance control method execution
1898by speeding up cleanup during method exit (all namespace nodes created by
1899a method are deleted upon method termination.) Currently, the entire
1900namespace must be searched for matching owner IDs if (and only if) the
1901method creates named objects outside of the local scope. However, by far
1902the most common case is that methods create objects locally, not outside
1903the method scope. There is already an ACPICA optimization in place that
1904only searches the entire namespace in the rare case of a method creating
1905objects elsewhere in the namespace. Therefore, it is felt that the
1906overhead of adding an additional pointer to each namespace node to
1907implement the owner list makes this feature unnecessary.
1908
1909
19102) iASL Compiler/Disassembler and Tools:
1911
1912iASL, Disassembler, and Template generator: Implemented support for
1913Revision D of the IORT table. Adds a new subtable that is used to specify
1914SMMUv3 PMCGs. rmurphy-arm.
1915
1916Disassembler: Restored correct table header validation for the "special"
1917ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1918table header and must be special-cased. This was a regression that has
1919been present for apparently a long time.
1920
1921AcpiExec: Reduced verbosity of the local exception handler implemented
1922within acpiexec. This handler is invoked by ACPICA upon any exceptions
1923generated during control method execution. A new option was added: -vh
1924restores the original verbosity level if desired.
1925
1926AcpiExec: Changed the default base from decimal to hex for the -x option
1927(set debug level). This simplifies the use of this option and matches the
1928behavior of the corresponding iASL -x option.
1929
1930AcpiExec: Restored a force-exit on multiple control-c (sigint)
1931interrupts. This allows program termination even if other issues cause
1932the control-c to fail.
1933
1934ASL test suite (ASLTS): Added tests for the recently implemented package
1935element resolution mechanism that allows forward references to named
1936objects from individual package elements (this mechanism provides
1937compatibility with other ACPI implementations.)
1938
1939
1940----------------------------------------
19418 May 2018. Summary of changes for version 20180508:
1942
1943
19441) ACPICA kernel-resident subsystem:
1945
1946Completed the new (recently deployed) package resolution mechanism for
1947the Load and LoadTable ASL/AML operators. This fixes a regression that
1948was introduced in version 20180209 that could result in an
1949AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1950(SSDT) that contains package objects.
1951
1952
19532) iASL Compiler/Disassembler and Tools:
1954
1955AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
19561 MB. This change allows for table offsets within the acpidump file to be
1957up to 8 characters. These changes are backwards compatible with existing
1958acpidump files.
1959
1960
1961----------------------------------------
196227 April 2018. Summary of changes for version 20180427:
1963
1964
19651) ACPICA kernel-resident subsystem:
1966
1967Debugger: Added support for Package objects in the "Test Objects"
1968command. This command walks the entire namespace and evaluates all named
1969data objects (Integers, Strings, Buffers, and now Packages).
1970
1971Improved error messages for the namespace root node. Originally, the root
1972was referred to by the confusing string "\___". This has been replaced by
1973"Namespace Root" for clarification.
1974
1975Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1976Ian King <colin.king@canonical.com>.
1977
1978
19792) iASL Compiler/Disassembler and Tools:
1980
1981iASL: Implemented support to detect and flag illegal forward references.
1982For compatibility with other ACPI implementations, these references are
1983now illegal at the root level of the DSDT or SSDTs. Forward references
1984have always been illegal within control methods. This change should not
1985affect existing ASL/AML code because of the fact that these references
1986have always been illegal in the other ACPI implementation.
1987
1988iASL: Added error messages for the case where a table OEM ID and OEM
1989TABLE ID strings are longer than the ACPI-defined length. Previously,
1990these strings were simply silently truncated.
1991
1992iASL: Enhanced the -tc option (which creates an AML hex file in C,
1993suitable for import into a firmware project):
1994  1) Create a unique name for the table, to simplify use of multiple
1995SSDTs.
1996  2) Add a protection #ifdef in the file, similar to a .h header file.
1997With assistance from Sami Mujawar, sami.mujawar@arm.com and Evan Lloyd,
1998evan.lloyd@arm.com
1999
2000AcpiExec: Added a new option, -df, to disable the local fault handler.
2001This is useful during debugging, where it may be desired to drop into a
2002debugger on a fault.
2003
2004----------------------------------------
200513 March 2018. Summary of changes for version 20180313:
2006
2007
20081) ACPICA kernel-resident subsystem:
2009
2010Implemented various improvements to the GPE support:
2011
20121) Dispatch all active GPEs at initialization time so that no GPEs are
2013lost.
20142) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
2015before devices are enumerated.
20163) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
2017IRQs are not lost.
20184) Add parallel GPE handling to eliminate the possibility of dispatching
2019the same GPE twice.
20205) Dispatch any pending GPEs after enabling for the first time.
2021
2022AcpiGetObjectInfo - removed support for the _STA method. This was causing
2023problems on some platforms.
2024
2025Added a new _OSI string, "Windows 2017.2".
2026
2027Cleaned up and simplified the module-level code support. These changes
2028are in preparation for the eventual removal of the legacy MLC support
2029(deferred execution), replaced by the new MLC architecture which executes
2030the MLC as a table is loaded (DSDT/SSDTs).
2031
2032Changed a compile-time option to a runtime option. Changes the option to
2033ignore ACPI table load-time package resolution errors into a runtime
2034option. Used only for platforms that generate many AE_NOT_FOUND errors
2035during boot. AcpiGbl_IgnorePackageResolutionErrors.
2036
2037Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
2038ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
2039compilation errors from unused variables (seen with some compilers).
2040
2041
20422) iASL Compiler/Disassembler and Tools:
2043
2044ASLTS: parallelized execution in order to achieve an (approximately) 2X
2045performance increase.
2046
2047ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
2048error reporting.
2049
2050----------------------------------------
205109 February 2018. Summary of changes for version 20180209:
2052
2053
20541) ACPICA kernel-resident subsystem:
2055
2056Completed the final integration of the recent changes to Package Object
2057handling and the module-level AML code support. This allows forward
2058references from individual package elements when the package object is
2059declared from within module-level code blocks. Provides compatibility
2060with other ACPI implementations.
2061
2062The new architecture for the AML module-level code has been completed and
2063is now the default for the ACPICA code. This new architecture executes
2064the module-level code in-line as the ACPI table is loaded/parsed instead
2065of the previous architecture which deferred this code until after the
2066table was fully loaded. This solves some ASL code ordering issues and
2067provides compatibility with other ACPI implementations. At this time,
2068there is an option to fallback to the earlier architecture, but this
2069support is deprecated and is planned to be completely removed later this
2070year.
2071
2072Added a compile-time option to ignore AE_NOT_FOUND exceptions during
2073resolution of named reference elements within Package objects. Although
2074this is potentially a serious problem, it can generate a lot of
2075noise/errors on platforms whose firmware carries around a bunch of unused
2076Package objects. To disable these errors, define
2077ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
2078errors are always reported for ACPICA applications such as AcpiExec.
2079
2080Fixed a regression related to the explicit type-conversion AML operators
2081(ToXXXX). The regression was introduced early in 2017 but was not seen
2082until recently because these operators are not fully supported by other
2083ACPI implementations and are thus rarely used by firmware developers. The
2084operators are defined by the ACPI specification to not implement the
2085"implicit result object conversion". The regression incorrectly
2086introduced this object conversion for the following explicit conversion
2087operators:
2088    ToInteger
2089    ToString
2090    ToBuffer
2091    ToDecimalString
2092    ToHexString
2093    ToBCD
2094    FromBCD
2095
2096
20972) iASL Compiler/Disassembler and Tools:
2098
2099iASL: Fixed a problem with the compiler constant folding feature as
2100related to the ToXXXX explicit conversion operators. These operators do
2101not support the "implicit result object conversion" by definition. Thus,
2102ASL expressions that use these operators cannot be folded to a simple
2103Store operator because Store implements the implicit conversion. This
2104change uses the CopyObject operator for the ToXXXX operator folding
2105instead. CopyObject is defined to not implement implicit result
2106conversions and is thus appropriate for folding the ToXXXX operators.
2107
2108iASL: Changed the severity of an error condition to a simple warning for
2109the case where a symbol is declared both locally and as an external
2110symbol. This accommodates existing ASL code.
2111
2112AcpiExec: The -ep option to enable the new architecture for module-level
2113code has been removed. It is replaced by the -dp option which instead has
2114the opposite effect: it disables the new architecture (the default) and
2115enables the legacy architecture. When the legacy code is removed in the
2116future, the -dp option will be removed also.
2117
2118----------------------------------------
211905 January 2018. Summary of changes for version 20180105:
2120
2121
21221) ACPICA kernel-resident subsystem:
2123
2124Updated all copyrights to 2018. This affects all source code modules.
2125
2126Fixed a possible build error caused by an unresolved reference to the
2127AcpiUtSafeStrncpy function.
2128
2129Removed NULL pointer arithmetic in the various pointer manipulation
2130macros. All "(void *) NULL" constructs are converted to "(void *) 0".
2131This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
2132
2133Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
2134Mittal.
2135
2136
21372) iASL Compiler/Disassembler and Tools:
2138
2139ASLTS: Updated all copyrights to 2018.
2140
2141Tools: Updated all signon copyrights to 2018.
2142
2143AcpiXtract: Fixed a regression related to ACPI table signatures where the
2144signature was truncated to 3 characters (instead of 4).
2145
2146AcpiExec: Restore the original terminal mode after the use of the -v and
2147-vd options.
2148
2149ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
2150
2151----------------------------------------
215214 December 2017. Summary of changes for version 20171214:
2153
2154
21551) ACPICA kernel-resident subsystem:
2156
2157Fixed a regression in the external (public) AcpiEvaluateObjectTyped
2158interface where the optional "pathname" argument had inadvertently become
2159a required argument returning an error if omitted (NULL pointer
2160argument).
2161
2162Fixed two possible memory leaks related to the recently developed "late
2163resolution" of reference objects within ASL Package Object definitions.
2164
2165Added two recently defined _OSI strings: "Windows 2016" and "Windows
21662017". Mario Limonciello.
2167
2168Implemented and deployed a safer version of the C library function
2169strncpy:  AcpiUtSafeStrncpy. The intent is to at least prevent the
2170creation of unterminated strings as a possible result of a standard
2171strncpy.
2172
2173Cleaned up and restructured the global variable file (acglobal.h). There
2174are many changes, but no functional changes.
2175
2176
21772) iASL Compiler/Disassembler and Tools:
2178
2179iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
2180optional OemData field at the end of the table was incorrectly required
2181for proper compilation. It is now correctly an optional field.
2182
2183ASLTS: The entire suite was converted from standard ASL to the ASL+
2184language, using the ASL-to-ASL+ converter which is integrated into the
2185iASL compiler. A binary compare of all output files has verified the
2186correctness of the conversion.
2187
2188iASL: Fixed the source code build for platforms where "char" is unsigned.
2189This affected the iASL lexer only. Jung-uk Kim.
2190
2191----------------------------------------
219210 November 2017. Summary of changes for version 20171110:
2193
2194
21951) ACPICA kernel-resident subsystem:
2196
2197This release implements full support for ACPI 6.2A:
2198    NFIT - Added a new subtable, "Platform Capabilities Structure"
2199No other changes to ACPICA were required, since ACPI 6.2A is primarily an
2200errata release of the specification.
2201
2202Other ACPI table changes:
2203    IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
2204    PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
2205Linton
2206
2207Utilities: Modified the string/integer conversion functions to use
2208internal 64-bit divide support instead of a native divide. On 32-bit
2209platforms, a 64-bit divide typically requires a library function which
2210may not be present in the build (kernel or otherwise).
2211
2212Implemented a targeted error message for timeouts returned from the
2213Embedded Controller device driver. This is seen frequently enough to
2214special-case an AE_TIME returned from an EC operation region access:
2215    "Timeout from EC hardware or EC device driver"
2216
2217Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
2218runtime error messages have the identical prefix.
2219
2220
22212) iASL Compiler/Disassembler and Tools:
2222
2223AcpiXtract: Fixed a problem with table header detection within the
2224acpidump file. Processing a table could be ended early if a 0x40 (@)
2225appears in the original binary table, resulting in the @ symbol appearing
2226in the decoded ASCII field at the end of the acpidump text line. The
2227symbol caused acpixtract to incorrectly think it had reached the end of
2228the current table and the beginning of a new table.
2229
2230AcpiXtract: Added an option (-f) to ignore some errors during table
2231extraction. This initial implementation ignores non-ASCII and non-
2232printable characters found in the acpidump text file.
2233
2234TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
2235for ASLTS. This feature is used to track memory allocations from
2236different memory caches within the ACPICA code. At the end of an ASLTS
2237run, these memory statistics are recorded and stored in a log file.
2238
2239Debugger (user-space version): Implemented a simple "Background" command.
2240Creates a new thread to execute a control method in the background, while
2241control returns to the debugger prompt to allow additional commands.
2242    Syntax: Background <Namepath> [Arguments]
2243
2244----------------------------------------
224529 September 2017. Summary of changes for version 20170929:
2246
2247
22481) ACPICA kernel-resident subsystem:
2249
2250Redesigned and implemented an improved ASL While() loop timeout
2251mechanism. This mechanism is used to prevent infinite loops in the kernel
2252AML interpreter caused by either non-responsive hardware or incorrect AML
2253code. The new implementation uses AcpiOsGetTimer instead of a simple
2254maximum loop count, and is thus more accurate and constant across
2255different machines. The default timeout is currently 30 seconds, but this
2256may be adjusted later.
2257
2258Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
2259better reflect the new implementation of the loop timeout mechanism.
2260
2261Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
2262and to fix an off-by-one error. Jung-uk Kim.
2263
2264Fixed an EFI build problem by updating the makefiles to for a new file
2265that was added, utstrsuppt.c
2266
2267
22682) iASL Compiler/Disassembler and Tools:
2269
2270Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
2271includes support in the table disassembler, compiler, and template
2272generator.
2273
2274iASL: Added an exception for an illegal type of recursive method
2275invocation. If a method creates named objects, the first recursive call
2276will fail at runtime. This change adds an error detection at compile time
2277to catch the problem up front. Note: Marking such a method as
2278"serialized" will not help with this problem, because the same thread can
2279acquire the method mutex more than once. Example compiler and runtime
2280output:
2281
2282    Method (MTH1)
2283    {
2284        Name (INT1, 1)
2285        MTH1 ()
2286    }
2287
2288    dsdt.asl     22: MTH1 ()
2289    Error    6152 -  ^ Illegal recursive call to method
2290                       that creates named objects (MTH1)
2291
2292Previous runtime exception:
2293    ACPI Error: [INT1] Namespace lookup failure,
2294    AE_ALREADY_EXISTS (20170831/dswload2-465)
2295
2296iASL: Updated support for External() opcodes to improve namespace
2297management and error detection. These changes are related to issues seen
2298with multiple-segment namespace pathnames within External declarations,
2299such as below:
2300
2301    External(\_SB.PCI0.GFX0, DeviceObj)
2302    External(\_SB.PCI0.GFX0.ALSI)
2303
2304iASL: Implemented support for multi-line error/warning messages. This
2305enables more detailed and helpful error messages as below, from the
2306initial deployment for the duplicate names error:
2307
2308    DSDT.iiii   1692:       Device(PEG2) {
2309    Error    6074 -                  ^ Name already exists in scope
2310(PEG2)
2311
2312        Original name creation/declaration below:
2313        DSDT.iiii     93:   External(\_SB.PCI0.PEG2, DeviceObj)
2314
2315AcpiXtract: Added additional flexibility to support differing input hex
2316dump formats. Specifically, hex dumps that contain partial disassembly
2317and/or comments within the ACPI table data definition. There exist some
2318dump utilities seen in the field that create this type of hex dump (such
2319as Simics). For example:
2320
2321    DSDT @ 0xdfffd0c0 (10999 bytes)
2322        Signature DSDT
2323        Length 10999
2324        Revision 1
2325        Checksum 0xf3 (Ok)
2326        OEM_ID BXPC
2327        OEM_table_id BXDSDT
2328        OEM_revision 1
2329        Creator_id 1280593481
2330        Creator_revision 537399345
2331      0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
2332      ...
2333      2af0: 5f 4c 30 46 00 a4 01
2334
2335Test suite: Miscellaneous changes/fixes:
2336    More cleanup and simplification of makefiles
2337    Continue compilation of test cases after a compile failure
2338    Do not perform binary compare unless both files actually exist
2339
2340iASL: Performed some code/module restructuring. Moved all memory
2341allocation functions to new modules. Two new files, aslallocate.c and
2342aslcache.c
2343
2344----------------------------------------
234531 August 2017. Summary of changes for version 20170831:
2346
2347
23481) ACPICA kernel-resident subsystem:
2349
2350Implemented internal support for full 64-bit addresses that appear in all
2351Generic Address Structure (GAS) structures. Previously, only the lower 32
2352bits were used. Affects the use of GAS structures in the FADT and other
2353tables, as well as the GAS structures passed to the AcpiRead and
2354AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
2355
2356Added header support for the PDTT ACPI table (Processor Debug Trigger
2357Table). Full support in the iASL Data Table Compiler and disassembler is
2358forthcoming.
2359
2360
23612) iASL Compiler/Disassembler and Tools:
2362
2363iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
2364Properties Topology Table) where a flag bit was specified in the wrong
2365bit position ("Line Size Valid", bit 6).
2366
2367iASL: Implemented support for Octal integer constants as defined by the
2368ASL language grammar, per the ACPI specification. Any integer constant
2369that starts with a zero is an octal constant. For example,
2370    Store (037777, Local0) /* Octal constant */
2371    Store (0x3FFF, Local0) /* Hex equivalent */
2372    Store (16383,  Local0) /* Decimal equivalent */
2373
2374iASL: Improved overflow detection for 64-bit string conversions during
2375compilation of integer constants. "Overflow" in this case means a string
2376that represents an integer that is too large to fit into a 64-bit value.
2377Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
2378the low-order 32 bits with a warning, as previously implemented. Several
2379new exceptions are defined that indicate a 64-bit overflow, as well as
2380the base (radix) that was used during the attempted conversion. Examples:
2381    Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF        // AE_HEX_OVERFLOW
2382    Local0 = 01111222233334444555566667777     // AE_OCTAL_OVERFLOW
2383    Local0 = 11112222333344445555666677778888  // AE_DECIMAL_OVERFLOW
2384
2385iASL: Added a warning for the case where a ResourceTemplate is declared
2386with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
2387this case, the resulting template is created with a single END_TAG
2388descriptor, which is essentially useless.
2389
2390iASL: Expanded the -vw option (ignore specific warnings/remarks) to
2391include compilation error codes as well.
2392
2393----------------------------------------
239428 July 2017. Summary of changes for version 20170728:
2395
2396
23971) ACPICA kernel-resident subsystem:
2398
2399Fixed a regression seen with small resource descriptors that could cause
2400an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
2401
2402AML interpreter: Implemented a new feature that allows forward references
2403from individual named references within package objects that are
2404contained within blocks of "module-level code". This provides
2405compatibility with other ACPI implementations and supports existing
2406firmware that depends on this feature. Example:
2407
2408    Name (ABCD, 1)
2409    If (ABCD)                       /* An If() at module-level */
2410    {
2411        Name (PKG1, Package()
2412        {
2413            INT1                    /* Forward reference to object INT1
2414*/
2415        })
2416        Name (INT1, 0x1234)
2417    }
2418
2419AML Interpreter: Fixed a problem with the Alias() operator where aliases
2420to some ASL objects were not handled properly. Objects affected are:
2421Mutex, Event, and OperationRegion.
2422
2423AML Debugger: Enhanced to properly handle AML Alias objects. These
2424objects have one level of indirection which was not fully supported by
2425the debugger.
2426
2427Table Manager: Added support to detect and ignore duplicate SSDTs within
2428the XSDT/RSDT. This error in the XSDT has been seen in the field.
2429
2430EFI and EDK2 support:
2431    Enabled /WX flag for MSVC builds
2432    Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
2433    Added local support for 64-bit multiply and shift operations
2434    Added support to compile acpidump.efi on Windows
2435    Added OSL function stubs for interfaces not used under EFI
2436
2437Added additional support for the _DMA predefined name. _DMA returns a
2438buffer containing a resource template. This change add support within the
2439resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
2440resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
2441
2442
24432) iASL Compiler/Disassembler and Tools:
2444
2445iASL: Fixed a problem where the internal input line buffer(s) could
2446overflow if there are very long lines in the input ASL source code file.
2447Implemented buffer management that automatically increases the size of
2448the buffers as necessary.
2449
2450iASL: Added an option (-vx) to "expect" particular remarks, warnings and
2451errors. If the specified exception is not raised during compilation, the
2452compiler emits an error. This is intended to support the ASL test suite,
2453but may be useful in other contexts.
2454
2455iASL: Implemented a new predefined macro, __METHOD__, which returns a
2456string containing the name of the current control method that is being
2457compiled.
2458
2459iASL: Implemented debugger and table compiler support for the SDEI ACPI
2460table (Software Delegated Exception Interface). James Morse
2461<james.morse@arm.com>
2462
2463Unix/Linux makefiles: Added an option to disable compile optimizations.
2464The disable occurs when the NOOPT flag is set to TRUE.
2465theracermaster@gmail.com
2466
2467Acpidump: Added support for multiple DSDT and FACS tables. This can occur
2468when there are different tables for 32-bit versus 64-bit.
2469
2470Enhanced error reporting for the ASL test suite (ASLTS) by removing
2471unnecessary/verbose text, and emit the actual line number where an error
2472has occurred. These changes are intended to improve the usefulness of the
2473test suite.
2474
2475----------------------------------------
247629 June 2017. Summary of changes for version 20170629:
2477
2478
24791) ACPICA kernel-resident subsystem:
2480
2481Tables: Implemented a deferred ACPI table verification. This is useful
2482for operating systems where the tables cannot be verified in the early
2483initialization stage due to early memory mapping limitations on some
2484architectures. Lv Zheng.
2485
2486Tables: Removed the signature validation for dynamically loaded tables.
2487Provides compatibility with other ACPI implementations. Previously, only
2488SSDT tables were allowed, as per the ACPI specification. Now, any table
2489signature can be used via the Load() operator. Lv Zheng.
2490
2491Tables: Fixed several mutex issues that could cause errors during table
2492acquisition. Lv Zheng.
2493
2494Tables: Fixed a problem where an ACPI warning could be generated if a
2495null pointer was passed to the AcpiPutTable interface. Lv Zheng.
2496
2497Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
2498AcpiPutTable interfaces. This applies to the "late stage" table loading
2499when the use of AcpiPutTable is no longer required (since the system
2500memory manager is fully running and available). Lv Zheng.
2501
2502Fixed/Reverted a regression during processing of resource descriptors
2503that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
2504exception in this case.
2505
2506Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
2507I/O Remapping specification. Robin Murphy <robin.murphy@arm.com>
2508
2509Interpreter: Fixed a possible fault if an Alias operator with an invalid
2510or duplicate target is encountered during Alias creation in
2511AcpiExCreateAlias. Alex James <theracermaster@gmail.com>
2512
2513Added an option to use designated initializers for function pointers.
2514Kees Cook <keescook@google.com>
2515
2516
25172) iASL Compiler/Disassembler and Tools:
2518
2519iASL: Allow compilation of External declarations with target pathnames
2520that refer to existing named objects within the table. Erik Schmauss.
2521
2522iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
2523FieldUnit name also is declared via External in the same table. Erik
2524Schmauss.
2525
2526iASL: Allow existing scope names within pathnames used in External
2527statements. For example:
2528    External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
2529    Device (ABCD)
2530
2531iASL: IORT ACPI table: Implemented changes required to decode the new
2532Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
2533compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni@cavium.com>
2534
2535Disassembler: Don't abort disassembly on errors from External()
2536statements. Erik Schmauss.
2537
2538Disassembler: fixed a possible fault when one of the Create*Field
2539operators references a Resource Template. ACPICA Bugzilla 1396.
2540
2541iASL: In the source code, resolved some naming inconsistences across the
2542parsing support. Fixes confusion between "Parse Op" and "Parse Node".
2543Adds a new file, aslparseop.c
2544
2545----------------------------------------
254631 May 2017. Summary of changes for version 20170531:
2547
2548
25490) ACPI 6.2 support:
2550
2551The ACPI specification version 6.2 has been released and is available at
2552http://uefi.org/specifications
2553
2554This version of ACPICA fully supports the ACPI 6.2 specification. Changes
2555are summarized below.
2556
2557New ACPI tables (Table Compiler/Disassembler/Templates):
2558    HMAT (Heterogeneous Memory Attributes Table)
2559    WSMT (Windows SMM Security Mitigation Table)
2560    PPTT (Processor Properties Topology Table)
2561
2562New subtables for existing ACPI tables:
2563    HEST (New subtable, Arch-deferred machine check)
2564    SRAT (New subtable, Arch-specific affinity structure)
2565    PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
2566
2567Simple updates for existing ACPI tables:
2568    BGRT (two new flag bits)
2569    HEST (New bit defined for several subtables, GHES_ASSIST)
2570
2571New Resource Descriptors and Resource macros (Compiler/Disassembler):
2572    PinConfig()
2573    PinFunction()
2574    PinGroup()
2575    PinGroupConfig()
2576    PinGroupFunction()
2577    New type for hardware error notification (section 18.3.2.9)
2578
2579New predefined names/methods (Compiler/Interpreter):
2580    _HMA (Heterogeneous Memory Attributes)
2581    _LSI (Label Storage Information)
2582    _LSR (Label Storage Read)
2583    _LSW (Label Storage Write)
2584
2585ASL grammar/macro changes (Compiler):
2586    For() ASL macro, implemented with the AML while operator
2587    Extensions to Concatenate operator
2588    Support for multiple definition blocks in same ASL file
2589    Clarification for Buffer operator
2590    Allow executable AML code underneath all scopes (Devices, etc.)
2591    Clarification/change for the _OSI return value
2592    ASL grammar update for reference operators
2593    Allow a zero-length string for AML filename in DefinitionBlock
2594
2595Miscellaneous:
2596    New device object notification value
2597    Remove a notify value (0x0C) for graceful shutdown
2598    New UUIDs for processor/cache properties and
2599        physical package property
2600    New _HID, ACPI0014 (Wireless Power Calibration Device)
2601
2602
26031) ACPICA kernel-resident subsystem:
2604
2605Added support to disable ACPI events on hardware-reduced platforms.
2606Eliminates error messages of the form "Could not enable fixed event". Lv
2607Zheng
2608
2609Fixed a problem using Device/Thermal objects with the ObjectType and
2610DerefOf ASL operators. This support had not been fully/properly
2611implemented.
2612
2613Fixed a problem where if a Buffer object containing a resource template
2614was longer than the actual resource template, an error was generated --
2615even though the AML is legal. This case has been seen in the field.
2616
2617Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2618The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2619
2620Added header file changes for the TPM2 ACPI table. Update to new version
2621of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2622
2623Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2624These interfaces are intended to be used only in conjunction with the
2625predefined _DLM method (Device Lock Method). "This object appears in a
2626device scope when AML access to the device must be synchronized with the
2627OS environment".
2628
2629Example Code and Data Size: These are the sizes for the OS-independent
2630acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2631debug version of the code includes the debug output trace mechanism and
2632has a much larger code and data size.
2633
2634  Current Release:
2635    Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
2636    Debug Version:     204.0K Code, 84.3K Data, 288.3K Total
2637  Previous Release:
2638    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2639    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2640
2641
26422) iASL Compiler/Disassembler and Tools:
2643
2644iASL: Fixed a problem where an External() declaration could not refer to
2645a Field Unit. Erik Schmauss.
2646
2647Disassembler: Improved support for the Switch/Case operators. This
2648feature will disassemble AML code back to the original Switch operators
2649when possible, instead of an If..Else sequence. David Box
2650
2651iASL and disassembler: Improved the handling of multiple extraneous
2652parentheses for both ASL input and disassembled ASL output.
2653
2654Improved the behavior of the iASL compiler and disassembler to detect
2655improper use of external declarations
2656
2657Disassembler: Now aborts immediately upon detection of an unknown AML
2658opcode. The AML parser has no real way to recover from this, and can
2659result in the creation of an ill-formed parse tree that causes errors
2660later during the disassembly.
2661
2662All tools: Fixed a problem where the Unix application OSL did not handle
2663control-c correctly. For example, a control-c could incorrectly wake the
2664debugger.
2665
2666AcpiExec: Improved the Control-C handling and added a handler for
2667segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2668environments.
2669
2670Reduced the verbosity of the generic unix makefiles. Previously, each
2671compilation displayed the full set of compiler options. This has been
2672eliminated as the options are easily inspected within the makefiles. Each
2673compilation now results in a single line of output.
2674
2675----------------------------------------
267603 March 2017. Summary of changes for version 20170303:
2677
2678
26790) ACPICA licensing:
2680
2681The licensing information at the start of each source code module has
2682been updated. In addition to the Intel license, the dual GPLv2/BSD
2683license has been added for completeness. Now, a single version of the
2684source code should be suitable for all ACPICA customers. This is the
2685major change for this release since it affects all source code modules.
2686
2687
26881) ACPICA kernel-resident subsystem:
2689
2690Fixed two issues with the common asltypes.h header that could cause
2691problems in some environments: (Kim Jung-uk)
2692    Removed typedef for YY_BUFFER_STATE ?
2693       Fixes an error with earlier versions of Flex.
2694    Removed use of FILE typedef (which is only defined in stdio.h)
2695
2696
26972) iASL Compiler/Disassembler and Tools:
2698
2699Disassembler: fixed a regression introduced in 20170224. A fix for a
2700memory leak related to resource descriptor tags (names) could fault when
2701the disassembler was generated with 64-bit compilers.
2702
2703The ASLTS test suite has been updated to implement a new testing
2704architecture. During generation of the suite from ASL source, both the
2705ASL and ASL+ compilers are now validated, as well as the disassembler
2706itself (Erik Schmauss). The architecture executes as follows:
2707
2708    For every ASL source module:
2709        Compile (legacy ASL compilation)
2710        Disassemble the resulting AML to ASL+ source code
2711        Compile the new ASL+ module
2712        Perform a binary compare on the legacy AML and the new ASL+ AML
2713    The ASLTS suite then executes normally using the AML binaries.
2714
2715----------------------------------------
271624 February 2017. Summary of changes for version 20170224:
2717
2718
27191) ACPICA kernel-resident subsystem:
2720
2721Interpreter: Fixed two issues with the control method return value auto-
2722repair feature, where an attempt to double-delete an internal object
2723could result in an ACPICA warning (for _CID repair and others). No fault
2724occurs, however, because the attempted deletion (actually a release to an
2725internal cache) is detected and ignored via object poisoning.
2726
2727Debugger: Fixed an AML interpreter mutex issue during the single stepping
2728of control methods. If certain debugger commands are executed during
2729stepping, a mutex acquire/release error could occur. Lv Zheng.
2730
2731Fixed some issues generating ACPICA with the Intel C compiler by
2732restoring the original behavior and compiler-specific include file in
2733acenv.h. Lv Zheng.
2734
2735Example Code and Data Size: These are the sizes for the OS-independent
2736acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2737debug version of the code includes the debug output trace mechanism and
2738has a much larger code and data size.
2739
2740  Current Release:
2741    Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
2742    Debug Version:     207.5K Code, 82.7K Data, 290.2K Total
2743  Previous Release:
2744    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2745    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
2746
2747
27482) iASL Compiler/Disassembler and Tools:
2749
2750iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2751tool has been designed, implemented, and included in this release. The
2752key feature of this utility is that the original comments within the
2753input ASL file are preserved during the conversion process, and included
2754within the converted ASL+ file -- thus creating a transparent conversion
2755of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2756
2757    Usage: iasl -ca <ASL-filename>  // Output is a .dsl file with
2758converted code
2759
2760iASL/Disassembler: Improved the detection and correct disassembly of
2761Switch/Case operators. This feature detects sequences of if/elseif/else
2762operators that originated from ASL Switch/Case/Default operators and
2763emits the original operators. David Box.
2764
2765iASL: Improved the IORT ACPI table support in the following areas. Lv
2766Zheng:
2767    Clear MappingOffset if the MappingCount is zero.
2768    Fix the disassembly of the SMMU GSU interrupt offset.
2769    Update the template file for the IORT table.
2770
2771Disassembler: Enhanced the detection and disassembly of resource
2772template/descriptor within a Buffer object. An EndTag descriptor is now
2773required to have a zero second byte, since all known ASL compilers emit
2774this. This helps eliminate incorrect decisions when a buffer is
2775disassembled (false positives on resource templates).
2776
2777----------------------------------------
277819 January 2017. Summary of changes for version 20170119:
2779
2780
27811) General ACPICA software:
2782
2783Entire source code base: Added the 2017 copyright to all source code
2784legal/licensing module headers and utility/tool signons. This includes
2785the standard Linux dual-license header. This affects virtually every file
2786in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2787the ACPICA test suite.
2788
2789
27902) iASL Compiler/Disassembler and Tools:
2791
2792iASL: Removed/fixed an inadvertent remark when a method argument
2793containing a reference is used as a target operand within the method (and
2794never used as a simple argument), as in the example below. Jeffrey Hugo.
2795
2796    dsdt.asl   1507:    Store(0x1, Arg0)
2797    Remark   2146 -                ^ Method Argument is never used (Arg0)
2798
2799All tools: Removed the bit width of the compiler that generated the tool
2800from the common signon for all user space tools. This proved to be
2801confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2802from the generic makefiles (Thomas Petazzoni). Example below.
2803
2804    Old:
2805    ASL+ Optimizing Compiler version 20170119-32
2806    ASL+ Optimizing Compiler version 20170119-64
2807
2808    New:
2809    ASL+ Optimizing Compiler version 20170119
2810
2811----------------------------------------
281222 December 2016. Summary of changes for version 20161222:
2813
2814
28151) ACPICA kernel-resident subsystem:
2816
2817AML Debugger: Implemented a new mechanism to simplify and enhance
2818debugger integration into all environments, including kernel debuggers
2819and user-space utilities, as well as remote debug services. This
2820mechanism essentially consists of new OSL interfaces to support debugger
2821initialization/termination, as well as wait/notify interfaces to perform
2822the debugger handshake with the host. Lv Zheng.
2823
2824    New OSL interfaces:
2825        AcpiOsInitializeDebugger (void)
2826        AcpiOsTerminateDebugger (void)
2827        AcpiOsWaitCommandReady (void)
2828        AcpiOsNotifyCommandComplete (void)
2829
2830    New OS services layer:
2831        osgendbg.c -- Example implementation, and used for AcpiExec
2832
2833Update for Generic Address Space (GAS) support: Although the AccessWidth
2834and/or BitOffset fields of the GAS are not often used, this change now
2835fully supports these fields. This affects the internal support for FADT
2836registers, registers in other ACPI data tables, and the AcpiRead and
2837AcpiWrite public interfaces. Lv Zheng.
2838
2839Sleep support: In order to simplify integration of ACPI sleep for the
2840various host operating systems, a new OSL interface has been introduced.
2841AcpiOsEnterSleep allows the host to perform any required operations
2842before the final write to the sleep control register(s) is performed by
2843ACPICA. Lv Zheng.
2844
2845    New OSL interface:
2846        AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2847
2848    Called from these internal interfaces:
2849        AcpiHwLegacySleep
2850        AcpiHwExtendedSleep
2851
2852EFI support: Added a very small EFI/ACPICA example application. Provides
2853a simple demo for EFI integration, as well as assisting with resolution
2854of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2855
2856    source/tools/efihello/efihello.c
2857
2858Local C library: Implemented several new functions to enhance ACPICA
2859portability, for environments where these clib functions are not
2860available (such as EFI). Lv Zheng:
2861    putchar
2862    getchar
2863    strpbrk
2864    strtok
2865    memmove
2866
2867Fixed a regression where occasionally a valid resource descriptor was
2868incorrectly detected as invalid at runtime, and a
2869AE_AML_NO_RESOURCE_END_TAG was returned.
2870
2871Fixed a problem with the recently implemented support that enables
2872control method invocations as Target operands to many ASL operators.
2873Warnings of this form: "Needed type [Reference], found [Processor]" were
2874seen at runtime for some method invocations.
2875
2876Example Code and Data Size: These are the sizes for the OS-independent
2877acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2878debug version of the code includes the debug output trace mechanism and
2879has a much larger code and data size.
2880
2881  Current Release:
2882    Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
2883    Debug Version:     201.7K Code, 82.7K Data, 284.4K Total
2884  Previous Release:
2885    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2886    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2887
2888
28892) iASL Compiler/Disassembler and Tools:
2890
2891Disassembler: Enhanced output by adding the capability to detect and
2892disassemble ASL Switch/Case statements back to the original ASL source
2893code instead of if/else blocks. David Box.
2894
2895AcpiHelp: Split a large file into separate files based upon
2896functionality/purpose. New files are:
2897    ahaml.c
2898    ahasl.c
2899
2900----------------------------------------
290117 November 2016. Summary of changes for version 20161117:
2902
2903
29041) ACPICA kernel-resident subsystem:
2905
2906Table Manager: Fixed a regression introduced in 20160729, "FADT support
2907cleanup". This was an attempt to remove all references in the source to
2908the FADT version 2, which never was a legal version number. It was
2909skipped because it was an early version of 64-bit support that was
2910eventually abandoned for the current 64-bit support.
2911
2912Interpreter: Fixed a problem where runtime implicit conversion was
2913incorrectly disabled for the ASL operators below. This brings the
2914behavior into compliance with the ACPI specification:
2915    FromBCD
2916    ToBCD
2917    ToDecimalString
2918    ToHexString
2919    ToInteger
2920    ToBuffer
2921
2922Table Manager: Added a new public interface, AcpiPutTable, used to
2923release and free an ACPI table returned by AcpiGetTable and related
2924interfaces. Lv Zheng.
2925
2926Example Code and Data Size: These are the sizes for the OS-independent
2927acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2928debug version of the code includes the debug output trace mechanism and
2929has a much larger code and data size.
2930
2931  Current Release:
2932    Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
2933    Debug Version:     201.3K Code, 82.7K Data, 284.0K Total
2934  Previous Release:
2935    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
2936    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
2937
2938
29392) iASL Compiler/Disassembler and Tools:
2940
2941Disassembler: Fixed a regression for disassembly of Resource Template.
2942Detection of templates in the AML stream missed some types of templates.
2943
2944iASL: Fixed a problem where an Access Size error was returned for the PCC
2945address space when the AccessSize of the GAS register is greater than a
2946DWORD. Hoan Tran.
2947
2948iASL: Implemented several grammar changes for the operators below. These
2949changes are slated for the next version of the ACPI specification:
2950    RefOf        - Disallow method invocation as an operand
2951    CondRefOf    - Disallow method invocation as an operand
2952    DerefOf      - Disallow operands that use the result from operators
2953that
2954                   do not return a reference (Changed TermArg to
2955SuperName).
2956
2957iASL: Control method invocations are now allowed for Target operands, as
2958per the ACPI specification. Removed error for using a control method
2959invocation as a Target operand.
2960
2961Disassembler: Improved detection of Resource Templates, Unicode, and
2962Strings within Buffer objects. These subtypes do not contain a specific
2963opcode to indicate the originating ASL code, and they must be detected by
2964other means within the disassembler.
2965
2966iASL: Implemented an optimization improvement for 32-bit ACPI tables
2967(DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2968only after 64-bit to 32-bit truncation. A truncation warning message is
2969still emitted, however.
2970
2971AcpiXtract: Implemented handling for both types of line terminators (LF
2972or CR/LF) so that it can accept AcpiDump output files from any system.
2973Peter Wu.
2974
2975AcpiBin: Added two new options for comparing AML files:
2976    -a: compare and display ALL mismatches
2977    -o: start compare at this offset into the second file
2978
2979----------------------------------------
298030 September 2016. Summary of changes for version 20160930:
2981
2982
29831) ACPICA kernel-resident subsystem:
2984
2985Fixed a regression in the internal AcpiTbFindTable function where a non
2986AE_OK exception could inadvertently be returned even if the function did
2987not fail. This problem affects the following operators:
2988    DataTableRegion
2989    LoadTable
2990
2991Fixed a regression in the LoadTable operator where a load to any
2992namespace location other than the root no longer worked properly.
2993
2994Increased the maximum loop count value that will result in the
2995AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2996prevent infinite loops within the AML interpreter and thus the host OS
2997kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
29981,048,575).
2999
3000Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
3001acpixf.h file. This allows hosts to easily configure the maximum loop
3002count at runtime.
3003
3004Removed an illegal character in the strtoul64.c file. This character
3005caused errors with some C compilers.
3006
3007Example Code and Data Size: These are the sizes for the OS-independent
3008acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3009debug version of the code includes the debug output trace mechanism and
3010has a much larger code and data size.
3011
3012  Current Release:
3013    Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
3014    Debug Version:     200.7K Code, 82.1K Data, 282.8K Total
3015  Previous Release:
3016    Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
3017    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
3018
3019
30202) iASL Compiler/Disassembler and Tools:
3021
3022Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
3023the simpler ASL ElseIf keyword. During the conversion, a trailing If
3024block could be lost and missing from the disassembled output.
3025
3026iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
3027the missing rule caused a parse error when using the Index operator as an
3028operand to ObjectType. This construct now compiles properly. Example:
3029    ObjectType(PKG1[4]).
3030
3031iASL: Correctly handle unresolved symbols in the hardware map file (-lm
3032option). Previously, unresolved symbols could cause a protection fault.
3033Such symbols are now marked as unresolved in the map file.
3034
3035iASL: Implemented support to allow control method invocations as an
3036operand to the ASL DeRefOf operator. Example:
3037    DeRefOf(MTH1(Local0))
3038
3039Disassembler: Improved support for the ToPLD ASL macro. Detection of a
3040possible _PLD buffer now includes examination of both the normal buffer
3041length (16 or 20) as well as the surrounding AML package length.
3042
3043Disassembler: Fixed a problem with the decoding of complex expressions
3044within the Divide operator for ASL+. For the case where both the quotient
3045and remainder targets are specified, the entire statement cannot be
3046disassembled. Previously, the output incorrectly contained a mix of ASL-
3047and ASL+ operators. This mixed statement causes a syntax error when
3048compiled. Example:
3049    Divide (Add (INT1, 6), 128, RSLT, QUOT)  // was incorrectly
3050disassembled to:
3051    Divide (INT1 + 6, 128, RSLT, QUOT)
3052
3053iASL/Tools: Added support to process AML and non-AML ACPI tables
3054consistently. For the disassembler and AcpiExec, allow all types of ACPI
3055tables (AML and data tables). For the iASL -e option, allow only AML
3056tables (DSDT/SSDT).
3057
3058----------------------------------------
305931 August 2016. Summary of changes for version 20160831:
3060
3061
30621) ACPICA kernel-resident subsystem:
3063
3064Improve support for the so-called "module-level code", which is defined
3065to be math, logical and control AML opcodes that appear outside of any
3066control method. This change improves the support by adding more opcodes
3067that can be executed in the manner. Some other issues have been solved,
3068and the ASL grammar changes to support such code under all scope
3069operators (Device, etc.) are complete. Lv Zheng.
3070
3071UEFI support: these OSL functions have been implemented. This is an
3072additional step toward supporting the AcpiExec utility natively (with
3073full hardware access) under UEFI. Marcelo Ferreira.
3074    AcpiOsReadPciConfiguration
3075    AcpiOsWritePciConfiguration
3076
3077Fixed a possible mutex error during control method auto-serialization. Lv
3078Zheng.
3079
3080Updated support for the Generic Address Structure by fully implementing
3081all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
3082Zheng.
3083
3084Updated the return value for the internal _OSI method. Instead of
30850xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
3086for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
3087implementations, and will be reflected and clarified in the next version
3088of the ACPI specification.
3089
3090Implemented two new table events that can be passed to an ACPICA table
3091handler. These events are used to indicate a table installation or
3092uninstallation. These events are used in addition to existed table load
3093and unload events. Lv Zheng.
3094
3095Implemented a cleanup for all internal string-to-integer conversions.
3096Consolidate multiple versions of this functionality and limit possible
3097bases to either 10 or 16 to simplify the code. Adds a new file,
3098utstrtoul64.
3099
3100Cleanup the inclusion order of the various compiler-specific headers.
3101This simplifies build configuration management. The compiler-specific
3102headers are now split out from the host-specific headers. Lv Zheng.
3103
3104Example Code and Data Size: These are the sizes for the OS-independent
3105acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3106debug version of the code includes the debug output trace mechanism and
3107has a much larger code and data size.
3108
3109  Current Release:
3110    Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
3111    Debug Version:     200.3K Code, 82.1K Data, 282.4K Total
3112
3113
31142) iASL Compiler/Disassembler and Tools:
3115
3116iASL/AcpiExec: Added a command line option to display the build date/time
3117of the tool (-vd). This can be useful to verify that the correct version
3118of the tools are being used.
3119
3120AML Debugger: Implemented a new subcommand ("execute predef") to execute
3121all predefined control methods and names within the current namespace.
3122This can be useful for debugging problems with ACPI tables and the ACPI
3123namespace.
3124
3125----------------------------------------
312629 July 2016. Summary of changes for version 20160729:
3127
3128
31291) ACPICA kernel-resident subsystem:
3130
3131Implemented basic UEFI support for the various ACPICA tools. This
3132includes:
31331) An OSL to implement the various AcpiOs* interfaces on UEFI.
31342) Support to obtain the ACPI tables on UEFI.
31353) Local implementation of required C library functions not available on
3136UEFI.
31374) A front-end (main) function for the tools for UEFI-related
3138initialization.
3139
3140The initial deployment of this support is the AcpiDump utility executing
3141as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
3142Current environments supported are Linux/Unix. MSVC generation is not
3143supported at this time. See the generate/efi/README file for build
3144instructions. Lv Zheng.
3145
3146Future plans include porting the AcpiExec utility to execute natively on
3147the platform with I/O and memory access. This will allow viewing/dump of
3148the platform namespace and native execution of ACPI control methods that
3149access the actual hardware. To fully implement this support, the OSL
3150functions below must be implemented with UEFI interfaces. Any community
3151help in the implementation of these functions would be appreciated:
3152    AcpiOsReadPort
3153    AcpiOsWritePort
3154    AcpiOsReadMemory
3155    AcpiOsWriteMemory
3156    AcpiOsReadPciConfiguration
3157    AcpiOsWritePciConfiguration
3158
3159Restructured and standardized the C library configuration for ACPICA,
3160resulting in the various configuration options below. This includes a
3161global restructuring of the compiler-dependent and platform-dependent
3162include files. These changes may affect the existing platform-dependent
3163configuration files on some hosts. Lv Zheng.
3164
3165The current C library configuration options appear below. For any issues,
3166it may be helpful to examine the existing compiler-dependent and
3167platform-dependent files as examples. Lv Zheng.
3168
31691) Linux kernel:
3170    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3171library.
3172    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
31732) Unix/Windows/BSD applications:
3174    ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
3175library.
3176    ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
31773) UEFI applications:
3178    ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3179library.
3180    ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
31814) UEFI applications (EDK2/StdLib):
3182    ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
3183    ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
3184
3185
3186AML interpreter: "module-level code" support. Allows for execution of so-
3187called "executable" AML code (math/logical operations, etc.) outside of
3188control methods not just at the module level (top level) but also within
3189any scope declared outside of a control method - Scope{}, Device{},
3190Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
3191
3192Simplified the configuration of the "maximum AML loops" global option by
3193adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
3194modified at runtime.
3195
3196
3197Example Code and Data Size: These are the sizes for the OS-independent
3198acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3199debug version of the code includes the debug output trace mechanism and
3200has a much larger code and data size.
3201
3202  Current Release:
3203    Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
3204    Debug Version:     199.0K Code, 81.8K Data, 280.8K Total
3205
3206
32072) iASL Compiler/Disassembler and Tools:
3208
3209iASL: Add full support for the RASF ACPI table (RAS Features Table).
3210Includes disassembler, data table compiler, and header support.
3211
3212iASL Expand "module-level code" support. Allows for
3213compilation/disassembly of so-called "executable" AML code (math/logical
3214operations, etc.) outside of control methods not just at the module level
3215(top level) but also within any scope declared outside of a control
3216method - Scope{}, Device{}, Processor{}, PowerResource{}, and
3217ThermalZone{}.
3218
3219AcpiDump: Added support for dumping all SSDTs on newer versions of
3220Windows. These tables are now easily available -- SSDTs are not available
3221through the registry on older versions.
3222
3223----------------------------------------
322427 May 2016. Summary of changes for version 20160527:
3225
3226
32271) ACPICA kernel-resident subsystem:
3228
3229Temporarily reverted the new arbitrary bit length/alignment support in
3230AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
3231a number of regressions with the new code that need to be fully resolved
3232and tested before this support can be finally integrated into ACPICA.
3233Apologies for any inconveniences these issues may have caused.
3234
3235The ACPI message macros are not configurable (ACPI_MSG_ERROR,
3236ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
3237and ACPI_MSG_BIOS_WARNING). Lv Zheng.
3238
3239Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
3240option. Adds a new return macro, return_STR. Junk-uk Kim.
3241
3242Example Code and Data Size: These are the sizes for the OS-independent
3243acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3244debug version of the code includes the debug output trace mechanism and
3245has a much larger code and data size.
3246
3247  Current Release:
3248    Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
3249    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
3250  Previous Release:
3251    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3252    Debug Version:     200.9K Code, 82.2K Data, 283.1K Total
3253
3254----------------------------------------
325522 April 2016. Summary of changes for version 20160422:
3256
32571) ACPICA kernel-resident subsystem:
3258
3259Fixed a regression in the GAS (generic address structure) arbitrary bit
3260support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
3261and incorrect return values. Lv Zheng. ACPICA BZ 1270.
3262
3263ACPI 6.0: Added support for new/renamed resource macros. One new argument
3264was added to each of these macros, and the original name has been
3265deprecated. The AML disassembler will always disassemble to the new
3266names. Support for the new macros was added to iASL, disassembler,
3267resource manager, and the acpihelp utility. ACPICA BZ 1274.
3268
3269    I2cSerialBus  -> I2cSerialBusV2
3270    SpiSerialBus  -> SpiSerialBusV2
3271    UartSerialBus -> UartSerialBusV2
3272
3273ACPI 6.0: Added support for a new integer field that was appended to the
3274package object returned by the _BIX method. This adds iASL compile-time
3275and AML runtime error checking. ACPICA BZ 1273.
3276
3277ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
3278Subspace Type2" (Headers, Disassembler, and data table compiler).
3279
3280Example Code and Data Size: These are the sizes for the OS-independent
3281acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3282debug version of the code includes the debug output trace mechanism and
3283has a much larger code and data size.
3284
3285  Current Release:
3286    Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
3287    Debug Version:     201.5K Code, 82.2K Data, 283.7K Total
3288  Previous Release:
3289    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3290    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
3291
3292
32932) iASL Compiler/Disassembler and Tools:
3294
3295iASL: Implemented an ASL grammar extension to allow/enable executable
3296"module-level code" to be created and executed under the various
3297operators that create new scopes. This type of AML code is already
3298supported in all known AML interpreters, and the grammar change will
3299appear in the next version of the ACPI specification. Simplifies the
3300conditional runtime creation of named objects under these object types:
3301
3302    Device
3303    PowerResource
3304    Processor
3305    Scope
3306    ThermalZone
3307
3308iASL: Implemented a new ASL extension, a "For" loop macro to add greater
3309ease-of-use to the ASL language. The syntax is similar to the
3310corresponding C operator, and is implemented with the existing AML While
3311opcode -- thus requiring no changes to existing AML interpreters.
3312
3313    For (Initialize, Predicate, Update) {TermList}
3314
3315Grammar:
3316    ForTerm :=
3317        For (
3318            Initializer    // Nothing | TermArg => ComputationalData
3319            Predicate      // Nothing | TermArg => ComputationalData
3320            Update         // Nothing | TermArg => ComputationalData
3321        ) {TermList}
3322
3323
3324iASL: The _HID/_ADR detection and validation has been enhanced to search
3325under conditionals in order to allow these objects to be conditionally
3326created at runtime.
3327
3328iASL: Fixed several issues with the constant folding feature. The
3329improvement allows better detection and resolution of statements that can
3330be folded at compile time. ACPICA BZ 1266.
3331
3332iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
3333conversion to the ASL ElseIf operator where incorrect ASL code could be
3334generated.
3335
3336iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
3337sometimes an extra (and extraneous) set of parentheses were emitted for
3338some combinations of operators. Although this did not cause any problems
3339with recompilation of the disassembled code, it made the code more
3340difficult to read. David Box. ACPICA BZ 1231.
3341
3342iASL: Changed to ignore the unreferenced detection for predefined names
3343of resource descriptor elements, when the resource descriptor is
3344created/defined within a control method.
3345
3346iASL: Disassembler: Fix a possible fault with externally declared Buffer
3347objects.
3348
3349----------------------------------------
335018 March 2016. Summary of changes for version 20160318:
3351
33521) ACPICA kernel-resident subsystem:
3353
3354Added support for arbitrary bit lengths and bit offsets for registers
3355defined by the Generic Address Structure. Previously, only aligned bit
3356lengths of 8/16/32/64 were supported. This was sufficient for many years,
3357but recently some machines have been seen that require arbitrary bit-
3358level support. ACPICA BZ 1240. Lv Zheng.
3359
3360Fixed an issue where the \_SB._INI method sometimes must be evaluated
3361before any _REG methods are evaluated. Lv Zheng.
3362
3363Implemented several changes related to ACPI table support
3364(Headers/Disassembler/TableCompiler):
3365NFIT: For ACPI 6.1, updated to add some additional new fields and
3366constants.
3367FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
33686).
3369DMAR: Added new constants per the 10/2014 DMAR spec.
3370IORT: Added new subtable per the 10/2015 IORT spec.
3371HEST: For ACPI 6.1, added new constants and new subtable.
3372DBG2: Added new constants per the 12/2015 DBG2 spec.
3373FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
3374ACPICA BZ 1249.
3375ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
3376
3377Updated header support for the DMAR table to match the current version of
3378the related spec.
3379
3380Added extensions to the ASL Concatenate operator to allow any ACPI object
3381to be passed as an operand. Any object other than Integer/String/Buffer
3382simply returns a string containing the object type. This extends the
3383usefulness of the Printf macros. Previously, Concatenate would abort the
3384control method if a non-data object was encountered.
3385
3386ACPICA source code: Deployed the C "const" keyword across the source code
3387where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
3388
3389Example Code and Data Size: These are the sizes for the OS-independent
3390acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3391debug version of the code includes the debug output trace mechanism and
3392has a much larger code and data size.
3393
3394  Current Release:
3395    Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
3396    Debug Version:     201.0K Code, 82.0K Data, 283.0K Total
3397  Previous Release:
3398    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3399    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3400
3401
34022) iASL Compiler/Disassembler and Tools:
3403
3404iASL/Disassembler: Improved the heuristic used to determine the number of
3405arguments for an externally defined control method (a method in another
3406table). Although this is an improvement, there is no deterministic way to
3407"guess" the number of method arguments. Only the ACPI 6.0 External opcode
3408will completely solve this problem as it is deployed (automatically) in
3409newer BIOS code.
3410
3411iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
3412statements that could cause errors when the disassembled file is
3413compiled. ACPICA BZ 1243. David Box.
3414
3415iASL: Fixed a regression caused by the merger of the two versions of the
3416local strtoul64. Because of a dependency on a global variable, strtoul64
3417could return an error for integers greater than a 32-bit value. ACPICA BZ
34181260.
3419
3420iASL: Fixed a regression where a fault could occur for an ASL Return
3421statement if it invokes a control method that is not resolved. ACPICA BZ
34221264.
3423
3424AcpiXtract: Improved input file validation: detection of binary files and
3425non-acpidump text files.
3426
3427----------------------------------------
342812 February 2016. Summary of changes for version 20160212:
3429
34301) ACPICA kernel-resident subsystem:
3431
3432Implemented full support for the ACPI 6.1 specification (released in
3433January). This version of the specification is available at:
3434http://www.uefi.org/specifications
3435
3436Only a relatively small number of changes were required in ACPICA to
3437support ACPI 6.1, in these areas:
3438- New predefined names
3439- New _HID values
3440- A new subtable for HEST
3441- A few other header changes for new values
3442
3443Ensure \_SB_._INI is executed before any _REG methods are executed. There
3444appears to be existing BIOS code that relies on this behavior. Lv Zheng.
3445
3446Reverted a change made in version 20151218 which enabled method
3447invocations to be targets of various ASL operators (SuperName and Target
3448grammar elements). While the new behavior is supported by the ACPI
3449specification, other AML interpreters do not support this behavior and
3450never will. The ACPI specification will be updated for ACPI 6.2 to remove
3451this support. Therefore, the change was reverted to the original ACPICA
3452behavior.
3453
3454ACPICA now supports the GCC 6 compiler.
3455
3456Current Release: (Note: build changes increased sizes)
3457    Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
3458    Debug Version:     200.4K Code, 82.0K Data, 282.4K Total
3459Previous Release:
3460    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3461    Debug Version:     200.4K Code, 81.9K Data, 282.3K Total
3462
3463
34642) iASL Compiler/Disassembler and Tools:
3465
3466Completed full support for the ACPI 6.0 External() AML opcode. The
3467compiler emits an external AML opcode for each ASL External statement.
3468This opcode is used by the disassembler to assist with the disassembly of
3469external control methods by specifying the required number of arguments
3470for the method. AML interpreters do not use this opcode. To ensure that
3471interpreters do not even see the opcode, a block of one or more external
3472opcodes is surrounded by an "If(0)" construct. As this feature becomes
3473commonly deployed in BIOS code, the ability of disassemblers to correctly
3474disassemble AML code will be greatly improved. David Box.
3475
3476iASL: Implemented support for an optional cross-reference output file.
3477The -lx option will create a the cross-reference file with the suffix
3478"xrf". Three different types of cross-reference are created in this file:
3479- List of object references made from within each control method
3480- Invocation (caller) list for each user-defined control method
3481- List of references to each non-method object in the namespace
3482
3483iASL: Method invocations as ASL Target operands are now disallowed and
3484flagged as errors in preparation for ACPI 6.2 (see the description of the
3485problem above).
3486
3487----------------------------------------
34888 January 2016. Summary of changes for version 20160108:
3489
34901) ACPICA kernel-resident subsystem:
3491
3492Updated all ACPICA copyrights and signons to 2016: Added the 2016
3493copyright to all source code module headers and utility/tool signons.
3494This includes the standard Linux dual-license header. This affects
3495virtually every file in the ACPICA core subsystem, iASL compiler, all
3496ACPICA utilities, and the ACPICA test suite.
3497
3498Fixed a regression introduced in version 20151218 concerning the
3499execution of so-called module-level ASL/AML code. Namespace objects
3500created under a module-level If() construct were not properly/fully
3501entered into the namespace and could cause an interpreter fault when
3502accessed.
3503
3504Example Code and Data Size: These are the sizes for the OS-independent
3505acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3506debug version of the code includes the debug output trace mechanism and
3507has a much larger code and data size.
3508
3509Current Release:
3510    Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
3511    Debug Version:     200.4K Code, 81.9K Data, 282.4K Total
3512  Previous Release:
3513    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3514    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3515
3516
35172) iASL Compiler/Disassembler and Tools:
3518
3519Fixed a problem with the compilation of the GpioIo and GpioInt resource
3520descriptors. The _PIN field name was incorrectly defined to be an array
3521of 32-bit values, but the _PIN values are in fact 16 bits each. This
3522would cause incorrect bit width warnings when using Word (16-bit) fields
3523to access the descriptors.
3524
3525
3526----------------------------------------
352718 December 2015. Summary of changes for version 20151218:
3528
35291) ACPICA kernel-resident subsystem:
3530
3531Implemented per-AML-table execution of "module-level code" as individual
3532ACPI tables are loaded into the namespace during ACPICA initialization.
3533In other words, any module-level code within an AML table is executed
3534immediately after the table is loaded, instead of batched and executed
3535after all of the tables have been loaded. This provides compatibility
3536with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
3537David Box.
3538
3539To fully support the feature above, the default operation region handlers
3540for the SystemMemory, SystemIO, and PCI_Config address spaces are now
3541installed before any ACPI tables are loaded. This enables module-level
3542code to access these address spaces during the table load and module-
3543level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
3544Box.
3545
3546Implemented several changes to the internal _REG support in conjunction
3547with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
3548utilities for the changes above. Although these tools were changed, host
3549operating systems that simply use the default handlers for SystemMemory,
3550SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
3551
3552For example, in the code below, DEV1 is conditionally added to the
3553namespace by the DSDT via module-level code that accesses an operation
3554region. The SSDT references DEV1 via the Scope operator. DEV1 must be
3555created immediately after the DSDT is loaded in order for the SSDT to
3556successfully reference DEV1. Previously, this code would cause an
3557AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
3558fully supported by ACPICA.
3559
3560    DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
3561    {
3562        OperationRegion (OPR1, SystemMemory, 0x400, 32)
3563        Field (OPR1, AnyAcc, NoLock, Preserve)
3564        {
3565            FLD1, 1
3566        }
3567        If (FLD1)
3568        {
3569            Device (\DEV1)
3570            {
3571            }
3572        }
3573    }
3574    DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
3575    {
3576        External (\DEV1, DeviceObj)
3577        Scope (\DEV1)
3578        {
3579        }
3580    }
3581
3582Fixed an AML interpreter problem where control method invocations were
3583not handled correctly when the invocation was itself a SuperName argument
3584to another ASL operator. In these cases, the method was not invoked.
3585ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3586argument:
3587    Store
3588    Acquire, Wait
3589    CondRefOf, RefOf
3590    Decrement, Increment
3591    Load, Unload
3592    Notify
3593    Signal, Release, Reset
3594    SizeOf
3595
3596Implemented automatic String-to-ObjectReference conversion support for
3597packages returned by predefined names (such as _DEP). A common BIOS error
3598is to add double quotes around an ObjectReference namepath, which turns
3599the reference into an unexpected string object. This support detects the
3600problem and corrects it before the package is returned to the caller that
3601invoked the method. Lv Zheng.
3602
3603Implemented extensions to the Concatenate operator. Concatenate now
3604accepts any type of object, it is not restricted to simply
3605Integer/String/Buffer. For objects other than these 3 basic data types,
3606the argument is treated as a string containing the name of the object
3607type. This expands the utility of Concatenate and the Printf/Fprintf
3608macros. ACPICA BZ 1222.
3609
3610Cleaned up the output of the ASL Debug object. The timer() value is now
3611optional and no longer emitted by default. Also, the basic data types of
3612Integer/String/Buffer are simply emitted as their values, without a data
3613type string -- since the data type is obvious from the output. ACPICA BZ
36141221.
3615
3616Example Code and Data Size: These are the sizes for the OS-independent
3617acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3618debug version of the code includes the debug output trace mechanism and
3619has a much larger code and data size.
3620
3621  Current Release:
3622    Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
3623    Debug Version:     200.3K Code, 81.9K Data, 282.3K Total
3624  Previous Release:
3625    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3626    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3627
3628
36292) iASL Compiler/Disassembler and Tools:
3630
3631iASL: Fixed some issues with the ASL Include() operator. This operator
3632was incorrectly defined in the iASL parser rules, causing a new scope to
3633be opened for the code within the include file. This could lead to
3634several issues, including allowing ASL code that is technically illegal
3635and not supported by AML interpreters. Note, this does not affect the
3636related #include preprocessor operator. ACPICA BZ 1212.
3637
3638iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3639operator is essentially an ASL macro since there is no AML opcode
3640associated with it. The code emitted by the iASL compiler for ElseIf is
3641an Else opcode followed immediately by an If opcode. The disassembler
3642will now emit an ElseIf if it finds an Else immediately followed by an
3643If. This simplifies the decoded ASL, especially for deeply nested
3644If..Else and large Switch constructs. Thus, the disassembled code more
3645closely follows the original source ASL. ACPICA BZ 1211. Example:
3646
3647    Old disassembly:
3648        Else
3649        {
3650            If (Arg0 == 0x02)
3651            {
3652                Local0 = 0x05
3653            }
3654        }
3655
3656    New disassembly:
3657        ElseIf (Arg0 == 0x02)
3658        {
3659            Local0 = 0x05
3660        }
3661
3662AcpiExec: Added support for the new module level code behavior and the
3663early region installation. This required a small change to the
3664initialization, since AcpiExec must install its own operation region
3665handlers.
3666
3667AcpiExec: Added support to make the debug object timer optional. Default
3668is timer disabled. This cleans up the debug object output -- the timer
3669data is rarely used.
3670
3671AcpiExec: Multiple ACPI tables are now loaded in the order that they
3672appear on the command line. This can be important when there are
3673interdependencies/references between the tables.
3674
3675iASL/Templates. Add support to generate template files with multiple
3676SSDTs within a single output file. Also added ommand line support to
3677specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
36781223, 1225.
3679
3680
3681----------------------------------------
368224 November 2015. Summary of changes for version 20151124:
3683
36841) ACPICA kernel-resident subsystem:
3685
3686Fixed a possible regression for a previous update to FADT handling. The
3687FADT no longer has a fixed table ID, causing some issues with code that
3688was hardwired to a specific ID. Lv Zheng.
3689
3690Fixed a problem where the method auto-serialization could interfere with
3691the current SyncLevel. This change makes the auto-serialization support
3692transparent to the SyncLevel support and management.
3693
3694Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3695interface is intended for early access to the namespace during the
3696initial namespace device discovery walk. The _SUB method has been seen to
3697access operation regions in some cases, causing errors because the
3698operation regions are not fully initialized.
3699
3700AML Debugger: Fixed some issues with the terminate/quit/exit commands
3701that can cause faults. Lv Zheng.
3702
3703AML Debugger: Add thread ID support so that single-step mode only applies
3704to the AML Debugger thread. This prevents runtime errors within some
3705kernels. Lv Zheng.
3706
3707Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3708methods that are invoked by this interface are optional, removed warnings
3709emitted for the case where one or more of these methods do not exist.
3710ACPICA BZ 1208, original change by Prarit Bhargava.
3711
3712Made a major pass through the entire ACPICA source code base to
3713standardize formatting that has diverged a bit over time. There are no
3714functional changes, but this will of course cause quite a few code
3715differences from the previous ACPICA release.
3716
3717Example Code and Data Size: These are the sizes for the OS-independent
3718acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3719debug version of the code includes the debug output trace mechanism and
3720has a much larger code and data size.
3721
3722  Current Release:
3723    Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
3724    Debug Version:     199.6K Code, 81.8K Data, 281.4K Total
3725  Previous Release:
3726    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3727    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3728
3729
37302) iASL Compiler/Disassembler and Tools:
3731
3732iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3733definition blocks within a single ASL file and the resulting AML file.
3734Support for this type of file was also added to the various tools that
3735use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3736example code below shows two definition blocks within the same file:
3737
3738    DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
37390x12345678)
3740    {
3741    }
3742    DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3743    {
3744    }
3745
3746iASL: Enhanced typechecking for the Name() operator. All expressions for
3747the value of the named object must be reduced/folded to a single constant
3748at compile time, as per the ACPI specification (the AML definition of
3749Name()).
3750
3751iASL: Fixed some code indentation issues for the -ic and -ia options (C
3752and assembly headers). Now all emitted code correctly begins in column 1.
3753
3754iASL: Added an error message for an attempt to open a Scope() on an
3755object defined in an SSDT. The DSDT is always loaded into the namespace
3756first, so any attempt to open a Scope on an SSDT object will fail at
3757runtime.
3758
3759
3760----------------------------------------
376130 September 2015. Summary of changes for version 20150930:
3762
37631) ACPICA kernel-resident subsystem:
3764
3765Debugger: Implemented several changes and bug fixes to assist support for
3766the in-kernel version of the AML debugger. Lv Zheng.
3767- Fix the "predefined" command for in-kernel debugger.
3768- Do not enter debug command loop for the help and version commands.
3769- Disallow "execute" command during execution/single-step of a method.
3770
3771Interpreter: Updated runtime typechecking for all operators that have
3772target operands. The operand is resolved and validated that it is legal.
3773For example, the target cannot be a non-data object such as a Device,
3774Mutex, ThermalZone, etc., as per the ACPI specification.
3775
3776Debugger: Fixed the double-mutex user I/O handshake to work when local
3777deadlock detection is enabled.
3778
3779Debugger: limited display of method locals and arguments (LocalX and
3780ArgX) to only those that have actually been initialized. This prevents
3781lines of extraneous output.
3782
3783Updated the definition of the NFIT table to correct the bit polarity of
3784one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3785
3786Example Code and Data Size: These are the sizes for the OS-independent
3787acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3788debug version of the code includes the debug output trace mechanism and
3789has a much larger code and data size.
3790
3791  Current Release:
3792    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3793    Debug Version:     199.3K Code, 81.4K Data, 280.7K Total
3794  Previous Release:
3795    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3796    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3797
3798
37992) iASL Compiler/Disassembler and Tools:
3800
3801iASL: Improved the compile-time typechecking for operands of many of the
3802ASL operators:
3803
3804-- Added an option to disable compiler operand/operator typechecking (-
3805ot).
3806
3807-- For the following operators, the TermArg operands are now validated
3808when possible to be Integer data objects: BankField, OperationRegion,
3809DataTableRegion, Buffer, and Package.
3810
3811-- Store (Source, Target): Both the source and target operands are
3812resolved and checked that the operands are both legal. For example,
3813neither operand can be a non-data object such as a Device, Mutex,
3814ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3815operator can be used to store an object to any type of target object.
3816
3817-- Store (Source, Target): If the source is a Package object, the target
3818must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3819is a Package, the source must also be a Package.
3820
3821-- Store (Source, Target): A warning is issued if the source and target
3822resolve to the identical named object.
3823
3824-- Store (Source, <method invocation>): An error is generated for the
3825target method invocation, as this construct is not supported by the AML
3826interpreter.
3827
3828-- For all ASL math and logic operators, the target operand must be a
3829data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3830includes the function return value also.
3831
3832-- External declarations are also included in the typechecking where
3833possible. External objects defined using the UnknownObj keyword cannot be
3834typechecked, however.
3835
3836iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3837operator:
3838- Legacy code: Index(PKG1, 3)
3839- New ASL+ code: PKG1[3]
3840This completes the ACPI 6.0 ASL+ support as it was the only operator not
3841supported.
3842
3843iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3844spaces were inadvertently appended to the filename, causing file access
3845and deletion problems on some systems.
3846
3847ASL Test Suite (ASLTS): Updated the master makefile to generate all
3848possible compiler output files when building the test suite -- thus
3849exercising these features of the compiler. These files are automatically
3850deleted when the test suite exits.
3851
3852
3853----------------------------------------
385418 August 2015. Summary of changes for version 20150818:
3855
38561) ACPICA kernel-resident subsystem:
3857
3858Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3859Zheng. ACPICA BZ 1186.
3860
3861Completed development to ensure that the ACPICA Disassembler and Debugger
3862are fully standalone components of ACPICA. Removed cross-component
3863dependences. Lv Zheng.
3864
3865The max-number-of-AML-loops is now runtime configurable (previously was
3866compile-time only). This is essentially a loop timeout to force-abort
3867infinite AML loops. ACPCIA BZ 1192.
3868
3869Debugger: Cleanup output to dump ACPI names and namepaths without any
3870trailing underscores. Lv Zheng. ACPICA BZ 1135.
3871
3872Removed unnecessary conditional compilations across the Debugger and
3873Disassembler components where entire modules could be left uncompiled.
3874
3875The aapits test is deprecated and has been removed from the ACPICA git
3876tree. The test has never been completed and has not been maintained, thus
3877becoming rather useless. ACPICA BZ 1015, 794.
3878
3879A batch of small changes to close bugzilla and other reports:
3880- Remove duplicate code for _PLD processing. ACPICA BZ 1176.
3881- Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
3882- iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
3883- ACPI table support: general cleanup and simplification. Lv Zheng, Bob
3884Moore.
3885- ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3886ACPICA BZ 1184.
3887- Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3888operators.
3889- Debugger: Split debugger initialization/termination interfaces. Lv
3890Zheng.
3891- AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3892identification.
3893- AcpiExec: Add debug message during _REG method phase during table
3894load/init.
3895- AcpiNames: Fix a regression where some output was missing and no longer
3896emitted.
3897- Debugger: General cleanup and simplification. Lv Zheng.
3898- Disassembler: Cleanup use of several global option variables. Lv Zheng.
3899
3900Example Code and Data Size: These are the sizes for the OS-independent
3901acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3902debug version of the code includes the debug output trace mechanism and
3903has a much larger code and data size.
3904
3905  Current Release:
3906    Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
3907    Debug Version:     198.6K Code, 80.9K Data, 279.5K Total
3908  Previous Release:
3909    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3910    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3911
3912
39132) iASL Compiler/Disassembler and Tools:
3914
3915AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3916were not handled properly and caused load errors. Now, properly invoke
3917and use the ACPICA auto-reallocate mechanism for ACPI table data
3918structures. ACPICA BZ 1188
3919
3920AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3921BZ 1190.
3922
3923AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3924AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3925executed during initialization. ACPICA BZ 1187, 1189.
3926
3927iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3928that corresponds to each disassembled ASL statement, to simplify
3929debugging. ACPICA BZ 1191.
3930
3931Debugger: Add option to the "objects" command to display a summary of the
3932current namespace objects (Object type and count). This is displayed if
3933the command is entered with no arguments.
3934
3935AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3936
3937
3938----------------------------------------
393917 July 2015. Summary of changes for version 20150717:
3940
39411) ACPICA kernel-resident subsystem:
3942
3943Improved the partitioning between the Debugger and Disassembler
3944components. This allows the Debugger to be used standalone within kernel
3945code without the Disassembler (which is used for single stepping also).
3946This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3947
3948Debugger: Implemented a new command to trace the execution of control
3949methods (Trace). This is especially useful for the in-kernel version of
3950the debugger when file I/O may not be available for method trace output.
3951See the ACPICA reference for more information. Lv Zheng.
3952
3953Moved all C library prototypes (used for the local versions of these
3954functions when requested) to a new header, acclib.h
3955Cleaned up the use of non-ANSI C library functions. These functions are
3956implemented locally in ACPICA. Moved all such functions to a common
3957source file, utnonansi.c
3958
3959Debugger: Fixed a problem with the "!!" command (get last command
3960executed) where the debugger could enter an infinite loop and eventually
3961crash.
3962
3963Removed the use of local macros that were used for some of the standard C
3964library functions to automatically cast input parameters. This mostly
3965affected the is* functions where the input parameter is defined to be an
3966int. This required a few modifications to the main ACPICA source code to
3967provide casting for these functions and eliminate possible compiler
3968warnings for these parameters.
3969
3970Across the source code, added additional status/error checking to resolve
3971issues discovered by static source code analysis tools such as Coverity.
3972
3973Example Code and Data Size: These are the sizes for the OS-independent
3974acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3975debug version of the code includes the debug output trace mechanism and
3976has a much larger code and data size.
3977
3978  Current Release:
3979    Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
3980    Debug Version:     197.8K Code, 81.5K Data, 279.3K Total
3981  Previous Release:
3982    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3983    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
3984
3985
39862) iASL Compiler/Disassembler and Tools:
3987
3988iASL: Fixed a regression where the device map file feature no longer
3989worked properly when used in conjunction with the disassembler. It only
3990worked properly with the compiler itself.
3991
3992iASL: Implemented a new warning for method LocalX variables that are set
3993but never used (similar to a C compiler such as gcc). This also applies
3994to ArgX variables that are not defined by the parent method, and are
3995instead (legally) used as local variables.
3996
3997iASL/Preprocessor: Finished the pass-through of line numbers from the
3998preprocessor to the compiler. This ensures that compiler errors/warnings
3999have the correct original line numbers and filenames, regardless of any
4000#include files.
4001
4002iASL/Preprocessor: Fixed a couple of issues with comment handling and the
4003pass-through of comments to the preprocessor output file (which becomes
4004the compiler input file). Also fixed a problem with // comments that
4005appear after a math expression.
4006
4007iASL: Added support for the TCPA server table to the table compiler and
4008template generator. (The client table was already previously supported)
4009
4010iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
4011identify the iASL compiler.
4012
4013Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
4014multiple times. The new names are ACPI_SIGN_NEGATIVE and
4015ACPI_SIGN_POSITIVE.
4016
4017AcpiHelp: Update to expand help messages for the iASL preprocessor
4018directives.
4019
4020
4021----------------------------------------
402219 June 2015. Summary of changes for version 20150619:
4023
4024Two regressions in version 20150616 have been addressed:
4025
4026Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
4027etc.) This update changes ACPICA to only use the standard headers for
4028functions, or the prototypes for the local versions of the C library
4029functions. Across the source code, this required some additional casts
4030for some Clib invocations for portability. Moved all local prototypes to
4031a new file, acclib.h
4032
4033Fixes several problems with recent changes to the handling of the FACS
4034table that could cause some systems not to boot.
4035
4036
4037----------------------------------------
403816 June 2015. Summary of changes for version 20150616:
4039
4040
40411) ACPICA kernel-resident subsystem:
4042
4043Across the entire ACPICA source code base, the various macros for the C
4044library functions (such as ACPI_STRLEN, etc.) have been removed and
4045replaced by the standard C library names (strlen, etc.) The original
4046purpose for these macros is no longer applicable. This simplification
4047reduces the number of macros used in the ACPICA source code
4048significantly, improving readability and maintainability.
4049
4050Implemented support for a new ACPI table, the OSDT. This table, the
4051"override" SDT, can be loaded directly by the host OS at boot time. It
4052enables the replacement of existing namespace objects that were installed
4053via the DSDT and/or SSDTs. The primary purpose for this is to replace
4054buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
4055for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
4056Moore.
4057
4058Added support for systems with (improperly) two FACS tables -- a "32-bit"
4059table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
4060X field). This change will support both automatically. There continues to
4061be systems found with this issue. This support requires a change to the
4062AcpiSetFirmwareWakingVector interface. Also, a public global variable has
4063been added to allow the host to select which FACS is desired
4064(AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
4065details Lv Zheng.
4066
4067Added a new feature to allow for systems that do not contain an FACS.
4068Although this is already supported on hardware-reduced platforms, the
4069feature has been extended for all platforms. The reasoning is that we do
4070not want to abort the entire ACPICA initialization just because the
4071system is seriously buggy and has no FACS.
4072
4073Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
4074not correctly transcribed from the ACPI specification in ACPICA version
407520150515.
4076
4077Implemented support for the _CLS object in the AcpiGetObjectInfo external
4078interface.
4079
4080Updated the definitions of the TCPA and TPM2 ACPI tables to the more
4081recent TCG ACPI Specification, December 14, 2014. Table disassembler and
4082compiler also updated. Note: The TCPA "server" table is not supported by
4083the disassembler/table-compiler at this time.
4084
4085ACPI 6.0: Added definitions for the new GIC version field in the MADT.
4086
4087Example Code and Data Size: These are the sizes for the OS-independent
4088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4089debug version of the code includes the debug output trace mechanism and
4090has a much larger code and data size.
4091
4092  Current Release:
4093    Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
4094    Debug Version:     196.2K Code, 81.0K Data, 277.2K Total
4095  Previous Release:
4096    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
4097    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
4098
4099
41002) iASL Compiler/Disassembler and Tools:
4101
4102Disassembler: Fixed a problem with the new symbolic operator disassembler
4103where incorrect ASL code could be emitted in some cases for the "non-
4104commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
4105ShiftRight. The actual problem cases seem to be rather unusual in common
4106ASL code, however. David Box.
4107
4108Modified the linux version of acpidump to obtain ACPI tables from not
4109just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
4110Zheng.
4111
4112iASL: Fixed a problem where the user preprocessor output file (.i)
4113contained extra data that was not expected. The compiler was using this
4114file as a temporary file and passed through #line directives in order to
4115keep compiler error messages in sync with the input file and line number
4116across multiple include files. The (.i) is no longer a temporary file as
4117the compiler uses a new, different file for the original purpose.
4118
4119iASL: Fixed a problem where comments within the original ASL source code
4120file were not passed through to the preprocessor output file, nor any
4121listing files.
4122
4123iASL: Fixed some issues for the handling of the "#include" preprocessor
4124directive and the similar (but not the same) "Include" ASL operator.
4125
4126iASL: Add support for the new OSDT in both the disassembler and compiler.
4127
4128iASL: Fixed a problem with the constant folding support where a Buffer
4129object could be incorrectly generated (incorrectly formed) during a
4130conversion to a Store() operator.
4131
4132AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
4133description text for the _REV predefined name. _REV now permanently
4134returns 2, as per the ACPI 6.0 specification.
4135
4136Debugger: Enhanced the output of the Debug ASL object for references
4137produced by the Index operator. For Buffers and strings, only output the
4138actual byte pointed to by the index. For packages, only print the single
4139package element decoded by the index. Previously, the entire
4140buffer/string/package was emitted.
4141
4142iASL/Table-compiler: Fixed a regression where the "generic" data types
4143were no longer recognized, causing errors.
4144
4145
4146----------------------------------------
414715 May 2015. Summary of changes for version 20150515:
4148
4149This release implements most of ACPI 6.0 as described below.
4150
41511) ACPICA kernel-resident subsystem:
4152
4153Implemented runtime argument checking and return value checking for all
4154new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
4155_MTL, _PRR, _RDI, _RST, _TFP, _TSN.
4156
4157Example Code and Data Size: These are the sizes for the OS-independent
4158acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4159debug version of the code includes the debug output trace mechanism and
4160has a much larger code and data size.
4161
4162  Current Release:
4163    Non-Debug Version:  99.9K Code, 27.5K Data, 127.4K Total
4164    Debug Version:     195.2K Code, 80.8K Data, 276.0K Total
4165  Previous Release:
4166    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4167    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4168
4169
41702) iASL Compiler/Disassembler and Tools:
4171
4172iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
4173names (argument count validation and return value typechecking.)
4174
4175iASL disassembler and table compiler: implemented support for all new
4176ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
4177
4178iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
4179tables: FADT, MADT.
4180
4181iASL preprocessor: Added a new directive to enable inclusion of binary
4182blobs into ASL code. The new directive is #includebuffer. It takes a
4183binary file as input and emits a named ascii buffer object into the ASL
4184code.
4185
4186AcpiHelp: Added support for all new ACPI 6.0 predefined names.
4187
4188AcpiHelp: Added a new option, -d, to display all iASL preprocessor
4189directives.
4190
4191AcpiHelp: Added a new option, -t, to display all known/supported ACPI
4192tables.
4193
4194
4195----------------------------------------
419610 April 2015. Summary of changes for version 20150410:
4197
4198Reverted a change introduced in version 20150408 that caused
4199a regression in the disassembler where incorrect operator
4200symbols could be emitted.
4201
4202
4203----------------------------------------
420408 April 2015. Summary of changes for version 20150408:
4205
4206
42071) ACPICA kernel-resident subsystem:
4208
4209Permanently set the return value for the _REV predefined name. It now
4210returns 2 (was 5). This matches other ACPI implementations. _REV will be
4211deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
4212for ACPI 2.0 and later. It should never be used to differentiate or
4213identify operating systems.
4214
4215Added the "Windows 2015" string to the _OSI support. ACPICA will now
4216return TRUE to a query with this string.
4217
4218Fixed several issues with the local version of the printf function.
4219
4220Added the C99 compiler option (-std=c99) to the Unix makefiles.
4221
4222  Current Release:
4223    Non-Debug Version:  99.9K Code, 27.4K Data, 127.3K Total
4224    Debug Version:     195.2K Code, 80.7K Data, 275.9K Total
4225  Previous Release:
4226    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4227    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4228
4229
42302) iASL Compiler/Disassembler and Tools:
4231
4232iASL: Implemented an enhancement to the constant folding feature to
4233transform the parse tree to a simple Store operation whenever possible:
4234    Add (2, 3, X) ==> is converted to: Store (5, X)
4235    X = 2 + 3     ==> is converted to: Store (5, X)
4236
4237Updated support for the SLIC table (Software Licensing Description Table)
4238in both the Data Table compiler and the disassembler. The SLIC table
4239support now conforms to "Microsoft Software Licensing Tables (SLIC and
4240MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
4241following the ACPI header is now defined to be "Proprietary Data", and as
4242such, can only be entered or displayed as a hex data block.
4243
4244Implemented full support for the MSDM table as described in the document
4245above. Note: The format of MSDM is similar to SLIC. Any MSDM data
4246following the ACPI header is defined to be "Proprietary Data", and can
4247only be entered or displayed as a hex data block.
4248
4249Implemented the -Pn option for the iASL Table Compiler (was only
4250implemented for the ASL compiler). This option disables the iASL
4251preprocessor.
4252
4253Disassembler: For disassembly of Data Tables, added a comment field
4254around the Ascii equivalent data that is emitted as part of the "Raw
4255Table Data" block. This prevents the iASL Preprocessor from possible
4256confusion if/when the table is compiled.
4257
4258Disassembler: Added an option (-df) to force the disassembler to assume
4259that the table being disassembled contains valid AML. This feature is
4260useful for disassembling AML files that contain ACPI signatures other
4261than DSDT or SSDT (such as OEMx or other signatures).
4262
4263Changes for the EFI version of the tools:
42641) Fixed a build error/issue
42652) Fixed a cast warning
4266
4267iASL: Fixed a path issue with the __FILE__ operator by making the
4268directory prefix optional within the internal SplitInputFilename
4269function.
4270
4271Debugger: Removed some unused global variables.
4272
4273Tests: Updated the makefile for proper generation of the AAPITS suite.
4274
4275
4276----------------------------------------
427704 February 2015. Summary of changes for version 20150204:
4278
4279ACPICA kernel-resident subsystem:
4280
4281Updated all ACPICA copyrights and signons to 2014. Added the 2014
4282copyright to all module headers and signons, including the standard Linux
4283header. This affects virtually every file in the ACPICA core subsystem,
4284iASL compiler, all ACPICA utilities, and the test suites.
4285
4286Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
4287A raw gpe handling mechanism was created to allow better handling of GPE
4288storms that aren't easily managed by the normal handler. The raw handler
4289allows disabling/renabling of the GPE so that interrupt storms can be
4290avoided in cases where events cannot be timely serviced. In this
4291scenario, handlers should use the AcpiSetGpe() API to disable/enable the
4292GPE. This API will leave the reference counts undisturbed, thereby
4293preventing unintentional clearing of the GPE when the intent in only to
4294temporarily disable it. Raw handlers allow enabling and disabling of a
4295GPE by removing GPE register locking. As such, raw handlers much provide
4296their own locks while using GPE API's to protect access to GPE data
4297structures.
4298Lv Zheng
4299
4300Events: Always modify GPE registers under the GPE lock.
4301Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
4302values. Reported as bug by joe.liu@apple.com.
4303
4304Unix makefiles: Separate option to disable optimizations and
4305_FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
4306NOOPT disable option and creates a separate flag (NOFORTIFY) for this
4307purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
4308errors when building ACPICA. This allows disabling the option without
4309also having to disable optimazations.
4310David Box
4311
4312  Current Release:
4313    Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
4314    Debug Version:     199.2K Code, 82.4K Data, 281.6K Total
4315
4316--
4317--------------------------------------
431807 November 2014. Summary of changes for version 20141107:
4319
4320This release is available at https://acpica.org/downloads
4321
4322This release introduces and implements language extensions to ASL that
4323provide support for symbolic ("C-style") operators and expressions. These
4324language extensions are known collectively as ASL+.
4325
4326
43271) iASL Compiler/Disassembler and Tools:
4328
4329Disassembler: Fixed a problem with disassembly of the UartSerialBus
4330macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
4331Box.
4332
4333Disassembler: Fixed the Unicode macro support to add escape sequences.
4334All non-printable ASCII values are emitted as escape sequences, as well
4335as the standard escapes for quote and backslash. Ensures that the
4336disassembled macro can be correctly recompiled.
4337
4338iASL: Added Printf/Fprintf macros for formatted output. These macros are
4339translated to existing AML Concatenate and Store operations. Printf
4340writes to the ASL Debug object. Fprintf allows the specification of an
4341ASL name as the target. Only a single format specifier is required, %o,
4342since the AML interpreter dynamically converts objects to the required
4343type. David E. Box.
4344
4345    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4346                 (Concatenate (Concatenate (Concatenate ("", Arg0),
4347                 ": Unexpected value for "), Arg1), ", "), Arg2),
4348                 " at line "), Arg3), Debug)
4349
4350    (new)    Printf ("%o: Unexpected value for %o, %o at line %o",
4351                 Arg0, Arg1, Arg2, Arg3)
4352
4353    (old)    Store (Concatenate (Concatenate (Concatenate (Concatenate
4354                 ("", Arg1), ": "), Arg0), " Successful"), STR1)
4355
4356    (new)    Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
4357
4358iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
4359ASL parse tree before the AML code is generated. This allows blocks of
4360ASL code to be removed in order to help locate and identify problem
4361devices and/or code. David E. Box.
4362
4363AcpiExec: Added support (-fi) for an optional namespace object
4364initialization file. This file specifies initial values for namespace
4365objects as necessary for debugging and testing different ASL code paths
4366that may be taken as a result of BIOS options.
4367
4368
43692) Overview of symbolic operator support for ASL (ASL+)
4370-------------------------------------------------------
4371
4372As an extension to the ASL language, iASL implements support for symbolic
4373(C-style) operators for math and logical expressions. This can greatly
4374simplify ASL code as well as improve both readability and
4375maintainability. These language extensions can exist concurrently with
4376all legacy ASL code and expressions.
4377
4378The symbolic extensions are 100% compatible with existing AML
4379interpreters, since no new AML opcodes are created. To implement the
4380extensions, the iASL compiler transforms the symbolic expressions into
4381the legacy ASL/AML equivalents at compile time.
4382
4383Full symbolic expressions are supported, along with the standard C
4384precedence and associativity rules.
4385
4386Full disassembler support for the symbolic expressions is provided, and
4387creates an automatic migration path for existing ASL code to ASL+ code
4388via the disassembly process. By default, the disassembler now emits ASL+
4389code with symbolic expressions. An option (-dl) is provided to force the
4390disassembler to emit legacy ASL code if desired.
4391
4392Below is the complete list of the currently supported symbolic operators
4393with examples. See the iASL User Guide for additional information.
4394
4395
4396ASL+ Syntax      Legacy ASL Equivalent
4397-----------      ---------------------
4398
4399    // Math operators
4400
4401Z = X + Y        Add (X, Y, Z)
4402Z = X - Y        Subtract (X, Y, Z)
4403Z = X * Y        Multiply (X, Y, Z)
4404Z = X / Y        Divide (X, Y, , Z)
4405Z = X % Y        Mod (X, Y, Z)
4406Z = X << Y       ShiftLeft (X, Y, Z)
4407Z = X >> Y       ShiftRight (X, Y, Z)
4408Z = X & Y        And (X, Y, Z)
4409Z = X | Y        Or (X, Y, Z)
4410Z = X ^ Y        Xor (X, Y, Z)
4411Z = ~X           Not (X, Z)
4412X++              Increment (X)
4413X--              Decrement (X)
4414
4415    // Logical operators
4416
4417(X == Y)         LEqual (X, Y)
4418(X != Y)         LNotEqual (X, Y)
4419(X < Y)          LLess (X, Y)
4420(X > Y)          LGreater (X, Y)
4421(X <= Y)         LLessEqual (X, Y)
4422(X >= Y)         LGreaterEqual (X, Y)
4423(X && Y)         LAnd (X, Y)
4424(X || Y)         LOr (X, Y)
4425(!X)             LNot (X)
4426
4427    // Assignment and compound assignment operations
4428
4429X = Y           Store (Y, X)
4430X += Y          Add (X, Y, X)
4431X -= Y          Subtract (X, Y, X)
4432X *= Y          Multiply (X, Y, X)
4433X /= Y          Divide (X, Y, , X)
4434X %= Y          Mod (X, Y, X)
4435X <<= Y         ShiftLeft (X, Y, X)
4436X >>= Y         ShiftRight (X, Y, X)
4437X &= Y          And (X, Y, X)
4438X |= Y          Or (X, Y, X)
4439X ^= Y          Xor (X, Y, X)
4440
4441
44423) ASL+ Examples:
4443-----------------
4444
4445Legacy ASL:
4446        If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
4447            And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
44480x03FB),
4449            0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
4450        {
4451            And (MEMB, 0xFFFFFFF0, SRMB)
4452            Store (MEMB, Local2)
4453            Store (PDBM, Local1)
4454            And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
4455            Store (SRMB, MEMB)
4456            Or (PDBM, 0x02, PDBM)
4457        }
4458
4459ASL+ version:
4460        If (((R510 & 0x03FB) == 0x02E0) ||
4461            ((R520 & 0x03FB) == 0x02E0) ||
4462            ((R530 & 0x03FB) == 0x02E0) ||
4463            ((R540 & 0x03FB) == 0x02E0))
4464        {
4465            SRMB = (MEMB & 0xFFFFFFF0)
4466            Local2 = MEMB
4467            Local1 = PDBM
4468            PDBM &= 0xFFFFFFFFFFFFFFF9
4469            MEMB = SRMB
4470            PDBM |= 0x02
4471        }
4472
4473Legacy ASL:
4474        Store (0x1234, Local1)
4475        Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
4476        Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
4477        Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
4478        Store (Index (PKG1, 0x03), Local6)
4479        Store (Add (Local3, Local2), Debug)
4480        Add (Local1, 0x0F, Local2)
4481        Add (Local1, Multiply (Local2, Local3), Local2)
4482        Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
4483
4484ASL+ version:
4485        Local1 = 0x1234
4486        Local3 = (((Local1 + TEST) + 0x20) * Local2)
4487        Local3 = (Local2 * ((Local1 + TEST) + 0x20))
4488        Local3 = (Local1 + (TEST + (0x20 * Local2)))
4489        Local6 = Index (PKG1, 0x03)
4490        Debug = (Local3 + Local2)
4491        Local2 = (Local1 + 0x0F)
4492        Local2 = (Local1 + (Local2 * Local3))
4493        Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
4494
4495
4496----------------------------------------
449726 September 2014. Summary of changes for version 20140926:
4498
44991) ACPICA kernel-resident subsystem:
4500
4501Updated the GPIO operation region handler interface (GeneralPurposeIo).
4502In order to support GPIO Connection objects with multiple pins, along
4503with the related Field objects, the following changes to the interface
4504have been made: The Address is now defined to be the offset in bits of
4505the field unit from the previous invocation of a Connection. It can be
4506viewed as a "Pin Number Index" into the connection resource descriptor.
4507The BitWidth is the exact bit width of the field. It is usually one bit,
4508but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
4509additional information and examples.
4510
4511GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
4512corresponding _Lxx/_Exx methods are disabled (they may have been enabled
4513by the firmware), so that they cannot fire until they are enabled via
4514AcpiUpdateAllGpes. Rafael J. Wysocki.
4515
4516Added a new return flag for the Event/GPE status interfaces --
4517AcpiGetEventStatus and AcpiGetGpeStatus. The new
4518ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
4519GPE currently has a handler associated with it, and can thus actually
4520affect the system. Lv Zheng.
4521
4522Example Code and Data Size: These are the sizes for the OS-independent
4523acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4524debug version of the code includes the debug output trace mechanism and
4525has a much larger code and data size.
4526
4527  Current Release:
4528    Non-Debug Version:  99.1K Code, 27.3K Data, 126.4K Total
4529    Debug Version:     192.8K Code, 79.9K Data, 272.7K Total
4530  Previous Release:
4531    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4532    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4533
45342) iASL Compiler/Disassembler and Tools:
4535
4536iASL: Fixed a memory allocation/free regression introduced in 20140828
4537that could cause the compiler to crash. This was introduced inadvertently
4538during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
45391113.
4540
4541iASL: Removed two error messages that have been found to create false
4542positives, until they can be fixed and fully validated (ACPICA BZ 1112):
45431) Illegal forward reference within a method
45442) Illegal reference across two methods
4545
4546iASL: Implemented a new option (-lm) to create a hardware mapping file
4547that summarizes all GPIO, I2C, SPI, and UART connections. This option
4548works for both the compiler and disassembler. See the iASL compiler user
4549guide for additional information and examples (section 6.4.6).
4550
4551AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
4552version 2. This corrects the AE_BAD_HEADER exception seen on systems with
4553a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
4554
4555AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
4556unless STDIN is actually a terminal. Assists with batch-mode processing.
4557ACPICA BZ 1114.
4558
4559Disassembler/AcpiHelp: Added another large group of recognized _HID
4560values.
4561
4562
4563----------------------------------------
456428 August 2014. Summary of changes for version 20140828:
4565
45661) ACPICA kernel-resident subsystem:
4567
4568Fixed a problem related to the internal use of the Timer() operator where
4569a 64-bit divide could cause an attempted link to a double-precision math
4570library. This divide is not actually necessary, so the code was
4571restructured to eliminate it. Lv Zheng.
4572
4573ACPI 5.1: Added support for the runtime validation of the _DSD package
4574(similar to the iASL support).
4575
4576ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
4577SRAT table. Hanjun Guo <hanjun.guo@linaro.org>.
4578
4579Example Code and Data Size: These are the sizes for the OS-independent
4580acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4581debug version of the code includes the debug output trace mechanism and
4582has a much larger code and data size.
4583
4584  Current Release:
4585    Non-Debug Version:  98.8K Code, 27.3K Data, 126.1K Total
4586    Debug Version:     192.1K Code, 79.8K Data, 271.9K Total
4587  Previous Release:
4588    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total1
4589    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4590
45912) iASL Compiler/Disassembler and Tools:
4592
4593AcpiExec: Fixed a problem on unix systems where the original terminal
4594state was not always properly restored upon exit. Seen when using the -v
4595option. ACPICA BZ 1104.
4596
4597iASL: Fixed a problem with the validation of the ranges/length within the
4598Memory24 resource descriptor. There was a boundary condition when the
4599range was equal to the (length -1) caused by the fact that these values
4600are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4601
4602Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4603polarity
4604flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4605is
4606now supported properly.
4607
4608ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4609in the disassembler, data table compiler, and table template generator.
4610
4611iASL: Added a requirement for Device() objects that one of either a _HID
4612or _ADR must exist within the scope of a Device, as per the ACPI
4613specification. Remove a similar requirement that was incorrectly in place
4614for the _DSD object.
4615
4616iASL: Added error detection for illegal named references within control
4617methods that would cause runtime failures. Now trapped as errors are: 1)
4618References to objects within a non-parent control method. 2) Forward
4619references (within a method) -- for control methods, AML interpreters use
4620a one-pass parse of control methods. ACPICA BZ 1008.
4621
4622iASL: Added error checking for dependencies related to the _PSx power
4623methods. ACPICA BZ 1029.
46241) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4625_PS3.
46262) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4627scope.
4628
4629iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4630deploying the existing object and string caches and adding new caches for
4631the table compiler.
4632
4633iASL: Split the huge parser source file into multiple subfiles to improve
4634manageability. Generation now requires the M4 macro preprocessor, which
4635is part of the Bison distribution on both unix and windows platforms.
4636
4637AcpiSrc: Fixed and removed all extraneous warnings generated during
4638entire ACPICA source code scan and/or conversion.
4639
4640
4641----------------------------------------
4642
464324 July 2014. Summary of changes for version 20140724:
4644
4645The ACPI 5.1 specification has been released and is available at:
4646http://uefi.org/specs/access
4647
4648
46490) ACPI 5.1 support in ACPICA:
4650
4651ACPI 5.1 is fully supported in ACPICA as of this release.
4652
4653New predefined names. Support includes iASL and runtime ACPICA
4654validation.
4655    _CCA (Cache Coherency Attribute).
4656    _DSD (Device-Specific Data). David Box.
4657
4658Modifications to existing ACPI tables. Support includes headers, iASL
4659Data Table compiler, disassembler, and the template generator.
4660    FADT - New fields and flags. Graeme Gregory.
4661    GTDT - One new subtable and new fields. Tomasz Nowicki.
4662    MADT - Two new subtables. Tomasz Nowicki.
4663    PCCT - One new subtable.
4664
4665Miscellaneous.
4666    New notification type for System Resource Affinity change events.
4667
4668
46691) ACPICA kernel-resident subsystem:
4670
4671Fixed a regression introduced in 20140627 where a fault can happen during
4672the deletion of Alias AML namespace objects. The problem affected both
4673the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4674
4675Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4676simple mechanism to enable wake GPEs that have no associated handler or
4677control method. Rafael Wysocki.
4678
4679Updated the AcpiEnableGpe interface to disallow the enable if there is no
4680handler or control method associated with the particular GPE. This will
4681help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4682
4683Updated GPE handling and dispatch by disabling the GPE before clearing
4684the status bit for edge-triggered GPEs. Lv Zheng.
4685
4686Added Timer() support to the AML Debug object. The current timer value is
4687now displayed with each invocation of (Store to) the debug object to
4688enable simple generation of execution times for AML code (method
4689execution for example.) ACPICA BZ 1093.
4690
4691Example Code and Data Size: These are the sizes for the OS-independent
4692acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4693debug version of the code includes the debug output trace mechanism and
4694has a much larger code and data size.
4695
4696  Current Release:
4697    Non-Debug Version:  98.7K Code, 27.3K Data, 126.0K Total
4698    Debug Version:     192.0K Code, 79.7K Data, 271.7K Total
4699  Previous Release:
4700    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4701    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4702
4703
47042) iASL Compiler/Disassembler and Tools:
4705
4706Fixed an issue with the recently added local printf implementation,
4707concerning width/precision specifiers that could cause incorrect output.
4708Lv Zheng. ACPICA BZ 1094.
4709
4710Disassembler: Added support to detect buffers that contain UUIDs and
4711disassemble them to an invocation of the ToUUID operator. Also emit
4712commented descriptions of known ACPI-related UUIDs.
4713
4714AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4715-u. Adds three new files.
4716
4717iASL: Update table compiler and disassembler for DMAR table changes that
4718were introduced in September 2013. With assistance by David Woodhouse.
4719
4720----------------------------------------
472127 June 2014. Summary of changes for version 20140627:
4722
47231) ACPICA kernel-resident subsystem:
4724
4725Formatted Output: Implemented local versions of standard formatted output
4726utilities such as printf, etc. Over time, it has been discovered that
4727there are in fact many portability issues with printf, and the addition
4728of this feature will fix/prevent these issues once and for all. Some
4729known issues are summarized below:
4730
47311) Output of 64-bit values is not portable. For example, UINT64 is %ull
4732for the Linux kernel and is %uI64 for some MSVC versions.
47332) Invoking printf consistently in a manner that is portable across both
473432-bit and 64-bit platforms is difficult at best in many situations.
47353) The output format for pointers varies from system to system (leading
4736zeros especially), and leads to inconsistent output from ACPICA across
4737platforms.
47384) Certain platform-specific printf formats may conflict with ACPICA use.
47395) If there is no local C library available, ACPICA now has local support
4740for printf.
4741
4742-- To address these printf issues in a complete manner, ACPICA now
4743directly implements a small subset of printf format specifiers, only
4744those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4745
4746Implemented support for ACPICA generation within the EFI environment.
4747Initially, the AcpiDump utility is supported in the UEFI shell
4748environment. Lv Zheng.
4749
4750Added a new external interface, AcpiLogError, to improve ACPICA
4751portability. This allows the host to redirect error messages from the
4752ACPICA utilities. Lv Zheng.
4753
4754Added and deployed new OSL file I/O interfaces to improve ACPICA
4755portability:
4756  AcpiOsOpenFile
4757  AcpiOsCloseFile
4758  AcpiOsReadFile
4759  AcpiOsWriteFile
4760  AcpiOsGetFileOffset
4761  AcpiOsSetFileOffset
4762There are C library implementations of these functions in the new file
4763service_layers/oslibcfs.c -- however, the functions can be implemented by
4764the local host in any way necessary. Lv Zheng.
4765
4766Implemented a mechanism to disable/enable ACPI table checksum validation
4767at runtime. This can be useful when loading tables very early during OS
4768initialization when it may not be possible to map the entire table in
4769order to compute the checksum. Lv Zheng.
4770
4771Fixed a buffer allocation issue for the Generic Serial Bus support.
4772Originally, a fixed buffer length was used. This change allows for
4773variable-length buffers based upon the protocol indicated by the field
4774access attributes. Reported by Lan Tianyu. Lv Zheng.
4775
4776Fixed a problem where an object detached from a namespace node was not
4777properly terminated/cleared and could cause a circular list problem if
4778reattached. ACPICA BZ 1063. David Box.
4779
4780Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4781
4782Fixed a possible memory leak in an error return path within the function
4783AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4784
4785Example Code and Data Size: These are the sizes for the OS-independent
4786acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4787debug version of the code includes the debug output trace mechanism and
4788has a much larger code and data size.
4789
4790  Current Release:
4791    Non-Debug Version:  98.7K Code, 27.2K Data, 125.9K Total
4792    Debug Version:     191.7K Code, 79.6K Data, 271.3K Total
4793  Previous Release:
4794    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4795    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4796
4797
47982) iASL Compiler/Disassembler and Tools:
4799
4800Disassembler: Add dump of ASCII equivalent text within a comment at the
4801end of each line of the output for the Buffer() ASL operator.
4802
4803AcpiDump: Miscellaneous changes:
4804  Fixed repetitive table dump in -n mode.
4805  For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
4806the ACPI 2.0 GUID fails.
4807
4808iASL: Fixed a problem where the compiler could fault if incorrectly given
4809an acpidump output file as input. ACPICA BZ 1088. David Box.
4810
4811AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4812they are invoked without any arguments.
4813
4814Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
48151086. Colin Ian King.
4816
4817Disassembler: Cleaned up a block of code that extracts a parent Op
4818object. Added a comment that explains that the parent is guaranteed to be
4819valid in this case. ACPICA BZ 1069.
4820
4821
4822----------------------------------------
482324 April 2014. Summary of changes for version 20140424:
4824
48251) ACPICA kernel-resident subsystem:
4826
4827Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4828Some of these tables are known to contain a trailing NULL entry. Lv
4829Zheng.
4830
4831Removed an extraneous error message for the case where there are a large
4832number of system GPEs (> 124). This was the "32-bit FADT register is too
4833long to convert to GAS struct" message, which is irrelevant for GPEs
4834since the GPEx_BLK_LEN fields of the FADT are always used instead of the
4835(limited capacity) GAS bit length. Also, several changes to ensure proper
4836support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4837internally.
4838
4839Implemented and deployed additional configuration support for the public
4840ACPICA external interfaces. Entire classes of interfaces can now be
4841easily modified or configured out, replaced by stubbed inline functions
4842by default. Lv Zheng.
4843
4844Moved all public ACPICA runtime configuration globals to the public
4845ACPICA external interface file for convenience. Also, removed some
4846obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4847
4848Documentation: Added a new section to the ACPICA reference describing the
4849maximum number of GPEs that can be supported by the FADT-defined GPEs in
4850block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4851reference.
4852
4853Example Code and Data Size: These are the sizes for the OS-independent
4854acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4855debug version of the code includes the debug output trace mechanism and
4856has a much larger code and data size.
4857
4858  Current Release:
4859    Non-Debug Version:  96.8K Code, 27.2K Data, 124.0K Total
4860    Debug Version:     189.5K Code, 79.7K Data, 269.2K Total
4861  Previous Release:
4862    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4863    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4864
4865
48662) iASL Compiler/Disassembler and Tools:
4867
4868iASL and disassembler: Add full support for the LPIT table (Low Power
4869Idle Table). Includes support in the disassembler, data table compiler,
4870and template generator.
4871
4872AcpiDump utility:
48731) Add option to force the use of the RSDT (over the XSDT).
48742) Improve validation of the RSDP signature (use 8 chars instead of 4).
4875
4876iASL: Add check for predefined packages that are too large.  For
4877predefined names that contain subpackages, check if each subpackage is
4878too large. (Check for too small already exists.)
4879
4880Debugger: Updated the GPE command (which simulates a GPE by executing the
4881GPE code paths in ACPICA). The GPE device is now optional, and defaults
4882to the GPE 0/1 FADT-defined blocks.
4883
4884Unix application OSL: Update line-editing support. Add additional error
4885checking and take care not to reset terminal attributes on exit if they
4886were never set. This should help guarantee that the terminal is always
4887left in the previous state on program exit.
4888
4889
4890----------------------------------------
489125 March 2014. Summary of changes for version 20140325:
4892
48931) ACPICA kernel-resident subsystem:
4894
4895Updated the auto-serialize feature for control methods. This feature
4896automatically serializes all methods that create named objects in order
4897to prevent runtime errors. The update adds support to ignore the
4898currently executing AML SyncLevel when invoking such a method, in order
4899to prevent disruption of any existing SyncLevel priorities that may exist
4900in the AML code. Although the use of SyncLevels is relatively rare, this
4901change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4902appear on some machines starting with the 20140214 release.
4903
4904Added a new external interface to allow the host to install ACPI tables
4905very early, before the namespace is even created. AcpiInstallTable gives
4906the host additional flexibility for ACPI table management. Tables can be
4907installed directly by the host as if they had originally appeared in the
4908XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
4909(anything except the DSDT and FACS). Adds a new file, tbdata.c, along
4910with additional internal restructuring and cleanup. See the ACPICA
4911Reference for interface details. Lv Zheng.
4912
4913Added validation of the checksum for all incoming dynamically loaded
4914tables (via external interfaces or via AML Load/LoadTable operators). Lv
4915Zheng.
4916
4917Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4918and GPE handler removal. Restructured calls to eliminate possible race
4919conditions. Lv Zheng.
4920
4921Added a warning for the use/execution of the ASL/AML Unload (table)
4922operator. This will help detect and identify machines that use this
4923operator if and when it is ever used. This operator has never been seen
4924in the field and the usage model and possible side-effects of the drastic
4925runtime action of a full table removal are unknown.
4926
4927Reverted the use of #pragma push/pop which was introduced in the 20140214
4928release. It appears that push and pop are not implemented by enough
4929compilers to make the use of this feature feasible for ACPICA at this
4930time. However, these operators may be deployed in a future ACPICA
4931release.
4932
4933Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4934handler interfaces.
4935
4936Source code generation:
49371) Disabled the use of the "strchr" macro for the gcc-specific
4938generation. For some versions of gcc, this macro can periodically expose
4939a compiler bug which in turn causes compile-time error(s).
49402) Added support for PPC64 compilation. Colin Ian King.
4941
4942Example Code and Data Size: These are the sizes for the OS-independent
4943acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4944debug version of the code includes the debug output trace mechanism and
4945has a much larger code and data size.
4946
4947  Current Release:
4948    Non-Debug Version:  97.0K Code, 27.2K Data, 124.2K Total
4949    Debug Version:     189.7K Code, 79.5K Data, 269.2K Total
4950  Previous Release:
4951    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
4952    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
4953
4954
49552) iASL Compiler/Disassembler and Tools:
4956
4957Disassembler: Added several new features to improve the readability of
4958the resulting ASL code. Extra information is emitted within comment
4959fields in the ASL code:
49601) Known _HID/_CID values are decoded to descriptive text.
49612) Standard values for the Notify() operator are decoded to descriptive
4962text.
49633) Target operands are expanded to full pathnames (in a comment) when
4964possible.
4965
4966Disassembler: Miscellaneous updates for extern() handling:
49671) Abort compiler if file specified by -fe option does not exist.
49682) Silence unnecessary warnings about argument count mismatches.
49693) Update warning messages concerning unresolved method externals.
49704) Emit "UnknownObj" keyword for externals whose type cannot be
4971determined.
4972
4973AcpiHelp utility:
49741) Added the -a option to display both the ASL syntax and the AML
4975encoding for an input ASL operator. This effectively displays all known
4976information about an ASL operator with one AcpiHelp invocation.
49772) Added substring match support (similar to a wildcard) for the -i
4978(_HID/PNP IDs) option.
4979
4980iASL/Disassembler: Since this tool does not yet support execution on big-
4981endian machines, added detection of endianness and an error message if
4982execution is attempted on big-endian. Support for big-endian within iASL
4983is a feature that is on the ACPICA to-be-done list.
4984
4985AcpiBin utility:
49861) Remove option to extract binary files from an acpidump; this function
4987is made obsolete by the AcpiXtract utility.
49882) General cleanup of open files and allocated buffers.
4989
4990
4991----------------------------------------
499214 February 2014. Summary of changes for version 20140214:
4993
49941) ACPICA kernel-resident subsystem:
4995
4996Implemented a new mechanism to proactively prevent problems with ill-
4997behaved reentrant control methods that create named ACPI objects. This
4998behavior is illegal as per the ACPI specification, but is nonetheless
4999frequently seen in the field. Previously, this could lead to an
5000AE_ALREADY_EXISTS exception if the method was actually entered by more
5001than one thread. This new mechanism detects such methods at table load
5002time and marks them "serialized" to prevent reentrancy. A new global
5003option, AcpiGbl_AutoSerializeMethods, has been added to disable this
5004feature if desired. This mechanism and global option obsoletes and
5005supersedes the previous AcpiGbl_SerializeAllMethods option.
5006
5007Added the "Windows 2013" string to the _OSI support. ACPICA will now
5008respond TRUE to _OSI queries with this string. It is the stated policy of
5009ACPICA to add new strings to the _OSI support as soon as possible after
5010they are defined. See the full ACPICA _OSI policy which has been added to
5011the utilities/utosi.c file.
5012
5013Hardened/updated the _PRT return value auto-repair code:
50141) Do not abort the repair on a single subpackage failure, continue to
5015check all subpackages.
50162) Add check for the minimum subpackage length (4).
50173) Properly handle extraneous NULL package elements.
5018
5019Added support to avoid the possibility of infinite loops when traversing
5020object linked lists. Never allow an infinite loop, even in the face of
5021corrupted object lists.
5022
5023ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
5024pack(pop) directives to ensure that the ACPICA headers are independent of
5025compiler settings or other host headers.
5026
5027Example Code and Data Size: These are the sizes for the OS-independent
5028acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5029debug version of the code includes the debug output trace mechanism and
5030has a much larger code and data size.
5031
5032  Current Release:
5033    Non-Debug Version:  96.5K Code, 27.2K Data, 123.7K Total
5034    Debug Version:     188.6K Code, 79.0K Data, 267.6K Total
5035  Previous Release:
5036    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
5037    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
5038
5039
50402) iASL Compiler/Disassembler and Tools:
5041
5042iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
5043first reserved field was incorrectly forced to have a value of zero. This
5044change correctly forces the field to have a value of one. ACPICA BZ 1081.
5045
5046Debugger: Added missing support for the "Extra" and "Data" subobjects
5047when displaying object data.
5048
5049Debugger: Added support to display entire object linked lists when
5050displaying object data.
5051
5052iASL: Removed the obsolete -g option to obtain ACPI tables from the
5053Windows registry. This feature has been superseded by the acpidump
5054utility.
5055
5056
5057----------------------------------------
505814 January 2014. Summary of changes for version 20140114:
5059
50601) ACPICA kernel-resident subsystem:
5061
5062Updated all ACPICA copyrights and signons to 2014. Added the 2014
5063copyright to all module headers and signons, including the standard Linux
5064header. This affects virtually every file in the ACPICA core subsystem,
5065iASL compiler, all ACPICA utilities, and the test suites.
5066
5067Improved parameter validation for AcpiInstallGpeBlock. Added the
5068following checks:
50691) The incoming device handle refers to type ACPI_TYPE_DEVICE.
50702) There is not already a GPE block attached to the device.
5071Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
5072device.
5073
5074Correctly support "references" in the ACPI_OBJECT. This change fixes the
5075support to allow references (namespace nodes) to be passed as arguments
5076to control methods via the evaluate object interface. This is probably
5077most useful for testing purposes, however.
5078
5079Improved support for 32/64 bit physical addresses in printf()-like
5080output. This change improves the support for physical addresses in printf
5081debug statements and other output on both 32-bit and 64-bit hosts. It
5082consistently outputs the appropriate number of bytes for each host. The
5083%p specifier is unsatisfactory since it does not emit uniform output on
5084all hosts/clib implementations (on some, leading zeros are not supported,
5085leading to difficult-to-read output).
5086
5087Example Code and Data Size: These are the sizes for the OS-independent
5088acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5089debug version of the code includes the debug output trace mechanism and
5090has a much larger code and data size.
5091
5092  Current Release:
5093    Non-Debug Version:  96.2K Code, 27.0K Data, 123.2K Total
5094    Debug Version:     187.5K Code, 78.3K Data, 265.8K Total
5095  Previous Release:
5096    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
5097    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
5098
5099
51002) iASL Compiler/Disassembler and Tools:
5101
5102iASL: Fix a possible fault when using the Connection() operator. Fixes a
5103problem if the parent Field definition for the Connection operator refers
5104to an operation region that does not exist. ACPICA BZ 1064.
5105
5106AcpiExec: Load of local test tables is now optional. The utility has the
5107capability to load some various tables to test features of ACPICA.
5108However, there are enough of them that the output of the utility became
5109confusing. With this change, only the required local tables are displayed
5110(RSDP, XSDT, etc.) along with the actual tables loaded via the command
5111line specification. This makes the default output simler and easier to
5112understand. The -el command line option restores the original behavior
5113for testing purposes.
5114
5115AcpiExec: Added support for overlapping operation regions. This change
5116expands the simulation of operation regions by supporting regions that
5117overlap within the given address space. Supports SystemMemory and
5118SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
5119
5120AcpiExec: Added region handler support for PCI_Config and EC spaces. This
5121allows AcpiExec to simulate these address spaces, similar to the current
5122support for SystemMemory and SystemIO.
5123
5124Debugger: Added new command to read/write/compare all namespace objects.
5125The command "test objects" will exercise the entire namespace by writing
5126new values to each data object, and ensuring that the write was
5127successful. The original value is then restored and verified.
5128
5129Debugger: Added the "test predefined" command. This change makes this
5130test public and puts it under the new "test" command. The test executes
5131each and every predefined name within the current namespace.
5132
5133
5134----------------------------------------
513518 December 2013. Summary of changes for version 20131218:
5136
5137Global note: The ACPI 5.0A specification was released this month. There
5138are no changes needed for ACPICA since this release of ACPI is an
5139errata/clarification release. The specification is available at
5140acpi.info.
5141
5142
51431) ACPICA kernel-resident subsystem:
5144
5145Added validation of the XSDT root table if it is present. Some older
5146platforms contain an XSDT that is ill-formed or otherwise invalid (such
5147as containing some or all entries that are NULL pointers). This change
5148adds a new function to validate the XSDT before actually using it. If the
5149XSDT is found to be invalid, ACPICA will now automatically fall back to
5150using the RSDT instead. Original implementation by Zhao Yakui. Ported to
5151ACPICA and enhanced by Lv Zheng and Bob Moore.
5152
5153Added a runtime option to ignore the XSDT and force the use of the RSDT.
5154This change adds a runtime option that will force ACPICA to use the RSDT
5155instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
5156requires that an XSDT be used instead of the RSDT, the XSDT has been
5157found to be corrupt or ill-formed on some machines. Lv Zheng.
5158
5159Added a runtime option to favor 32-bit FADT register addresses over the
516064-bit addresses. This change adds an option to favor 32-bit FADT
5161addresses when there is a conflict between the 32-bit and 64-bit versions
5162of the same register. The default behavior is to use the 64-bit version
5163in accordance with the ACPI specification. This can now be overridden via
5164the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
5165
5166During the change above, the internal "Convert FADT" and "Verify FADT"
5167functions have been merged to simplify the code, making it easier to
5168understand and maintain. ACPICA BZ 933.
5169
5170Improve exception reporting and handling for GPE block installation.
5171Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
5172status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
5173
5174Added helper macros to extract bus/segment numbers from the HEST table.
5175This change adds two macros to extract the encoded bus and segment
5176numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
5177Betty Dall <betty.dall@hp.com>
5178
5179Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
5180by ACPICA. It is not a public macro, so it should have no effect on
5181existing OSV code. Lv Zheng.
5182
5183Example Code and Data Size: These are the sizes for the OS-independent
5184acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5185debug version of the code includes the debug output trace mechanism and
5186has a much larger code and data size.
5187
5188  Current Release:
5189    Non-Debug Version:  96.1K Code, 27.0K Data, 123.1K Total
5190    Debug Version:     185.6K Code, 77.3K Data, 262.9K Total
5191  Previous Release:
5192    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
5193    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
5194
5195
51962) iASL Compiler/Disassembler and Tools:
5197
5198Disassembler: Improved pathname support for emitted External()
5199statements. This change adds full pathname support for external names
5200that have been resolved internally by the inclusion of additional ACPI
5201tables (via the iASL -e option). Without this change, the disassembler
5202can emit multiple externals for the same object, or it become confused
5203when the Scope() operator is used on an external object. Overall, greatly
5204improves the ability to actually recompile the emitted ASL code when
5205objects a referenced across multiple ACPI tables. Reported by Michael
5206Tsirkin (mst@redhat.com).
5207
5208Tests/ASLTS: Updated functional control suite to execute with no errors.
5209David Box. Fixed several errors related to the testing of the interpreter
5210slack mode. Lv Zheng.
5211
5212iASL: Added support to detect names that are declared within a control
5213method, but are unused (these are temporary names that are only valid
5214during the time the method is executing). A remark is issued for these
5215cases. ACPICA BZ 1022.
5216
5217iASL: Added full support for the DBG2 table. Adds full disassembler,
5218table compiler, and template generator support for the DBG2 table (Debug
5219Port 2 table).
5220
5221iASL: Added full support for the PCCT table, update the table definition.
5222Updates the PCCT table definition in the actbl3.h header and adds table
5223compiler and template generator support.
5224
5225iASL: Added an option to emit only error messages (no warnings/remarks).
5226The -ve option will enable only error messages, warnings and remarks are
5227suppressed. This can simplify debugging when only the errors are
5228important, such as when an ACPI table is disassembled and there are many
5229warnings and remarks -- but only the actual errors are of real interest.
5230
5231Example ACPICA code (source/tools/examples): Updated the example code so
5232that it builds to an actual working program, not just example code. Added
5233ACPI tables and execution of an example control method in the DSDT. Added
5234makefile support for Unix generation.
5235
5236
5237----------------------------------------
523815 November 2013. Summary of changes for version 20131115:
5239
5240This release is available at https://acpica.org/downloads
5241
5242
52431) ACPICA kernel-resident subsystem:
5244
5245Resource Manager: Fixed loop termination for the "get AML length"
5246function. The loop previously had an error termination on a NULL resource
5247pointer, which can never happen since the loop simply increments a valid
5248resource pointer. This fix changes the loop to terminate with an error on
5249an invalid end-of-buffer condition. The problem can be seen as an
5250infinite loop by callers to AcpiSetCurrentResources with an invalid or
5251corrupted resource descriptor, or a resource descriptor that is missing
5252an END_TAG descriptor. Reported by Dan Carpenter
5253<dan.carpenter@oracle.com>. Lv Zheng, Bob Moore.
5254
5255Table unload and ACPICA termination: Delete all attached data objects
5256during namespace node deletion. This fix updates namespace node deletion
5257to delete the entire list of attached objects (attached via
5258AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
52591024. Tomasz Nowicki (tomasz.nowicki@linaro.org).
5260
5261ACPICA termination: Added support to delete all objects attached to the
5262root namespace node. This fix deletes any and all objects that have been
5263attached to the root node via AcpiAttachData. Previously, none of these
5264objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
5265
5266Debug output: Do not emit the function nesting level for the in-kernel
5267build. The nesting level is really only useful during a single-thread
5268execution. Therefore, only enable this output for the AcpiExec utility.
5269Also, only emit the thread ID when executing under AcpiExec (Context
5270switches are still always detected and a message is emitted). ACPICA BZ
5271972.
5272
5273Example Code and Data Size: These are the sizes for the OS-independent
5274acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5275debug version of the code includes the debug output trace mechanism and
5276has a much larger code and data size.
5277
5278  Current Release:
5279    Non-Debug Version:  95.9K Code, 27.0K Data, 122.9K Total
5280    Debug Version:     185.1K Code, 77.2K Data, 262.3K Total
5281  Previous Release:
5282    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
5283    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
5284
5285
52862) iASL Compiler/Disassembler and Tools:
5287
5288AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
5289correct portable POSIX header for terminal control functions.
5290
5291Disassembler: Fixed control method invocation issues related to the use
5292of the CondRefOf() operator. The problem is seen in the disassembly where
5293control method invocations may not be disassembled properly if the
5294control method name has been used previously as an argument to CondRefOf.
5295The solution is to not attempt to emit an external declaration for the
5296CondRefOf target (it is not necessary in the first place). This prevents
5297disassembler object type confusion. ACPICA BZ 988.
5298
5299Unix Makefiles: Added an option to disable compiler optimizations and the
5300_FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
5301with optimizations (reportedly, gcc 4.4 for example). This change adds a
5302command line option for make (NOOPT) that disables all compiler
5303optimizations and the _FORTIFY_SOURCE compiler flag. The default
5304optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
53051034. Lv Zheng, Bob Moore.
5306
5307Tests/ASLTS: Added options to specify individual test cases and modes.
5308This allows testers running aslts.sh to optionally specify individual
5309test modes and test cases. Also added an option to disable the forced
5310generation of the ACPICA tools from source if desired. Lv Zheng.
5311
5312----------------------------------------
531327 September 2013. Summary of changes for version 20130927:
5314
5315This release is available at https://acpica.org/downloads
5316
5317
53181) ACPICA kernel-resident subsystem:
5319
5320Fixed a problem with store operations to reference objects. This change
5321fixes a problem where a Store operation to an ArgX object that contained
5322a
5323reference to a field object did not complete the automatic dereference
5324and
5325then write to the actual field object. Instead, the object type of the
5326field object was inadvertently changed to match the type of the source
5327operand. The new behavior will actually write to the field object (buffer
5328field or field unit), thus matching the correct ACPI-defined behavior.
5329
5330Implemented support to allow the host to redefine individual OSL
5331prototypes. This change enables the host to redefine OSL prototypes found
5332in the acpiosxf.h file. This allows the host to implement OSL interfaces
5333with a macro or inlined function. Further, it allows the host to add any
5334additional required modifiers such as __iomem, __init, __exit, etc., as
5335necessary on a per-interface basis. Enables maximum flexibility for the
5336OSL interfaces. Lv Zheng.
5337
5338Hardcoded the access width for the FADT-defined reset register. The ACPI
5339specification requires the reset register width to be 8 bits. ACPICA now
5340hardcodes the width to 8 and ignores the FADT width value. This provides
5341compatibility with other ACPI implementations that have allowed BIOS code
5342with bad register width values to go unnoticed. Matthew Garett, Bob
5343Moore,
5344Lv Zheng.
5345
5346Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
5347used
5348in the OSL header (acpiosxf). The change modifies the position of this
5349macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
5350build issues if the OSL defines the implementation of the interface to be
5351an inline stub function. Lv Zheng.
5352
5353Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
5354initialization interfaces. This change adds a new macro for the main init
5355and terminate external interfaces in order to support hosts that require
5356additional or different processing for these functions. Changed from
5357ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
5358Zheng, Bob Moore.
5359
5360Cleaned up the memory allocation macros for configurability. In the
5361common
5362case, the ACPI_ALLOCATE and related macros now resolve directly to their
5363respective AcpiOs* OSL interfaces. Two options:
53641) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
5365default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
53662) For AcpiExec (and for debugging), the macros can optionally be
5367resolved
5368to the local ACPICA interfaces that track each allocation (local tracking
5369is used to immediately detect memory leaks).
5370Lv Zheng.
5371
5372Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
5373to predefine this macro to either TRUE or FALSE during the system build.
5374
5375Replaced __FUNCTION_ with __func__ in the gcc-specific header.
5376
5377Example Code and Data Size: These are the sizes for the OS-independent
5378acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5379debug version of the code includes the debug output trace mechanism and
5380has a much larger code and data size.
5381
5382  Current Release:
5383    Non-Debug Version:  95.8K Code, 27.0K Data, 122.8K Total
5384    Debug Version:     185.2K Code, 77.2K Data, 262.4K Total
5385  Previous Release:
5386    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5387    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5388
5389
53902) iASL Compiler/Disassembler and Tools:
5391
5392iASL: Implemented wildcard support for the -e option. This simplifies use
5393when there are many SSDTs that must be included to resolve external
5394method
5395declarations. ACPICA BZ 1041. Example:
5396    iasl -e ssdt*.dat -d dsdt.dat
5397
5398AcpiExec: Add history/line-editing for Unix/Linux systems. This change
5399adds a portable module that implements full history and limited line
5400editing for Unix and Linux systems. It does not use readline() due to
5401portability issues. Instead it uses the POSIX termio interface to put the
5402terminal in raw input mode so that the various special keys can be
5403trapped
5404(such as up/down-arrow for history support and left/right-arrow for line
5405editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
5406
5407AcpiXtract: Add support to handle (ignore) "empty" lines containing only
5408one or more spaces. This provides compatible with early or different
5409versions of the AcpiDump utility. ACPICA BZ 1044.
5410
5411AcpiDump: Do not ignore tables that contain only an ACPI table header.
5412Apparently, some BIOSs create SSDTs that contain an ACPI table header but
5413no other data. This change adds support to dump these tables. Any tables
5414shorter than the length of an ACPI table header remain in error (an error
5415message is emitted). Reported by Yi Li.
5416
5417Debugger: Echo actual command along with the "unknown command" message.
5418
5419----------------------------------------
542023 August 2013. Summary of changes for version 20130823:
5421
54221) ACPICA kernel-resident subsystem:
5423
5424Implemented support for host-installed System Control Interrupt (SCI)
5425handlers. Certain ACPI functionality requires the host to handle raw
5426SCIs. For example, the "SCI Doorbell" that is defined for memory power
5427state support requires the host device driver to handle SCIs to examine
5428if the doorbell has been activated. Multiple SCI handlers can be
5429installed to allow for future expansion. New external interfaces are
5430AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
5431details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
5432
5433Operation region support: Never locally free the handler "context"
5434pointer. This change removes some dangerous code that attempts to free
5435the handler context pointer in some (rare) circumstances. The owner of
5436the handler owns this pointer and the ACPICA code should never touch it.
5437Although not seen to be an issue in any kernel, it did show up as a
5438problem (fault) under AcpiExec. Also, set the internal storage field for
5439the context pointer to zero when the region is deactivated, simply for
5440sanity. David Box. ACPICA BZ 1039.
5441
5442AcpiRead: On error, do not modify the return value target location. If an
5443error happens in the middle of a split 32/32 64-bit I/O operation, do not
5444modify the target of the return value pointer. Makes the code consistent
5445with the rest of ACPICA. Bjorn Helgaas.
5446
5447Example Code and Data Size: These are the sizes for the OS-independent
5448acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5449debug version of the code includes the debug output trace mechanism and
5450has a much larger code and data size.
5451
5452  Current Release:
5453    Non-Debug Version:  96.7K Code, 27.1K Data, 123.9K Total
5454    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5455  Previous Release:
5456    Non-Debug Version:  96.2K Code, 27.1K Data, 123.3K Total
5457    Debug Version:     185.4K Code, 77.1K Data, 262.5K Total
5458
5459
54602) iASL Compiler/Disassembler and Tools:
5461
5462AcpiDump: Implemented several new features and fixed some problems:
54631) Added support to dump the RSDP, RSDT, and XSDT tables.
54642) Added support for multiple table instances (SSDT, UEFI).
54653) Added option to dump "customized" (overridden) tables (-c).
54664) Fixed a problem where some table filenames were improperly
5467constructed.
54685) Improved some error messages, removed some unnecessary messages.
5469
5470iASL: Implemented additional support for disassembly of ACPI tables that
5471contain invocations of external control methods. The -fe<file> option
5472allows the import of a file that specifies the external methods along
5473with the required number of arguments for each -- allowing for the
5474correct disassembly of the table. This is a workaround for a limitation
5475of AML code where the disassembler often cannot determine the number of
5476arguments required for an external control method and generates incorrect
5477ASL code. See the iASL reference for details. ACPICA BZ 1030.
5478
5479Debugger: Implemented a new command (paths) that displays the full
5480pathnames (namepaths) and object types of all objects in the namespace.
5481This is an alternative to the namespace command.
5482
5483Debugger: Implemented a new command (sci) that invokes the SCI dispatch
5484mechanism and any installed handlers.
5485
5486iASL: Fixed a possible segfault for "too many parent prefixes" condition.
5487This can occur if there are too many parent prefixes in a namepath (for
5488example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
5489
5490Application OSLs: Set the return value for the PCI read functions. These
5491functions simply return AE_OK, but should set the return value to zero
5492also. This change implements this. ACPICA BZ 1038.
5493
5494Debugger: Prevent possible command line buffer overflow. Increase the
5495size of a couple of the debugger line buffers, and ensure that overflow
5496cannot happen. ACPICA BZ 1037.
5497
5498iASL: Changed to abort immediately on serious errors during the parsing
5499phase. Due to the nature of ASL, there is no point in attempting to
5500compile these types of errors, and they typically end up causing a
5501cascade of hundreds of errors which obscure the original problem.
5502
5503----------------------------------------
550425 July 2013. Summary of changes for version 20130725:
5505
55061) ACPICA kernel-resident subsystem:
5507
5508Fixed a problem with the DerefOf operator where references to FieldUnits
5509and BufferFields incorrectly returned the parent object, not the actual
5510value of the object. After this change, a dereference of a FieldUnit
5511reference results in a read operation on the field to get the value, and
5512likewise, the appropriate BufferField value is extracted from the target
5513buffer.
5514
5515Fixed a problem where the _WAK method could cause a fault under these
5516circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
5517method returned no value. The problem is rarely seen because most kernels
5518run ACPICA in slack mode.
5519
5520For the DerefOf operator, a fatal error now results if an attempt is made
5521to dereference a reference (created by the Index operator) to a NULL
5522package element. Provides compatibility with other ACPI implementations,
5523and this behavior will be added to a future version of the ACPI
5524specification.
5525
5526The ACPI Power Management Timer (defined in the FADT) is now optional.
5527This provides compatibility with other ACPI implementations and will
5528appear in the next version of the ACPI specification. If there is no PM
5529Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
5530zero in the FADT indicates no PM timer.
5531
5532Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
5533allows the host to globally enable/disable all vendor strings, all
5534feature strings, or both. Intended to be primarily used for debugging
5535purposes only. Lv Zheng.
5536
5537Expose the collected _OSI data to the host via a global variable. This
5538data tracks the highest level vendor ID that has been invoked by the BIOS
5539so that the host (and potentially ACPICA itself) can change behaviors
5540based upon the age of the BIOS.
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.2K Code, 27.1K Data, 123.3K Total
5549    Debug Version:     184.4K Code, 76.8K Data, 261.2K Total
5550  Previous Release:
5551    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5552    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5553
5554
55552) iASL Compiler/Disassembler and Tools:
5556
5557iASL: Created the following enhancements for the -so option (create
5558offset table):
55591)Add offsets for the last nameseg in each namepath for every supported
5560object type
55612)Add support for Processor, Device, Thermal Zone, and Scope objects
55623)Add the actual AML opcode for the parent object of every supported
5563object type
55644)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
5565
5566Disassembler: Emit all unresolved external symbols in a single block.
5567These are external references to control methods that could not be
5568resolved, and thus, the disassembler had to make a guess at the number of
5569arguments to parse.
5570
5571iASL: The argument to the -T option (create table template) is now
5572optional. If not specified, the default table is a DSDT, typically the
5573most common case.
5574
5575----------------------------------------
557626 June 2013. Summary of changes for version 20130626:
5577
55781) ACPICA kernel-resident subsystem:
5579
5580Fixed an issue with runtime repair of the _CST object. Null or invalid
5581elements were not always removed properly. Lv Zheng.
5582
5583Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5584FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5585the maximum number of GPEs is 1016. Use of multiple GPE block devices
5586makes the system-wide number of GPEs essentially unlimited.
5587
5588Example Code and Data Size: These are the sizes for the OS-independent
5589acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5590debug version of the code includes the debug output trace mechanism and
5591has a much larger code and data size.
5592
5593  Current Release:
5594    Non-Debug Version:  95.9K Code, 26.9K Data, 122.8K Total
5595    Debug Version:     184.1K Code, 76.7K Data, 260.8K Total
5596  Previous Release:
5597    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5598    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5599
5600
56012) iASL Compiler/Disassembler and Tools:
5602
5603Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5604hosts. Now supports Linux, FreeBSD, and Windows.
5605
5606Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5607Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5608
5609iASL/Preprocessor: Implemented full support for nested
5610#if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5611
5612Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5613max. The original purpose of this constraint was to limit the amount of
5614debug output. However, the string function in question (UtPrintString) is
5615now used for the disassembler also, where 256 bytes is insufficient.
5616Reported by RehabMan@GitHub.
5617
5618iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5619tables. ACPICA BZ 999. Lv Zheng.
5620
5621iASL: Fixed a couple of error exit issues that could result in a "Could
5622not delete <file>" message during ASL compilation.
5623
5624AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5625the actual signatures for these tables are "FACP" and "APIC",
5626respectively.
5627
5628AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5629tables are allowed to have multiple instances.
5630
5631----------------------------------------
563217 May 2013. Summary of changes for version 20130517:
5633
56341) ACPICA kernel-resident subsystem:
5635
5636Fixed a regression introduced in version 20130328 for _INI methods. This
5637change fixes a problem introduced in 20130328 where _INI methods are no
5638longer executed properly because of a memory block that was not
5639initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5640<tomasz.nowicki@linaro.org>.
5641
5642Fixed a possible problem with the new extended sleep registers in the
5643ACPI
56445.0 FADT. Do not use these registers (even if populated) unless the HW-
5645reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
56461020. Lv Zheng.
5647
5648Implemented return value repair code for _CST predefined objects: Sort
5649the
5650list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5651
5652Implemented a debug-only option to disable loading of SSDTs from the
5653RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5654ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5655acglobal.h - ACPICA BZ 1005. Lv Zheng.
5656
5657Fixed some issues in the ACPICA initialization and termination code:
5658Tomasz Nowicki <tomasz.nowicki@linaro.org>
56591) Clear events initialized flag upon event component termination. ACPICA
5660BZ 1013.
56612) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
56623) Delete global lock pending lock during termination. ACPICA BZ 1012.
56634) Clear debug buffer global on termination to prevent possible multiple
5664delete. ACPICA BZ 1010.
5665
5666Standardized all switch() blocks across the entire source base. After
5667many
5668years, different formatting for switch() had crept in. This change makes
5669the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5670
5671Split some files to enhance ACPICA modularity and configurability:
56721) Split buffer dump routines into utilities/utbuffer.c
56732) Split internal error message routines into utilities/uterror.c
56743) Split table print utilities into tables/tbprint.c
56754) Split iASL command-line option processing into asloptions.c
5676
5677Makefile enhancements:
56781) Support for all new files above.
56792) Abort make on errors from any subcomponent. Chao Guan.
56803) Add build support for Apple Mac OS X. Liang Qi.
5681
5682Example Code and Data Size: These are the sizes for the OS-independent
5683acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5684debug version of the code includes the debug output trace mechanism and
5685has a much larger code and data size.
5686
5687  Current Release:
5688    Non-Debug Version:  96.0K Code, 27.0K Data, 123.0K Total
5689    Debug Version:     184.1K Code, 76.8K Data, 260.9K Total
5690  Previous Release:
5691    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5692    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5693
5694
56952) iASL Compiler/Disassembler and Tools:
5696
5697New utility: Implemented an easily portable version of the acpidump
5698utility to extract ACPI tables from the system (or a file) in an ASCII
5699hex
5700dump format. The top-level code implements the various command line
5701options, file I/O, and table dump routines. To port to a new host, only
5702three functions need to be implemented to get tables -- since this
5703functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5704the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
57051) The Windows version obtains the ACPI tables from the Registry.
57062) The Linux version is under development.
57073) Other hosts - If an OS-dependent module is submitted, it will be
5708distributed with ACPICA.
5709
5710iASL: Fixed a regression for -D preprocessor option (define symbol). A
5711restructuring/change to the initialization sequence caused this option to
5712no longer work properly.
5713
5714iASL: Implemented a mechanism to disable specific warnings and remarks.
5715Adds a new command line option, "-vw <messageid> as well as "#pragma
5716disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5717
5718iASL: Fix for too-strict package object validation. The package object
5719validation for return values from the predefined names is a bit too
5720strict, it does not allow names references within the package (which will
5721be resolved at runtime.) These types of references cannot be validated at
5722compile time. This change ignores named references within package objects
5723for names that return or define static packages.
5724
5725Debugger: Fixed the 80-character command line limitation for the History
5726command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5727
5728iASL: Added control method and package support for the -so option
5729(generates AML offset table for BIOS support.)
5730
5731iASL: issue a remark if a non-serialized method creates named objects. If
5732a thread blocks within the method for any reason, and another thread
5733enters the method, the method will fail because an attempt will be made
5734to
5735create the same (named) object twice. In this case, issue a remark that
5736the method should be marked serialized. NOTE: may become a warning later.
5737ACPICA BZ 909.
5738
5739----------------------------------------
574018 April 2013. Summary of changes for version 20130418:
5741
57421) ACPICA kernel-resident subsystem:
5743
5744Fixed a possible buffer overrun during some rare but specific field unit
5745read operations. This overrun can only happen if the DSDT version is 1 --
5746meaning that all AML integers are 32 bits -- and the field length is
5747between 33 and 55 bits long. During the read, an internal buffer object
5748is
5749created for the field unit because the field is larger than an integer
5750(32
5751bits). However, in this case, the buffer will be incorrectly written
5752beyond the end because the buffer length is less than the internal
5753minimum
5754of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5755long, but a full 8 bytes will be written.
5756
5757Updated the Embedded Controller "orphan" _REG method support. This refers
5758to _REG methods under the EC device that have no corresponding operation
5759region. This is allowed by the ACPI specification. This update removes a
5760dependency on the existence an ECDT table. It will execute an orphan _REG
5761method as long as the operation region handler for the EC is installed at
5762the EC device node and not the namespace root. Rui Zhang (original
5763update), Bob Moore (update/integrate).
5764
5765Implemented run-time argument typechecking for all predefined ACPI names
5766(_STA, _BIF, etc.) This change performs object typechecking on all
5767incoming arguments for all predefined names executed via
5768AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5769passing correct object types as well as the correct number of arguments
5770(therefore identifying any issues immediately). Also, the ASL/namespace
5771definition of the predefined name is checked against the ACPI
5772specification for the proper argument count. Adds one new file,
5773nsarguments.c
5774
5775Changed an exception code for the ASL UnLoad() operator. Changed the
5776exception code for the case where the input DdbHandle is invalid, from
5777AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5778
5779Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5780global makefile. The use of this flag causes compiler errors on earlier
5781versions of GCC, so it has been removed for compatibility.
5782
5783Miscellaneous cleanup:
57841) Removed some unused/obsolete macros
57852) Fixed a possible memory leak in the _OSI support
57863) Removed an unused variable in the predefined name support
57874) Windows OSL: remove obsolete reference to a memory list field
5788
5789Example Code and Data Size: These are the sizes for the OS-independent
5790acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5791debug version of the code includes the debug output trace mechanism and
5792has a much larger code and data size.
5793
5794  Current Release:
5795    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5796    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5797  Previous Release:
5798    Non-Debug Version:  95.6K Code, 26.8K Data, 122.4K Total
5799    Debug Version:     183.5K Code, 76.6K Data, 260.1K Total
5800
5801
58022) iASL Compiler/Disassembler and Tools:
5803
5804AcpiExec: Added installation of a handler for the SystemCMOS address
5805space. This prevents control method abort if a method accesses this
5806space.
5807
5808AcpiExec: Added support for multiple EC devices, and now install EC
5809operation region handler(s) at the actual EC device instead of the
5810namespace root. This reflects the typical behavior of host operating
5811systems.
5812
5813AcpiExec: Updated to ensure that all operation region handlers are
5814installed before the _REG methods are executed. This prevents a _REG
5815method from aborting if it accesses an address space has no handler.
5816AcpiExec installs a handler for every possible address space.
5817
5818Debugger: Enhanced the "handlers" command to display non-root handlers.
5819This change enhances the handlers command to display handlers associated
5820with individual devices throughout the namespace, in addition to the
5821currently supported display of handlers associated with the root
5822namespace
5823node.
5824
5825ASL Test Suite: Several test suite errors have been identified and
5826resolved, reducing the total error count during execution. Chao Guan.
5827
5828----------------------------------------
582928 March 2013. Summary of changes for version 20130328:
5830
58311) ACPICA kernel-resident subsystem:
5832
5833Fixed several possible race conditions with the internal object reference
5834counting mechanism. Some of the external ACPICA interfaces update object
5835reference counts without holding the interpreter or namespace lock. This
5836change adds a spinlock to protect reference count updates on the internal
5837ACPICA objects. Reported by and with assistance from Andriy Gapon
5838(avg@FreeBSD.org).
5839
5840FADT support: Removed an extraneous warning for very large GPE register
5841sets. This change removes a size mismatch warning if the legacy length
5842field for a GPE register set is larger than the 64-bit GAS structure can
5843accommodate. GPE register sets can be larger than the 255-bit width
5844limitation of the GAS structure. Linn Crosetto (linn@hp.com).
5845
5846_OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5847return from this interface. Handles a possible timeout case if
5848ACPI_WAIT_FOREVER is modified by the host to be a value less than
5849"forever". Jung-uk Kim.
5850
5851Predefined name support: Add allowed/required argument type information
5852to
5853the master predefined info table. This change adds the infrastructure to
5854enable typechecking on incoming arguments for all predefined
5855methods/objects. It does not actually contain the code that will fully
5856utilize this information, this is still under development. Also condenses
5857some duplicate code for the predefined names into a new module,
5858utilities/utpredef.c
5859
5860Example Code and Data Size: These are the sizes for the OS-independent
5861acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5862debug version of the code includes the debug output trace mechanism and
5863has a much larger code and data size.
5864
5865  Previous Release:
5866    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5867    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5868  Current Release:
5869    Non-Debug Version:  95.2K Code, 26.4K Data, 121.6K Total
5870    Debug Version:     183.0K Code, 76.0K Data, 259.0K Total
5871
5872
58732) iASL Compiler/Disassembler and Tools:
5874
5875iASL: Implemented a new option to simplify the development of ACPI-
5876related
5877BIOS code. Adds support for a new "offset table" output file. The -so
5878option will create a C table containing the AML table offsets of various
5879named objects in the namespace so that BIOS code can modify them easily
5880at
5881boot time. This can simplify BIOS runtime code by eliminating expensive
5882searches for "magic values", enhancing boot times and adding greater
5883reliability. With assistance from Lee Hamel.
5884
5885iASL: Allow additional predefined names to return zero-length packages.
5886Now, all predefined names that are defined by the ACPI specification to
5887return a "variable-length package of packages" are allowed to return a
5888zero length top-level package. This allows the BIOS to tell the host that
5889the requested feature is not supported, and supports existing BIOS/ASL
5890code and practices.
5891
5892iASL: Changed the "result not used" warning to an error. This is the case
5893where an ASL operator is effectively a NOOP because the result of the
5894operation is not stored anywhere. For example:
5895    Add (4, Local0)
5896There is no target (missing 3rd argument), nor is the function return
5897value used. This is potentially a very serious problem -- since the code
5898was probably intended to do something, but for whatever reason, the value
5899was not stored. Therefore, this issue has been upgraded from a warning to
5900an error.
5901
5902AcpiHelp: Added allowable/required argument types to the predefined names
5903info display. This feature utilizes the recent update to the predefined
5904names table (above).
5905
5906----------------------------------------
590714 February 2013. Summary of changes for version 20130214:
5908
59091) ACPICA Kernel-resident Subsystem:
5910
5911Fixed a possible regression on some hosts: Reinstated the safe return
5912macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5913evaluated only once. Although these macros are not needed for the ACPICA
5914code itself, they are often used by ACPI-related host device drivers
5915where
5916the safe feature may be necessary.
5917
5918Fixed several issues related to the ACPI 5.0 reduced hardware support
5919(SOC): Now ensure that if the platform declares itself as hardware-
5920reduced
5921via the FADT, the following functions become NOOPs (and always return
5922AE_OK) because ACPI is always enabled by definition on these machines:
5923  AcpiEnable
5924  AcpiDisable
5925  AcpiHwGetMode
5926  AcpiHwSetMode
5927
5928Dynamic Object Repair: Implemented additional runtime repairs for
5929predefined name return values. Both of these repairs can simplify code in
5930the related device drivers that invoke these methods:
59311) For the _STR and _MLS names, automatically repair/convert an ASCII
5932string to a Unicode buffer.
59332) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5934a
5935lone end tag descriptor in the following cases: A Return(0) was executed,
5936a null buffer was returned, or no object at all was returned (non-slack
5937mode only). Adds a new file, nsconvert.c
5938ACPICA BZ 998. Bob Moore, Lv Zheng.
5939
5940Resource Manager: Added additional code to prevent possible infinite
5941loops
5942while traversing corrupted or ill-formed resource template buffers. Check
5943for zero-length resource descriptors in all code that loops through
5944resource templates (the length field is used to index through the
5945template). This change also hardens the external AcpiWalkResources and
5946AcpiWalkResourceBuffer interfaces.
5947
5948Local Cache Manager: Enhanced the main data structure to eliminate an
5949unnecessary mechanism to access the next object in the list. Actually
5950provides a small performance enhancement for hosts that use the local
5951ACPICA cache manager. Jung-uk Kim.
5952
5953Example Code and Data Size: These are the sizes for the OS-independent
5954acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5955debug version of the code includes the debug output trace mechanism and
5956has a much larger code and data size.
5957
5958  Previous Release:
5959    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
5960    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
5961  Current Release:
5962    Non-Debug Version:  95.0K Code, 25.9K Data, 120.9K Total
5963    Debug Version:     182.9K Code, 75.6K Data, 258.5K Total
5964
5965
59662) iASL Compiler/Disassembler and Tools:
5967
5968iASL/Disassembler: Fixed several issues with the definition of the ACPI
59695.0 RASF table (RAS Feature Table). This change incorporates late changes
5970that were made to the ACPI 5.0 specification.
5971
5972iASL/Disassembler: Added full support for the following new ACPI tables:
5973  1) The MTMR table (MID Timer Table)
5974  2) The VRTC table (Virtual Real Time Clock Table).
5975Includes header file, disassembler, table compiler, and template support
5976for both tables.
5977
5978iASL: Implemented compile-time validation of package objects returned by
5979predefined names. This new feature validates static package objects
5980returned by the various predefined names defined to return packages. Both
5981object types and package lengths are validated, for both parent packages
5982and sub-packages, if any. The code is similar in structure and behavior
5983to
5984the runtime repair mechanism within the AML interpreter and uses the
5985existing predefined name information table. Adds a new file, aslprepkg.c.
5986ACPICA BZ 938.
5987
5988iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5989This feature detects a binary file with a valid ACPI table header and
5990invokes the disassembler automatically. Eliminates the need to
5991specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5992
5993iASL/Disassembler: Added several warnings for the case where there are
5994unresolved control methods during the disassembly. This can potentially
5995cause errors when the output file is compiled, because the disassembler
5996assumes zero method arguments in these cases (it cannot determine the
5997actual number of arguments without resolution/definition of the method).
5998
5999Debugger: Added support to display all resources with a single command.
6000Invocation of the resources command with no arguments will now display
6001all
6002resources within the current namespace.
6003
6004AcpiHelp: Added descriptive text for each ACPICA exception code displayed
6005via the -e option.
6006
6007----------------------------------------
600817 January 2013. Summary of changes for version 20130117:
6009
60101) ACPICA Kernel-resident Subsystem:
6011
6012Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
6013return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
6014objects to return a package containing one integer, most BIOS code
6015returns
6016two integers and the previous code reflects that. However, we also need
6017to
6018support BIOS code that actually implements to the ACPI spec, and this
6019change reflects this.
6020
6021Fixed two issues with the ACPI_DEBUG_PRINT macros:
60221) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
6023C compilers that require this support.
60242) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
6025ACPI_DEBUG is already used by many of the various hosts.
6026
6027Updated all ACPICA copyrights and signons to 2013. Added the 2013
6028copyright to all module headers and signons, including the standard Linux
6029header. This affects virtually every file in the ACPICA core subsystem,
6030iASL compiler, all ACPICA utilities, and the test suites.
6031
6032Example Code and Data Size: These are the sizes for the OS-independent
6033acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6034debug version of the code includes the debug output trace mechanism and
6035has a much larger code and data size.
6036
6037  Previous Release:
6038    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
6039    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
6040  Current Release:
6041    Non-Debug Version:  94.5K Code, 25.4K Data, 119.9K Total
6042    Debug Version:     182.3K Code, 75.0K Data, 257.3K Total
6043
6044
60452) iASL Compiler/Disassembler and Tools:
6046
6047Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
6048prevent a possible fault on some hosts. Some C libraries modify the arg
6049pointer parameter to vfprintf making it difficult to call it twice in the
6050AcpiOsVprintf function. Use a local buffer to workaround this issue. This
6051does not affect the Windows OSL since the Win C library does not modify
6052the arg pointer. Chao Guan, Bob Moore.
6053
6054iASL: Fixed a possible infinite loop when the maximum error count is
6055reached. If an output file other than the .AML file is specified (such as
6056a listing file), and the maximum number of errors is reached, do not
6057attempt to flush data to the output file(s) as the compiler is aborting.
6058This can cause an infinite loop as the max error count code essentially
6059keeps calling itself.
6060
6061iASL/Disassembler: Added an option (-in) to ignore NOOP
6062opcodes/operators.
6063Implemented for both the compiler and the disassembler. Often, the NOOP
6064opcode is used as padding for packages that are changed dynamically by
6065the
6066BIOS. When disassembled and recompiled, these NOOPs will cause syntax
6067errors. This option causes the disassembler to ignore all NOOP opcodes
6068(0xA3), and it also causes the compiler to ignore all ASL source code
6069NOOP
6070statements as well.
6071
6072Debugger: Enhanced the Sleep command to execute all sleep states. This
6073change allows Sleep to be invoked with no arguments and causes the
6074debugger to execute all of the sleep states, 0-5, automatically.
6075
6076----------------------------------------
607720 December 2012. Summary of changes for version 20121220:
6078
60791) ACPICA Kernel-resident Subsystem:
6080
6081Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
6082alternate entry point for AcpiWalkResources and improves the usability of
6083the resource manager by accepting as input a buffer containing the output
6084of either a _CRS, _PRS, or _AEI method. The key functionality is that the
6085input buffer is not deleted by this interface so that it can be used by
6086the host later. See the ACPICA reference for details.
6087
6088Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
6089(DSDT version < 2). The constant will be truncated and this warning
6090reflects that behavior.
6091
6092Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
6093ExtendedInterrupt, and GpioInt descriptors. This change adds support to
6094both get and set the new wake bit in these descriptors, separately from
6095the existing share bit. Reported by Aaron Lu.
6096
6097Interpreter: Fix Store() when an implicit conversion is not possible. For
6098example, in the cases such as a store of a string to an existing package
6099object, implement the store as a CopyObject(). This is a small departure
6100from the ACPI specification which states that the control method should
6101be
6102aborted in this case. However, the ASLTS suite depends on this behavior.
6103
6104Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
6105macros: check if debug output is currently enabled as soon as possible to
6106minimize performance impact if debug is in fact not enabled.
6107
6108Source code restructuring: Cleanup to improve modularity. The following
6109new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
6110psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
6111Associated makefiles and project files have been updated.
6112
6113Changed an exception code for LoadTable operator. For the case where one
6114of the input strings is too long, change the returned exception code from
6115AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
6116
6117Fixed a possible memory leak in dispatcher error path. On error, delete
6118the mutex object created during method mutex creation. Reported by
6119tim.gardner@canonical.com.
6120
6121Example Code and Data Size: These are the sizes for the OS-independent
6122acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6123debug version of the code includes the debug output trace mechanism and
6124has a much larger code and data size.
6125
6126  Previous Release:
6127    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
6128    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6129  Current Release:
6130    Non-Debug Version:  94.5K Code, 25.5K Data, 120.0K Total
6131    Debug Version:     182.2K Code, 74.9K Data, 257.1K Total
6132
6133
61342) iASL Compiler/Disassembler and Tools:
6135
6136iASL: Disallow a method call as argument to the ObjectType ASL operator.
6137This change tracks an errata to the ACPI 5.0 document. The AML grammar
6138will not allow the interpreter to differentiate between a method and a
6139method invocation when these are used as an argument to the ObjectType
6140operator. The ACPI specification change is to disallow a method
6141invocation
6142(UserTerm) for the ObjectType operator.
6143
6144Finish support for the TPM2 and CSRT tables in the headers, table
6145compiler, and disassembler.
6146
6147Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
6148always expires immediately if the semaphore is not available. The
6149original
6150code was using a relative-time timeout, but sem_timedwait requires the
6151use
6152of an absolute time.
6153
6154iASL: Added a remark if the Timer() operator is used within a 32-bit
6155table. This operator returns a 64-bit time value that will be truncated
6156within a 32-bit table.
6157
6158iASL Source code restructuring: Cleanup to improve modularity. The
6159following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
6160aslmethod.c, and aslfileio.c. Associated makefiles and project files have
6161been updated.
6162
6163
6164----------------------------------------
616514 November 2012. Summary of changes for version 20121114:
6166
61671) ACPICA Kernel-resident Subsystem:
6168
6169Implemented a performance enhancement for ACPI/AML Package objects. This
6170change greatly increases the performance of Package objects within the
6171interpreter. It changes the processing of reference counts for packages
6172by
6173optimizing for the most common case where the package sub-objects are
6174either Integers, Strings, or Buffers. Increases the overall performance
6175of
6176the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
61772X.)
6178Chao Guan. ACPICA BZ 943.
6179
6180Implemented and deployed common macros to extract flag bits from resource
6181descriptors. Improves readability and maintainability of the code. Fixes
6182a
6183problem with the UART serial bus descriptor for the number of data bits
6184flags (was incorrectly 2 bits, should be 3).
6185
6186Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
6187of the macros and changed the SETx macros to the style of (destination,
6188source). Also added ACPI_CASTx companion macros. Lv Zheng.
6189
6190Example Code and Data Size: These are the sizes for the OS-independent
6191acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6192debug version of the code includes the debug output trace mechanism and
6193has a much larger code and data size.
6194
6195  Previous Release:
6196    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
6197    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6198  Current Release:
6199    Non-Debug Version:  94.3K Code, 25.3K Data, 119.6K Total
6200    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6201
6202
62032) iASL Compiler/Disassembler and Tools:
6204
6205Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
6206adds the ShareAndWake and ExclusiveAndWake flags which were added to the
6207Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
6208
6209Disassembler: Fixed a problem with external declaration generation. Fixes
6210a problem where an incorrect pathname could be generated for an external
6211declaration if the original reference to the object includes leading
6212carats (^). ACPICA BZ 984.
6213
6214Debugger: Completed a major update for the Disassemble<method> command.
6215This command was out-of-date and did not properly disassemble control
6216methods that had any reasonable complexity. This fix brings the command
6217up
6218to the same level as the rest of the disassembler. Adds one new file,
6219dmdeferred.c, which is existing code that is now common with the main
6220disassembler and the debugger disassemble command. ACPICA MZ 978.
6221
6222iASL: Moved the parser entry prototype to avoid a duplicate declaration.
6223Newer versions of Bison emit this prototype, so moved the prototype out
6224of
6225the iASL header to where it is actually used in order to avoid a
6226duplicate
6227declaration.
6228
6229iASL/Tools: Standardized use of the stream I/O functions:
6230  1) Ensure check for I/O error after every fopen/fread/fwrite
6231  2) Ensure proper order of size/count arguments for fread/fwrite
6232  3) Use test of (Actual != Requested) after all fwrite, and most fread
6233  4) Standardize I/O error messages
6234Improves reliability and maintainability of the code. Bob Moore, Lv
6235Zheng.
6236ACPICA BZ 981.
6237
6238Disassembler: Prevent duplicate External() statements. During generation
6239of external statements, detect similar pathnames that are actually
6240duplicates such as these:
6241  External (\ABCD)
6242  External (ABCD)
6243Remove all leading '\' characters from pathnames during the external
6244statement generation so that duplicates will be detected and tossed.
6245ACPICA BZ 985.
6246
6247Tools: Replace low-level I/O with stream I/O functions. Replace
6248open/read/write/close with the stream I/O equivalents
6249fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
6250Moore.
6251
6252AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
6253name header so that AcpiXtract recognizes the output file/table.
6254
6255iASL: Remove obsolete -2 option flag. Originally intended to force the
6256compiler/disassembler into an ACPI 2.0 mode, this was never implemented
6257and the entire concept is now obsolete.
6258
6259----------------------------------------
626018 October 2012. Summary of changes for version 20121018:
6261
6262
62631) ACPICA Kernel-resident Subsystem:
6264
6265Updated support for the ACPI 5.0 MPST table. Fixes some problems
6266introduced by late changes to the table as it was added to the ACPI 5.0
6267specification. Includes header, disassembler, and data table compiler
6268support as well as a new version of the MPST template.
6269
6270AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
62715.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
6272methods: _HID, _CID, and _UID.
6273
6274Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
6275ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
6276name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
6277names for their various drivers. Affects the AcpiGetObjectInfo external
6278interface, and other internal interfaces as well.
6279
6280Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
6281This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
6282on machines that support non-aligned transfers. Optimizes for this case
6283rather than using a strncpy. With assistance from Zheng Lv.
6284
6285Resource Manager: Small fix for buffer size calculation. Fixed a one byte
6286error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
6287
6288Added a new debug print message for AML mutex objects that are force-
6289released. At control method termination, any currently acquired mutex
6290objects are force-released. Adds a new debug-only message for each one
6291that is released.
6292
6293Audited/updated all ACPICA return macros and the function debug depth
6294counter: 1) Ensure that all functions that use the various TRACE macros
6295also use the appropriate ACPICA return macros. 2) Ensure that all normal
6296return statements surround the return expression (value) with parens to
6297ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
6298Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
6299
6300Global source code changes/maintenance: All extra lines at the start and
6301end of each source file have been removed for consistency. Also, within
6302comments, all new sentences start with a single space instead of a double
6303space, again for consistency across the code base.
6304
6305Example Code and Data Size: These are the sizes for the OS-independent
6306acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6307debug version of the code includes the debug output trace mechanism and
6308has a much larger code and data size.
6309
6310  Previous Release:
6311    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6312    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6313  Current Release:
6314    Non-Debug Version:  93.9K Code, 25.2K Data, 119.1K Total
6315    Debug Version:     175.5K Code, 74.5K Data, 250.0K Total
6316
6317
63182) iASL Compiler/Disassembler and Tools:
6319
6320AcpiExec: Improved the algorithm used for memory leak/corruption
6321detection. Added some intelligence to the code that maintains the global
6322list of allocated memory. The list is now ordered by allocated memory
6323address, significantly improving performance. When running AcpiExec on
6324the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
6325on the platform and/or the environment. Note, this performance
6326enhancement affects the AcpiExec utility only, not the kernel-resident
6327ACPICA code.
6328
6329Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
6330the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
6331incorrect table offset reported for invalid opcodes. Report the original
633232-bit value for bad ACPI_NAMEs (as well as the repaired name.)
6333
6334Disassembler: Enhanced the -vt option to emit the binary table data in
6335hex format to assist with debugging.
6336
6337Fixed a potential filename buffer overflow in osunixdir.c. Increased the
6338size of file structure. Colin Ian King.
6339
6340----------------------------------------
634113 September 2012. Summary of changes for version 20120913:
6342
6343
63441) ACPICA Kernel-resident Subsystem:
6345
6346ACPI 5.0: Added two new notify types for the Hardware Error Notification
6347Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
6348and
6349MCE(6).
6350
6351Table Manager: Merged/removed duplicate code in the root table resize
6352functions. One function is external, the other is internal. Lv Zheng,
6353ACPICA
6354BZ 846.
6355
6356Makefiles: Completely removed the obsolete "Linux" makefiles under
6357acpica/generate/linux. These makefiles are obsolete and have been
6358replaced
6359by
6360the generic unix makefiles under acpica/generate/unix.
6361
6362Makefiles: Ensure that binary files always copied properly. Minor rule
6363change
6364to ensure that the final binary output files are always copied up to the
6365appropriate binary directory (bin32 or bin64.)
6366
6367Example Code and Data Size: These are the sizes for the OS-independent
6368acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6369debug
6370version of the code includes the debug output trace mechanism and has a
6371much
6372larger code and data size.
6373
6374  Previous Release:
6375    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6376    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6377  Current Release:
6378    Non-Debug Version:  93.7K Code, 25.3K Data, 119.0K Total
6379    Debug Version:     175.0K Code, 74.4K Data, 249.4K Total
6380
6381
63822) iASL Compiler/Disassembler and Tools:
6383
6384Disassembler: Fixed a possible fault during the disassembly of resource
6385descriptors when a second parse is required because of the invocation of
6386external control methods within the table. With assistance from
6387adq@lidskialf.net. ACPICA BZ 976.
6388
6389iASL: Fixed a namepath optimization problem. An error can occur if the
6390parse
6391node that contains the namepath to be optimized does not have a parent
6392node
6393that is a named object. This change fixes the problem.
6394
6395iASL: Fixed a regression where the AML file is not deleted on errors. The
6396AML
6397output file should be deleted if there are any errors during the
6398compiler.
6399The
6400only exception is if the -f (force output) option is used. ACPICA BZ 974.
6401
6402iASL: Added a feature to automatically increase internal line buffer
6403sizes.
6404Via realloc(), automatically increase the internal line buffer sizes as
6405necessary to support very long source code lines. The current version of
6406the
6407preprocessor requires a buffer long enough to contain full source code
6408lines.
6409This change increases the line buffer(s) if the input lines go beyond the
6410current buffer size. This eliminates errors that occurred when a source
6411code
6412line was longer than the buffer.
6413
6414iASL: Fixed a problem with constant folding in method declarations. The
6415SyncLevel term is a ByteConstExpr, and incorrect code would be generated
6416if a
6417Type3 opcode was used.
6418
6419Debugger: Improved command help support. For incorrect argument count,
6420display
6421full help for the command. For help command itself, allow an argument to
6422specify a command.
6423
6424Test Suites: Several bug fixes for the ASLTS suite reduces the number of
6425errors during execution of the suite. Guan Chao.
6426
6427----------------------------------------
642816 August 2012. Summary of changes for version 20120816:
6429
6430
64311) ACPICA Kernel-resident Subsystem:
6432
6433Removed all use of the deprecated _GTS and _BFS predefined methods. The
6434_GTS
6435(Going To Sleep) and _BFS (Back From Sleep) methods are essentially
6436deprecated and will probably be removed from the ACPI specification.
6437Windows
6438does not invoke them, and reportedly never will. The final nail in the
6439coffin
6440is that the ACPI specification states that these methods must be run with
6441interrupts off, which is not going to happen in a kernel interpreter.
6442Note:
6443Linux has removed all use of the methods also. It was discovered that
6444invoking these functions caused failures on some machines, probably
6445because
6446they were never tested since Windows does not call them. Affects two
6447external
6448interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
6449ACPICA BZ 969.
6450
6451Implemented support for complex bit-packed buffers returned from the _PLD
6452(Physical Location of Device) predefined method. Adds a new external
6453interface, AcpiDecodePldBuffer that parses the buffer into a more usable
6454C
6455structure. Note: C Bitfields cannot be used for this type of predefined
6456structure since the memory layout of individual bitfields is not defined
6457by
6458the C language. In addition, there are endian concerns where a compiler
6459will
6460change the bitfield ordering based on the machine type. The new ACPICA
6461interface eliminates these issues, and should be called after _PLD is
6462executed. ACPICA BZ 954.
6463
6464Implemented a change to allow a scope change to root (via "Scope (\)")
6465during
6466execution of module-level ASL code (code that is executed at table load
6467time.) Lin Ming.
6468
6469Added the Windows8/Server2012 string for the _OSI method. This change
6470adds
6471a
6472new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
64732012.
6474
6475Added header support for the new ACPI tables DBG2 (Debug Port Table Type
64762)
6477and CSRT (Core System Resource Table).
6478
6479Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
6480names. This simplifies access to the buffers returned by these predefined
6481names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
6482
6483GPE support: Removed an extraneous parameter from the various low-level
6484internal GPE functions. Tang Feng.
6485
6486Removed the linux makefiles from the unix packages. The generate/linux
6487makefiles are obsolete and have been removed from the unix tarball
6488release
6489packages. The replacement makefiles are under generate/unix, and there is
6490a
6491top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
6492
6493Updates for Unix makefiles:
64941) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
64952) Update linker flags (move to end of command line) for AcpiExec
6496utility.
6497Guan Chao.
6498
6499Split ACPICA initialization functions to new file, utxfinit.c. Split from
6500utxface.c to improve modularity and reduce file size.
6501
6502Example Code and Data Size: These are the sizes for the OS-independent
6503acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6504debug version of the code includes the debug output trace mechanism and
6505has a
6506much larger code and data size.
6507
6508  Previous Release:
6509    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6510    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6511  Current Release:
6512    Non-Debug Version:  93.8K Code, 25.3K Data, 119.1K Total
6513    Debug Version:     175.7K Code, 74.8K Data, 250.5K Total
6514
6515
65162) iASL Compiler/Disassembler and Tools:
6517
6518iASL: Fixed a problem with constant folding for fixed-length constant
6519expressions. The constant-folding code was not being invoked for constant
6520expressions that allow the use of type 3/4/5 opcodes to generate
6521constants
6522for expressions such as ByteConstExpr, WordConstExpr, etc. This could
6523result
6524in the generation of invalid AML bytecode. ACPICA BZ 970.
6525
6526iASL: Fixed a generation issue on newer versions of Bison. Newer versions
6527apparently automatically emit some of the necessary externals. This
6528change
6529handles these versions in order to eliminate generation warnings.
6530
6531Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
6532
6533Disassembler: Add support to decode _PLD buffers. The decoded buffer
6534appears
6535within comments in the output file.
6536
6537Debugger: Fixed a regression with the "Threads" command where
6538AE_BAD_PARAMETER was always returned.
6539
6540----------------------------------------
654111 July 2012. Summary of changes for version 20120711:
6542
65431) ACPICA Kernel-resident Subsystem:
6544
6545Fixed a possible fault in the return package object repair code. Fixes a
6546problem that can occur when a lone package object is wrapped with an
6547outer
6548package object in order to force conformance to the ACPI specification.
6549Can
6550affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
6551_DLM,
6552_CSD, _PSD, _TSD.
6553
6554Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
6555PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
6556ARB_DIS bit must be implemented in the host-dependent C3 processor power
6557state
6558support. Note, ARB_DIS is obsolete and only applies to older chipsets,
6559both
6560Intel and other vendors. (for Intel: ICH4-M and earlier)
6561
6562This change removes the code to disable/enable bus master arbitration
6563during
6564suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
6565causes
6566resume problems on some machines. The change has been in use for over
6567seven
6568years within Linux.
6569
6570Implemented two new external interfaces to support host-directed dynamic
6571ACPI
6572table load and unload. They are intended to simplify the host
6573implementation
6574of hot-plug support:
6575  AcpiLoadTable: Load an SSDT from a buffer into the namespace.
6576  AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
6577table.
6578See the ACPICA reference for additional details. Adds one new file,
6579components/tables/tbxfload.c
6580
6581Implemented and deployed two new interfaces for errors and warnings that
6582are
6583known to be caused by BIOS/firmware issues:
6584  AcpiBiosError: Prints "ACPI Firmware Error" message.
6585  AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6586Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6587table
6588and FADT errors. Additional deployment to be completed as appropriate in
6589the
6590future. The associated conditional macros are ACPI_BIOS_ERROR and
6591ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6592ACPICA
6593BZ
6594843.
6595
6596Implicit notify support: ensure that no memory allocation occurs within a
6597critical region. This fix moves a memory allocation outside of the time
6598that a
6599spinlock is held. Fixes issues on systems that do not allow this
6600behavior.
6601Jung-uk Kim.
6602
6603Split exception code utilities and tables into a new file,
6604utilities/utexcep.c
6605
6606Example Code and Data Size: These are the sizes for the OS-independent
6607acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6608debug
6609version of the code includes the debug output trace mechanism and has a
6610much
6611larger code and data size.
6612
6613  Previous Release:
6614    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6615    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6616  Current Release:
6617    Non-Debug Version:  93.5K Code, 25.3K Data, 118.8K Total
6618    Debug Version:     173.7K Code, 74.0K Data, 247.7K Total
6619
6620
66212) iASL Compiler/Disassembler and Tools:
6622
6623iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6624of
66250. Jung-uk Kim.
6626
6627Debugger: Enhanced the "tables" command to emit additional information
6628about
6629the current set of ACPI tables, including the owner ID and flags decode.
6630
6631Debugger: Reimplemented the "unload" command to use the new
6632AcpiUnloadParentTable external interface. This command was disable
6633previously
6634due to need for an unload interface.
6635
6636AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6637option
6638will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6639
6640----------------------------------------
664120 June 2012. Summary of changes for version 20120620:
6642
6643
66441) ACPICA Kernel-resident Subsystem:
6645
6646Implemented support to expand the "implicit notify" feature to allow
6647multiple
6648devices to be notified by a single GPE. This feature automatically
6649generates a
6650runtime device notification in the absence of a BIOS-provided GPE control
6651method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6652notify is
6653provided by ACPICA for Windows compatibility, and is a workaround for
6654BIOS
6655AML
6656code errors. See the description of the AcpiSetupGpeForWake interface in
6657the
6658APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6659
6660Changed some comments and internal function names to simplify and ensure
6661correctness of the Linux code translation. No functional changes.
6662
6663Example Code and Data Size: These are the sizes for the OS-independent
6664acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6665debug
6666version of the code includes the debug output trace mechanism and has a
6667much
6668larger code and data size.
6669
6670  Previous Release:
6671    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6672    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6673  Current Release:
6674    Non-Debug Version:  93.1K Code, 25.1K Data, 118.2K Total
6675    Debug Version:     172.9K Code, 73.6K Data, 246.5K Total
6676
6677
66782) iASL Compiler/Disassembler and Tools:
6679
6680Disassembler: Added support to emit short, commented descriptions for the
6681ACPI
6682predefined names in order to improve the readability of the disassembled
6683output. ACPICA BZ 959. Changes include:
6684  1) Emit descriptions for all standard predefined names (_INI, _STA,
6685_PRW,
6686etc.)
6687  2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6688  3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6689etc.)
6690
6691AcpiSrc: Fixed several long-standing Linux code translation issues.
6692Argument
6693descriptions in function headers are now translated properly to lower
6694case
6695and
6696underscores. ACPICA BZ 961. Also fixes translation problems such as
6697these:
6698(old -> new)
6699  i_aSL -> iASL
6700  00-7_f -> 00-7F
6701  16_k -> 16K
6702  local_fADT -> local_FADT
6703  execute_oSI -> execute_OSI
6704
6705iASL: Fixed a problem where null bytes were inadvertently emitted into
6706some
6707listing files.
6708
6709iASL: Added the existing debug options to the standard help screen. There
6710are
6711no longer two different help screens. ACPICA BZ 957.
6712
6713AcpiHelp: Fixed some typos in the various predefined name descriptions.
6714Also
6715expand some of the descriptions where appropriate.
6716
6717iASL: Fixed the -ot option (display compile times/statistics). Was not
6718working
6719properly for standard output; only worked for the debug file case.
6720
6721----------------------------------------
672218 May 2012. Summary of changes for version 20120518:
6723
6724
67251) ACPICA Core Subsystem:
6726
6727Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6728defined
6729to block until asynchronous events such as notifies and GPEs have
6730completed.
6731Within ACPICA, it is only called before a notify or GPE handler is
6732removed/uninstalled. It also may be useful for the host OS within related
6733drivers such as the Embedded Controller driver. See the ACPICA reference
6734for
6735additional information. ACPICA BZ 868.
6736
6737ACPI Tables: Added a new error message for a possible overflow failure
6738during
6739the conversion of FADT 32-bit legacy register addresses to internal
6740common
674164-
6742bit GAS structure representation. The GAS has a one-byte "bit length"
6743field,
6744thus limiting the register length to 255 bits. ACPICA BZ 953.
6745
6746Example Code and Data Size: These are the sizes for the OS-independent
6747acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6748debug
6749version of the code includes the debug output trace mechanism and has a
6750much
6751larger code and data size.
6752
6753  Previous Release:
6754    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6755    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6756  Current Release:
6757    Non-Debug Version:  93.0K Code, 25.1K Data, 118.1K Total
6758    Debug Version:     172.7K Code, 73.6K Data, 246.3K Total
6759
6760
67612) iASL Compiler/Disassembler and Tools:
6762
6763iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6764macro.
6765This keyword was added late in the ACPI 5.0 release cycle and was not
6766implemented until now.
6767
6768Disassembler: Added support for Operation Region externals. Adds missing
6769support for operation regions that are defined in another table, and
6770referenced locally via a Field or BankField ASL operator. Now generates
6771the
6772correct External statement.
6773
6774Disassembler: Several additional fixes for the External() statement
6775generation
6776related to some ASL operators. Also, order the External() statements
6777alphabetically in the disassembler output. Fixes the External()
6778generation
6779for
6780the Create* field, Alias, and Scope operators:
6781 1) Create* buffer field operators - fix type mismatch warning on
6782disassembly
6783 2) Alias - implement missing External support
6784 3) Scope - fix to make sure all necessary externals are emitted.
6785
6786iASL: Improved pathname support. For include files, merge the prefix
6787pathname
6788with the file pathname and eliminate unnecessary components. Convert
6789backslashes in all pathnames to forward slashes, for readability. Include
6790file
6791pathname changes affect both #include and Include() type operators.
6792
6793iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6794end
6795of a valid line by inserting a newline and then returning the EOF during
6796the
6797next call to GetNextLine. Prevents the line from being ignored due to EOF
6798condition.
6799
6800iASL: Implemented some changes to enhance the IDE support (-vi option.)
6801Error
6802and Warning messages are now correctly recognized for both the source
6803code
6804browser and the global error and warning counts.
6805
6806----------------------------------------
680720 April 2012. Summary of changes for version 20120420:
6808
6809
68101) ACPICA Core Subsystem:
6811
6812Implemented support for multiple notify handlers. This change adds
6813support
6814to
6815allow multiple system and device notify handlers on Device, Thermal Zone,
6816and
6817Processor objects. This can simplify the host OS notification
6818implementation.
6819Also re-worked and restructured the entire notify support code to
6820simplify
6821handler installation, handler removal, notify event queuing, and notify
6822dispatch to handler(s). Note: there can still only be two global notify
6823handlers - one for system notifies and one for device notifies. There are
6824no
6825changes to the existing handler install/remove interfaces. Lin Ming, Bob
6826Moore, Rafael Wysocki.
6827
6828Fixed a regression in the package repair code where the object reference
6829count was calculated incorrectly. Regression was introduced in the commit
6830"Support to add Package wrappers".
6831
6832Fixed a couple possible memory leaks in the AML parser, in the error
6833recovery
6834path. Jesper Juhl, Lin Ming.
6835
6836Example Code and Data Size: These are the sizes for the OS-independent
6837acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6838debug version of the code includes the debug output trace mechanism and
6839has a
6840much larger code and data size.
6841
6842  Previous Release:
6843    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6844    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6845  Current Release:
6846    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6847    Debug Version:     172.6K Code, 73.4K Data, 246.0K Total
6848
6849
68502) iASL Compiler/Disassembler and Tools:
6851
6852iASL: Fixed a problem with the resource descriptor support where the
6853length
6854of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6855included in cumulative descriptor offset, resulting in incorrect values
6856for
6857resource tags within resource descriptors appearing after a
6858StartDependent*
6859descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6860
6861iASL and Preprocessor: Implemented full support for the #line directive
6862to
6863correctly track original source file line numbers through the .i
6864preprocessor
6865output file - for error and warning messages.
6866
6867iASL: Expand the allowable byte constants for address space IDs.
6868Previously,
6869the allowable range was 0x80-0xFF (user-defined spaces), now the range is
68700x0A-0xFF to allow for custom and new IDs without changing the compiler.
6871
6872iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6873
6874iASL: Add option to completely disable the preprocessor (-Pn).
6875
6876iASL: Now emit all error/warning messages to standard error (stderr) by
6877default (instead of the previous stdout).
6878
6879ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6880Update
6881for resource descriptor offset fix above. Update/cleanup error output
6882routines. Enable and send iASL errors/warnings to an error logfile
6883(error.txt). Send all other iASL output to a logfile (compiler.txt).
6884Fixed
6885several extraneous "unrecognized operator" messages.
6886
6887----------------------------------------
688820 March 2012. Summary of changes for version 20120320:
6889
6890
68911) ACPICA Core Subsystem:
6892
6893Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6894(Going To Sleep) and the _BFS method (Back From Sleep). Windows
6895apparently
6896does not execute these methods, and therefore these methods are often
6897untested. It has been seen on some systems where the execution of these
6898methods causes errors and also prevents the machine from entering S5. It
6899is
6900therefore suggested that host operating systems do not execute these
6901methods
6902by default. In the future, perhaps these methods can be optionally
6903executed
6904based on the age of the system and/or what is the newest version of
6905Windows
6906that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6907and
6908AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6909Ming.
6910
6911Fixed a problem where the length of the local/common FADT was set too
6912early.
6913The local FADT table length cannot be set to the common length until the
6914original length has been examined. There is code that checks the table
6915length
6916and sets various fields appropriately. This can affect older machines
6917with
6918early FADT versions. For example, this can cause inadvertent writes to
6919the
6920CST_CNT register. Julian Anastasov.
6921
6922Fixed a mapping issue related to a physical table override. Use the
6923deferred
6924mapping mechanism for tables loaded via the physical override OSL
6925interface.
6926This allows for early mapping before the virtual memory manager is
6927available.
6928Thomas Renninger, Bob Moore.
6929
6930Enhanced the automatic return-object repair code: Repair a common problem
6931with
6932predefined methods that are defined to return a variable-length Package
6933of
6934sub-objects. If there is only one sub-object, some BIOS ASL code
6935mistakenly
6936simply returns the single object instead of a Package with one sub-
6937object.
6938This new support will repair this error by wrapping a Package object
6939around
6940the original object, creating the correct and expected Package with one
6941sub-
6942object. Names that can be repaired in this manner include: _ALR, _CSD,
6943_HPX,
6944_MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
6945939.
6946
6947Changed the exception code returned for invalid ACPI paths passed as
6948parameters to external interfaces such as AcpiEvaluateObject. Was
6949AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6950
6951Example Code and Data Size: These are the sizes for the OS-independent
6952acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6953debug
6954version of the code includes the debug output trace mechanism and has a
6955much
6956larger code and data size.
6957
6958  Previous Release:
6959    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
6960    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6961  Current Release:
6962    Non-Debug Version:  92.9K Code, 25.0K Data, 117.9K Total
6963    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
6964
6965
69662) iASL Compiler/Disassembler and Tools:
6967
6968iASL: Added the infrastructure and initial implementation of a integrated
6969C-
6970like preprocessor. This will simplify BIOS development process by
6971eliminating
6972the need for a separate preprocessing step during builds. On Windows, it
6973also
6974eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6975features including full #define() macro support are still under
6976development.
6977These preprocessor directives are supported:
6978    #define
6979    #elif
6980    #else
6981    #endif
6982    #error
6983    #if
6984    #ifdef
6985    #ifndef
6986    #include
6987    #pragma message
6988    #undef
6989    #warning
6990In addition, these new command line options are supported:
6991    -D <symbol> Define symbol for preprocessor use
6992    -li         Create preprocessed output file (*.i)
6993    -P          Preprocess only and create preprocessor output file (*.i)
6994
6995Table Compiler: Fixed a problem where the equals operator within an
6996expression
6997did not work properly.
6998
6999Updated iASL to use the current versions of Bison/Flex. Updated the
7000Windows
7001project file to invoke these tools from the standard location. ACPICA BZ
7002904.
7003Versions supported:
7004    Flex for Windows:  V2.5.4
7005    Bison for Windows: V2.4.1
7006
7007----------------------------------------
700815 February 2012. Summary of changes for version 20120215:
7009
7010
70111) ACPICA Core Subsystem:
7012
7013There have been some major changes to the sleep/wake support code, as
7014described below (a - e).
7015
7016a) The AcpiLeaveSleepState has been split into two interfaces, similar to
7017AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
7018AcpiLeaveSleepStatePrep. This allows the host to perform actions between
7019the
7020time the _BFS method is called and the _WAK method is called. NOTE: all
7021hosts
7022must update their wake/resume code or else sleep/wake will not work
7023properly.
7024Rafael Wysocki.
7025
7026b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
7027_WAK
7028method. Some machines require that the GPEs are enabled before the _WAK
7029method
7030is executed. Thomas Renninger.
7031
7032c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
7033bit.
7034Some BIOS code assumes that WAK_STS will be cleared on resume and use it
7035to
7036determine whether the system is rebooting or resuming. Matthew Garrett.
7037
7038d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
7039Sleep) to
7040match the ACPI specification requirement. Rafael Wysocki.
7041
7042e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
7043registers within the V5 FADT. This support adds two new files:
7044hardware/hwesleep.c implements the support for the new registers. Moved
7045all
7046sleep/wake external interfaces to hardware/hwxfsleep.c.
7047
7048
7049Added a new OSL interface for ACPI table overrides,
7050AcpiOsPhysicalTableOverride. This interface allows the host to override a
7051table via a physical address, instead of the logical address required by
7052AcpiOsTableOverride. This simplifies the host implementation. Initial
7053implementation by Thomas Renninger. The ACPICA implementation creates a
7054single
7055shared function for table overrides that attempts both a logical and a
7056physical override.
7057
7058Expanded the OSL memory read/write interfaces to 64-bit data
7059(AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
7060transfer support for GAS register structures passed to AcpiRead and
7061AcpiWrite.
7062
7063Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
7064custom
7065build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
7066model.
7067See the ACPICA reference for details. ACPICA BZ 942. This option removes
7068about
706910% of the code and 5% of the static data, and the following hardware
7070ACPI
7071features become unavailable:
7072    PM Event and Control registers
7073    SCI interrupt (and handler)
7074    Fixed Events
7075    General Purpose Events (GPEs)
7076    Global Lock
7077    ACPI PM timer
7078    FACS table (Waking vectors and Global Lock)
7079
7080Updated the unix tarball directory structure to match the ACPICA git
7081source
7082tree. This ensures that the generic unix makefiles work properly (in
7083generate/unix).  Also updated the Linux makefiles to match. ACPICA BZ
7084867.
7085
7086Updated the return value of the _REV predefined method to integer value 5
7087to
7088reflect ACPI 5.0 support.
7089
7090Moved the external ACPI PM timer interface prototypes to the public
7091acpixf.h
7092file where they belong.
7093
7094Example Code and Data Size: These are the sizes for the OS-independent
7095acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7096debug
7097version of the code includes the debug output trace mechanism and has a
7098much
7099larger code and data size.
7100
7101  Previous Release:
7102    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
7103    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
7104  Current Release:
7105    Non-Debug Version:  93.0K Code, 25.0K Data, 118.0K Total
7106    Debug Version:     172.5K Code, 73.2K Data, 245.7K Total
7107
7108
71092) iASL Compiler/Disassembler and Tools:
7110
7111Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
7112descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
7113incorrectly displayed.
7114
7115AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
7116specification.
7117
7118----------------------------------------
711911 January 2012. Summary of changes for version 20120111:
7120
7121
71221) ACPICA Core Subsystem:
7123
7124Implemented a new mechanism to allow host device drivers to check for
7125address
7126range conflicts with ACPI Operation Regions. Both SystemMemory and
7127SystemIO
7128address spaces are supported. A new external interface,
7129AcpiCheckAddressRange,
7130allows drivers to check an address range against the ACPI namespace. See
7131the
7132ACPICA reference for additional details. Adds one new file,
7133utilities/utaddress.c. Lin Ming, Bob Moore.
7134
7135Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
7136Control
7137and
7138Status registers, update the ACPI 5.0 flags, and update internal data
7139structures to handle an FADT larger than 256 bytes. The size of the ACPI
71405.0
7141FADT is 268 bytes.
7142
7143Updated all ACPICA copyrights and signons to 2012. Added the 2012
7144copyright to
7145all module headers and signons, including the standard Linux header. This
7146affects virtually every file in the ACPICA core subsystem, iASL compiler,
7147and
7148all ACPICA utilities.
7149
7150Example Code and Data Size: These are the sizes for the OS-independent
7151acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7152debug
7153version of the code includes the debug output trace mechanism and has a
7154much
7155larger code and data size.
7156
7157  Previous Release:
7158    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
7159    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
7160  Current Release:
7161    Non-Debug Version:  92.8K Code, 24.9K Data, 117.7K Total
7162    Debug Version:     171.7K Code, 72.9K Data, 244.5K Total
7163
7164
71652) iASL Compiler/Disassembler and Tools:
7166
7167Disassembler: fixed a problem with the automatic resource tag generation
7168support. Fixes a problem where the resource tags are inadvertently not
7169constructed if the table being disassembled contains external references
7170to
7171control methods. Moved the actual construction of the tags to after the
7172final
7173namespace is constructed (after 2nd parse is invoked due to external
7174control
7175method references.) ACPICA BZ 941.
7176
7177Table Compiler: Make all "generic" operators caseless. These are the
7178operators
7179like UINT8, String, etc. Making these caseless improves ease-of-use.
7180ACPICA BZ
7181934.
7182
7183----------------------------------------
718423 November 2011. Summary of changes for version 20111123:
7185
71860) ACPI 5.0 Support:
7187
7188This release contains full support for the ACPI 5.0 specification, as
7189summarized below.
7190
7191Reduced Hardware Support:
7192-------------------------
7193
7194This support allows for ACPI systems without the usual ACPI hardware.
7195This
7196support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
7197will
7198not attempt to initialize or use any of the usual ACPI hardware. Note,
7199when
7200this flag is set, all of the following ACPI hardware is assumed to be not
7201present and is not initialized or accessed:
7202
7203    General Purpose Events (GPEs)
7204    Fixed Events (PM1a/PM1b and PM Control)
7205    Power Management Timer and Console Buttons (power/sleep)
7206    Real-time Clock Alarm
7207    Global Lock
7208    System Control Interrupt (SCI)
7209    The FACS is assumed to be non-existent
7210
7211ACPI Tables:
7212------------
7213
7214All new tables and updates to existing tables are fully supported in the
7215ACPICA headers (for use by device drivers), the disassembler, and the
7216iASL
7217Data Table Compiler. ACPI 5.0 defines these new tables:
7218
7219    BGRT        /* Boot Graphics Resource Table */
7220    DRTM        /* Dynamic Root of Trust for Measurement table */
7221    FPDT        /* Firmware Performance Data Table */
7222    GTDT        /* Generic Timer Description Table */
7223    MPST        /* Memory Power State Table */
7224    PCCT        /* Platform Communications Channel Table */
7225    PMTT        /* Platform Memory Topology Table */
7226    RASF        /* RAS Feature table */
7227
7228Operation Regions/SpaceIDs:
7229---------------------------
7230
7231All new operation regions are fully supported by the iASL compiler, the
7232disassembler, and the ACPICA runtime code (for dispatch to region
7233handlers.)
7234The new operation region Space IDs are:
7235
7236    GeneralPurposeIo
7237    GenericSerialBus
7238
7239Resource Descriptors:
7240---------------------
7241
7242All new ASL resource descriptors are fully supported by the iASL
7243compiler,
7244the
7245ASL/AML disassembler, and the ACPICA runtime Resource Manager code
7246(including
7247all new predefined resource tags). New descriptors are:
7248
7249    FixedDma
7250    GpioIo
7251    GpioInt
7252    I2cSerialBus
7253    SpiSerialBus
7254    UartSerialBus
7255
7256ASL/AML Operators, New and Modified:
7257------------------------------------
7258
7259One new operator is added, the Connection operator, which is used to
7260associate
7261a GeneralPurposeIo or GenericSerialBus resource descriptor with
7262individual
7263field objects within an operation region. Several new protocols are
7264associated
7265with the AccessAs operator. All are fully supported by the iASL compiler,
7266disassembler, and runtime ACPICA AML interpreter:
7267
7268    Connection                      // Declare Field Connection
7269attributes
7270    AccessAs: AttribBytes (n)           // Read/Write N-Bytes Protocol
7271    AccessAs: AttribRawBytes (n)        // Raw Read/Write N-Bytes
7272Protocol
7273    AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
7274    RawDataBuffer                       // Data type for Vendor Data
7275fields
7276
7277Predefined ASL/AML Objects:
7278---------------------------
7279
7280All new predefined objects/control-methods are supported by the iASL
7281compiler
7282and the ACPICA runtime validation/repair (arguments and return values.)
7283New
7284predefined names include the following:
7285
7286Standard Predefined Names (Objects or Control Methods):
7287    _AEI, _CLS, _CPC, _CWS, _DEP,
7288    _DLM, _EVT, _GCP, _CRT, _GWS,
7289    _HRV, _PRE, _PSE, _SRT, _SUB.
7290
7291Resource Tags (Names used to access individual fields within resource
7292descriptors):
7293    _DBT, _DPL, _DRS, _END, _FLC,
7294    _IOR, _LIN, _MOD, _PAR, _PHA,
7295    _PIN, _PPI, _POL, _RXL, _SLV,
7296    _SPE, _STB, _TXL, _VEN.
7297
7298ACPICA External Interfaces:
7299---------------------------
7300
7301Several new interfaces have been defined for use by ACPI-related device
7302drivers and other host OS services:
7303
7304AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
7305to
7306acquire and release AML mutexes that are defined in the DSDT/SSDT tables
7307provided by the BIOS. They are intended to be used in conjunction with
7308the
7309ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
7310mutual exclusion with the AML code/interpreter.
7311
7312AcpiGetEventResources: Returns the (formatted) resource descriptors as
7313defined
7314by the ACPI 5.0 _AEI object (ACPI Event Information).  This object
7315provides
7316resource descriptors associated with hardware-reduced platform events,
7317similar
7318to the AcpiGetCurrentResources interface.
7319
7320Operation Region Handlers: For General Purpose IO and Generic Serial Bus
7321operation regions, information about the Connection() object and any
7322optional
7323length information is passed to the region handler within the Context
7324parameter.
7325
7326AcpiBufferToResource: This interface converts a raw AML buffer containing
7327a
7328resource template or resource descriptor to the ACPI_RESOURCE internal
7329format
7330suitable for use by device drivers. Can be used by an operation region
7331handler
7332to convert the Connection() buffer object into a ACPI_RESOURCE.
7333
7334Miscellaneous/Tools/TestSuites:
7335-------------------------------
7336
7337Support for extended _HID names (Four alpha characters instead of three).
7338Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
7339Support for ACPI 5.0 features in the ASLTS test suite.
7340Fully updated documentation (ACPICA and iASL reference documents.)
7341
7342ACPI Table Definition Language:
7343-------------------------------
7344
7345Support for this language was implemented and released as a subsystem of
7346the
7347iASL compiler in 2010. (See the iASL compiler User Guide.)
7348
7349
7350Non-ACPI 5.0 changes for this release:
7351--------------------------------------
7352
73531) ACPICA Core Subsystem:
7354
7355Fix a problem with operation region declarations where a failure can
7356occur
7357if
7358the region name and an argument that evaluates to an object (such as the
7359region address) are in different namespace scopes. Lin Ming, ACPICA BZ
7360937.
7361
7362Do not abort an ACPI table load if an invalid space ID is found within.
7363This
7364will be caught later if the offending method is executed. ACPICA BZ 925.
7365
7366Fixed an issue with the FFixedHW space ID where the ID was not always
7367recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
7368
7369Fixed a problem with the 32-bit generation of the unix-specific OSL
7370(osunixxf.c). Lin Ming, ACPICA BZ 936.
7371
7372Several changes made to enable generation with the GCC 4.6 compiler.
7373ACPICA BZ
7374935.
7375
7376New error messages: Unsupported I/O requests (not 8/16/32 bit), and
7377Index/Bank
7378field registers out-of-range.
7379
73802) iASL Compiler/Disassembler and Tools:
7381
7382iASL: Implemented the __PATH__ operator, which returns the full pathname
7383of
7384the current source file.
7385
7386AcpiHelp: Automatically display expanded keyword information for all ASL
7387operators.
7388
7389Debugger: Add "Template" command to disassemble/dump resource template
7390buffers.
7391
7392Added a new master script to generate and execute the ASLTS test suite.
7393Automatically handles 32- and 64-bit generation. See tests/aslts.sh
7394
7395iASL: Fix problem with listing generation during processing of the
7396Switch()
7397operator where AML listing was disabled until the entire Switch block was
7398completed.
7399
7400iASL: Improve support for semicolon statement terminators. Fix "invalid
7401character" message for some cases when the semicolon is used. Semicolons
7402are
7403now allowed after every <Term> grammar element. ACPICA BZ 927.
7404
7405iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
7406923.
7407
7408Disassembler: Fix problem with disassembly of the DataTableRegion
7409operator
7410where an inadvertent "Unhandled deferred opcode" message could be
7411generated.
7412
74133) Example Code and Data Size
7414
7415These are the sizes for the OS-independent acpica.lib produced by the
7416Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7417includes the debug output trace mechanism and has a much larger code and
7418data
7419size.
7420
7421  Previous Release:
7422    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7423    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7424  Current Release:
7425    Non-Debug Version:  92.3K Code, 24.9K Data, 117.2K Total
7426    Debug Version:     170.8K Code, 72.6K Data, 243.4K Total
7427
7428----------------------------------------
742922 September 2011. Summary of changes for version 20110922:
7430
74310) ACPI 5.0 News:
7432
7433Support for ACPI 5.0 in ACPICA has been underway for several months and
7434will
7435be released at the same time that ACPI 5.0 is officially released.
7436
7437The ACPI 5.0 specification is on track for release in the next few
7438months.
7439
74401) ACPICA Core Subsystem:
7441
7442Fixed a problem where the maximum sleep time for the Sleep() operator was
7443intended to be limited to two seconds, but was inadvertently limited to
744420
7445seconds instead.
7446
7447Linux and Unix makefiles: Added header file dependencies to ensure
7448correct
7449generation of ACPICA core code and utilities. Also simplified the
7450makefiles
7451considerably through the use of the vpath variable to specify search
7452paths.
7453ACPICA BZ 924.
7454
74552) iASL Compiler/Disassembler and Tools:
7456
7457iASL: Implemented support to check the access length for all fields
7458created to
7459access named Resource Descriptor fields. For example, if a resource field
7460is
7461defined to be two bits, a warning is issued if a CreateXxxxField() is
7462used
7463with an incorrect bit length. This is implemented for all current
7464resource
7465descriptor names. ACPICA BZ 930.
7466
7467Disassembler: Fixed a byte ordering problem with the output of 24-bit and
746856-
7469bit integers.
7470
7471iASL: Fixed a couple of issues associated with variable-length package
7472objects. 1) properly handle constants like One, Ones, Zero -- do not make
7473a
7474VAR_PACKAGE when these are used as a package length. 2) Allow the
7475VAR_PACKAGE
7476opcode (in addition to PACKAGE) when validating object types for
7477predefined
7478names.
7479
7480iASL: Emit statistics for all output files (instead of just the ASL input
7481and
7482AML output). Includes listings, hex files, etc.
7483
7484iASL: Added -G option to the table compiler to allow the compilation of
7485custom
7486ACPI tables. The only part of a table that is required is the standard
748736-
7488byte
7489ACPI header.
7490
7491AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
7492headers),
7493which also adds correct 64-bit support. Also, now all output filenames
7494are
7495completely lower case.
7496
7497AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
7498loading table files. A warning is issued for any such tables. The only
7499exception is an FADT. This also fixes a possible fault when attempting to
7500load
7501non-AML tables. ACPICA BZ 932.
7502
7503AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
7504a
7505missing table terminator could cause a fault when using the -p option.
7506
7507AcpiSrc: Fixed a possible divide-by-zero fault when generating file
7508statistics.
7509
75103) Example Code and Data Size
7511
7512These are the sizes for the OS-independent acpica.lib produced by the
7513Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7514includes the debug output trace mechanism and has a much larger code and
7515data
7516size.
7517
7518  Previous Release (VC 9.0):
7519    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7520    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7521  Current Release (VC 9.0):
7522    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7523    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7524
7525
7526----------------------------------------
752723 June 2011. Summary of changes for version 20110623:
7528
75291) ACPI CA Core Subsystem:
7530
7531Updated the predefined name repair mechanism to not attempt repair of a
7532_TSS
7533return object if a _PSS object is present. We can only sort the _TSS
7534return
7535package if there is no _PSS within the same scope. This is because if
7536_PSS
7537is
7538present, the ACPI specification dictates that the _TSS Power Dissipation
7539field
7540is to be ignored, and therefore some BIOSs leave garbage values in the
7541_TSS
7542Power field(s). In this case, it is best to just return the _TSS package
7543as-
7544is. Reported by, and fixed with assistance from Fenghua Yu.
7545
7546Added an option to globally disable the control method return value
7547validation
7548and repair. This runtime option can be used to disable return value
7549repair
7550if
7551this is causing a problem on a particular machine. Also added an option
7552to
7553AcpiExec (-dr) to set this disable flag.
7554
7555All makefiles and project files: Major changes to improve generation of
7556ACPICA
7557tools. ACPICA BZ 912:
7558    Reduce default optimization levels to improve compatibility
7559    For Linux, add strict-aliasing=0 for gcc 4
7560    Cleanup and simplify use of command line defines
7561    Cleanup multithread library support
7562    Improve usage messages
7563
7564Linux-specific header: update handling of THREAD_ID and pthread. For the
756532-
7566bit case, improve casting to eliminate possible warnings, especially with
7567the
7568acpica tools.
7569
7570Example Code and Data Size: These are the sizes for the OS-independent
7571acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7572debug
7573version of the code includes the debug output trace mechanism and has a
7574much
7575larger code and data size.
7576
7577  Previous Release (VC 9.0):
7578    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7579    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7580  Current Release (VC 9.0):
7581    Non-Debug Version:  90.2K Code, 23.9K Data, 114.1K Total
7582    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7583
75842) iASL Compiler/Disassembler and Tools:
7585
7586With this release, a new utility named "acpihelp" has been added to the
7587ACPICA
7588package. This utility summarizes the ACPI specification chapters for the
7589ASL
7590and AML languages. It generates under Linux/Unix as well as Windows, and
7591provides the following functionality:
7592    Find/display ASL operator(s) -- with description and syntax.
7593    Find/display ASL keyword(s) -- with exact spelling and descriptions.
7594    Find/display ACPI predefined name(s) -- with description, number
7595        of arguments, and the return value data type.
7596    Find/display AML opcode name(s) -- with opcode, arguments, and
7597grammar.
7598    Decode/display AML opcode -- with opcode name, arguments, and
7599grammar.
7600
7601Service Layers: Make multi-thread support configurable. Conditionally
7602compile
7603the multi-thread support so that threading libraries will not be linked
7604if
7605not
7606necessary. The only tool that requires multi-thread support is AcpiExec.
7607
7608iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7609of
7610Bison appear to want the interface to yyerror to be a const char * (or at
7611least this is a problem when generating iASL on some systems.) ACPICA BZ
7612923
7613Pierre Lejeune.
7614
7615Tools: Fix for systems where O_BINARY is not defined. Only used for
7616Windows
7617versions of the tools.
7618
7619----------------------------------------
762027 May 2011. Summary of changes for version 20110527:
7621
76221) ACPI CA Core Subsystem:
7623
7624ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7625table
7626signature. Now, only allow SSDT, OEMx, and a null signature. History:
7627    1) Originally, we checked the table signature for "SSDT" or "PSDT".
7628       (PSDT is now obsolete.)
7629    2) We added support for OEMx tables, signature "OEM" plus a fourth
7630       "don't care" character.
7631    3) Valid tables were encountered with a null signature, so we just
7632       gave up on validating the signature, (05/2008).
7633    4) We encountered non-AML tables such as the MADT, which caused
7634       interpreter errors and kernel faults. So now, we once again allow
7635       only SSDT, OEMx, and now, also a null signature. (05/2011).
7636
7637Added the missing _TDL predefined name to the global name list in order
7638to
7639enable validation. Affects both the core ACPICA code and the iASL
7640compiler.
7641
7642Example Code and Data Size: These are the sizes for the OS-independent
7643acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7644debug
7645version of the code includes the debug output trace mechanism and has a
7646much
7647larger code and data size.
7648
7649  Previous Release (VC 9.0):
7650    Non-Debug Version:  90.0K Code, 23.8K Data, 113.8K Total
7651    Debug Version:     164.5K Code, 68.0K Data, 232.5K Total
7652  Current Release (VC 9.0):
7653    Non-Debug Version:  90.1K Code, 23.9K Data, 114.0K Total
7654    Debug Version:     165.6K Code, 68.4K Data, 234.0K Total
7655
76562) iASL Compiler/Disassembler and Tools:
7657
7658Debugger/AcpiExec: Implemented support for "complex" method arguments on
7659the
7660debugger command line. This adds support beyond simple integers --
7661including
7662Strings, Buffers, and Packages. Includes support for nested packages.
7663Increased the default command line buffer size to accommodate these
7664arguments.
7665See the ACPICA reference for details and syntax. ACPICA BZ 917.
7666
7667Debugger/AcpiExec: Implemented support for "default" method arguments for
7668the
7669Execute/Debug command. Now, the debugger will always invoke a control
7670method
7671with the required number of arguments -- even if the command line
7672specifies
7673none or insufficient arguments. It uses default integer values for any
7674missing
7675arguments. Also fixes a bug where only six method arguments maximum were
7676supported instead of the required seven.
7677
7678Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7679and
7680also return status in order to prevent buffer overruns. See the ACPICA
7681reference for details and syntax. ACPICA BZ 921
7682
7683iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7684makefiles to simplify support for the two different but similar parser
7685generators, bison and yacc.
7686
7687Updated the generic unix makefile for gcc 4. The default gcc version is
7688now
7689expected to be 4 or greater, since options specific to gcc 4 are used.
7690
7691----------------------------------------
769213 April 2011. Summary of changes for version 20110413:
7693
76941) ACPI CA Core Subsystem:
7695
7696Implemented support to execute a so-called "orphan" _REG method under the
7697EC
7698device. This change will force the execution of a _REG method underneath
7699the
7700EC
7701device even if there is no corresponding operation region of type
7702EmbeddedControl. Fixes a problem seen on some machines and apparently is
7703compatible with Windows behavior. ACPICA BZ 875.
7704
7705Added more predefined methods that are eligible for automatic NULL
7706package
7707element removal. This change adds another group of predefined names to
7708the
7709list
7710of names that can be repaired by having NULL package elements dynamically
7711removed. This group are those methods that return a single variable-
7712length
7713package containing simple data types such as integers, buffers, strings.
7714This
7715includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7716_PSL,
7717_Sx,
7718and _TZD. ACPICA BZ 914.
7719
7720Split and segregated all internal global lock functions to a new file,
7721evglock.c.
7722
7723Updated internal address SpaceID for DataTable regions. Moved this
7724internal
7725space
7726id in preparation for ACPI 5.0 changes that will include some new space
7727IDs.
7728This
7729change should not affect user/host code.
7730
7731Example Code and Data Size: These are the sizes for the OS-independent
7732acpica.lib
7733produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7734version of
7735the code includes the debug output trace mechanism and has a much larger
7736code
7737and
7738data size.
7739
7740  Previous Release (VC 9.0):
7741    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7742    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7743  Current 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
77472) iASL Compiler/Disassembler and Tools:
7748
7749iASL/DTC: Major update for new grammar features. Allow generic data types
7750in
7751custom ACPI tables. Field names are now optional. Any line can be split
7752to
7753multiple lines using the continuation char (\). Large buffers now use
7754line-
7755continuation character(s) and no colon on the continuation lines. See the
7756grammar
7757update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7758Moore.
7759
7760iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7761statements.
7762Since the parser stuffs a "zero" as the return value for these statements
7763(due
7764to
7765the underlying AML grammar), they were seen as "return with value" by the
7766iASL
7767semantic checking. They are now seen correctly as "null" return
7768statements.
7769
7770iASL: Check if a_REG declaration has a corresponding Operation Region.
7771Adds a
7772check for each _REG to ensure that there is in fact a corresponding
7773operation
7774region declaration in the same scope. If not, the _REG method is not very
7775useful
7776since it probably won't be executed. ACPICA BZ 915.
7777
7778iASL/DTC: Finish support for expression evaluation. Added a new
7779expression
7780parser
7781that implements c-style operator precedence and parenthesization. ACPICA
7782bugzilla
7783908.
7784
7785Disassembler/DTC: Remove support for () and <> style comments in data
7786tables.
7787Now
7788that DTC has full expression support, we don't want to have comment
7789strings
7790that
7791start with a parentheses or a less-than symbol. Now, only the standard /*
7792and
7793//
7794comments are supported, as well as the bracket [] comments.
7795
7796AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7797"unusual"
7798headers in the acpidump file. Update the header validation to support
7799these
7800tables. Problem introduced in previous AcpiXtract version in the change
7801to
7802support "wrong checksum" error messages emitted by acpidump utility.
7803
7804iASL: Add a * option to generate all template files (as a synonym for
7805ALL)
7806as
7807in
7808"iasl -T *" or "iasl -T ALL".
7809
7810iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7811completely
7812abort the compiler on "fatal" errors, simply should abort the current
7813compile.
7814This allows multiple compiles with a single (possibly wildcard) compiler
7815invocation.
7816
7817----------------------------------------
781816 March 2011. Summary of changes for version 20110316:
7819
78201) ACPI CA Core Subsystem:
7821
7822Fixed a problem caused by a _PRW method appearing at the namespace root
7823scope
7824during the setup of wake GPEs. A fault could occur if a _PRW directly
7825under
7826the
7827root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7828
7829Implemented support for "spurious" Global Lock interrupts. On some
7830systems, a
7831global lock interrupt can occur without the pending flag being set. Upon
7832a
7833GL
7834interrupt, we now ensure that a thread is actually waiting for the lock
7835before
7836signaling GL availability. Rafael Wysocki, Bob Moore.
7837
7838Example Code and Data Size: These are the sizes for the OS-independent
7839acpica.lib
7840produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7841version of
7842the code includes the debug output trace mechanism and has a much larger
7843code
7844and
7845data size.
7846
7847  Previous Release (VC 9.0):
7848    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7849    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7850  Current Release (VC 9.0):
7851    Non-Debug Version:  89.8K Code, 23.8K Data, 113.6K Total
7852    Debug Version:     164.2K Code, 67.9K Data, 232.1K Total
7853
78542) iASL Compiler/Disassembler and Tools:
7855
7856Implemented full support for the "SLIC" ACPI table. Includes support in
7857the
7858header files, disassembler, table compiler, and template generator. Bob
7859Moore,
7860Lin Ming.
7861
7862AcpiXtract: Correctly handle embedded comments and messages from
7863AcpiDump.
7864Apparently some or all versions of acpidump will occasionally emit a
7865comment
7866like
7867"Wrong checksum", etc., into the dump file. This was causing problems for
7868AcpiXtract. ACPICA BZ 905.
7869
7870iASL: Fix the Linux makefile by removing an inadvertent double file
7871inclusion.
7872ACPICA BZ 913.
7873
7874AcpiExec: Update installation of operation region handlers. Install one
7875handler
7876for a user-defined address space. This is used by the ASL test suite
7877(ASLTS).
7878
7879----------------------------------------
788011 February 2011. Summary of changes for version 20110211:
7881
78821) ACPI CA Core Subsystem:
7883
7884Added a mechanism to defer _REG methods for some early-installed
7885handlers.
7886Most user handlers should be installed before call to
7887AcpiEnableSubsystem.
7888However, Event handlers and region handlers should be installed after
7889AcpiInitializeObjects. Override handlers for the "default" regions should
7890be
7891installed early, however. This change executes all _REG methods for the
7892default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7893chicken/egg issues between them. ACPICA BZ 848.
7894
7895Implemented an optimization for GPE detection. This optimization will
7896simply
7897ignore GPE registers that contain no enabled GPEs -- there is no need to
7898read the register since this information is available internally. This
7899becomes more important on machines with a large GPE space. ACPICA
7900bugzilla
7901884. Lin Ming. Suggestion from Joe Liu.
7902
7903Removed all use of the highly unreliable FADT revision field. The
7904revision
7905number in the FADT has been found to be completely unreliable and cannot
7906be
7907trusted. Only the actual table length can be used to infer the version.
7908This
7909change updates the ACPICA core and the disassembler so that both no
7910longer
7911even look at the FADT version and instead depend solely upon the FADT
7912length.
7913
7914Fix an unresolved name issue for the no-debug and no-error-message source
7915generation cases. The _AcpiModuleName was left undefined in these cases,
7916but
7917it is actually needed as a parameter to some interfaces. Define
7918_AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7919
7920Split several large files (makefiles and project files updated)
7921  utglobal.c   -> utdecode.c
7922  dbcomds.c    -> dbmethod.c dbnames.c
7923  dsopcode.c   -> dsargs.c dscontrol.c
7924  dsload.c     -> dsload2.c
7925  aslanalyze.c -> aslbtypes.c aslwalks.c
7926
7927Example Code and Data Size: These are the sizes for the OS-independent
7928acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7929debug version of the code includes the debug output trace mechanism and
7930has
7931a much larger code and data size.
7932
7933  Previous Release (VC 9.0):
7934    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7935    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7936  Current Release (VC 9.0):
7937    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
7938    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
7939
79402) iASL Compiler/Disassembler and Tools:
7941
7942iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7943These are useful C-style macros with the standard definitions. ACPICA
7944bugzilla 898.
7945
7946iASL/DTC: Added support for integer expressions and labels. Support for
7947full
7948expressions for all integer fields in all ACPI tables. Support for labels
7949in
7950"generic" portions of tables such as UEFI. See the iASL reference manual.
7951
7952Debugger: Added a command to display the status of global handlers. The
7953"handlers" command will display op region, fixed event, and miscellaneous
7954global handlers. installation status -- and for op regions, whether
7955default
7956or user-installed handler will be used.
7957
7958iASL: Warn if reserved method incorrectly returns a value. Many
7959predefined
7960names are defined such that they do not return a value. If implemented as
7961a
7962method, issue a warning if such a name explicitly returns a value. ACPICA
7963Bugzilla 855.
7964
7965iASL: Added detection of GPE method name conflicts. Detects a conflict
7966where
7967there are two GPE methods of the form _Lxy and _Exy in the same scope.
7968(For
7969example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7970
7971iASL/DTC: Fixed a couple input scanner issues with comments and line
7972numbers. Comment remover could get confused and miss a comment ending.
7973Fixed
7974a problem with line counter maintenance.
7975
7976iASL/DTC: Reduced the severity of some errors from fatal to error. There
7977is
7978no need to abort on simple errors within a field definition.
7979
7980Debugger: Simplified the output of the help command. All help output now
7981in
7982a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7983
7984----------------------------------------
798512 January 2011. Summary of changes for version 20110112:
7986
79871) ACPI CA Core Subsystem:
7988
7989Fixed a race condition between method execution and namespace walks that
7990can
7991possibly cause a fault. The problem was apparently introduced in version
799220100528 as a result of a performance optimization that reduces the
7993number
7994of
7995namespace walks upon method exit by using the delete_namespace_subtree
7996function instead of the delete_namespace_by_owner function used
7997previously.
7998Bug is a missing namespace lock in the delete_namespace_subtree function.
7999dana.myers@oracle.com
8000
8001Fixed several issues and a possible fault with the automatic "serialized"
8002method support. History: This support changes a method to "serialized" on
8003the
8004fly if the method generates an AE_ALREADY_EXISTS error, indicating the
8005possibility that it cannot handle reentrancy. This fix repairs a couple
8006of
8007issues seen in the field, especially on machines with many cores:
8008
8009    1) Delete method children only upon the exit of the last thread,
8010       so as to not delete objects out from under other running threads
8011      (and possibly causing a fault.)
8012    2) Set the "serialized" bit for the method only upon the exit of the
8013       Last thread, so as to not cause deadlock when running threads
8014       attempt to exit.
8015    3) Cleanup the use of the AML "MethodFlags" and internal method flags
8016       so that there is no longer any confusion between the two.
8017
8018    Lin Ming, Bob Moore. Reported by dana.myers@oracle.com.
8019
8020Debugger: Now lock the namespace for duration of a namespace dump.
8021Prevents
8022issues if the namespace is changing dynamically underneath the debugger.
8023Especially affects temporary namespace nodes, since the debugger displays
8024these also.
8025
8026Updated the ordering of include files. The ACPICA headers should appear
8027before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
8028set
8029any necessary compiler-specific defines, etc. Affects the ACPI-related
8030tools
8031and utilities.
8032
8033Updated all ACPICA copyrights and signons to 2011. Added the 2011
8034copyright
8035to all module headers and signons, including the Linux header. This
8036affects
8037virtually every file in the ACPICA core subsystem, iASL compiler, and all
8038utilities.
8039
8040Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
8041project files for VC++ 6.0 are now obsolete. New project files can be
8042found
8043under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
8044details.
8045
8046Example Code and Data Size: These are the sizes for the OS-independent
8047acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8048debug version of the code includes the debug output trace mechanism and
8049has a
8050much larger code and data size.
8051
8052  Previous Release (VC 6.0):
8053    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
8054    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
8055  Current Release (VC 9.0):
8056    Non-Debug Version:  89.7K Code, 23.7K Data, 113.4K Total
8057    Debug Version:     163.9K Code, 67.5K Data, 231.4K Total
8058
80592) iASL Compiler/Disassembler and Tools:
8060
8061iASL: Added generic data types to the Data Table compiler. Add "generic"
8062data
8063types such as UINT32, String, Unicode, etc., to simplify the generation
8064of
8065platform-defined tables such as UEFI. Lin Ming.
8066
8067iASL: Added listing support for the Data Table Compiler. Adds listing
8068support
8069(-l) to display actual binary output for each line of input code.
8070
8071----------------------------------------
807209 December 2010. Summary of changes for version 20101209:
8073
80741) ACPI CA Core Subsystem:
8075
8076Completed the major overhaul of the GPE support code that was begun in
8077July
80782010. Major features include: removal of _PRW execution in ACPICA (host
8079executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
8080changes to existing interfaces, simplification of GPE handler operation,
8081and
8082a handful of new interfaces:
8083
8084    AcpiUpdateAllGpes
8085    AcpiFinishGpe
8086    AcpiSetupGpeForWake
8087    AcpiSetGpeWakeMask
8088    One new file, evxfgpe.c to consolidate all external GPE interfaces.
8089
8090See the ACPICA Programmer Reference for full details and programming
8091information. See the new section 4.4 "General Purpose Event (GPE)
8092Support"
8093for a full overview, and section 8.7 "ACPI General Purpose Event
8094Management"
8095for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
8096Ming,
8097Bob Moore, Rafael Wysocki.
8098
8099Implemented a new GPE feature for Windows compatibility, the "Implicit
8100Wake
8101GPE Notify". This feature will automatically issue a Notify(2) on a
8102device
8103when a Wake GPE is received if there is no corresponding GPE method or
8104handler. ACPICA BZ 870.
8105
8106Fixed a problem with the Scope() operator during table parse and load
8107phase.
8108During load phase (table load or method execution), the scope operator
8109should
8110not enter the target into the namespace. Instead, it should open a new
8111scope
8112at the target location. Linux BZ 19462, ACPICA BZ 882.
8113
8114Example Code and Data Size: These are the sizes for the OS-independent
8115acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8116debug version of the code includes the debug output trace mechanism and
8117has a
8118much larger code and data size.
8119
8120  Previous Release:
8121    Non-Debug Version:  89.8K Code, 18.9K Data, 108.7K Total
8122    Debug Version:     166.6K Code, 52.1K Data, 218.7K Total
8123  Current Release:
8124    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8125    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8126
81272) iASL Compiler/Disassembler and Tools:
8128
8129iASL: Relax the alphanumeric restriction on _CID strings. These strings
8130are
8131"bus-specific" per the ACPI specification, and therefore any characters
8132are
8133acceptable. The only checks that can be performed are for a null string
8134and
8135perhaps for a leading asterisk. ACPICA BZ 886.
8136
8137iASL: Fixed a problem where a syntax error that caused a premature EOF
8138condition on the source file emitted a very confusing error message. The
8139premature EOF is now detected correctly. ACPICA BZ 891.
8140
8141Disassembler: Decode the AccessSize within a Generic Address Structure
8142(byte
8143access, word access, etc.) Note, this field does not allow arbitrary bit
8144access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
8145
8146New: AcpiNames utility - Example namespace dump utility. Shows an example
8147of
8148ACPICA configuration for a minimal namespace dump utility. Uses table and
8149namespace managers, but no AML interpreter. Does not add any
8150functionality
8151over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
8152partition and configure ACPICA. ACPICA BZ 883.
8153
8154AML Debugger: Increased the debugger buffer size for method return
8155objects.
8156Was 4K, increased to 16K. Also enhanced error messages for debugger
8157method
8158execution, including the buffer overflow case.
8159
8160----------------------------------------
816113 October 2010. Summary of changes for version 20101013:
8162
81631) ACPI CA Core Subsystem:
8164
8165Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
8166now
8167clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
8168HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
8169
8170Changed the type of the predefined namespace object _TZ from ThermalZone
8171to
8172Device. This was found to be confusing to the host software that
8173processes
8174the various thermal zones, since _TZ is not really a ThermalZone.
8175However,
8176a
8177Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
8178Zhang.
8179
8180Added Windows Vista SP2 to the list of supported _OSI strings. The actual
8181string is "Windows 2006 SP2".
8182
8183Eliminated duplicate code in AcpiUtExecute* functions. Now that the
8184nsrepair
8185code automatically repairs _HID-related strings, this type of code is no
8186longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
8187878.
8188
8189Example Code and Data Size: These are the sizes for the OS-independent
8190acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8191debug version of the code includes the debug output trace mechanism and
8192has a
8193much larger code and data size.
8194
8195  Previous Release:
8196    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8197    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8198  Current Release:
8199    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8200    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8201
82022) iASL Compiler/Disassembler and Tools:
8203
8204iASL: Implemented additional compile-time validation for _HID strings.
8205The
8206non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
8207length
8208of
8209the string must be exactly seven or eight characters. For both _HID and
8210_CID
8211strings, all characters must be alphanumeric. ACPICA BZ 874.
8212
8213iASL: Allow certain "null" resource descriptors. Some BIOS code creates
8214descriptors that are mostly or all zeros, with the expectation that they
8215will
8216be filled in at runtime. iASL now allows this as long as there is a
8217"resource
8218tag" (name) associated with the descriptor, which gives the ASL a handle
8219needed to modify the descriptor. ACPICA BZ 873.
8220
8221Added single-thread support to the generic Unix application OSL.
8222Primarily
8223for iASL support, this change removes the use of semaphores in the
8224single-
8225threaded ACPICA tools/applications - increasing performance. The
8226_MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
8227option. ACPICA BZ 879.
8228
8229AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
8230support
8231for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
8232
8233iASL: Moved all compiler messages to a new file, aslmessages.h.
8234
8235----------------------------------------
823615 September 2010. Summary of changes for version 20100915:
8237
82381) ACPI CA Core Subsystem:
8239
8240Removed the AcpiOsDerivePciId OSL interface. The various host
8241implementations
8242of this function were not OS-dependent and are now obsolete and can be
8243removed from all host OSLs. This function has been replaced by
8244AcpiHwDerivePciId, which is now part of the ACPICA core code.
8245AcpiHwDerivePciId has been implemented without recursion. Adds one new
8246module, hwpci.c. ACPICA BZ 857.
8247
8248Implemented a dynamic repair for _HID and _CID strings. The following
8249problems are now repaired at runtime: 1) Remove a leading asterisk in the
8250string, and 2) the entire string is uppercased. Both repairs are in
8251accordance with the ACPI specification and will simplify host driver
8252code.
8253ACPICA BZ 871.
8254
8255The ACPI_THREAD_ID type is no longer configurable, internally it is now
8256always UINT64. This simplifies the ACPICA code, especially any printf
8257output.
8258UINT64 is the only common data type for all thread_id types across all
8259operating systems. It is now up to the host OSL to cast the native
8260thread_id
8261type to UINT64 before returning the value to ACPICA (via
8262AcpiOsGetThreadId).
8263Lin Ming, Bob Moore.
8264
8265Added the ACPI_INLINE type to enhance the ACPICA configuration. The
8266"inline"
8267keyword is not standard across compilers, and this type allows inline to
8268be
8269configured on a per-compiler basis. Lin Ming.
8270
8271Made the system global AcpiGbl_SystemAwakeAndRunning publicly
8272available.
8273Added an extern for this boolean in acpixf.h. Some hosts utilize this
8274value
8275during suspend/restore operations. ACPICA BZ 869.
8276
8277All code that implements error/warning messages with the "ACPI:" prefix
8278has
8279been moved to a new module, utxferror.c.
8280
8281The UINT64_OVERLAY was moved to utmath.c, which is the only module where
8282it
8283is used. ACPICA BZ 829. Lin Ming, Bob Moore.
8284
8285Example Code and Data Size: These are the sizes for the OS-independent
8286acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8287debug version of the code includes the debug output trace mechanism and
8288has a
8289much larger code and data size.
8290
8291  Previous Release:
8292    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
8293    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
8294  Current Release:
8295    Non-Debug Version:  89.9K Code, 19.0K Data, 108.9K Total
8296    Debug Version:     166.3K Code, 52.1K Data, 218.4K Total
8297
82982) iASL Compiler/Disassembler and Tools:
8299
8300iASL/Disassembler: Write ACPI errors to stderr instead of the output
8301file.
8302This keeps the output files free of random error messages that may
8303originate
8304from within the namespace/interpreter code. Used this opportunity to
8305merge
8306all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
8307866. Lin Ming, Bob Moore.
8308
8309Tools: update some printfs for ansi warnings on size_t. Handle width
8310change
8311of size_t on 32-bit versus 64-bit generations. Lin Ming.
8312
8313----------------------------------------
831406 August 2010. Summary of changes for version 20100806:
8315
83161) ACPI CA Core Subsystem:
8317
8318Designed and implemented a new host interface to the _OSI support code.
8319This
8320will allow the host to dynamically add or remove multiple _OSI strings,
8321as
8322well as install an optional handler that is called for each _OSI
8323invocation.
8324Also added a new AML debugger command, 'osi' to display and modify the
8325global
8326_OSI string table, and test support in the AcpiExec utility. See the
8327ACPICA
8328reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
8329New Functions:
8330    AcpiInstallInterface - Add an _OSI string.
8331    AcpiRemoveInterface - Delete an _OSI string.
8332    AcpiInstallInterfaceHandler - Install optional _OSI handler.
8333Obsolete Functions:
8334    AcpiOsValidateInterface - no longer used.
8335New Files:
8336    source/components/utilities/utosi.c
8337
8338Re-introduced the support to enable multi-byte transfers for Embedded
8339Controller (EC) operation regions. A reported problem was found to be a
8340bug
8341in the host OS, not in the multi-byte support. Previously, the maximum
8342data
8343size passed to the EC operation region handler was a single byte. There
8344are
8345often EC Fields larger than one byte that need to be transferred, and it
8346is
8347useful for the EC driver to lock these as a single transaction. This
8348change
8349enables single transfers larger than 8 bits. This effectively changes the
8350access to the EC space from ByteAcc to AnyAcc, and will probably require
8351changes to the host OS Embedded Controller driver to enable 16/32/64/256-
8352bit
8353transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
8354
8355Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
8356prototype in acpiosxf.h had the output value pointer as a (void *).
8357It should be a (UINT64 *). This may affect some host OSL code.
8358
8359Fixed a couple problems with the recently modified Linux makefiles for
8360iASL
8361and AcpiExec. These new makefiles place the generated object files in the
8362local directory so that there can be no collisions between the files that
8363are
8364shared between them that are compiled with different options.
8365
8366Example Code and Data Size: These are the sizes for the OS-independent
8367acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8368debug version of the code includes the debug output trace mechanism and
8369has a
8370much larger code and data size.
8371
8372  Previous Release:
8373    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8374    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8375  Current Release:
8376    Non-Debug Version:  89.1K Code, 19.0K Data, 108.1K Total
8377    Debug Version:     165.1K Code, 51.9K Data, 217.0K Total
8378
83792) iASL Compiler/Disassembler and Tools:
8380
8381iASL/Disassembler: Added a new option (-da, "disassemble all") to load
8382the
8383namespace from and disassemble an entire group of AML files. Useful for
8384loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
8385and
8386disassembling with one simple command. ACPICA BZ 865. Lin Ming.
8387
8388iASL: Allow multiple invocations of -e option. This change allows
8389multiple
8390uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
8391834.
8392Lin Ming.
8393
8394----------------------------------------
839502 July 2010. Summary of changes for version 20100702:
8396
83971) ACPI CA Core Subsystem:
8398
8399Implemented several updates to the recently added GPE reference count
8400support. The model for "wake" GPEs is changing to give the host OS
8401complete
8402control of these GPEs. Eventually, the ACPICA core will not execute any
8403_PRW
8404methods, since the host already must execute them. Also, additional
8405changes
8406were made to help ensure that the reference counts are kept in proper
8407synchronization with reality. Rafael J. Wysocki.
8408
84091) Ensure that GPEs are not enabled twice during initialization.
84102) Ensure that GPE enable masks stay in sync with the reference count.
84113) Do not inadvertently enable GPEs when writing GPE registers.
84124) Remove the internal wake reference counter and add new AcpiGpeWakeup
8413interface. This interface will set or clear individual GPEs for wakeup.
84145) Remove GpeType argument from AcpiEnable and AcpiDisable. These
8415interfaces
8416are now used for "runtime" GPEs only.
8417
8418Changed the behavior of the GPE install/remove handler interfaces. The
8419GPE
8420is
8421no longer disabled during this process, as it was found to cause problems
8422on
8423some machines. Rafael J. Wysocki.
8424
8425Reverted a change introduced in version 20100528 to enable Embedded
8426Controller multi-byte transfers. This change was found to cause problems
8427with
8428Index Fields and possibly Bank Fields. It will be reintroduced when these
8429problems have been resolved.
8430
8431Fixed a problem with references to Alias objects within Package Objects.
8432A
8433reference to an Alias within the definition of a Package was not always
8434resolved properly. Aliases to objects like Processors, Thermal zones,
8435etc.
8436were resolved to the actual object instead of a reference to the object
8437as
8438it
8439should be. Package objects are only allowed to contain integer, string,
8440buffer, package, and reference objects. Redhat bugzilla 608648.
8441
8442Example Code and Data Size: These are the sizes for the OS-independent
8443acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8444debug version of the code includes the debug output trace mechanism and
8445has a
8446much larger code and data size.
8447
8448  Previous Release:
8449    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8450    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8451  Current Release:
8452    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8453    Debug Version:     164.0K Code, 51.5K Data, 215.5K Total
8454
84552) iASL Compiler/Disassembler and Tools:
8456
8457iASL: Implemented a new compiler subsystem to allow definition and
8458compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
8459These
8460are called "ACPI Data Tables", and the new compiler is the "Data Table
8461Compiler". This compiler is intended to simplify the existing error-prone
8462process of creating these tables for the BIOS, as well as allowing the
8463disassembly, modification, recompilation, and override of existing ACPI
8464data
8465tables. See the iASL User Guide for detailed information.
8466
8467iASL: Implemented a new Template Generator option in support of the new
8468Data
8469Table Compiler. This option will create examples of all known ACPI tables
8470that can be used as the basis for table development. See the iASL
8471documentation and the -T option.
8472
8473Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
8474Descriptor Table).
8475
8476Updated the Linux makefiles for iASL and AcpiExec to place the generated
8477object files in the local directory so that there can be no collisions
8478between the shared files between them that are generated with different
8479options.
8480
8481Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
8482Use
8483the #define __APPLE__ to enable this support.
8484
8485----------------------------------------
848628 May 2010. Summary of changes for version 20100528:
8487
8488Note: The ACPI 4.0a specification was released on April 5, 2010 and is
8489available at www.acpi.info. This is primarily an errata release.
8490
84911) ACPI CA Core Subsystem:
8492
8493Undefined ACPI tables: We are looking for the definitions for the
8494following
8495ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
8496
8497Implemented support to enable multi-byte transfers for Embedded
8498Controller
8499(EC) operation regions. Previously, the maximum data size passed to the
8500EC
8501operation region handler was a single byte. There are often EC Fields
8502larger
8503than one byte that need to be transferred, and it is useful for the EC
8504driver
8505to lock these as a single transaction. This change enables single
8506transfers
8507larger than 8 bits. This effectively changes the access to the EC space
8508from
8509ByteAcc to AnyAcc, and will probably require changes to the host OS
8510Embedded
8511Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
8512bit
8513transfers. Alexey Starikovskiy, Lin Ming
8514
8515Implemented a performance enhancement for namespace search and access.
8516This
8517change enhances the performance of namespace searches and walks by adding
8518a
8519backpointer to the parent in each namespace node. On large namespaces,
8520this
8521change can improve overall ACPI performance by up to 9X. Adding a pointer
8522to
8523each namespace node increases the overall size of the internal namespace
8524by
8525about 5%, since each namespace entry usually consists of both a namespace
8526node and an ACPI operand object. However, this is the first growth of the
8527namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
8528
8529Implemented a performance optimization that reduces the number of
8530namespace
8531walks. On control method exit, only walk the namespace if the method is
8532known
8533to have created namespace objects outside of its local scope. Previously,
8534the
8535entire namespace was traversed on each control method exit. This change
8536can
8537improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
8538Moore.
8539
8540Added support to truncate I/O addresses to 16 bits for Windows
8541compatibility.
8542Some ASL code has been seen in the field that inadvertently has bits set
8543above bit 15. This feature is optional and is enabled if the BIOS
8544requests
8545any Windows OSI strings. It can also be enabled by the host OS. Matthew
8546Garrett, Bob Moore.
8547
8548Added support to limit the maximum time for the ASL Sleep() operator. To
8549prevent accidental deep sleeps, limit the maximum time that Sleep() will
8550actually sleep. Configurable, the default maximum is two seconds. ACPICA
8551bugzilla 854.
8552
8553Added run-time validation support for the _WDG and_WED Microsoft
8554predefined
8555methods. These objects are defined by "Windows Instrumentation", and are
8556not
8557part of the ACPI spec. ACPICA BZ 860.
8558
8559Expanded all statistic counters used during namespace and device
8560initialization from 16 to 32 bits in order to support very large
8561namespaces.
8562
8563Replaced all instances of %d in printf format specifiers with %u since
8564nearly
8565all integers in ACPICA are unsigned.
8566
8567Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
8568returned
8569as AE_NO_HANDLER.
8570
8571Example Code and Data Size: These are the sizes for the OS-independent
8572acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8573debug version of the code includes the debug output trace mechanism and
8574has a
8575much larger code and data size.
8576
8577  Previous Release:
8578    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8579    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8580  Current Release:
8581    Non-Debug Version:  88.3K Code, 18.8K Data, 107.1K Total
8582    Debug Version:     164.1K Code, 51.5K Data, 215.6K Total
8583
85842) iASL Compiler/Disassembler and Tools:
8585
8586iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8587methods. These objects are defined by "Windows Instrumentation", and are
8588not
8589part of the ACPI spec. ACPICA BZ 860.
8590
8591AcpiExec: added option to disable the memory tracking mechanism. The -dt
8592option will disable the tracking mechanism, which improves performance
8593considerably.
8594
8595AcpiExec: Restructured the command line options into -d (disable) and -e
8596(enable) options.
8597
8598----------------------------------------
859928 April 2010. Summary of changes for version 20100428:
8600
86011) ACPI CA Core Subsystem:
8602
8603Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8604including FADT-based and GPE Block Devices, execute any _PRW methods in
8605the
8606new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8607runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8608immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8609Devices. Provides compatibility with other ACPI implementations. Two new
8610files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8611Moore.
8612
8613Fixed a regression introduced in version 20100331 within the table
8614manager
8615where initial table loading could fail. This was introduced in the fix
8616for
8617AcpiReallocateRootTable. Also, renamed some of fields in the table
8618manager
8619data structures to clarify their meaning and use.
8620
8621Fixed a possible allocation overrun during internal object copy in
8622AcpiUtCopySimpleObject. The original code did not correctly handle the
8623case
8624where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8625847.
8626
8627Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8628possible access beyond end-of-allocation. Also, now fully validate
8629descriptor
8630(size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8631
8632Example Code and Data Size: These are the sizes for the OS-independent
8633acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8634debug version of the code includes the debug output trace mechanism and
8635has a
8636much larger code and data size.
8637
8638  Previous Release:
8639    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8640    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8641  Current Release:
8642    Non-Debug Version:  88.4K Code, 18.8K Data, 107.2K Total
8643    Debug Version:     164.2K Code, 51.5K Data, 215.7K Total
8644
86452) iASL Compiler/Disassembler and Tools:
8646
8647iASL: Implemented Min/Max/Len/Gran validation for address resource
8648descriptors. This change implements validation for the address fields
8649that
8650are common to all address-type resource descriptors. These checks are
8651implemented: Checks for valid Min/Max, length within the Min/Max window,
8652valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8653per
8654table 6-40 in the ACPI 4.0a specification. Also split the large
8655aslrestype1.c
8656and aslrestype2.c files into five new files. ACPICA BZ 840.
8657
8658iASL: Added support for the _Wxx predefined names. This support was
8659missing
8660and these names were not recognized by the compiler as valid predefined
8661names. ACPICA BZ 851.
8662
8663iASL: Added an error for all predefined names that are defined to return
8664no
8665value and thus must be implemented as Control Methods. These include all
8666of
8667the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8668names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8669
8670iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8671an
8672ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8673be
8674dynamically loaded via the Load() operator. Also cleaned up output for
8675the
8676-
8677ta and -tc options. ACPICA BZ 853.
8678
8679Tests: Added a new file with examples of extended iASL error checking.
8680Demonstrates the advanced error checking ability of the iASL compiler.
8681Available at tests/misc/badcode.asl.
8682
8683----------------------------------------
868431 March 2010. Summary of changes for version 20100331:
8685
86861) ACPI CA Core Subsystem:
8687
8688Completed a major update for the GPE support in order to improve support
8689for
8690shared GPEs and to simplify both host OS and ACPICA code. Added a
8691reference
8692count mechanism to support shared GPEs that require multiple device
8693drivers.
8694Several external interfaces have changed. One external interface has been
8695removed. One new external interface was added. Most of the GPE external
8696interfaces now use the GPE spinlock instead of the events mutex (and the
8697Flags parameter for many GPE interfaces has been removed.) See the
8698updated
8699ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8700Rafael
8701Wysocki. ACPICA BZ 831.
8702
8703Changed:
8704    AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8705Removed:
8706    AcpiSetGpeType
8707New:
8708    AcpiSetGpe
8709
8710Implemented write support for DataTable operation regions. These regions
8711are
8712defined via the DataTableRegion() operator. Previously, only read support
8713was
8714implemented. The ACPI specification allows DataTableRegions to be
8715read/write,
8716however.
8717
8718Implemented a new subsystem option to force a copy of the DSDT to local
8719memory. Optionally copy the entire DSDT to local memory (instead of
8720simply
8721mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8722replace
8723the original DSDT, creating the need for this option. Default is FALSE,
8724do
8725not copy the DSDT.
8726
8727Implemented detection of a corrupted or replaced DSDT. This change adds
8728support to detect a DSDT that has been corrupted and/or replaced from
8729outside
8730the OS (by firmware). This is typically catastrophic for the system, but
8731has
8732been seen on some machines. Once this problem has been detected, the DSDT
8733copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8734
8735Fixed two problems with AcpiReallocateRootTable during the root table
8736copy.
8737When copying the root table to the new allocation, the length used was
8738incorrect. The new size was used instead of the current table size,
8739meaning
8740too much data was copied. Also, the count of available slots for ACPI
8741tables
8742was not set correctly. Alexey Starikovskiy, Bob Moore.
8743
8744Example Code and Data Size: These are the sizes for the OS-independent
8745acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8746debug version of the code includes the debug output trace mechanism and
8747has a
8748much larger code and data size.
8749
8750  Previous Release:
8751    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8752    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8753  Current Release:
8754    Non-Debug Version:  87.9K Code, 18.6K Data, 106.5K Total
8755    Debug Version:     163.5K Code, 51.3K Data, 214.8K Total
8756
87572) iASL Compiler/Disassembler and Tools:
8758
8759iASL: Implement limited typechecking for values returned from predefined
8760control methods. The type of any returned static (unnamed) object is now
8761validated. For example, Return(1). ACPICA BZ 786.
8762
8763iASL: Fixed a predefined name object verification regression. Fixes a
8764problem
8765introduced in version 20100304. An error is incorrectly generated if a
8766predefined name is declared as a static named object with a value defined
8767using the keywords "Zero", "One", or "Ones". Lin Ming.
8768
8769iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8770by
8771reducing the requested registry access rights. ACPICA BZ 842.
8772
8773Disassembler: fixed a possible fault when generating External()
8774statements.
8775Introduced in commit ae7d6fd: Properly handle externals with parent-
8776prefix
8777(carat). Fixes a string length allocation calculation. Lin Ming.
8778
8779----------------------------------------
878004 March 2010. Summary of changes for version 20100304:
8781
87821) ACPI CA Core Subsystem:
8783
8784Fixed a possible problem with the AML Mutex handling function
8785AcpiExReleaseMutex where the function could fault under the very rare
8786condition when the interpreter has blocked, the interpreter lock is
8787released,
8788the interpreter is then reentered via the same thread, and attempts to
8789acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8790Lin
8791Ming.
8792
8793Implemented additional configuration support for the AML "Debug Object".
8794Output from the debug object can now be enabled via a global variable,
8795AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8796debugging.
8797This debug output is now available in the release version of ACPICA
8798instead
8799of just the debug version. Also, the entire debug output module can now
8800be
8801configured out of the ACPICA build if desired. One new file added,
8802executer/exdebug.c. Lin Ming, Bob Moore.
8803
8804Added header support for the ACPI MCHI table (Management Controller Host
8805Interface Table). This table was added in ACPI 4.0, but the defining
8806document
8807has only recently become available.
8808
8809Standardized output of integer values for ACPICA warnings/errors. Always
8810use
88110x prefix for hex output, always use %u for unsigned integer decimal
8812output.
8813Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8814400
8815invocations.) These invocations were converted from the original
8816ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8817
8818Example Code and Data Size: These are the sizes for the OS-independent
8819acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8820debug version of the code includes the debug output trace mechanism and
8821has a
8822much larger code and data size.
8823
8824  Previous Release:
8825    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8826    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8827  Current Release:
8828    Non-Debug Version:  87.5K Code, 18.4K Data, 105.9K Total
8829    Debug Version:     163.4K Code, 51.1K Data, 214.5K Total
8830
88312) iASL Compiler/Disassembler and Tools:
8832
8833iASL: Implemented typechecking support for static (non-control method)
8834predefined named objects that are declared with the Name() operator. For
8835example, the type of this object is now validated to be of type Integer:
8836Name(_BBN, 1). This change migrates the compiler to using the core
8837predefined
8838name table instead of maintaining a local version. Added a new file,
8839aslpredef.c. ACPICA BZ 832.
8840
8841Disassembler: Added support for the ACPI 4.0 MCHI table.
8842
8843----------------------------------------
884421 January 2010. Summary of changes for version 20100121:
8845
88461) ACPI CA Core Subsystem:
8847
8848Added the 2010 copyright to all module headers and signons. This affects
8849virtually every file in the ACPICA core subsystem, the iASL compiler, the
8850tools/utilities, and the test suites.
8851
8852Implemented a change to the AcpiGetDevices interface to eliminate
8853unnecessary
8854invocations of the _STA method. In the case where a specific _HID is
8855requested, do not run _STA until a _HID match is found. This eliminates
8856potentially dozens of _STA calls during a search for a particular
8857device/HID,
8858which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8859
8860Implemented an additional repair for predefined method return values.
8861Attempt
8862to repair unexpected NULL elements within returned Package objects.
8863Create
8864an
8865Integer of value zero, a NULL String, or a zero-length Buffer as
8866appropriate.
8867ACPICA BZ 818. Lin Ming, Bob Moore.
8868
8869Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8870the
8871code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8872(with
887364-bit AML integers). It is now obsolete and this change removes it from
8874the
8875ACPICA code base, replaced by UINT64. The original typedef has been
8876retained
8877for now for compatibility with existing device driver code. ACPICA BZ
8878824.
8879
8880Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8881in
8882the parse tree object.
8883
8884Added additional warning options for the gcc-4 generation. Updated the
8885source
8886accordingly. This includes some code restructuring to eliminate
8887unreachable
8888code, elimination of some gotos, elimination of unused return values,
8889some
8890additional casting, and removal of redundant declarations.
8891
8892Example Code and Data Size: These are the sizes for the OS-independent
8893acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8894debug version of the code includes the debug output trace mechanism and
8895has a
8896much larger code and data size.
8897
8898  Previous Release:
8899    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8900    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8901  Current Release:
8902    Non-Debug Version:  87.1K Code, 18.0K Data, 105.1K Total
8903    Debug Version:     163.5K Code, 50.9K Data, 214.4K Total
8904
89052) iASL Compiler/Disassembler and Tools:
8906
8907No functional changes for this release.
8908
8909----------------------------------------
891014 December 2009. Summary of changes for version 20091214:
8911
89121) ACPI CA Core Subsystem:
8913
8914Enhanced automatic data type conversions for predefined name repairs.
8915This
8916change expands the automatic repairs/conversions for predefined name
8917return
8918values to make Integers, Strings, and Buffers fully interchangeable.
8919Also,
8920a
8921Buffer can be converted to a Package of Integers if necessary. The
8922nsrepair.c
8923module was completely restructured. Lin Ming, Bob Moore.
8924
8925Implemented automatic removal of null package elements during predefined
8926name
8927repairs. This change will automatically remove embedded and trailing NULL
8928package elements from returned package objects that are defined to
8929contain
8930a
8931variable number of sub-packages. The driver is then presented with a
8932package
8933with no null elements to deal with. ACPICA BZ 819.
8934
8935Implemented a repair for the predefined _FDE and _GTM names. The expected
8936return value for both names is a Buffer of 5 DWORDs. This repair fixes
8937two
8938possible problems (both seen in the field), where a package of integers
8939is
8940returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8941Kim.
8942
8943Implemented additional module-level code support. This change will
8944properly
8945execute module-level code that is not at the root of the namespace (under
8946a
8947Device object, etc.). Now executes the code within the current scope
8948instead
8949of the root. ACPICA BZ 762. Lin Ming.
8950
8951Fixed possible mutex acquisition errors when running _REG methods. Fixes
8952a
8953problem where mutex errors can occur when running a _REG method that is
8954in
8955the same scope as a method-defined operation region or an operation
8956region
8957under a module-level IF block. This type of code is rare, so the problem
8958has
8959not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8960
8961Fixed a possible memory leak during module-level code execution. An
8962object
8963could be leaked for each block of executed module-level code if the
8964interpreter slack mode is enabled This change deletes any implicitly
8965returned
8966object from the module-level code block. Lin Ming.
8967
8968Removed messages for successful predefined repair(s). The repair
8969mechanism
8970was considered too wordy. Now, messages are only unconditionally emitted
8971if
8972the return object cannot be repaired. Existing messages for successful
8973repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8974827.
8975
8976Example Code and Data Size: These are the sizes for the OS-independent
8977acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8978debug version of the code includes the debug output trace mechanism and
8979has a
8980much larger code and data size.
8981
8982  Previous Release:
8983    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
8984    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
8985  Current Release:
8986    Non-Debug Version:  87.0K Code, 18.0K Data, 105.0K Total
8987    Debug Version:     163.4K Code, 50.8K Data, 214.2K Total
8988
89892) iASL Compiler/Disassembler and Tools:
8990
8991iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8992files
8993were no longer automatically removed at the termination of the compile.
8994
8995acpiexec: Implemented the -f option to specify default region fill value.
8996This option specifies the value used to initialize buffers that simulate
8997operation regions. Default value is zero. Useful for debugging problems
8998that
8999depend on a specific initial value for a region or field.
9000
9001----------------------------------------
900212 November 2009. Summary of changes for version 20091112:
9003
90041) ACPI CA Core Subsystem:
9005
9006Implemented a post-order callback to AcpiWalkNamespace. The existing
9007interface only has a pre-order callback. This change adds an additional
9008parameter for a post-order callback which will be more useful for bus
9009scans.
9010ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
9011
9012Modified the behavior of the operation region memory mapping cache for
9013SystemMemory. Ensure that the memory mappings created for operation
9014regions
9015do not cross 4K page boundaries. Crossing a page boundary while mapping
9016regions can cause kernel warnings on some hosts if the pages have
9017different
9018attributes. Such regions are probably BIOS bugs, and this is the
9019workaround.
9020Linux BZ 14445. Lin Ming.
9021
9022Implemented an automatic repair for predefined methods that must return
9023sorted lists. This change will repair (by sorting) packages returned by
9024_ALR,
9025_PSS, and _TSS. Drivers can now assume that the packages are correctly
9026sorted
9027and do not contain NULL package elements. Adds one new file,
9028namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
9029
9030Fixed a possible fault during predefined name validation if a return
9031Package
9032object contains NULL elements. Also adds a warning if a NULL element is
9033followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
9034may
9035include repair or removal of all such NULL elements where possible.
9036
9037Implemented additional module-level executable AML code support. This
9038change
9039will execute module-level code that is not at the root of the namespace
9040(under a Device object, etc.) at table load time. Module-level executable
9041AML
9042code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
9043
9044Implemented a new internal function to create Integer objects. This
9045function
9046simplifies miscellaneous object creation code. ACPICA BZ 823.
9047
9048Reduced the severity of predefined repair messages, Warning to Info.
9049Since
9050the object was successfully repaired, a warning is too severe. Reduced to
9051an
9052info message for now. These messages may eventually be changed to debug-
9053only.
9054ACPICA BZ 812.
9055
9056Example Code and Data Size: These are the sizes for the OS-independent
9057acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9058debug version of the code includes the debug output trace mechanism and
9059has a
9060much larger code and data size.
9061
9062  Previous Release:
9063    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
9064    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
9065  Current Release:
9066    Non-Debug Version:  86.6K Code, 18.2K Data, 104.8K Total
9067    Debug Version:     162.7K Code, 50.8K Data, 213.5K Total
9068
90692) iASL Compiler/Disassembler and Tools:
9070
9071iASL: Implemented Switch() with While(1) so that Break works correctly.
9072This
9073change correctly implements the Switch operator with a surrounding
9074While(1)
9075so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
9076
9077iASL: Added a message if a package initializer list is shorter than
9078package
9079length. Adds a new remark for a Package() declaration if an initializer
9080list
9081exists, but is shorter than the declared length of the package. Although
9082technically legal, this is probably a coding error and it is seen in the
9083field. ACPICA BZ 815. Lin Ming, Bob Moore.
9084
9085iASL: Fixed a problem where the compiler could fault after the maximum
9086number
9087of errors was reached (200).
9088
9089acpixtract: Fixed a possible warning for pointer cast if the compiler
9090warning
9091level set very high.
9092
9093----------------------------------------
909413 October 2009. Summary of changes for version 20091013:
9095
90961) ACPI CA Core Subsystem:
9097
9098Fixed a problem where an Operation Region _REG method could be executed
9099more
9100than once. If a custom address space handler is installed by the host
9101before
9102the "initialize operation regions" phase of the ACPICA initialization,
9103any
9104_REG methods for that address space could be executed twice. This change
9105fixes the problem. ACPICA BZ 427. Lin Ming.
9106
9107Fixed a possible memory leak for the Scope() ASL operator. When the exact
9108invocation of "Scope(\)" is executed (change scope to root), one internal
9109operand object was leaked. Lin Ming.
9110
9111Implemented a run-time repair for the _MAT predefined method. If the _MAT
9112return value is defined as a Field object in the AML, and the field
9113size is less than or equal to the default width of an integer (32 or
911464),_MAT
9115can incorrectly return an Integer instead of a Buffer. ACPICA now
9116automatically repairs this problem. ACPICA BZ 810.
9117
9118Implemented a run-time repair for the _BIF and _BIX predefined methods.
9119The
9120"OEM Information" field is often incorrectly returned as an Integer with
9121value zero if the field is not supported by the platform. This is due to
9122an
9123ambiguity in the ACPI specification. The field should always be a string.
9124ACPICA now automatically repairs this problem by returning a NULL string
9125within the returned Package. ACPICA BZ 807.
9126
9127Example Code and Data Size: These are the sizes for the OS-independent
9128acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9129debug version of the code includes the debug output trace mechanism and
9130has a
9131much larger code and data size.
9132
9133  Previous Release:
9134    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
9135    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
9136  Current Release:
9137    Non-Debug Version:  85.8K Code, 18.0K Data, 103.8K Total
9138    Debug Version:     161.8K Code, 50.6K Data, 212.4K Total
9139
91402) iASL Compiler/Disassembler and Tools:
9141
9142Disassembler: Fixed a problem where references to external symbols that
9143contained one or more parent-prefixes (carats) were not handled
9144correctly,
9145possibly causing a fault. ACPICA BZ 806. Lin Ming.
9146
9147Disassembler: Restructured the code so that all functions that handle
9148external symbols are in a single module. One new file is added,
9149common/dmextern.c.
9150
9151AML Debugger: Added a max count argument for the Batch command (which
9152executes multiple predefined methods within the namespace.)
9153
9154iASL: Updated the compiler documentation (User Reference.) Available at
9155http://www.acpica.org/documentation/. ACPICA BZ 750.
9156
9157AcpiXtract: Updated for Lint and other formatting changes. Close all open
9158files.
9159
9160----------------------------------------
916103 September 2009. Summary of changes for version 20090903:
9162
91631) ACPI CA Core Subsystem:
9164
9165For Windows Vista compatibility, added the automatic execution of an _INI
9166method located at the namespace root (\_INI). This method is executed at
9167table load time. This support is in addition to the automatic execution
9168of
9169\_SB._INI. Lin Ming.
9170
9171Fixed a possible memory leak in the interpreter for AML package objects
9172if
9173the package initializer list is longer than the defined size of the
9174package.
9175This apparently can only happen if the BIOS changes the package size on
9176the
9177fly (seen in a _PSS object), as ASL compilers do not allow this. The
9178interpreter will truncate the package to the defined size (and issue an
9179error
9180message), but previously could leave the extra objects undeleted if they
9181were
9182pre-created during the argument processing (such is the case if the
9183package
9184consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
9185
9186Fixed a problem seen when a Buffer or String is stored to itself via ASL.
9187This has been reported in the field. Previously, ACPICA would zero out
9188the
9189buffer/string. Now, the operation is treated as a noop. Provides Windows
9190compatibility. ACPICA BZ 803. Lin Ming.
9191
9192Removed an extraneous error message for ASL constructs of the form
9193Store(LocalX,LocalX) when LocalX is uninitialized. These curious
9194statements
9195are seen in many BIOSs and are once again treated as NOOPs and no error
9196is
9197emitted when they are encountered. ACPICA BZ 785.
9198
9199Fixed an extraneous warning message if a _DSM reserved method returns a
9200Package object. _DSM can return any type of object, so validation on the
9201return type cannot be performed. ACPICA BZ 802.
9202
9203Example Code and Data Size: These are the sizes for the OS-independent
9204acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9205debug version of the code includes the debug output trace mechanism and
9206has a
9207much larger code and data size.
9208
9209  Previous Release:
9210    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
9211    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
9212  Current Release:
9213    Non-Debug Version:  85.6K Code, 18.0K Data, 103.6K Total
9214    Debug Version:     161.7K Code, 50.9K Data, 212.6K Total
9215
92162) iASL Compiler/Disassembler and Tools:
9217
9218iASL: Fixed a problem with the use of the Alias operator and Resource
9219Templates. The correct alias is now constructed and no error is emitted.
9220ACPICA BZ 738.
9221
9222iASL: Implemented the -I option to specify additional search directories
9223for
9224include files. Allows multiple additional search paths for include files.
9225Directories are searched in the order specified on the command line
9226(after
9227the local directory is searched.) ACPICA BZ 800.
9228
9229iASL: Fixed a problem where the full pathname for include files was not
9230emitted for warnings/errors. This caused the IDE support to not work
9231properly. ACPICA BZ 765.
9232
9233iASL: Implemented the -@ option to specify a Windows-style response file
9234containing additional command line options. ACPICA BZ 801.
9235
9236AcpiExec: Added support to load multiple AML files simultaneously (such
9237as
9238a
9239DSDT and multiple SSDTs). Also added support for wildcards within the AML
9240pathname. These features allow all machine tables to be easily loaded and
9241debugged together. ACPICA BZ 804.
9242
9243Disassembler: Added missing support for disassembly of HEST table Error
9244Bank
9245subtables.
9246
9247----------------------------------------
924830 July 2009. Summary of changes for version 20090730:
9249
9250The ACPI 4.0 implementation for ACPICA is complete with this release.
9251
92521) ACPI CA Core Subsystem:
9253
9254ACPI 4.0: Added header file support for all new and changed ACPI tables.
9255Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
9256new
9257for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
9258BERT,
9259EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
9260There
9261have been some ACPI 4.0 changes to other existing tables. Split the large
9262actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
9263
9264ACPI 4.0: Implemented predefined name validation for all new names. There
9265are
926631 new names in ACPI 4.0. The predefined validation module was split into
9267two
9268files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
9269
9270Implemented support for so-called "module-level executable code". This is
9271executable AML code that exists outside of any control method and is
9272intended
9273to be executed at table load time. Although illegal since ACPI 2.0, this
9274type
9275of code still exists and is apparently still being created. Blocks of
9276this
9277code are now detected and executed as intended. Currently, the code
9278blocks
9279must exist under either an If, Else, or While construct; these are the
9280typical cases seen in the field. ACPICA BZ 762. Lin Ming.
9281
9282Implemented an automatic dynamic repair for predefined names that return
9283nested Package objects. This applies to predefined names that are defined
9284to
9285return a variable-length Package of sub-packages. If the number of sub-
9286packages is one, BIOS code is occasionally seen that creates a simple
9287single
9288package with no sub-packages. This code attempts to fix the problem by
9289wrapping a new package object around the existing package. These methods
9290can
9291be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
9292BZ
9293790.
9294
9295Fixed a regression introduced in 20090625 for the AcpiGetDevices
9296interface.
9297The _HID/_CID matching was broken and no longer matched IDs correctly.
9298ACPICA
9299BZ 793.
9300
9301Fixed a problem with AcpiReset where the reset would silently fail if the
9302register was one of the protected I/O ports. AcpiReset now bypasses the
9303port
9304validation mechanism. This may eventually be driven into the
9305AcpiRead/Write
9306interfaces.
9307
9308Fixed a regression related to the recent update of the AcpiRead/Write
9309interfaces. A sleep/suspend could fail if the optional PM2 Control
9310register
9311does not exist during an attempt to write the Bus Master Arbitration bit.
9312(However, some hosts already delete the code that writes this bit, and
9313the
9314code may in fact be obsolete at this date.) ACPICA BZ 799.
9315
9316Fixed a problem where AcpiTerminate could fault if inadvertently called
9317twice
9318in succession. ACPICA BZ 795.
9319
9320Example Code and Data Size: These are the sizes for the OS-independent
9321acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9322debug version of the code includes the debug output trace mechanism and
9323has a
9324much larger code and data size.
9325
9326  Previous Release:
9327    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9328    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9329  Current Release:
9330    Non-Debug Version:  85.5K Code, 18.0K Data, 103.5K Total
9331    Debug Version:     161.6K Code, 50.9K Data, 212.5K Total
9332
93332) iASL Compiler/Disassembler and Tools:
9334
9335ACPI 4.0: Implemented disassembler support for all new ACPI tables and
9336changes to existing tables. ACPICA BZ 775.
9337
9338----------------------------------------
933925 June 2009. Summary of changes for version 20090625:
9340
9341The ACPI 4.0 Specification was released on June 16 and is available at
9342www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
9343continue for the next few releases.
9344
93451) ACPI CA Core Subsystem:
9346
9347ACPI 4.0: Implemented interpreter support for the IPMI operation region
9348address space. Includes support for bi-directional data buffers and an
9349IPMI
9350address space handler (to be installed by an IPMI device driver.) ACPICA
9351BZ
9352773. Lin Ming.
9353
9354ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
9355Includes
9356support in both the header files and the disassembler.
9357
9358Completed a major update for the AcpiGetObjectInfo external interface.
9359Changes include:
9360 - Support for variable, unlimited length HID, UID, and CID strings.
9361 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
9362etc.)
9363 - Call the _SxW power methods on behalf of a device object.
9364 - Determine if a device is a PCI root bridge.
9365 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
9366These changes will require an update to all callers of this interface.
9367See
9368the updated ACPICA Programmer Reference for details. One new source file
9369has
9370been added - utilities/utids.c. ACPICA BZ 368, 780.
9371
9372Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
9373transfers. The Value parameter has been extended from 32 bits to 64 bits
9374in
9375order to support new ACPI 4.0 tables. These changes will require an
9376update
9377to
9378all callers of these interfaces. See the ACPICA Programmer Reference for
9379details. ACPICA BZ 768.
9380
9381Fixed several problems with AcpiAttachData. The handler was not invoked
9382when
9383the host node was deleted. The data sub-object was not automatically
9384deleted
9385when the host node was deleted. The interface to the handler had an
9386unused
9387parameter, this was removed. ACPICA BZ 778.
9388
9389Enhanced the function that dumps ACPI table headers. All non-printable
9390characters in the string fields are now replaced with '?' (Signature,
9391OemId,
9392OemTableId, and CompilerId.) ACPI tables with non-printable characters in
9393these fields are occasionally seen in the field. ACPICA BZ 788.
9394
9395Fixed a problem with predefined method repair code where the code that
9396attempts to repair/convert an object of incorrect type is only executed
9397on
9398the first time the predefined method is called. The mechanism that
9399disables
9400warnings on subsequent calls was interfering with the repair mechanism.
9401ACPICA BZ 781.
9402
9403Fixed a possible memory leak in the predefined validation/repair code
9404when
9405a
9406buffer is automatically converted to an expected string object.
9407
9408Removed obsolete 16-bit files from the distribution and from the current
9409git
9410tree head. ACPICA BZ 776.
9411
9412Example Code and Data Size: These are the sizes for the OS-independent
9413acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9414debug version of the code includes the debug output trace mechanism and
9415has a
9416much larger code and data size.
9417
9418  Previous Release:
9419    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9420    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9421  Current Release:
9422    Non-Debug Version:  84.7K Code, 17.8K Data, 102.5K Total
9423    Debug Version:     160.5K Code, 50.6K Data, 211.1K Total
9424
94252) iASL Compiler/Disassembler and Tools:
9426
9427ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
9428operation region keyword. ACPICA BZ 771, 772. Lin Ming.
9429
9430ACPI 4.0: iASL - implemented compile-time validation support for all new
9431predefined names and control methods (31 total). ACPICA BZ 769.
9432
9433----------------------------------------
943421 May 2009. Summary of changes for version 20090521:
9435
94361) ACPI CA Core Subsystem:
9437
9438Disabled the preservation of the SCI enable bit in the PM1 control
9439register.
9440The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
9441to
9442be
9443a "preserved" bit - "OSPM always preserves this bit position", section
94444.7.3.2.1. However, some machines fail if this bit is in fact preserved
9445because the bit needs to be explicitly set by the OS as a workaround. No
9446machines fail if the bit is not preserved. Therefore, ACPICA no longer
9447attempts to preserve this bit.
9448
9449Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
9450incorrectly formed _PRT package could cause a fault. Added validation to
9451ensure that each package element is actually a sub-package.
9452
9453Implemented a new interface to install or override a single control
9454method,
9455AcpiInstallMethod. This interface is useful when debugging in order to
9456repair
9457an existing method or to install a missing method without having to
9458override
9459the entire ACPI table. See the ACPICA Programmer Reference for use and
9460examples. Lin Ming, Bob Moore.
9461
9462Fixed several reference count issues with the DdbHandle object that is
9463created from a Load or LoadTable operator. Prevent premature deletion of
9464the
9465object. Also, mark the object as invalid once the table has been
9466unloaded.
9467This is needed because the handle itself may not be deleted after the
9468table
9469unload, depending on whether it has been stored in a named object by the
9470caller. Lin Ming.
9471
9472Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
9473mutexes of the same sync level are acquired but then not released in
9474strict
9475opposite order, the internally maintained Current Sync Level becomes
9476confused
9477and can cause subsequent execution errors. ACPICA BZ 471.
9478
9479Changed the allowable release order for ASL mutex objects. The ACPI 4.0
9480specification has been changed to make the SyncLevel for mutex objects
9481more
9482useful. When releasing a mutex, the SyncLevel of the mutex must now be
9483the
9484same as the current sync level. This makes more sense than the previous
9485rule
9486(SyncLevel less than or equal). This change updates the code to match the
9487specification.
9488
9489Fixed a problem with the local version of the AcpiOsPurgeCache function.
9490The
9491(local) cache must be locked during all cache object deletions. Andrew
9492Baumann.
9493
9494Updated the Load operator to use operation region interfaces. This
9495replaces
9496direct memory mapping with region access calls. Now, all region accesses
9497go
9498through the installed region handler as they should.
9499
9500Simplified and optimized the NsGetNextNode function. Reduced parameter
9501count
9502and reduced code for this frequently used function.
9503
9504Example Code and Data Size: These are the sizes for the OS-independent
9505acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9506debug version of the code includes the debug output trace mechanism and
9507has a
9508much larger code and data size.
9509
9510  Previous Release:
9511    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9512    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9513  Current Release:
9514    Non-Debug Version:  83.4K Code, 17.5K Data, 100.9K Total
9515    Debug Version:     158.9K Code, 50.0K Data, 208.9K Total
9516
95172) iASL Compiler/Disassembler and Tools:
9518
9519Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
9520problems
9521with sub-table disassembly and handling invalid sub-tables. Attempt
9522recovery
9523after an invalid sub-table ID.
9524
9525----------------------------------------
952622 April 2009. Summary of changes for version 20090422:
9527
95281) ACPI CA Core Subsystem:
9529
9530Fixed a compatibility issue with the recently released I/O port
9531protection
9532mechanism. For windows compatibility, 1) On a port protection violation,
9533simply ignore the request and do not return an exception (allow the
9534control
9535method to continue execution.) 2) If only part of the request overlaps a
9536protected port, read/write the individual ports that are not protected.
9537Linux
9538BZ 13036. Lin Ming
9539
9540Enhanced the execution of the ASL/AML BreakPoint operator so that it
9541actually
9542breaks into the AML debugger if the debugger is present. This matches the
9543ACPI-defined behavior.
9544
9545Fixed several possible warnings related to the use of the configurable
9546ACPI_THREAD_ID. This type can now be configured as either an integer or a
9547pointer with no warnings. Also fixes several warnings in printf-like
9548statements for the 64-bit build when the type is configured as a pointer.
9549ACPICA BZ 766, 767.
9550
9551Fixed a number of possible warnings when compiling with gcc 4+ (depending
9552on
9553warning options.) Examples include printf formats, aliasing, unused
9554globals,
9555missing prototypes, missing switch default statements, use of non-ANSI
9556library functions, use of non-ANSI constructs. See generate/unix/Makefile
9557for
9558a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
9559
9560Example Code and Data Size: These are the sizes for the OS-independent
9561acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9562debug version of the code includes the debug output trace mechanism and
9563has a
9564much larger code and data size.
9565
9566  Previous Release:
9567    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9568    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9569  Current Release:
9570    Non-Debug Version:  82.8K Code, 17.5K Data, 100.3K Total
9571    Debug Version:     158.0K Code, 49.9K Data, 207.9K Total
9572
95732) iASL Compiler/Disassembler and Tools:
9574
9575iASL: Fixed a generation warning from Bison 2.3 and fixed several
9576warnings
9577on
9578the 64-bit build.
9579
9580iASL: Fixed a problem where the Unix/Linux versions of the compiler could
9581not
9582correctly digest Windows/DOS formatted files (with CR/LF).
9583
9584iASL: Added a new option for "quiet mode" (-va) that produces only the
9585compilation summary, not individual errors and warnings. Useful for large
9586batch compilations.
9587
9588AcpiExec: Implemented a new option (-z) to enable a forced
9589semaphore/mutex
9590timeout that can be used to detect hang conditions during execution of
9591AML
9592code (includes both internal semaphores and AML-defined mutexes and
9593events.)
9594
9595Added new makefiles for the generation of acpica in a generic unix-like
9596environment. These makefiles are intended to generate the acpica tools
9597and
9598utilities from the original acpica git source tree structure.
9599
9600Test Suites: Updated and cleaned up the documentation files. Updated the
9601copyrights to 2009, affecting all source files. Use the new version of
9602iASL
9603with quiet mode. Increased the number of available semaphores in the
9604Windows
9605OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9606added
9607an alternate implementation of the semaphore timeout to allow aslts to
9608execute fully on Cygwin.
9609
9610----------------------------------------
961120 March 2009. Summary of changes for version 20090320:
9612
96131) ACPI CA Core Subsystem:
9614
9615Fixed a possible race condition between AcpiWalkNamespace and dynamic
9616table
9617unloads. Added a reader/writer locking mechanism to allow multiple
9618concurrent
9619namespace walks (readers), but block a dynamic table unload until it can
9620gain
9621exclusive write access to the namespace. This fixes a problem where a
9622table
9623unload could (possibly catastrophically) delete the portion of the
9624namespace
9625that is currently being examined by a walk. Adds a new file, utlock.c,
9626that
9627implements the reader/writer lock mechanism. ACPICA BZ 749.
9628
9629Fixed a regression introduced in version 20090220 where a change to the
9630FADT
9631handling could cause the ACPICA subsystem to access non-existent I/O
9632ports.
9633
9634Modified the handling of FADT register and table (FACS/DSDT) addresses.
9635The
9636FADT can contain both 32-bit and 64-bit versions of these addresses.
9637Previously, the 64-bit versions were favored, meaning that if both 32 and
963864
9639versions were valid, but not equal, the 64-bit version was used. This was
9640found to cause some machines to fail. Now, in this case, the 32-bit
9641version
9642is used instead. This now matches the Windows behavior.
9643
9644Implemented a new mechanism to protect certain I/O ports. Provides
9645Microsoft
9646compatibility and protects the standard PC I/O ports from access via AML
9647code. Adds a new file, hwvalid.c
9648
9649Fixed a possible extraneous warning message from the FADT support. The
9650message warns of a 32/64 length mismatch between the legacy and GAS
9651definitions for a register.
9652
9653Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9654is
9655made obsolete by the port protection mechanism above. It was previously
9656used
9657to validate the entire address range of an operation region, which could
9658be
9659incorrect if the range included illegal ports, but fields within the
9660operation region did not actually access those ports. Validation is now
9661performed on a per-field basis instead of the entire region.
9662
9663Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9664Ignored bits must be "preserved" according to the ACPI spec. Usually,
9665this
9666means a read/modify/write when writing to the register. However, for
9667status
9668registers, writing a one means clear the event. Writing a zero means
9669preserve
9670the event (do not clear.) This behavior is clarified in the ACPI 4.0
9671spec,
9672and the ACPICA code now simply always writes a zero to the ignored bit.
9673
9674Modified the handling of ignored bits for the PM1 A/B Control Registers.
9675As
9676per the ACPI specification, for the control registers, preserve
9677(read/modify/write) all bits that are defined as either reserved or
9678ignored.
9679
9680Updated the handling of write-only bits in the PM1 A/B Control Registers.
9681When reading the register, zero the write-only bits as per the ACPI spec.
9682ACPICA BZ 443. Lin Ming.
9683
9684Removed "Linux" from the list of supported _OSI strings. Linux no longer
9685wants to reply true to this request. The Windows strings are the only
9686paths
9687through the AML that are tested and known to work properly.
9688
9689  Previous Release:
9690    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9691    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9692  Current Release:
9693    Non-Debug Version:  82.6K Code, 17.6K Data, 100.2K Total
9694    Debug Version:     157.7K Code, 49.9K Data, 207.6K Total
9695
96962) iASL Compiler/Disassembler and Tools:
9697
9698Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9699and
9700aetables.c
9701
9702----------------------------------------
970320 February 2009. Summary of changes for version 20090220:
9704
97051) ACPI CA Core Subsystem:
9706
9707Optimized the ACPI register locking. Removed locking for reads from the
9708ACPI
9709bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9710is
9711not required when reading the single-bit registers. The
9712AcpiGetRegisterUnlocked function is no longer needed and has been
9713removed.
9714This will improve performance for reads on these registers. ACPICA BZ
9715760.
9716
9717Fixed the parameter validation for AcpiRead/Write. Now return
9718AE_BAD_PARAMETER if the input register pointer is null, and
9719AE_BAD_ADDRESS
9720if
9721the register has an address of zero. Previously, these cases simply
9722returned
9723AE_OK. For optional registers such as PM1B status/enable/control, the
9724caller
9725should check for a valid register address before calling. ACPICA BZ 748.
9726
9727Renamed the external ACPI bit register access functions. Renamed
9728AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9729functions. The new names are AcpiReadBitRegister and
9730AcpiWriteBitRegister.
9731Also, restructured the code for these functions by simplifying the code
9732path
9733and condensing duplicate code to reduce code size.
9734
9735Added new functions to transparently handle the possibly split PM1 A/B
9736registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9737functions
9738now handle the split registers for PM1 Status, Enable, and Control.
9739ACPICA
9740BZ
9741746.
9742
9743Added a function to handle the PM1 control registers,
9744AcpiHwWritePm1Control.
9745This function writes both of the PM1 control registers (A/B). These
9746registers
9747are different than the PM1 A/B status and enable registers in that
9748different
9749values can be written to the A/B registers. Most notably, the SLP_TYP
9750bits
9751can be different, as per the values returned from the _Sx predefined
9752methods.
9753
9754Removed an extra register write within AcpiHwClearAcpiStatus. This
9755function
9756was writing an optional PM1B status register twice. The existing call to
9757the
9758low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9759A/B
9760register. ACPICA BZ 751.
9761
9762Split out the PM1 Status registers from the FADT. Added new globals for
9763these
9764registers (A/B), similar to the way the PM1 Enable registers are handled.
9765Instead of overloading the FADT Event Register blocks. This makes the
9766code
9767clearer and less prone to error.
9768
9769Fixed the warning message for when the platform contains too many ACPI
9770tables
9771for the default size of the global root table data structure. The
9772calculation
9773for the truncation value was incorrect.
9774
9775Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9776obsolete macro, since it is now a simple reference to ->common.type.
9777There
9778were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9779
9780Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9781TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9782simply SLEEP_TYPE. ACPICA BZ 754.
9783
9784Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9785function is only needed on 64-bit host operating systems and is thus not
9786included for 32-bit hosts.
9787
9788Debug output: print the input and result for invocations of the _OSI
9789reserved
9790control method via the ACPI_LV_INFO debug level. Also, reduced some of
9791the
9792verbosity of this debug level. Len Brown.
9793
9794Example Code and Data Size: These are the sizes for the OS-independent
9795acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9796debug version of the code includes the debug output trace mechanism and
9797has a
9798much larger code and data size.
9799
9800  Previous Release:
9801    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9802    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9803  Current Release:
9804    Non-Debug Version:  82.0K Code, 17.5K Data,  99.5K Total
9805    Debug Version:     156.9K Code, 49.8K Data, 206.7K Total
9806
98072) iASL Compiler/Disassembler and Tools:
9808
9809Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9810various legal performance profiles.
9811
9812----------------------------------------
981323 January 2009. Summary of changes for version 20090123:
9814
98151) ACPI CA Core Subsystem:
9816
9817Added the 2009 copyright to all module headers and signons. This affects
9818virtually every file in the ACPICA core subsystem, the iASL compiler, and
9819the tools/utilities.
9820
9821Implemented a change to allow the host to override any ACPI table,
9822including
9823dynamically loaded tables. Previously, only the DSDT could be replaced by
9824the
9825host. With this change, the AcpiOsTableOverride interface is called for
9826each
9827table found in the RSDT/XSDT during ACPICA initialization, and also
9828whenever
9829a table is dynamically loaded via the AML Load operator.
9830
9831Updated FADT flag definitions, especially the Boot Architecture flags.
9832
9833Debugger: For the Find command, automatically pad the input ACPI name
9834with
9835underscores if the name is shorter than 4 characters. This enables a
9836match
9837with the actual namespace entry which is itself padded with underscores.
9838
9839Example Code and Data Size: These are the sizes for the OS-independent
9840acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9841debug version of the code includes the debug output trace mechanism and
9842has a
9843much larger code and data size.
9844
9845  Previous Release:
9846    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9847    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9848  Current Release:
9849    Non-Debug Version:  82.3K Code, 17.5K Data,  99.8K Total
9850    Debug Version:     157.3K Code, 49.8K Data, 207.1K Total
9851
98522) iASL Compiler/Disassembler and Tools:
9853
9854Fix build error under Bison-2.4.
9855
9856Disassembler: Enhanced FADT support. Added decoding of the Boot
9857Architecture
9858flags. Now decode all flags, regardless of the FADT version. Flag output
9859includes the FADT version which first defined each flag.
9860
9861The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9862and
9863DSDT). Windows only.
9864
9865----------------------------------------
986604 December 2008. Summary of changes for version 20081204:
9867
98681) ACPI CA Core Subsystem:
9869
9870The ACPICA Programmer Reference has been completely updated and revamped
9871for
9872this release. This includes updates to the external interfaces, OSL
9873interfaces, the overview sections, and the debugger reference.
9874
9875Several new ACPICA interfaces have been implemented and documented in the
9876programmer reference:
9877AcpiReset - Writes the reset value to the FADT-defined reset register.
9878AcpiDisableAllGpes - Disable all available GPEs.
9879AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9880AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9881AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9882AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9883AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9884
9885Most of the public ACPI hardware-related interfaces have been moved to a
9886new
9887file, components/hardware/hwxface.c
9888
9889Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9890register lengths within the FADT are now used, and the low level ACPI
9891register access no longer hardcodes the ACPI register lengths. Given that
9892there may be some risk in actually trusting the FADT register lengths, a
9893run-
9894time option was added to fall back to the default hardcoded lengths if
9895the
9896FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9897option is set to true for now, and a warning is issued if a suspicious
9898FADT
9899register length is overridden with the default value.
9900
9901Fixed a reference count issue in NsRepairObject. This problem was
9902introduced
9903in version 20081031 as part of a fix to repair Buffer objects within
9904Packages. Lin Ming.
9905
9906Added semaphore support to the Linux/Unix application OS-services layer
9907(OSL). ACPICA BZ 448. Lin Ming.
9908
9909Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9910will
9911be implemented in the OSL, or will binary semaphores be used instead.
9912
9913Example Code and Data Size: These are the sizes for the OS-independent
9914acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9915debug version of the code includes the debug output trace mechanism and
9916has a
9917much larger code and data size.
9918
9919  Previous Release:
9920    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
9921    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
9922  Current Release:
9923    Non-Debug Version:  82.3K Code, 17.4K Data,  99.7K Total
9924    Debug Version:     157.1K Code, 49.7K Data, 206.8K Total
9925
99262) iASL Compiler/Disassembler and Tools:
9927
9928iASL: Completed the '-e' option to include additional ACPI tables in
9929order
9930to
9931aid with disassembly and External statement generation. ACPICA BZ 742.
9932Lin
9933Ming.
9934
9935iASL: Removed the "named object in while loop" error. The compiler cannot
9936determine how many times a loop will execute. ACPICA BZ 730.
9937
9938Disassembler: Implemented support for FADT revision 2 (MS extension).
9939ACPICA
9940BZ 743.
9941
9942Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9943MCFG).
9944
9945----------------------------------------
994631 October 2008. Summary of changes for version 20081031:
9947
99481) ACPI CA Core Subsystem:
9949
9950Restructured the ACPICA header files into public/private. acpi.h now
9951includes
9952only the "public" acpica headers. All other acpica headers are "private"
9953and
9954should not be included by acpica users. One new file, accommon.h is used
9955to
9956include the commonly used private headers for acpica code generation.
9957Future
9958plans include moving all private headers to a new subdirectory.
9959
9960Implemented an automatic Buffer->String return value conversion for
9961predefined ACPI methods. For these methods (such as _BIF), added
9962automatic
9963conversion for return objects that are required to be a String, but a
9964Buffer
9965was found instead. This can happen when reading string battery data from
9966an
9967operation region, because it used to be difficult to convert the data
9968from
9969buffer to string from within the ASL. Ensures that the host OS is
9970provided
9971with a valid null-terminated string. Linux BZ 11822.
9972
9973Updated the FACS waking vector interfaces. Split
9974AcpiSetFirmwareWakingVector
9975into two: one for the 32-bit vector, another for the 64-bit vector. This
9976is
9977required because the host OS must setup the wake much differently for
9978each
9979vector (real vs. protected mode, etc.) and the interface itself should
9980not
9981be
9982deciding which vector to use. Also, eliminated the
9983GetFirmwareWakingVector
9984interface, as it served no purpose (only the firmware reads the vector,
9985OS
9986only writes the vector.) ACPICA BZ 731.
9987
9988Implemented a mechanism to escape infinite AML While() loops. Added a
9989loop
9990counter to force exit from AML While loops if the count becomes too
9991large.
9992This can occur in poorly written AML when the hardware does not respond
9993within a while loop and the loop does not implement a timeout. The
9994maximum
9995loop count is configurable. A new exception code is returned when a loop
9996is
9997broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9998
9999Optimized the execution of AML While loops. Previously, a control state
10000object was allocated and freed for each execution of the loop. The
10001optimization is to simply reuse the control state for each iteration.
10002This
10003speeds up the raw loop execution time by about 5%.
10004
10005Enhanced the implicit return mechanism. For Windows compatibility, return
10006an
10007implicit integer of value zero for methods that contain no executable
10008code.
10009Such methods are seen in the field as stubs (presumably), and can cause
10010drivers to fail if they expect a return value. Lin Ming.
10011
10012Allow multiple backslashes as root prefixes in namepaths. In a fully
10013qualified namepath, allow multiple backslash prefixes. This can happen
10014(and
10015is seen in the field) because of the use of a double-backslash in strings
10016(since backslash is the escape character) causing confusion. ACPICA BZ
10017739
10018Lin Ming.
10019
10020Emit a warning if two different FACS or DSDT tables are discovered in the
10021FADT. Checks if there are two valid but different addresses for the FACS
10022and
10023DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
10024
10025Consolidated the method argument count validation code. Merged the code
10026that
10027validates control method argument counts into the predefined validation
10028module. Eliminates possible multiple warnings for incorrect argument
10029counts.
10030
10031Implemented ACPICA example code. Includes code for ACPICA initialization,
10032handler installation, and calling a control method. Available at
10033source/tools/examples.
10034
10035Added a global pointer for FACS table to simplify internal FACS access.
10036Use
10037the global pointer instead of using AcpiGetTableByIndex for each FACS
10038access.
10039This simplifies the code for the Global Lock and the Firmware Waking
10040Vector(s).
10041
10042Example Code and Data Size: These are the sizes for the OS-independent
10043acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10044debug version of the code includes the debug output trace mechanism and
10045has a
10046much larger code and data size.
10047
10048  Previous Release:
10049    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
10050    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
10051  Current Release:
10052    Non-Debug Version:  81.7K Code, 17.3K Data,  99.0K Total
10053    Debug Version:     156.4K Code, 49.4K Data, 205.8K Total
10054
100552) iASL Compiler/Disassembler and Tools:
10056
10057iASL: Improved disassembly of external method calls. Added the -e option
10058to
10059allow the inclusion of additional ACPI tables to help with the
10060disassembly
10061of
10062method invocations and the generation of external declarations during the
10063disassembly. Certain external method invocations cannot be disassembled
10064properly without the actual declaration of the method. Use the -e option
10065to
10066include the table where the external method(s) are actually declared.
10067Most
10068useful for disassembling SSDTs that make method calls back to the master
10069DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT:  iasl
10070-d
10071-e dsdt.aml ssdt1.aml
10072
10073iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
10074problem where the use of an alias within a namepath would result in a not
10075found error or cause the compiler to fault. Also now allows forward
10076references from the Alias operator itself. ACPICA BZ 738.
10077
10078----------------------------------------
1007926 September 2008. Summary of changes for version 20080926:
10080
100811) ACPI CA Core Subsystem:
10082
10083Designed and implemented a mechanism to validate predefined ACPI methods
10084and
10085objects. This code validates the predefined ACPI objects (objects whose
10086names
10087start with underscore) that appear in the namespace, at the time they are
10088evaluated. The argument count and the type of the returned object are
10089validated against the ACPI specification. The purpose of this validation
10090is
10091to detect problems with the BIOS-implemented predefined ACPI objects
10092before
10093the results are returned to the ACPI-related drivers. Future enhancements
10094may
10095include actual repair of incorrect return objects where possible. Two new
10096files are nspredef.c and acpredef.h.
10097
10098Fixed a fault in the AML parser if a memory allocation fails during the
10099Op
10100completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
10101
10102Fixed an issue with implicit return compatibility. This change improves
10103the
10104implicit return mechanism to be more compatible with the MS interpreter.
10105Lin
10106Ming, ACPICA BZ 349.
10107
10108Implemented support for zero-length buffer-to-string conversions. Allow
10109zero
10110length strings during interpreter buffer-to-string conversions. For
10111example,
10112during the ToDecimalString and ToHexString operators, as well as implicit
10113conversions. Fiodor Suietov, ACPICA BZ 585.
10114
10115Fixed two possible memory leaks in the error exit paths of
10116AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
10117are
10118similar in that they use a stack of state objects in order to eliminate
10119recursion. The stack must be fully unwound and deallocated if an error
10120occurs. Lin Ming. ACPICA BZ 383.
10121
10122Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
10123global
10124ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
10125Moore ACPICA BZ 442.
10126
10127Removed the obsolete version number in module headers. Removed the
10128"$Revision" number that appeared in each module header. This version
10129number
10130was useful under SourceSafe and CVS, but has no meaning under git. It is
10131not
10132only incorrect, it could also be misleading.
10133
10134Example Code and Data Size: These are the sizes for the OS-independent
10135acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10136debug version of the code includes the debug output trace mechanism and
10137has a
10138much larger code and data size.
10139
10140  Previous Release:
10141    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10142    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
10143  Current Release:
10144    Non-Debug Version:  81.2K Code, 17.0K Data,  98.2K Total
10145    Debug Version:     155.8K Code, 49.1K Data, 204.9K Total
10146
10147----------------------------------------
1014829 August 2008. Summary of changes for version 20080829:
10149
101501) ACPI CA Core Subsystem:
10151
10152Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
10153Reference. Changes include the elimination of cheating on the Object
10154field
10155for the DdbHandle subtype, addition of a reference class field to
10156differentiate the various reference types (instead of an AML opcode), and
10157the
10158cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
10159
10160Reduce an error to a warning for an incorrect method argument count.
10161Previously aborted with an error if too few arguments were passed to a
10162control method via the external ACPICA interface. Now issue a warning
10163instead
10164and continue. Handles the case where the method inadvertently declares
10165too
10166many arguments, but does not actually use the extra ones. Applies mainly
10167to
10168the predefined methods. Lin Ming. Linux BZ 11032.
10169
10170Disallow the evaluation of named object types with no intrinsic value.
10171Return
10172AE_TYPE for objects that have no value and therefore evaluation is
10173undefined:
10174Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
10175of
10176these types were allowed, but an exception would be generated at some
10177point
10178during the evaluation. Now, the error is generated up front.
10179
10180Fixed a possible memory leak in the AcpiNsGetExternalPathname function
10181(nsnames.c). Fixes a leak in the error exit path.
10182
10183Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
10184debug
10185levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
10186ACPI_EXCEPTION
10187interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
10188ACPI_LV_EVENTS.
10189
10190Removed obsolete and/or unused exception codes from the acexcep.h header.
10191There is the possibility that certain device drivers may be affected if
10192they
10193use any of these exceptions.
10194
10195The ACPICA documentation has been added to the public git source tree,
10196under
10197acpica/documents. Included are the ACPICA programmer reference, the iASL
10198compiler reference, and the changes.txt release logfile.
10199
10200Example Code and Data Size: These are the sizes for the OS-independent
10201acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10202debug version of the code includes the debug output trace mechanism and
10203has a
10204much larger code and data size.
10205
10206  Previous Release:
10207    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10208    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
10209  Current Release:
10210    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10211    Debug Version:     153.7K Code, 48.2K Data, 201.9K Total
10212
102132) iASL Compiler/Disassembler and Tools:
10214
10215Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
10216defines _SCP with 3 arguments. Previous versions defined it with only 1
10217argument. iASL now allows both definitions.
10218
10219iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
10220zero-
10221length subtables when disassembling ACPI tables. Also fixed a couple of
10222errors where a full 16-bit table type field was not extracted from the
10223input
10224properly.
10225
10226acpisrc: Improve comment counting mechanism for generating source code
10227statistics. Count first and last lines of multi-line comments as
10228whitespace,
10229not comment lines. Handle Linux legal header in addition to standard
10230acpica
10231header.
10232
10233----------------------------------------
10234
1023529 July 2008. Summary of changes for version 20080729:
10236
102371) ACPI CA Core Subsystem:
10238
10239Fix a possible deadlock in the GPE dispatch. Remove call to
10240AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
10241attempt
10242to acquire the GPE lock but can deadlock since the GPE lock is already
10243held
10244at dispatch time. This code was introduced in version 20060831 as a
10245response
10246to Linux BZ 6881 and has since been removed from Linux.
10247
10248Add a function to dereference returned reference objects. Examines the
10249return
10250object from a call to AcpiEvaluateObject. Any Index or RefOf references
10251are
10252automatically dereferenced in an attempt to return something useful
10253(these
10254reference types cannot be converted into an external ACPI_OBJECT.)
10255Provides
10256MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
10257
10258x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
10259subtables for the MADT and one new subtable for the SRAT. Includes
10260disassembler and AcpiSrc support. Data from the Intel 64 Architecture
10261x2APIC
10262Specification, June 2008.
10263
10264Additional error checking for pathname utilities. Add error check after
10265all
10266calls to AcpiNsGetPathnameLength. Add status return from
10267AcpiNsBuildExternalPath and check after all calls. Add parameter
10268validation
10269to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
10270
10271Return status from the global init function AcpiUtGlobalInitialize. This
10272is
10273used by both the kernel subsystem and the utilities such as iASL
10274compiler.
10275The function could possibly fail when the caches are initialized. Yang
10276Yi.
10277
10278Add a function to decode reference object types to strings. Created for
10279improved error messages.
10280
10281Improve object conversion error messages. Better error messages during
10282object
10283conversion from internal to the external ACPI_OBJECT. Used for external
10284calls
10285to AcpiEvaluateObject.
10286
10287Example Code and Data Size: These are the sizes for the OS-independent
10288acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10289debug version of the code includes the debug output trace mechanism and
10290has a
10291much larger code and data size.
10292
10293  Previous Release:
10294    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
10295    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10296  Current Release:
10297    Non-Debug Version:  79.7K Code, 16.4K Data,  96.1K Total
10298    Debug Version:     153.9K Code, 48.4K Data, 202.3K Total
10299
103002) iASL Compiler/Disassembler and Tools:
10301
10302Debugger: fix a possible hang when evaluating non-methods. Fixes a
10303problem
10304introduced in version 20080701. If the object being evaluated (via
10305execute
10306command) is not a method, the debugger can hang while trying to obtain
10307non-
10308existent parameters.
10309
10310iASL: relax error for using reserved "_T_x" identifiers. These names can
10311appear in a disassembled ASL file if they were emitted by the original
10312compiler. Instead of issuing an error or warning and forcing the user to
10313manually change these names, issue a remark instead.
10314
10315iASL: error if named object created in while loop. Emit an error if any
10316named
10317object is created within a While loop. If allowed, this code will
10318generate
10319a
10320run-time error on the second iteration of the loop when an attempt is
10321made
10322to
10323create the same named object twice. ACPICA bugzilla 730.
10324
10325iASL: Support absolute pathnames for include files. Add support for
10326absolute
10327pathnames within the Include operator. previously, only relative
10328pathnames
10329were supported.
10330
10331iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
10332Descriptor.
10333The ACPI spec requires one interrupt minimum. BZ 423
10334
10335iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
10336Handles the case for the Interrupt Resource Descriptor where
10337the ResourceSource argument is omitted but ResourceSourceIndex
10338is present. Now leave room for the Index. BZ 426
10339
10340iASL: Prevent error message if CondRefOf target does not exist. Fixes
10341cases
10342where an error message is emitted if the target does not exist. BZ 516
10343
10344iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
10345(get ACPI tables on Windows). This was apparently broken in version
1034620070919.
10347
10348AcpiXtract: Handle EOF while extracting data. Correctly handle the case
10349where
10350the EOF happens immediately after the last table in the input file. Print
10351completion message. Previously, no message was displayed in this case.
10352
10353----------------------------------------
1035401 July 2008. Summary of changes for version 20080701:
10355
103560) Git source tree / acpica.org
10357
10358Fixed a problem where a git-clone from http would not transfer the entire
10359source tree.
10360
103611) ACPI CA Core Subsystem:
10362
10363Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
10364enable bit. Now performs a read-change-write of the enable register
10365instead
10366of simply writing out the cached enable mask. This will prevent
10367inadvertent
10368enabling of GPEs if a rogue GPE is received during initialization (before
10369GPE
10370handlers are installed.)
10371
10372Implemented a copy for dynamically loaded tables. Previously, dynamically
10373loaded tables were simply mapped - but on some machines this memory is
10374corrupted after suspend. Now copy the table to a local buffer. For the
10375OpRegion case, added checksum verify. Use the table length from the table
10376header, not the region length. For the Buffer case, use the table length
10377also. Dennis Noordsij, Bob Moore. BZ 10734
10378
10379Fixed a problem where the same ACPI table could not be dynamically loaded
10380and
10381unloaded more than once. Without this change, a table cannot be loaded
10382again
10383once it has been loaded/unloaded one time. The current mechanism does not
10384unregister a table upon an unload. During a load, if the same table is
10385found,
10386this no longer returns an exception. BZ 722
10387
10388Fixed a problem where the wrong descriptor length was calculated for the
10389EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
10390EndTag
10391are calculated as 12 bytes long, but the actual length in the internal
10392descriptor is 16 because of the round-up to 8 on the 64-bit build.
10393Reported
10394by Linn Crosetto. BZ 728
10395
10396Fixed a possible memory leak in the Unload operator. The DdbHandle
10397returned
10398by Load() did not have its reference count decremented during unload,
10399leading
10400to a memory leak. Lin Ming. BZ 727
10401
10402Fixed a possible memory leak when deleting thermal/processor objects. Any
10403associated notify handlers (and objects) were not being deleted. Fiodor
10404Suietov. BZ 506
10405
10406Fixed the ordering of the ASCII names in the global mutex table to match
10407the
10408actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
10409only.
10410Vegard Nossum. BZ 726
10411
10412Enhanced the AcpiGetObjectInfo interface to return the number of required
10413arguments if the object is a control method. Added this call to the
10414debugger
10415so the proper number of default arguments are passed to a method. This
10416prevents a warning when executing methods from AcpiExec.
10417
10418Added a check for an invalid handle in AcpiGetObjectInfo. Return
10419AE_BAD_PARAMETER if input handle is invalid. BZ 474
10420
10421Fixed an extraneous warning from exconfig.c on the 64-bit build.
10422
10423Example Code and Data Size: These are the sizes for the OS-independent
10424acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10425debug version of the code includes the debug output trace mechanism and
10426has a
10427much larger code and data size.
10428
10429  Previous Release:
10430    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10431    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10432  Current Release:
10433    Non-Debug Version:  79.6K Code, 16.2K Data,  95.8K Total
10434    Debug Version:     153.5K Code, 48.2K Data, 201.7K Total
10435
104362) iASL Compiler/Disassembler and Tools:
10437
10438iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
10439resource descriptor names.
10440
10441iASL: Detect invalid ASCII characters in input (windows version). Removed
10442the
10443"-CF" flag from the flex compile, enables correct detection of non-ASCII
10444characters in the input. BZ 441
10445
10446iASL: Eliminate warning when result of LoadTable is not used. Eliminate
10447the
10448"result of operation not used" warning when the DDB handle returned from
10449LoadTable is not used. The warning is not needed. BZ 590
10450
10451AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
10452method
10453to
10454pass address of table to the AML. Added option to disable OpRegion
10455simulation
10456to allow creation of an OpRegion with a real address that was passed to
10457_CFG.
10458All of this allows testing of the Load and Unload operators from
10459AcpiExec.
10460
10461Debugger: update tables command for unloaded tables. Handle unloaded
10462tables
10463and use the standard table header output routine.
10464
10465----------------------------------------
1046609 June 2008. Summary of changes for version 20080609:
10467
104681) ACPI CA Core Subsystem:
10469
10470Implemented a workaround for reversed _PRT entries. A significant number
10471of
10472BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
10473change dynamically detects and repairs this problem. Provides
10474compatibility
10475with MS ACPI. BZ 6859
10476
10477Simplified the internal ACPI hardware interfaces to eliminate the locking
10478flag parameter from Register Read/Write. Added a new external interface,
10479AcpiGetRegisterUnlocked.
10480
10481Fixed a problem where the invocation of a GPE control method could hang.
10482This
10483was a regression introduced in 20080514. The new method argument count
10484validation mechanism can enter an infinite loop when a GPE method is
10485dispatched. Problem fixed by removing the obsolete code that passed GPE
10486block
10487information to the notify handler via the control method parameter
10488pointer.
10489
10490Fixed a problem where the _SST execution status was incorrectly returned
10491to
10492the caller of AcpiEnterSleepStatePrep. This was a regression introduced
10493in
1049420080514. _SST is optional and a NOT_FOUND exception should never be
10495returned. BZ 716
10496
10497Fixed a problem where a deleted object could be accessed from within the
10498AML
10499parser. This was a regression introduced in version 20080123 as a fix for
10500the
10501Unload operator. Lin Ming. BZ 10669
10502
10503Cleaned up the debug operand dump mechanism. Eliminated unnecessary
10504operands
10505and eliminated the use of a negative index in a loop. Operands are now
10506displayed in the correct order, not backwards. This also fixes a
10507regression
10508introduced in 20080514 on 64-bit systems where the elimination of
10509ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
10510715
10511
10512Fixed a possible memory leak in EvPciConfigRegionSetup where the error
10513exit
10514path did not delete a locally allocated structure.
10515
10516Updated definitions for the DMAR and SRAT tables to synchronize with the
10517current specifications. Includes disassembler support.
10518
10519Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
10520loop termination value was used. Loop terminated on iteration early,
10521missing
10522one mutex. Linn Crosetto
10523
10524Example Code and Data Size: These are the sizes for the OS-independent
10525acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10526debug version of the code includes the debug output trace mechanism and
10527has a
10528much larger code and data size.
10529
10530  Previous Release:
10531    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10532    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10533  Current Release:
10534    Non-Debug Version:  79.3K Code, 16.2K Data,  95.5K Total
10535    Debug Version:     153.0K Code, 48.2K Data, 201.2K Total
10536
105372) iASL Compiler/Disassembler and Tools:
10538
10539Disassembler: Implemented support for EisaId() within _CID objects. Now
10540disassemble integer _CID objects back to EisaId invocations, including
10541multiple integers within _CID packages. Includes single-step support for
10542debugger also.
10543
10544Disassembler: Added support for DMAR and SRAT table definition changes.
10545
10546----------------------------------------
1054714 May 2008. Summary of changes for version 20080514:
10548
105491) ACPI CA Core Subsystem:
10550
10551Fixed a problem where GPEs were enabled too early during the ACPICA
10552initialization. This could lead to "handler not installed" errors on some
10553machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
10554This
10555ensures that all operation regions and devices throughout the namespace
10556have
10557been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
10558
10559Implemented a change to the enter sleep code. Moved execution of the _GTS
10560method to just before setting sleep enable bit. The execution was moved
10561from
10562AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
10563immediately before the SLP_EN bit is set, as per the ACPI specification.
10564Luming Yu, BZ 1653.
10565
10566Implemented a fix to disable unknown GPEs (2nd version). Now always
10567disable
10568the GPE, even if ACPICA thinks that that it is already disabled. It is
10569possible that the AML or some other code has enabled the GPE unbeknownst
10570to
10571the ACPICA code.
10572
10573Fixed a problem with the Field operator where zero-length fields would
10574return
10575an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
10576ASL
10577field declarations in Field(), BankField(), and IndexField(). BZ 10606.
10578
10579Implemented a fix for the Load operator, now load the table at the
10580namespace
10581root. This reverts a change introduced in version 20071019. The table is
10582now
10583loaded at the namespace root even though this goes against the ACPI
10584specification. This provides compatibility with other ACPI
10585implementations.
10586The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10587Ming.
10588
10589Fixed a problem where ACPICA would not Load() tables with unusual
10590signatures.
10591Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10592acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10593Therefore, signature validation is worthless. Apparently MS ACPI accepts
10594such
10595signatures, ACPICA must be compatible. BZ 10454.
10596
10597Fixed a possible negative array index in AcpiUtValidateException. Added
10598NULL
10599fields to the exception string arrays to eliminate a -1 subtraction on
10600the
10601SubStatus field.
10602
10603Updated the debug tracking macros to reduce overall code and data size.
10604Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10605instead of pointers to static strings. Jan Beulich and Bob Moore.
10606
10607Implemented argument count checking in control method invocation via
10608AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10609too
10610many. This applies only to extern programmatic control method execution,
10611not
10612method-to-method calls within the AML. Lin Ming.
10613
10614Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10615no
10616longer needed, especially with the removal of 16-bit support. It was
10617replaced
10618mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10619bit
10620on
1062132/64-bit platforms is required.
10622
10623Added the C const qualifier for appropriate string constants -- mostly
10624MODULE_NAME and printf format strings. Jan Beulich.
10625
10626Example Code and Data Size: These are the sizes for the OS-independent
10627acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10628debug version of the code includes the debug output trace mechanism and
10629has a
10630much larger code and data size.
10631
10632  Previous Release:
10633    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10634    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10635  Current Release:
10636    Non-Debug Version:  79.5K Code, 16.2K Data,  95.7K Total
10637    Debug Version:     153.3K Code, 48.3K Data, 201.6K Total
10638
106392) iASL Compiler/Disassembler and Tools:
10640
10641Implemented ACPI table revision ID validation in the disassembler. Zero
10642is
10643always invalid. For DSDTs, the ID controls the interpreter integer width.
106441
10645means 32-bit and this is unusual. 2 or greater is 64-bit.
10646
10647----------------------------------------
1064821 March 2008. Summary of changes for version 20080321:
10649
106501) ACPI CA Core Subsystem:
10651
10652Implemented an additional change to the GPE support in order to suppress
10653spurious or stray GPEs. The AcpiEvDisableGpe function will now
10654permanently
10655disable incoming GPEs that are neither enabled nor disabled -- meaning
10656that
10657the GPE is unknown to the system. This should prevent future interrupt
10658floods
10659from that GPE. BZ 6217 (Zhang Rui)
10660
10661Fixed a problem where NULL package elements were not returned to the
10662AcpiEvaluateObject interface correctly. The element was simply ignored
10663instead of returning a NULL ACPI_OBJECT package element, potentially
10664causing
10665a buffer overflow and/or confusing the caller who expected a fixed number
10666of
10667elements. BZ 10132 (Lin Ming, Bob Moore)
10668
10669Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10670Dword,
10671Qword), Field, BankField, and IndexField operators when invoked from
10672inside
10673an executing control method. In this case, these operators created
10674namespace
10675nodes that were incorrectly left marked as permanent nodes instead of
10676temporary nodes. This could cause a problem if there is race condition
10677between an exiting control method and a running namespace walk. (Reported
10678by
10679Linn Crosetto)
10680
10681Fixed a problem where the CreateField and CreateXXXField operators would
10682incorrectly allow duplicate names (the name of the field) with no
10683exception
10684generated.
10685
10686Implemented several changes for Notify handling. Added support for new
10687Notify
10688values (ACPI 2.0+) and improved the Notify debug output. Notify on
10689PowerResource objects is no longer allowed, as per the ACPI
10690specification.
10691(Bob Moore, Zhang Rui)
10692
10693All Reference Objects returned via the AcpiEvaluateObject interface are
10694now
10695marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10696for
10697NULL objects - either NULL package elements or unresolved named
10698references.
10699
10700Fixed a problem where an extraneous debug message was produced for
10701package
10702objects (when debugging enabled). The message "Package List length larger
10703than NumElements count" is now produced in the correct case, and is now
10704an
10705error message rather than a debug message. Added a debug message for the
10706opposite case, where NumElements is larger than the Package List (the
10707package
10708will be padded out with NULL elements as per the ACPI spec.)
10709
10710Implemented several improvements for the output of the ASL "Debug" object
10711to
10712clarify and keep all data for a given object on one output line.
10713
10714Fixed two size calculation issues with the variable-length Start
10715Dependent
10716resource descriptor.
10717
10718Example Code and Data Size: These are the sizes for the OS-independent
10719acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10720debug version of the code includes the debug output trace mechanism and
10721has
10722a much larger code and data size.
10723
10724  Previous Release:
10725    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10726    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10727  Current Release:
10728    Non-Debug Version:  80.0K Code, 17.4K Data,  97.4K Total
10729    Debug Version:     159.4K Code, 64.4K Data, 223.8K Total
10730
107312) iASL Compiler/Disassembler and Tools:
10732
10733Fixed a problem with the use of the Switch operator where execution of
10734the
10735containing method by multiple concurrent threads could cause an
10736AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10737actual Switch opcode, it must be simulated with local named temporary
10738variables and if/else pairs. The solution chosen was to mark any method
10739that
10740uses Switch as Serialized, thus preventing multiple thread entries. BZ
10741469.
10742
10743----------------------------------------
1074413 February 2008. Summary of changes for version 20080213:
10745
107461) ACPI CA Core Subsystem:
10747
10748Implemented another MS compatibility design change for GPE/Notify
10749handling.
10750GPEs are now cleared/enabled asynchronously to allow all pending notifies
10751to
10752complete first. It is expected that the OSL will queue the enable request
10753behind all pending notify requests (may require changes to the local host
10754OSL
10755in AcpiOsExecute). Alexey Starikovskiy.
10756
10757Fixed a problem where buffer and package objects passed as arguments to a
10758control method via the external AcpiEvaluateObject interface could cause
10759an
10760AE_AML_INTERNAL exception depending on the order and type of operators
10761executed by the target control method.
10762
10763Fixed a problem where resource descriptor size optimization could cause a
10764problem when a _CRS resource template is passed to a _SRS method. The
10765_SRS
10766resource template must use the same descriptors (with the same size) as
10767returned from _CRS. This change affects the following resource
10768descriptors:
10769IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
107709487)
10771
10772Fixed a problem where a CopyObject to RegionField, BankField, and
10773IndexField
10774objects did not perform an implicit conversion as it should. These types
10775must
10776retain their initial type permanently as per the ACPI specification.
10777However,
10778a CopyObject to all other object types should not perform an implicit
10779conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10780
10781Fixed a problem with the AcpiGetDevices interface where the mechanism to
10782match device CIDs did not examine the entire list of available CIDs, but
10783instead aborted on the first non-matching CID. Andrew Patterson.
10784
10785Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10786was
10787inadvertently changed to return a 16-bit value instead of a 32-bit value,
10788truncating the upper dword of a 64-bit value. This macro is only used to
10789display debug output, so no incorrect calculations were made. Also,
10790reimplemented the macro so that a 64-bit shift is not performed by
10791inefficient compilers.
10792
10793Added missing va_end statements that should correspond with each va_start
10794statement.
10795
10796Example Code and Data Size: These are the sizes for the OS-independent
10797acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10798debug version of the code includes the debug output trace mechanism and
10799has
10800a much larger code and data size.
10801
10802  Previous Release:
10803    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10804    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10805  Current Release:
10806    Non-Debug Version:  79.7K Code, 17.3K Data,  97.0K Total
10807    Debug Version:     158.9K Code, 64.0K Data, 222.9K Total
10808
108092) iASL Compiler/Disassembler and Tools:
10810
10811Implemented full disassembler support for the following new ACPI tables:
10812BERT, EINJ, and ERST. Implemented partial disassembler support for the
10813complicated HEST table. These tables support the Windows Hardware Error
10814Architecture (WHEA).
10815
10816----------------------------------------
1081723 January 2008. Summary of changes for version 20080123:
10818
108191) ACPI CA Core Subsystem:
10820
10821Added the 2008 copyright to all module headers and signons. This affects
10822virtually every file in the ACPICA core subsystem, the iASL compiler, and
10823the tools/utilities.
10824
10825Fixed a problem with the SizeOf operator when used with Package and
10826Buffer
10827objects. These objects have deferred execution for some arguments, and
10828the
10829execution is now completed before the SizeOf is executed. This problem
10830caused
10831unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10832BZ
108339558
10834
10835Implemented an enhancement to the interpreter "slack mode". In the
10836absence
10837of
10838an explicit return or an implicitly returned object from the last
10839executed
10840opcode, a control method will now implicitly return an integer of value 0
10841for
10842Microsoft compatibility. (Lin Ming) BZ 392
10843
10844Fixed a problem with the Load operator where an exception was not
10845returned
10846in
10847the case where the table is already loaded. (Lin Ming) BZ 463
10848
10849Implemented support for the use of DDBHandles as an Indexed Reference, as
10850per
10851the ACPI spec. (Lin Ming) BZ 486
10852
10853Implemented support for UserTerm (Method invocation) for the Unload
10854operator
10855as per the ACPI spec. (Lin Ming) BZ 580
10856
10857Fixed a problem with the LoadTable operator where the OemId and
10858OemTableId
10859input strings could cause unexpected failures if they were shorter than
10860the
10861maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10862
10863Implemented support for UserTerm (Method invocation) for the Unload
10864operator
10865as per the ACPI spec. (Lin Ming) BZ 580
10866
10867Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10868HEST,
10869IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10870
10871Example Code and Data Size: These are the sizes for the OS-independent
10872acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10873debug version of the code includes the debug output trace mechanism and
10874has
10875a much larger code and data size.
10876
10877  Previous Release:
10878    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10879    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10880  Current Release:
10881    Non-Debug Version:  79.5K Code, 17.2K Data,  96.7K Total
10882    Debug Version:     159.0K Code, 63.8K Data, 222.8K Total
10883
108842) iASL Compiler/Disassembler and Tools:
10885
10886Implemented support in the disassembler for checksum validation on
10887incoming
10888binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10889table
10890header dump at the start of the disassembly.
10891
10892Implemented additional debugging information in the namespace listing
10893file
10894created during compilation. In addition to the namespace hierarchy, the
10895full
10896pathname to each namespace object is displayed.
10897
10898Fixed a problem with the disassembler where invalid ACPI tables could
10899cause
10900faults or infinite loops.
10901
10902Fixed an unexpected parse error when using the optional "parameter types"
10903list in a control method declaration. (Lin Ming) BZ 397
10904
10905Fixed a problem where two External declarations with the same name did
10906not
10907cause an error (Lin Ming) BZ 509
10908
10909Implemented support for full TermArgs (adding Argx, Localx and method
10910invocation) for the ParameterData parameter to the LoadTable operator.
10911(Lin
10912Ming) BZ 583,587
10913
10914----------------------------------------
1091519 December 2007. Summary of changes for version 20071219:
10916
109171) ACPI CA Core Subsystem:
10918
10919Implemented full support for deferred execution for the TermArg string
10920arguments for DataTableRegion. This enables forward references and full
10921operand resolution for the three string arguments. Similar to
10922OperationRegion
10923deferred argument execution.) Lin Ming. BZ 430
10924
10925Implemented full argument resolution support for the BankValue argument
10926to
10927BankField. Previously, only constants were supported, now any TermArg may
10928be
10929used. Lin Ming BZ 387, 393
10930
10931Fixed a problem with AcpiGetDevices where the search of a branch of the
10932device tree could be terminated prematurely. In accordance with the ACPI
10933specification, the search down the current branch is terminated if a
10934device
10935is both not present and not functional (instead of just not present.)
10936Yakui
10937Zhao.
10938
10939Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10940if
10941the underlying AML code changed the GPE enable registers. Now, any
10942unknown
10943incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10944disabled
10945instead of simply ignored. Rui Zhang.
10946
10947Fixed a problem with Index Fields where the Index register was
10948incorrectly
10949limited to a maximum of 32 bits. Now any size may be used.
10950
10951Fixed a couple memory leaks associated with "implicit return" objects
10952when
10953the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10954
10955Example Code and Data Size: These are the sizes for the OS-independent
10956acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10957debug version of the code includes the debug output trace mechanism and
10958has
10959a much larger code and data size.
10960
10961  Previous Release:
10962    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
10963    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
10964  Current Release:
10965    Non-Debug Version:  79.3K Code, 17.2K Data,  96.5K Total
10966    Debug Version:     158.6K Code, 63.8K Data, 222.4K Total
10967
10968----------------------------------------
1096914 November 2007. Summary of changes for version 20071114:
10970
109711) ACPI CA Core Subsystem:
10972
10973Implemented event counters for each of the Fixed Events, the ACPI SCI
10974(interrupt) itself, and control methods executed. Named
10975AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10976These
10977should be useful for debugging and statistics.
10978
10979Implemented a new external interface, AcpiGetStatistics, to retrieve the
10980contents of the various event counters. Returns the current values for
10981AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10982AcpiMethodCount. The interface can be expanded in the future if new
10983counters
10984are added. Device drivers should use this interface rather than access
10985the
10986counters directly.
10987
10988Fixed a problem with the FromBCD and ToBCD operators. With some
10989compilers,
10990the ShortDivide function worked incorrectly, causing problems with the
10991BCD
10992functions with large input values. A truncation from 64-bit to 32-bit
10993inadvertently occurred. Internal BZ 435. Lin Ming
10994
10995Fixed a problem with Index references passed as method arguments.
10996References
10997passed as arguments to control methods were dereferenced immediately
10998(before
10999control was passed to the called method). The references are now
11000correctly
11001passed directly to the called method. BZ 5389. Lin Ming
11002
11003Fixed a problem with CopyObject used in conjunction with the Index
11004operator.
11005The reference was incorrectly dereferenced before the copy. The reference
11006is
11007now correctly copied. BZ 5391. Lin Ming
11008
11009Fixed a problem with Control Method references within Package objects.
11010These
11011references are now correctly generated. This completes the package
11012construction overhaul that began in version 20071019.
11013
11014Example Code and Data Size: These are the sizes for the OS-independent
11015acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11016debug version of the code includes the debug output trace mechanism and
11017has
11018a much larger code and data size.
11019
11020  Previous Release:
11021    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
11022    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
11023  Current Release:
11024    Non-Debug Version:  79.0K Code, 17.2K Data,  96.2K Total
11025    Debug Version:     157.9K Code, 63.6K Data, 221.5K Total
11026
11027
110282) iASL Compiler/Disassembler and Tools:
11029
11030The AcpiExec utility now installs handlers for all of the predefined
11031Operation Region types. New types supported are: PCI_Config, CMOS, and
11032PCIBARTarget.
11033
11034Fixed a problem with the 64-bit version of AcpiExec where the extended
11035(64-
11036bit) address fields for the DSDT and FACS within the FADT were not being
11037used, causing truncation of the upper 32-bits of these addresses. Lin
11038Ming
11039and Bob Moore
11040
11041----------------------------------------
1104219 October 2007. Summary of changes for version 20071019:
11043
110441) ACPI CA Core Subsystem:
11045
11046Fixed a problem with the Alias operator when the target of the alias is a
11047named ASL operator that opens a new scope -- Scope, Device,
11048PowerResource,
11049Processor, and ThermalZone. In these cases, any children of the original
11050operator could not be accessed via the alias, potentially causing
11051unexpected
11052AE_NOT_FOUND exceptions. (BZ 9067)
11053
11054Fixed a problem with the Package operator where all named references were
11055created as object references and left otherwise unresolved. According to
11056the
11057ACPI specification, a Package can only contain Data Objects or references
11058to
11059control methods. The implication is that named references to Data Objects
11060(Integer, Buffer, String, Package, BufferField, Field) should be resolved
11061immediately upon package creation. This is the approach taken with this
11062change. References to all other named objects (Methods, Devices, Scopes,
11063etc.) are all now properly created as reference objects. (BZ 5328)
11064
11065Reverted a change to Notify handling that was introduced in version
1106620070508. This version changed the Notify handling from asynchronous to
11067fully synchronous (Device driver Notify handling with respect to the
11068Notify
11069ASL operator). It was found that this change caused more problems than it
11070solved and was removed by most users.
11071
11072Fixed a problem with the Increment and Decrement operators where the type
11073of
11074the target object could be unexpectedly and incorrectly changed. (BZ 353)
11075Lin Ming.
11076
11077Fixed a problem with the Load and LoadTable operators where the table
11078location within the namespace was ignored. Instead, the table was always
11079loaded into the root or current scope. Lin Ming.
11080
11081Fixed a problem with the Load operator when loading a table from a buffer
11082object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
11083
11084Fixed a problem with the Debug object where a store of a DdbHandle
11085reference
11086object to the Debug object could cause a fault.
11087
11088Added a table checksum verification for the Load operator, in the case
11089where
11090the load is from a buffer. (BZ 578).
11091
11092Implemented additional parameter validation for the LoadTable operator.
11093The
11094length of the input strings SignatureString, OemIdString, and OemTableId
11095are
11096now checked for maximum lengths. (BZ 582) Lin Ming.
11097
11098Example Code and Data Size: These are the sizes for the OS-independent
11099acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11100debug version of the code includes the debug output trace mechanism and
11101has
11102a much larger code and data size.
11103
11104  Previous Release:
11105    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
11106    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
11107  Current Release:
11108    Non-Debug Version:  78.8K Code, 17.2K Data,  96.0K Total
11109    Debug Version:     157.2K Code, 63.4K Data, 220.6K Total
11110
11111
111122) iASL Compiler/Disassembler:
11113
11114Fixed a problem where if a single file was specified and the file did not
11115exist, no error message was emitted. (Introduced with wildcard support in
11116version 20070917.)
11117
11118----------------------------------------
1111919 September 2007. Summary of changes for version 20070919:
11120
111211) ACPI CA Core Subsystem:
11122
11123Designed and implemented new external interfaces to install and remove
11124handlers for ACPI table-related events. Current events that are defined
11125are
11126LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
11127they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
11128AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
11129
11130Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
11131(acpi_serialized option on Linux) could cause some systems to hang during
11132initialization. (Bob Moore) BZ 8171
11133
11134Fixed a problem where objects of certain types (Device, ThermalZone,
11135Processor, PowerResource) can be not found if they are declared and
11136referenced from within the same control method (Lin Ming) BZ 341
11137
11138Example Code and Data Size: These are the sizes for the OS-independent
11139acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11140debug version of the code includes the debug output trace mechanism and
11141has
11142a much larger code and data size.
11143
11144  Previous Release:
11145    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
11146    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
11147  Current Release:
11148    Non-Debug Version:  78.5K Code, 17.1K Data,  95.6K Total
11149    Debug Version:     156.7K Code, 63.2K Data, 219.9K Total
11150
11151
111522) iASL Compiler/Disassembler:
11153
11154Implemented support to allow multiple files to be compiled/disassembled
11155in
11156a
11157single invocation. This includes command line wildcard support for both
11158the
11159Windows and Unix versions of the compiler. This feature simplifies the
11160disassembly and compilation of multiple ACPI tables in a single
11161directory.
11162
11163----------------------------------------
1116408 May 2007. Summary of changes for version 20070508:
11165
111661) ACPI CA Core Subsystem:
11167
11168Implemented a Microsoft compatibility design change for the handling of
11169the
11170Notify AML operator. Previously, notify handlers were dispatched and
11171executed completely asynchronously in a deferred thread. The new design
11172still executes the notify handlers in a different thread, but the
11173original
11174thread that executed the Notify() now waits at a synchronization point
11175for
11176the notify handler to complete. Some machines depend on a synchronous
11177Notify
11178operator in order to operate correctly.
11179
11180Implemented support to allow Package objects to be passed as method
11181arguments to the external AcpiEvaluateObject interface. Previously, this
11182would return the AE_NOT_IMPLEMENTED exception. This feature had not been
11183implemented since there were no reserved control methods that required it
11184until recently.
11185
11186Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
11187that
11188contained invalid non-zero values in reserved fields could cause later
11189failures because these fields have meaning in later revisions of the
11190FADT.
11191For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
11192fields
11193are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
11194
11195Fixed a problem where the Global Lock handle was not properly updated if
11196a
11197thread that acquired the Global Lock via executing AML code then
11198attempted
11199to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
11200Joe
11201Liu.
11202
11203Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
11204could be corrupted if the interrupt being removed was at the head of the
11205list. Reported by Linn Crosetto.
11206
11207Example Code and Data Size: These are the sizes for the OS-independent
11208acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11209debug version of the code includes the debug output trace mechanism and
11210has
11211a much larger code and data size.
11212
11213  Previous Release:
11214    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11215    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
11216  Current Release:
11217    Non-Debug Version:  78.3K Code, 17.0K Data,  95.3K Total
11218    Debug Version:     156.3K Code, 63.1K Data, 219.4K Total
11219
11220----------------------------------------
1122120 March 2007. Summary of changes for version 20070320:
11222
112231) ACPI CA Core Subsystem:
11224
11225Implemented a change to the order of interpretation and evaluation of AML
11226operand objects within the AML interpreter. The interpreter now evaluates
11227operands in the order that they appear in the AML stream (and the
11228corresponding ASL code), instead of in the reverse order (after the
11229entire
11230operand list has been parsed). The previous behavior caused several
11231subtle
11232incompatibilities with the Microsoft AML interpreter as well as being
11233somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
11234
11235Implemented a change to the ACPI Global Lock support. All interfaces to
11236the
11237global lock now allow the same thread to acquire the lock multiple times.
11238This affects the AcpiAcquireGlobalLock external interface to the global
11239lock
11240as well as the internal use of the global lock to support AML fields -- a
11241control method that is holding the global lock can now simultaneously
11242access
11243AML fields that require global lock protection. Previously, in both
11244cases,
11245this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
11246to
11247AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
11248Controller. There is no change to the behavior of the AML Acquire
11249operator,
11250as this can already be used to acquire a mutex multiple times by the same
11251thread. BZ 8066. With assistance from Alexey Starikovskiy.
11252
11253Fixed a problem where invalid objects could be referenced in the AML
11254Interpreter after error conditions. During operand evaluation, ensure
11255that
11256the internal "Return Object" field is cleared on error and only valid
11257pointers are stored there. Caused occasional access to deleted objects
11258that
11259resulted in "large reference count" warning messages. Valery Podrezov.
11260
11261Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
11262on
11263deeply nested control method invocations. BZ 7873, local BZ 487. Valery
11264Podrezov.
11265
11266Fixed an internal problem with the handling of result objects on the
11267interpreter result stack. BZ 7872. Valery Podrezov.
11268
11269Removed obsolete code that handled the case where AML_NAME_OP is the
11270target
11271of a reference (Reference.Opcode). This code was no longer necessary. BZ
112727874. Valery Podrezov.
11273
11274Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
11275was
11276a
11277remnant from the previously discontinued 16-bit support.
11278
11279Example Code and Data Size: These are the sizes for the OS-independent
11280acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11281debug version of the code includes the debug output trace mechanism and
11282has
11283a much larger code and data size.
11284
11285  Previous Release:
11286    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11287    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11288  Current Release:
11289    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11290    Debug Version:     155.9K Code, 63.1K Data, 219.0K Total
11291
11292----------------------------------------
1129326 January 2007. Summary of changes for version 20070126:
11294
112951) ACPI CA Core Subsystem:
11296
11297Added the 2007 copyright to all module headers and signons. This affects
11298virtually every file in the ACPICA core subsystem, the iASL compiler, and
11299the utilities.
11300
11301Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
11302during a table load. A bad pointer was passed in the case where the DSDT
11303is
11304overridden, causing a fault in this case.
11305
11306Example Code and Data Size: These are the sizes for the OS-independent
11307acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11308debug version of the code includes the debug output trace mechanism and
11309has
11310a much larger code and data size.
11311
11312  Previous Release:
11313    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11314    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11315  Current Release:
11316    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11317    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11318
11319----------------------------------------
1132015 December 2006. Summary of changes for version 20061215:
11321
113221) ACPI CA Core Subsystem:
11323
11324Support for 16-bit ACPICA has been completely removed since it is no
11325longer
11326necessary and it clutters the code. All 16-bit macros, types, and
11327conditional compiles have been removed, cleaning up and simplifying the
11328code
11329across the entire subsystem. DOS support is no longer needed since the
11330bootable Linux firmware kit is now available.
11331
11332The handler for the Global Lock is now removed during AcpiTerminate to
11333enable a clean subsystem restart, via the implementation of the
11334AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
11335HP)
11336
11337Implemented enhancements to the multithreading support within the
11338debugger
11339to enable improved multithreading debugging and evaluation of the
11340subsystem.
11341(Valery Podrezov)
11342
11343Debugger: Enhanced the Statistics/Memory command to emit the total
11344(maximum)
11345memory used during the execution, as well as the maximum memory consumed
11346by
11347each of the various object types. (Valery Podrezov)
11348
11349Example Code and Data Size: These are the sizes for the OS-independent
11350acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11351debug version of the code includes the debug output trace mechanism and
11352has
11353a much larger code and data size.
11354
11355  Previous Release:
11356    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11357    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11358  Current Release:
11359    Non-Debug Version:  78.0K Code, 17.1K Data,  95.1K Total
11360    Debug Version:     155.8K Code, 63.3K Data, 219.1K Total
11361
11362
113632) iASL Compiler/Disassembler and Tools:
11364
11365AcpiExec: Implemented a new option (-m) to display full memory use
11366statistics upon subsystem/program termination. (Valery Podrezov)
11367
11368----------------------------------------
1136909 November 2006. Summary of changes for version 20061109:
11370
113711) ACPI CA Core Subsystem:
11372
11373Optimized the Load ASL operator in the case where the source operand is
11374an
11375operation region. Simply map the operation region memory, instead of
11376performing a bytewise read. (Region must be of type SystemMemory, see
11377below.)
11378
11379Fixed the Load ASL operator for the case where the source operand is a
11380region field. A buffer object is also allowed as the source operand. BZ
11381480
11382
11383Fixed a problem where the Load ASL operator allowed the source operand to
11384be
11385an operation region of any type. It is now restricted to regions of type
11386SystemMemory, as per the ACPI specification. BZ 481
11387
11388Additional cleanup and optimizations for the new Table Manager code.
11389
11390AcpiEnable will now fail if all of the required ACPI tables are not
11391loaded
11392(FADT, FACS, DSDT). BZ 477
11393
11394Added #pragma pack(8/4) to acobject.h to ensure that the structures in
11395this
11396header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
11397manually optimized to be aligned and will not work if it is byte-packed.
11398
11399Example Code and Data Size: These are the sizes for the OS-independent
11400acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11401debug version of the code includes the debug output trace mechanism and
11402has
11403a much larger code and data size.
11404
11405  Previous Release:
11406    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11407    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11408  Current Release:
11409    Non-Debug Version:  77.9K Code, 17.0K Data,  94.9K Total
11410    Debug Version:     155.2K Code, 63.1K Data, 218.3K Total
11411
11412
114132) iASL Compiler/Disassembler and Tools:
11414
11415Fixed a problem where the presence of the _OSI predefined control method
11416within complex expressions could cause an internal compiler error.
11417
11418AcpiExec: Implemented full region support for multiple address spaces.
11419SpaceId is now part of the REGION object. BZ 429
11420
11421----------------------------------------
1142211 October 2006. Summary of changes for version 20061011:
11423
114241) ACPI CA Core Subsystem:
11425
11426Completed an AML interpreter performance enhancement for control method
11427execution. Previously a 2-pass parse/execution, control methods are now
11428completely parsed and executed in a single pass. This improves overall
11429interpreter performance by ~25%, reduces code size, and reduces CPU stack
11430use. (Valery Podrezov + interpreter changes in version 20051202 that
11431eliminated namespace loading during the pass one parse.)
11432
11433Implemented _CID support for PCI Root Bridge detection. If the _HID does
11434not
11435match the predefined PCI Root Bridge IDs, the _CID list (if present) is
11436now
11437obtained and also checked for an ID match.
11438
11439Implemented additional support for the PCI _ADR execution: upsearch until
11440a
11441device scope is found before executing _ADR. This allows PCI_Config
11442operation regions to be declared locally within control methods
11443underneath
11444PCI device objects.
11445
11446Fixed a problem with a possible race condition between threads executing
11447AcpiWalkNamespace and the AML interpreter. This condition was removed by
11448modifying AcpiWalkNamespace to (by default) ignore all temporary
11449namespace
11450entries created during any concurrent control method execution. An
11451additional namespace race condition is known to exist between
11452AcpiWalkNamespace and the Load/Unload ASL operators and is still under
11453investigation.
11454
11455Restructured the AML ParseLoop function, breaking it into several
11456subfunctions in order to reduce CPU stack use and improve
11457maintainability.
11458(Mikhail Kouzmich)
11459
11460AcpiGetHandle: Fix for parameter validation to detect invalid
11461combinations
11462of prefix handle and pathname. BZ 478
11463
11464Example Code and Data Size: These are the sizes for the OS-independent
11465acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11466debug version of the code includes the debug output trace mechanism and
11467has
11468a much larger code and data size.
11469
11470  Previous Release:
11471    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11472    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11473  Current Release:
11474    Non-Debug Version:  78.1K Code, 17.1K Data,  95.2K Total
11475    Debug Version:     155.4K Code, 63.1K Data, 218.5K Total
11476
114772) iASL Compiler/Disassembler and Tools:
11478
11479Ported the -g option (get local ACPI tables) to the new ACPICA Table
11480Manager
11481to restore original behavior.
11482
11483----------------------------------------
1148427 September 2006. Summary of changes for version 20060927:
11485
114861) ACPI CA Core Subsystem:
11487
11488Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
11489These functions now use a spinlock for mutual exclusion and the interrupt
11490level indication flag is not needed.
11491
11492Fixed a problem with the Global Lock where the lock could appear to be
11493obtained before it is actually obtained. The global lock semaphore was
11494inadvertently created with one unit instead of zero units. (BZ 464)
11495Fiodor
11496Suietov.
11497
11498Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
11499during
11500a read from a buffer or region field. (BZ 458) Fiodor Suietov.
11501
11502Example Code and Data Size: These are the sizes for the OS-independent
11503acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11504debug version of the code includes the debug output trace mechanism and
11505has
11506a much larger code and data size.
11507
11508  Previous Release:
11509    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11510    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11511  Current Release:
11512    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11513    Debug Version:     154.6K Code, 63.0K Data, 217.6K Total
11514
11515
115162) iASL Compiler/Disassembler and Tools:
11517
11518Fixed a compilation problem with the pre-defined Resource Descriptor
11519field
11520names where an "object does not exist" error could be incorrectly
11521generated
11522if the parent ResourceTemplate pathname places the template within a
11523different namespace scope than the current scope. (BZ 7212)
11524
11525Fixed a problem where the compiler could hang after syntax errors
11526detected
11527in an ElseIf construct. (BZ 453)
11528
11529Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
11530operator. An incorrect output filename was produced when this parameter
11531was
11532a null string (""). Now, the original input filename is used as the AML
11533output filename, with an ".aml" extension.
11534
11535Implemented a generic batch command mode for the AcpiExec utility
11536(execute
11537any AML debugger command) (Valery Podrezov).
11538
11539----------------------------------------
1154012 September 2006. Summary of changes for version 20060912:
11541
115421) ACPI CA Core Subsystem:
11543
11544Enhanced the implementation of the "serialized mode" of the interpreter
11545(enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
11546specified, instead of creating a serialization semaphore per control
11547method,
11548the interpreter lock is simply no longer released before a blocking
11549operation during control method execution. This effectively makes the AML
11550Interpreter single-threaded. The overhead of a semaphore per-method is
11551eliminated.
11552
11553Fixed a regression where an error was no longer emitted if a control
11554method
11555attempts to create 2 objects of the same name. This once again returns
11556AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
11557that
11558will dynamically serialize the control method to possible prevent future
11559errors. (BZ 440)
11560
11561Integrated a fix for a problem with PCI Express HID detection in the PCI
11562Config Space setup procedure. (BZ 7145)
11563
11564Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
11565AcpiHwInitialize function - the FADT registers are now validated when the
11566table is loaded.
11567
11568Added two new warnings during FADT verification - 1) if the FADT is
11569larger
11570than the largest known FADT version, and 2) if there is a mismatch
11571between
11572a
1157332-bit block address and the 64-bit X counterpart (when both are non-
11574zero.)
11575
11576Example Code and Data Size: These are the sizes for the OS-independent
11577acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11578debug version of the code includes the debug output trace mechanism and
11579has
11580a much larger code and data size.
11581
11582  Previous Release:
11583    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11584    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11585  Current Release:
11586    Non-Debug Version:  77.9K Code, 17.1K Data,  95.0K Total
11587    Debug Version:     154.7K Code, 63.0K Data, 217.7K Total
11588
11589
115902) iASL Compiler/Disassembler and Tools:
11591
11592Fixed a problem with the implementation of the Switch() operator where
11593the
11594temporary variable was declared too close to the actual Switch, instead
11595of
11596at method level. This could cause a problem if the Switch() operator is
11597within a while loop, causing an error on the second iteration. (BZ 460)
11598
11599Disassembler - fix for error emitted for unknown type for target of scope
11600operator. Now, ignore it and continue.
11601
11602Disassembly of an FADT now verifies the input FADT and reports any errors
11603found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11604
11605Disassembly of raw data buffers with byte initialization data now
11606prefixes
11607each output line with the current buffer offset.
11608
11609Disassembly of ASF! table now includes all variable-length data fields at
11610the end of some of the subtables.
11611
11612The disassembler now emits a comment if a buffer appears to be a
11613ResourceTemplate, but cannot be disassembled as such because the EndTag
11614does
11615not appear at the very end of the buffer.
11616
11617AcpiExec - Added the "-t" command line option to enable the serialized
11618mode
11619of the AML interpreter.
11620
11621----------------------------------------
1162231 August 2006. Summary of changes for version 20060831:
11623
116241) ACPI CA Core Subsystem:
11625
11626Miscellaneous fixes for the Table Manager:
11627- Correctly initialize internal common FADT for all 64-bit "X" fields
11628- Fixed a couple table mapping issues during table load
11629- Fixed a couple alignment issues for IA64
11630- Initialize input array to zero in AcpiInitializeTables
11631- Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
11632AcpiGetTableByIndex
11633
11634Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11635now
11636immediately disabled to prevent the waking GPE from firing again and to
11637prevent other wake GPEs from interrupting the wake process.
11638
11639Added the AcpiGpeCount global that tracks the number of processed GPEs,
11640to
11641be used for debugging systems with a large number of ACPI interrupts.
11642
11643Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11644both the ACPICA headers and the disassembler.
11645
11646Example Code and Data Size: These are the sizes for the OS-independent
11647acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11648debug version of the code includes the debug output trace mechanism and
11649has
11650a much larger code and data size.
11651
11652  Previous Release:
11653    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11654    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11655  Current Release:
11656    Non-Debug Version:  77.9K Code, 16.7K Data,  94.6K Total
11657    Debug Version:     154.9K Code, 62.6K Data, 217.5K Total
11658
11659
116602) iASL Compiler/Disassembler and Tools:
11661
11662Disassembler support for the DMAR ACPI table.
11663
11664----------------------------------------
1166523 August 2006. Summary of changes for version 20060823:
11666
116671) ACPI CA Core Subsystem:
11668
11669The Table Manager component has been completely redesigned and
11670reimplemented. The new design is much simpler, and reduces the overall
11671code
11672and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11673is
11674now possible to obtain the ACPI tables very early during kernel
11675initialization, even before dynamic memory management is initialized.
11676(Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11677
11678Obsolete ACPICA interfaces:
11679
11680- AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11681init
11682time).
11683- AcpiLoadTable: Not needed.
11684- AcpiUnloadTable: Not needed.
11685
11686New ACPICA interfaces:
11687
11688- AcpiInitializeTables: Must be called before the table manager can be
11689used.
11690- AcpiReallocateRootTable: Used to transfer the root table to dynamically
11691allocated memory after it becomes available.
11692- AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11693tables
11694in the RSDT/XSDT.
11695
11696Other ACPICA changes:
11697
11698- AcpiGetTableHeader returns the actual mapped table header, not a copy.
11699Use
11700AcpiOsUnmapMemory to free this mapping.
11701- AcpiGetTable returns the actual mapped table. The mapping is managed
11702internally and must not be deleted by the caller. Use of this interface
11703causes no additional dynamic memory allocation.
11704- AcpiFindRootPointer: Support for physical addressing has been
11705eliminated,
11706it appeared to be unused.
11707- The interface to AcpiOsMapMemory has changed to be consistent with the
11708other allocation interfaces.
11709- The interface to AcpiOsGetRootPointer has changed to eliminate
11710unnecessary
11711parameters.
11712- ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
1171364-
11714bit platforms. Was previously 64 bits on all platforms.
11715- The interface to the ACPI Global Lock acquire/release macros have
11716changed
11717slightly since ACPICA no longer keeps a local copy of the FACS with a
11718constructed pointer to the actual global lock.
11719
11720Porting to the new table manager:
11721
11722- AcpiInitializeTables: Must be called once, and can be called anytime
11723during the OS initialization process. It allows the host to specify an
11724area
11725of memory to be used to store the internal version of the RSDT/XSDT (root
11726table). This allows the host to access ACPI tables before memory
11727management
11728is initialized and running.
11729- AcpiReallocateRootTable: Can be called after memory management is
11730running
11731to copy the root table to a dynamically allocated array, freeing up the
11732scratch memory specified in the call to AcpiInitializeTables.
11733- AcpiSubsystemInitialize: This existing interface is independent of the
11734Table Manager, and does not have to be called before the Table Manager
11735can
11736be used, it only must be called before the rest of ACPICA can be used.
11737- ACPI Tables: Some changes have been made to the names and structure of
11738the
11739actbl.h and actbl1.h header files and may require changes to existing
11740code.
11741For example, bitfields have been completely removed because of their lack
11742of
11743portability across C compilers.
11744- Update interfaces to the Global Lock acquire/release macros if local
11745versions are used. (see acwin.h)
11746
11747Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11748
11749New files: tbfind.c
11750
11751Example Code and Data Size: These are the sizes for the OS-independent
11752acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11753debug version of the code includes the debug output trace mechanism and
11754has
11755a much larger code and data size.
11756
11757  Previous Release:
11758    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11759    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11760  Current Release:
11761    Non-Debug Version:  77.8K Code, 16.5K Data,  94.3K Total
11762    Debug Version:     154.6K Code, 62.3K Data, 216.9K Total
11763
11764
117652) iASL Compiler/Disassembler and Tools:
11766
11767No changes for this release.
11768
11769----------------------------------------
1177021 July 2006. Summary of changes for version 20060721:
11771
117721) ACPI CA Core Subsystem:
11773
11774The full source code for the ASL test suite used to validate the iASL
11775compiler and the ACPICA core subsystem is being released with the ACPICA
11776source for the first time. The source is contained in a separate package
11777and
11778consists of over 1100 files that exercise all ASL/AML operators. The
11779package
11780should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11781Fiodor
11782Suietov)
11783
11784Completed a new design and implementation for support of the ACPI Global
11785Lock. On the OS side, the global lock is now treated as a standard AML
11786mutex. Previously, multiple OS threads could "acquire" the global lock
11787simultaneously. However, this could cause the BIOS to be starved out of
11788the
11789lock - especially in cases such as the Embedded Controller driver where
11790there is a tight coupling between the OS and the BIOS.
11791
11792Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11793The Global Lock interrupt handler no longer queues the execution of a
11794separate thread to signal the global lock semaphore. Instead, the
11795semaphore
11796is signaled directly from the interrupt handler.
11797
11798Implemented support within the AML interpreter for package objects that
11799contain a larger AML length (package list length) than the package
11800element
11801count. In this case, the length of the package is truncated to match the
11802package element count. Some BIOS code apparently modifies the package
11803length
11804on the fly, and this change supports this behavior. Provides
11805compatibility
11806with the MS AML interpreter. (With assistance from Fiodor Suietov)
11807
11808Implemented a temporary fix for the BankValue parameter of a Bank Field
11809to
11810support all constant values, now including the Zero and One opcodes.
11811Evaluation of this parameter must eventually be converted to a full
11812TermArg
11813evaluation. A not-implemented error is now returned (temporarily) for
11814non-
11815constant values for this parameter.
11816
11817Fixed problem reports (Fiodor Suietov) integrated:
11818- Fix for premature object deletion after CopyObject on Operation Region
11819(BZ
11820350)
11821
11822Example Code and Data Size: These are the sizes for the OS-independent
11823acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11824debug version of the code includes the debug output trace mechanism and
11825has
11826a much larger code and data size.
11827
11828  Previous Release:
11829    Non-Debug Version:  80.7K Code, 18.0K Data,  98.7K Total
11830    Debug Version:     160.9K Code, 65.1K Data, 226.0K Total
11831  Current Release:
11832    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11833    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11834
11835
118362) iASL Compiler/Disassembler and Tools:
11837
11838No changes for this release.
11839
11840----------------------------------------
1184107 July 2006. Summary of changes for version 20060707:
11842
118431) ACPI CA Core Subsystem:
11844
11845Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11846that do not allow the initialization of address pointers within packed
11847structures - even though the hardware itself may support misaligned
11848transfers. Some of the debug data structures are packed by default to
11849minimize size.
11850
11851Added an error message for the case where AcpiOsGetThreadId() returns
11852zero.
11853A non-zero value is required by the core ACPICA code to ensure the proper
11854operation of AML mutexes and recursive control methods.
11855
11856The DSDT is now the only ACPI table that determines whether the AML
11857interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11858but
11859the hooks for per-table 32/64 switching have been removed from the code.
11860A
11861clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11862
11863Fixed a possible leak of an OwnerID in the error path of
11864AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11865deletion to a single place in AcpiTbUninstallTable to correct possible
11866leaks
11867when using the AcpiTbDeleteTablesByType interface (with assistance from
11868Lance Ortiz.)
11869
11870Fixed a problem with Serialized control methods where the semaphore
11871associated with the method could be over-signaled after multiple method
11872invocations.
11873
11874Fixed two issues with the locking of the internal namespace data
11875structure.
11876Both the Unload() operator and AcpiUnloadTable interface now lock the
11877namespace during the namespace deletion associated with the table unload
11878(with assistance from Linn Crosetto.)
11879
11880Fixed problem reports (Valery Podrezov) integrated:
11881- Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11882
11883Fixed problem reports (Fiodor Suietov) integrated:
11884- Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
11885- On Address Space handler deletion, needless deactivation call (BZ 374)
11886- AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
11887375)
11888- Possible memory leak, Notify sub-objects of Processor, Power,
11889ThermalZone
11890(BZ 376)
11891- AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
11892- Minimum Length of RSDT should be validated (BZ 379)
11893- AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
11894Handler (BZ (380)
11895- AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11896loaded
11897(BZ 381)
11898
11899Example Code and Data Size: These are the sizes for the OS-independent
11900acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11901debug version of the code includes the debug output trace mechanism and
11902has
11903a much larger code and data size.
11904
11905  Previous Release:
11906    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11907    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11908  Current Release:
11909    Non-Debug Version:  80.7K Code, 17.9K Data,  98.6K Total
11910    Debug Version:     161.0K Code, 65.1K Data, 226.1K Total
11911
11912
119132) iASL Compiler/Disassembler and Tools:
11914
11915Fixed problem reports:
11916Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11917436)
11918
11919----------------------------------------
1192023 June 2006. Summary of changes for version 20060623:
11921
119221) ACPI CA Core Subsystem:
11923
11924Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11925allows the type to be customized to the host OS for improved efficiency
11926(since a spinlock is usually a very small object.)
11927
11928Implemented support for "ignored" bits in the ACPI registers. According
11929to
11930the ACPI specification, these bits should be preserved when writing the
11931registers via a read/modify/write cycle. There are 3 bits preserved in
11932this
11933manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11934
11935Implemented the initial deployment of new OSL mutex interfaces. Since
11936some
11937host operating systems have separate mutex and semaphore objects, this
11938feature was requested. The base code now uses mutexes (and the new mutex
11939interfaces) wherever a binary semaphore was used previously. However, for
11940the current release, the mutex interfaces are defined as macros to map
11941them
11942to the existing semaphore interfaces. Therefore, no OSL changes are
11943required
11944at this time. (See acpiosxf.h)
11945
11946Fixed several problems with the support for the control method SyncLevel
11947parameter. The SyncLevel now works according to the ACPI specification
11948and
11949in concert with the Mutex SyncLevel parameter, since the current
11950SyncLevel
11951is a property of the executing thread. Mutual exclusion for control
11952methods
11953is now implemented with a mutex instead of a semaphore.
11954
11955Fixed three instances of the use of the C shift operator in the bitfield
11956support code (exfldio.c) to avoid the use of a shift value larger than
11957the
11958target data width. The behavior of C compilers is undefined in this case
11959and
11960can cause unpredictable results, and therefore the case must be detected
11961and
11962avoided. (Fiodor Suietov)
11963
11964Added an info message whenever an SSDT or OEM table is loaded dynamically
11965via the Load() or LoadTable() ASL operators. This should improve
11966debugging
11967capability since it will show exactly what tables have been loaded
11968(beyond
11969the tables present in the RSDT/XSDT.)
11970
11971Example Code and Data Size: These are the sizes for the OS-independent
11972acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11973debug version of the code includes the debug output trace mechanism and
11974has
11975a much larger code and data size.
11976
11977  Previous Release:
11978    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
11979    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
11980  Current Release:
11981    Non-Debug Version:  80.5K Code, 17.8K Data,  98.3K Total
11982    Debug Version:     160.8K Code, 64.8K Data, 225.6K Total
11983
11984
119852) iASL Compiler/Disassembler and Tools:
11986
11987No changes for this release.
11988
11989----------------------------------------
1199008 June 2006. Summary of changes for version 20060608:
11991
119921) ACPI CA Core Subsystem:
11993
11994Converted the locking mutex used for the ACPI hardware to a spinlock.
11995This
11996change should eliminate all problems caused by attempting to acquire a
11997semaphore at interrupt level, and it means that all ACPICA external
11998interfaces that directly access the ACPI hardware can be safely called
11999from
12000interrupt level. OSL code that implements the semaphore interfaces should
12001be
12002able to eliminate any workarounds for being called at interrupt level.
12003
12004Fixed a regression introduced in 20060526 where the ACPI device
12005initialization could be prematurely aborted with an AE_NOT_FOUND if a
12006device
12007did not have an optional _INI method.
12008
12009Fixed an IndexField issue where a write to the Data Register should be
12010limited in size to the AccessSize (width) of the IndexField itself. (BZ
12011433,
12012Fiodor Suietov)
12013
12014Fixed problem reports (Valery Podrezov) integrated:
12015- Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
12016
12017Fixed problem reports (Fiodor Suietov) integrated:
12018- AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
12019
12020Removed four global mutexes that were obsolete and were no longer being
12021used.
12022
12023Example Code and Data Size: These are the sizes for the OS-independent
12024acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12025debug version of the code includes the debug output trace mechanism and
12026has
12027a much larger code and data size.
12028
12029  Previous Release:
12030    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
12031    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
12032  Current Release:
12033    Non-Debug Version:  80.0K Code, 17.6K Data,  97.6K Total
12034    Debug Version:     160.2K Code, 64.7K Data, 224.9K Total
12035
12036
120372) iASL Compiler/Disassembler and Tools:
12038
12039Fixed a fault when using -g option (get tables from registry) on Windows
12040machines.
12041
12042Fixed problem reports integrated:
12043- Generate error if CreateField NumBits parameter is zero. (BZ 405)
12044- Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
12045Suietov)
12046- Global table revision override (-r) is ignored (BZ 413)
12047
12048----------------------------------------
1204926 May 2006. Summary of changes for version 20060526:
12050
120511) ACPI CA Core Subsystem:
12052
12053Restructured, flattened, and simplified the internal interfaces for
12054namespace object evaluation - resulting in smaller code, less CPU stack
12055use,
12056and fewer interfaces. (With assistance from Mikhail Kouzmich)
12057
12058Fixed a problem with the CopyObject operator where the first parameter
12059was
12060not typed correctly for the parser, interpreter, compiler, and
12061disassembler.
12062Caused various errors and unexpected behavior.
12063
12064Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
12065produced incorrect results with some C compilers. Since the behavior of C
12066compilers when the shift value is larger than the datatype width is
12067apparently not well defined, the interpreter now detects this condition
12068and
12069simply returns zero as expected in all such cases. (BZ 395)
12070
12071Fixed problem reports (Valery Podrezov) integrated:
12072- Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
12073- Allow interpreter to handle nested method declarations (BZ 5361)
12074
12075Fixed problem reports (Fiodor Suietov) integrated:
12076- AcpiTerminate doesn't free debug memory allocation list objects (BZ
12077355)
12078- After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
12079356)
12080- AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
12081- Resource Manager should return AE_TYPE for non-device objects (BZ 358)
12082- Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
12083- Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
12084- Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
12085- Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
12086- AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
12087365)
12088- Status of the Global Initialization Handler call not used (BZ 366)
12089- Incorrect object parameter to Global Initialization Handler (BZ 367)
12090
12091Example Code and Data Size: These are the sizes for the OS-independent
12092acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12093debug version of the code includes the debug output trace mechanism and
12094has
12095a much larger code and data size.
12096
12097  Previous Release:
12098    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
12099    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
12100  Current Release:
12101    Non-Debug Version:  80.0K Code, 17.7K Data,  97.7K Total
12102    Debug Version:     160.3K Code, 64.9K Data, 225.2K Total
12103
12104
121052) iASL Compiler/Disassembler and Tools:
12106
12107Modified the parser to allow the names IO, DMA, and IRQ to be used as
12108namespace identifiers with no collision with existing resource descriptor
12109macro names. This provides compatibility with other ASL compilers and is
12110most useful for disassembly/recompilation of existing tables without
12111parse
12112errors. (With assistance from Thomas Renninger)
12113
12114Disassembler: fixed an incorrect disassembly problem with the
12115DataTableRegion and CopyObject operators. Fixed a possible fault during
12116disassembly of some Alias operators.
12117
12118----------------------------------------
1211912 May 2006. Summary of changes for version 20060512:
12120
121211) ACPI CA Core Subsystem:
12122
12123Replaced the AcpiOsQueueForExecution interface with a new interface named
12124AcpiOsExecute. The major difference is that the new interface does not
12125have
12126a Priority parameter, this appeared to be useless and has been replaced
12127by
12128a
12129Type parameter. The Type tells the host what type of execution is being
12130requested, such as global lock handler, notify handler, GPE handler, etc.
12131This allows the host to queue and execute the request as appropriate for
12132the
12133request type, possibly using different work queues and different
12134priorities
12135for the various request types. This enables fixes for multithreading
12136deadlock problems such as BZ #5534, and will require changes to all
12137existing
12138OS interface layers. (Alexey Starikovskiy and Bob Moore)
12139
12140Fixed a possible memory leak associated with the support for the so-
12141called
12142"implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
12143Suietov)
12144
12145Fixed a problem with the Load() operator where a table load from an
12146operation region could overwrite an internal table buffer by up to 7
12147bytes
12148and cause alignment faults on IPF systems. (With assistance from Luming
12149Yu)
12150
12151Example Code and Data Size: These are the sizes for the OS-independent
12152acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12153debug version of the code includes the debug output trace mechanism and
12154has
12155a much larger code and data size.
12156
12157  Previous Release:
12158    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
12159    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
12160  Current Release:
12161    Non-Debug Version:  79.8K Code, 17.7K Data,  97.5K Total
12162    Debug Version:     160.5K Code, 65.1K Data, 225.6K Total
12163
12164
12165
121662) iASL Compiler/Disassembler and Tools:
12167
12168Disassembler: Implemented support to cross reference the internal
12169namespace
12170and automatically generate ASL External() statements for symbols not
12171defined
12172within the current table being disassembled. This will simplify the
12173disassembly and recompilation of interdependent tables such as SSDTs
12174since
12175these statements will no longer have to be added manually.
12176
12177Disassembler: Implemented experimental support to automatically detect
12178invocations of external control methods and generate appropriate
12179External()
12180statements. This is problematic because the AML cannot be correctly
12181parsed
12182until the number of arguments for each control method is known.
12183Currently,
12184standalone method invocations and invocations as the source operand of a
12185Store() statement are supported.
12186
12187Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
12188LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
12189LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
12190more readable and likely closer to the original ASL source.
12191
12192----------------------------------------
1219321 April 2006. Summary of changes for version 20060421:
12194
121951) ACPI CA Core Subsystem:
12196
12197Removed a device initialization optimization introduced in 20051216 where
12198the _STA method was not run unless an _INI was also present for the same
12199device. This optimization could cause problems because it could allow
12200_INI
12201methods to be run within a not-present device subtree. (If a not-present
12202device had no _INI, _STA would not be run, the not-present status would
12203not
12204be discovered, and the children of the device would be incorrectly
12205traversed.)
12206
12207Implemented a new _STA optimization where namespace subtrees that do not
12208contain _INI are identified and ignored during device initialization.
12209Selectively running _STA can significantly improve boot time on large
12210machines (with assistance from Len Brown.)
12211
12212Implemented support for the device initialization case where the returned
12213_STA flags indicate a device not-present but functioning. In this case,
12214_INI
12215is not run, but the device children are examined for presence, as per the
12216ACPI specification.
12217
12218Implemented an additional change to the IndexField support in order to
12219conform to MS behavior. The value written to the Index Register is not
12220simply a byte offset, it is a byte offset in units of the access width of
12221the parent Index Field. (Fiodor Suietov)
12222
12223Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
12224interface is called during the creation of all AML operation regions, and
12225allows the host OS to exert control over what addresses it will allow the
12226AML code to access. Operation Regions whose addresses are disallowed will
12227cause a runtime exception when they are actually accessed (will not
12228affect
12229or abort table loading.) See oswinxf or osunixxf for an example
12230implementation.
12231
12232Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
12233interface allows the host OS to match the various "optional"
12234interface/behavior strings for the _OSI predefined control method as
12235appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
12236for an example implementation.
12237
12238Restructured and corrected various problems in the exception handling
12239code
12240paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
12241(with assistance from Takayoshi Kochi.)
12242
12243Modified the Linux source converter to ignore quoted string literals
12244while
12245converting identifiers from mixed to lower case. This will correct
12246problems
12247with the disassembler and other areas where such strings must not be
12248modified.
12249
12250The ACPI_FUNCTION_* macros no longer require quotes around the function
12251name. This allows the Linux source converter to convert the names, now
12252that
12253the converter ignores quoted strings.
12254
12255Example Code and Data Size: These are the sizes for the OS-independent
12256acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12257debug version of the code includes the debug output trace mechanism and
12258has
12259a much larger code and data size.
12260
12261  Previous Release:
12262
12263    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
12264    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
12265  Current Release:
12266    Non-Debug Version:  79.7K Code, 17.7K Data,  97.4K Total
12267    Debug Version:     160.1K Code, 65.2K Data, 225.3K Total
12268
12269
122702) iASL Compiler/Disassembler and Tools:
12271
12272Implemented 3 new warnings for iASL, and implemented multiple warning
12273levels
12274(w2 flag).
12275
122761) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
12277not
12278WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
12279check for the possible timeout, a warning is issued.
12280
122812) Useless operators: If an ASL operator does not specify an optional
12282target
12283operand and it also does not use the function return value from the
12284operator, a warning is issued since the operator effectively does
12285nothing.
12286
122873) Unreferenced objects: If a namespace object is created, but never
12288referenced, a warning is issued. This is a warning level 2 since there
12289are
12290cases where this is ok, such as when a secondary table is loaded that
12291uses
12292the unreferenced objects. Even so, care is taken to only flag objects
12293that
12294don't look like they will ever be used. For example, the reserved methods
12295(starting with an underscore) are usually not referenced because it is
12296expected that the OS will invoke them.
12297
12298----------------------------------------
1229931 March 2006. Summary of changes for version 20060331:
12300
123011) ACPI CA Core Subsystem:
12302
12303Implemented header file support for the following additional ACPI tables:
12304ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
12305support,
12306all current and known ACPI tables are now defined in the ACPICA headers
12307and
12308are available for use by device drivers and other software.
12309
12310Implemented support to allow tables that contain ACPI names with invalid
12311characters to be loaded. Previously, this would cause the table load to
12312fail, but since there are several known cases of such tables on existing
12313machines, this change was made to enable ACPI support for them. Also,
12314this
12315matches the behavior of the Microsoft ACPI implementation.
12316
12317Fixed a couple regressions introduced during the memory optimization in
12318the
1231920060317 release. The namespace node definition required additional
12320reorganization and an internal datatype that had been changed to 8-bit
12321was
12322restored to 32-bit. (Valery Podrezov)
12323
12324Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
12325could be passed through to AcpiOsReleaseObject which is unexpected. Such
12326null pointers are now trapped and ignored, matching the behavior of the
12327previous implementation before the deployment of AcpiOsReleaseObject.
12328(Valery Podrezov, Fiodor Suietov)
12329
12330Fixed a memory mapping leak during the deletion of a SystemMemory
12331operation
12332region where a cached memory mapping was not deleted. This became a
12333noticeable problem for operation regions that are defined within
12334frequently
12335used control methods. (Dana Meyers)
12336
12337Reorganized the ACPI table header files into two main files: one for the
12338ACPI tables consumed by the ACPICA core, and another for the
12339miscellaneous
12340ACPI tables that are consumed by the drivers and other software. The
12341various
12342FADT definitions were merged into one common section and three different
12343tables (ACPI 1.0, 1.0+, and 2.0)
12344
12345Example Code and Data Size: These are the sizes for the OS-independent
12346acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12347debug version of the code includes the debug output trace mechanism and
12348has
12349a much larger code and data size.
12350
12351  Previous Release:
12352    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12353    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12354  Current Release:
12355    Non-Debug Version:  81.1K Code, 17.7K Data,  98.8K Total
12356    Debug Version:     158.9K Code, 64.9K Data, 223.8K Total
12357
12358
123592) iASL Compiler/Disassembler and Tools:
12360
12361Disassembler: Implemented support to decode and format all non-AML ACPI
12362tables (tables other than DSDTs and SSDTs.) This includes the new tables
12363added to the ACPICA headers, therefore all current and known ACPI tables
12364are
12365supported.
12366
12367Disassembler: The change to allow ACPI names with invalid characters also
12368enables the disassembly of such tables. Invalid characters within names
12369are
12370changed to '*' to make the name printable; the iASL compiler will still
12371generate an error for such names, however, since this is an invalid ACPI
12372character.
12373
12374Implemented an option for AcpiXtract (-a) to extract all tables found in
12375the
12376input file. The default invocation extracts only the DSDTs and SSDTs.
12377
12378Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
12379makefile for the AcpiXtract utility.
12380
12381----------------------------------------
1238217 March 2006. Summary of changes for version 20060317:
12383
123841) ACPI CA Core Subsystem:
12385
12386Implemented the use of a cache object for all internal namespace nodes.
12387Since there are about 1000 static nodes in a typical system, this will
12388decrease memory use for cache implementations that minimize per-
12389allocation
12390overhead (such as a slab allocator.)
12391
12392Removed the reference count mechanism for internal namespace nodes, since
12393it
12394was deemed unnecessary. This reduces the size of each namespace node by
12395about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
12396case,
12397and 32 bytes for the 64-bit case.
12398
12399Optimized several internal data structures to reduce object size on 64-
12400bit
12401platforms by packing data within the 64-bit alignment. This includes the
12402frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
12403instances corresponding to the namespace objects.
12404
12405Added two new strings for the predefined _OSI method: "Windows 2001.1
12406SP1"
12407and "Windows 2006".
12408
12409Split the allocation tracking mechanism out to a separate file, from
12410utalloc.c to uttrack.c. This mechanism appears to be only useful for
12411application-level code. Kernels may wish to not include uttrack.c in
12412distributions.
12413
12414Removed all remnants of the obsolete ACPI_REPORT_* macros and the
12415associated
12416code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
12417macros.)
12418
12419Code and Data Size: These are the sizes for the acpica.lib produced by
12420the
12421Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12422ACPI
12423driver or OSPM code. The debug version of the code includes the debug
12424output
12425trace mechanism and has a much larger code and data size. Note that these
12426values will vary depending on the efficiency of the compiler and the
12427compiler options used during generation.
12428
12429  Previous Release:
12430    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12431    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12432  Current Release:
12433    Non-Debug Version:  80.9K Code, 17.7K Data,  98.6K Total
12434    Debug Version:     158.7K Code, 64.8K Data, 223.5K Total
12435
12436
124372) iASL Compiler/Disassembler and Tools:
12438
12439Implemented an ANSI C version of the acpixtract utility. This version
12440will
12441automatically extract the DSDT and all SSDTs from the input acpidump text
12442file and dump the binary output to separate files. It can also display a
12443summary of the input file including the headers for each table found and
12444will extract any single ACPI table, with any signature. (See
12445source/tools/acpixtract)
12446
12447----------------------------------------
1244810 March 2006. Summary of changes for version 20060310:
12449
124501) ACPI CA Core Subsystem:
12451
12452Tagged all external interfaces to the subsystem with the new
12453ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
12454assist
12455kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
12456macro. The default definition is NULL.
12457
12458Added the ACPI_THREAD_ID type for the return value from
12459AcpiOsGetThreadId.
12460This allows the host to define this as necessary to simplify kernel
12461integration. The default definition is ACPI_NATIVE_UINT.
12462
12463Fixed two interpreter problems related to error processing, the deletion
12464of
12465objects, and placing invalid pointers onto the internal operator result
12466stack. BZ 6028, 6151 (Valery Podrezov)
12467
12468Increased the reference count threshold where a warning is emitted for
12469large
12470reference counts in order to eliminate unnecessary warnings on systems
12471with
12472large namespaces (especially 64-bit.) Increased the value from 0x400 to
124730x800.
12474
12475Due to universal disagreement as to the meaning of the 'c' in the
12476calloc()
12477function, the ACPI_MEM_CALLOCATE macro has been renamed to
12478ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
12479ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
12480ACPI_FREE.
12481
12482Code and Data Size: These are the sizes for the acpica.lib produced by
12483the
12484Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12485ACPI
12486driver or OSPM code. The debug version of the code includes the debug
12487output
12488trace mechanism and has a much larger code and data size. Note that these
12489values will vary depending on the efficiency of the compiler and the
12490compiler options used during generation.
12491
12492  Previous Release:
12493    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12494    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12495  Current Release:
12496    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12497    Debug Version:     161.6K Code, 65.7K Data, 227.3K Total
12498
12499
125002) iASL Compiler/Disassembler:
12501
12502Disassembler: implemented support for symbolic resource descriptor
12503references. If a CreateXxxxField operator references a fixed offset
12504within
12505a
12506resource descriptor, a name is assigned to the descriptor and the offset
12507is
12508translated to the appropriate resource tag and pathname. The addition of
12509this support brings the disassembled code very close to the original ASL
12510source code and helps eliminate run-time errors when the disassembled
12511code
12512is modified (and recompiled) in such a way as to invalidate the original
12513fixed offsets.
12514
12515Implemented support for a Descriptor Name as the last parameter to the
12516ASL
12517Register() macro. This parameter was inadvertently left out of the ACPI
12518specification, and will be added for ACPI 3.0b.
12519
12520Fixed a problem where the use of the "_OSI" string (versus the full path
12521"\_OSI") caused an internal compiler error. ("No back ptr to op")
12522
12523Fixed a problem with the error message that occurs when an invalid string
12524is
12525used for a _HID object (such as one with an embedded asterisk:
12526"*PNP010A".)
12527The correct message is now displayed.
12528
12529----------------------------------------
1253017 February 2006. Summary of changes for version 20060217:
12531
125321) ACPI CA Core Subsystem:
12533
12534Implemented a change to the IndexField support to match the behavior of
12535the
12536Microsoft AML interpreter. The value written to the Index register is now
12537a
12538byte offset, no longer an index based upon the width of the Data
12539register.
12540This should fix IndexField problems seen on some machines where the Data
12541register is not exactly one byte wide. The ACPI specification will be
12542clarified on this point.
12543
12544Fixed a problem where several resource descriptor types could overrun the
12545internal descriptor buffer due to size miscalculation: VendorShort,
12546VendorLong, and Interrupt. This was noticed on IA64 machines, but could
12547affect all platforms.
12548
12549Fixed a problem where individual resource descriptors were misaligned
12550within
12551the internal buffer, causing alignment faults on IA64 platforms.
12552
12553Code and Data Size: These are the sizes for the acpica.lib produced by
12554the
12555Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12556ACPI
12557driver or OSPM code. The debug version of the code includes the debug
12558output
12559trace mechanism and has a much larger code and data size. Note that these
12560values will vary depending on the efficiency of the compiler and the
12561compiler options used during generation.
12562
12563  Previous Release:
12564    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12565    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12566  Current Release:
12567    Non-Debug Version:  81.0K Code, 17.8K Data,  98.8K Total
12568    Debug Version:     161.4K Code, 65.7K Data, 227.1K Total
12569
12570
125712) iASL Compiler/Disassembler:
12572
12573Implemented support for new reserved names: _WDG and _WED are Microsoft
12574extensions for Windows Instrumentation Management, _TDL is a new ACPI-
12575defined method (Throttling Depth Limit.)
12576
12577Fixed a problem where a zero-length VendorShort or VendorLong resource
12578descriptor was incorrectly emitted as a descriptor of length one.
12579
12580----------------------------------------
1258110 February 2006. Summary of changes for version 20060210:
12582
125831) ACPI CA Core Subsystem:
12584
12585Removed a couple of extraneous ACPI_ERROR messages that appeared during
12586normal execution. These became apparent after the conversion from
12587ACPI_DEBUG_PRINT.
12588
12589Fixed a problem where the CreateField operator could hang if the BitIndex
12590or
12591NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12592
12593Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12594failed with an exception. This also fixes a couple of related RefOf and
12595DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12596
12597Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12598of
12599AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12600BZ
126015480)
12602
12603Implemented a memory cleanup at the end of the execution of each
12604iteration
12605of an AML While() loop, preventing the accumulation of outstanding
12606objects.
12607(Valery Podrezov, BZ 5427)
12608
12609Eliminated a chunk of duplicate code in the object resolution code.
12610(Valery
12611Podrezov, BZ 5336)
12612
12613Fixed several warnings during the 64-bit code generation.
12614
12615The AcpiSrc source code conversion tool now inserts one line of
12616whitespace
12617after an if() statement that is followed immediately by a comment,
12618improving
12619readability of the Linux code.
12620
12621Code and Data Size: The current and previous library sizes for the core
12622subsystem are shown below. These are the code and data sizes for the
12623acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12624These
12625values do not include any ACPI driver or OSPM code. The debug version of
12626the
12627code includes the debug output trace mechanism and has a much larger code
12628and data size. Note that these values will vary depending on the
12629efficiency
12630of the compiler and the compiler options used during generation.
12631
12632  Previous Release:
12633    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12634    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12635  Current Release:
12636    Non-Debug Version:  81.1K Code, 17.8K Data,  98.9K Total
12637    Debug Version:     161.3K Code, 65.6K Data, 226.9K Total
12638
12639
126402) iASL Compiler/Disassembler:
12641
12642Fixed a problem with the disassembly of a BankField operator with a
12643complex
12644expression for the BankValue parameter.
12645
12646----------------------------------------
1264727 January 2006. Summary of changes for version 20060127:
12648
126491) ACPI CA Core Subsystem:
12650
12651Implemented support in the Resource Manager to allow unresolved
12652namestring
12653references within resource package objects for the _PRT method. This
12654support
12655is in addition to the previously implemented unresolved reference support
12656within the AML parser. If the interpreter slack mode is enabled, these
12657unresolved references will be passed through to the caller as a NULL
12658package
12659entry.
12660
12661Implemented and deployed new macros and functions for error and warning
12662messages across the subsystem. These macros are simpler and generate less
12663code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12664ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12665macros remain defined to allow ACPI drivers time to migrate to the new
12666macros.
12667
12668Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12669the
12670Acquire/Release Lock OSL interfaces.
12671
12672Fixed a problem where Alias ASL operators are sometimes not correctly
12673resolved, in both the interpreter and the iASL compiler.
12674
12675Fixed several problems with the implementation of the
12676ConcatenateResTemplate
12677ASL operator. As per the ACPI specification, zero length buffers are now
12678treated as a single EndTag. One-length buffers always cause a fatal
12679exception. Non-zero length buffers that do not end with a full 2-byte
12680EndTag
12681cause a fatal exception.
12682
12683Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12684interface. (With assistance from Thomas Renninger)
12685
12686Code and Data Size: The current and previous library sizes for the core
12687subsystem are shown below. These are the code and data sizes for the
12688acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12689These
12690values do not include any ACPI driver or OSPM code. The debug version of
12691the
12692code includes the debug output trace mechanism and has a much larger code
12693and data size. Note that these values will vary depending on the
12694efficiency
12695of the compiler and the compiler options used during generation.
12696
12697  Previous Release:
12698    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12699    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12700  Current Release:
12701    Non-Debug Version:  81.0K Code, 17.9K Data,  98.9K Total
12702    Debug Version:     161.3K Code, 65.7K Data, 227.0K Total
12703
12704
127052) iASL Compiler/Disassembler:
12706
12707Fixed an internal error that was generated for any forward references to
12708ASL
12709Alias objects.
12710
12711----------------------------------------
1271213 January 2006. Summary of changes for version 20060113:
12713
127141) ACPI CA Core Subsystem:
12715
12716Added 2006 copyright to all module headers and signons. This affects
12717virtually every file in the ACPICA core subsystem, iASL compiler, and the
12718utilities.
12719
12720Enhanced the ACPICA error reporting in order to simplify user migration
12721to
12722the non-debug version of ACPICA. Replaced all instances of the
12723ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12724debug
12725levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12726respectively. This preserves all error and warning messages in the non-
12727debug
12728version of the ACPICA code (this has been referred to as the "debug lite"
12729option.) Over 200 cases were converted to create a total of over 380
12730error/warning messages across the ACPICA code. This increases the code
12731and
12732data size of the default non-debug version of the code somewhat (about
1273313K),
12734but all error/warning reporting may be disabled if desired (and code
12735eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12736configuration option. The size of the debug version of ACPICA remains
12737about
12738the same.
12739
12740Fixed a memory leak within the AML Debugger "Set" command. One object was
12741not properly deleted for every successful invocation of the command.
12742
12743Code and Data Size: The current and previous library sizes for the core
12744subsystem are shown below. These are the code and data sizes for the
12745acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12746These
12747values do not include any ACPI driver or OSPM code. The debug version of
12748the
12749code includes the debug output trace mechanism and has a much larger code
12750and data size. Note that these values will vary depending on the
12751efficiency
12752of the compiler and the compiler options used during generation.
12753
12754  Previous Release:
12755    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12756    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12757  Current Release:
12758    Non-Debug Version:  83.1K Code, 18.4K Data, 101.5K Total
12759    Debug Version:     163.2K Code, 66.2K Data, 229.4K Total
12760
12761
127622) iASL Compiler/Disassembler:
12763
12764The compiler now officially supports the ACPI 3.0a specification that was
12765released on December 30, 2005. (Specification is available at
12766www.acpi.info)
12767
12768----------------------------------------
1276916 December 2005. Summary of changes for version 20051216:
12770
127711) ACPI CA Core Subsystem:
12772
12773Implemented optional support to allow unresolved names within ASL Package
12774objects. A null object is inserted in the package when a named reference
12775cannot be located in the current namespace. Enabled via the interpreter
12776slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12777machines
12778that contain such code.
12779
12780Implemented an optimization to the initialization sequence that can
12781improve
12782boot time. During ACPI device initialization, the _STA method is now run
12783if
12784and only if the _INI method exists. The _STA method is used to determine
12785if
12786the device is present; An _INI can only be run if _STA returns present,
12787but
12788it is a waste of time to run the _STA method if the _INI does not exist.
12789(Prototype and assistance from Dong Wei)
12790
12791Implemented use of the C99 uintptr_t for the pointer casting macros if it
12792is
12793available in the current compiler. Otherwise, the default (void *) cast
12794is
12795used as before.
12796
12797Fixed some possible memory leaks found within the execution path of the
12798Break, Continue, If, and CreateField operators. (Valery Podrezov)
12799
12800Fixed a problem introduced in the 20051202 release where an exception is
12801generated during method execution if a control method attempts to declare
12802another method.
12803
12804Moved resource descriptor string constants that are used by both the AML
12805disassembler and AML debugger to the common utilities directory so that
12806these components are independent.
12807
12808Implemented support in the AcpiExec utility (-e switch) to globally
12809ignore
12810exceptions during control method execution (method is not aborted.)
12811
12812Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12813generation.
12814
12815Code and Data Size: The current and previous library sizes for the core
12816subsystem are shown below. These are the code and data sizes for the
12817acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12818These
12819values do not include any ACPI driver or OSPM code. The debug version of
12820the
12821code includes the debug output trace mechanism and has a much larger code
12822and data size. Note that these values will vary depending on the
12823efficiency
12824of the compiler and the compiler options used during generation.
12825
12826  Previous Release:
12827    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12828    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12829  Current Release:
12830    Non-Debug Version:  76.6K Code, 12.3K Data,  88.9K Total
12831    Debug Version:     163.7K Code, 67.5K Data, 231.2K Total
12832
12833
128342) iASL Compiler/Disassembler:
12835
12836Fixed a problem where a CPU stack overflow fault could occur if a
12837recursive
12838method call was made from within a Return statement.
12839
12840----------------------------------------
1284102 December 2005. Summary of changes for version 20051202:
12842
128431) ACPI CA Core Subsystem:
12844
12845Modified the parsing of control methods to no longer create namespace
12846objects during the first pass of the parse. Objects are now created only
12847during the execute phase, at the moment the namespace creation operator
12848is
12849encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12850This
12851should eliminate ALREADY_EXISTS exceptions seen on some machines where
12852reentrant control methods are protected by an AML mutex. The mutex will
12853now
12854correctly block multiple threads from attempting to create the same
12855object
12856more than once.
12857
12858Increased the number of available Owner Ids for namespace object tracking
12859from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12860on
12861some machines with a large number of ACPI tables (either static or
12862dynamic).
12863
12864Fixed a problem with the AcpiExec utility where a fault could occur when
12865the
12866-b switch (batch mode) is used.
12867
12868Enhanced the namespace dump routine to output the owner ID for each
12869namespace object.
12870
12871Code and Data Size: The current and previous library sizes for the core
12872subsystem are shown below. These are the code and data sizes for the
12873acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12874These
12875values do not include any ACPI driver or OSPM code. The debug version of
12876the
12877code includes the debug output trace mechanism and has a much larger code
12878and data size. Note that these values will vary depending on the
12879efficiency
12880of the compiler and the compiler options used during generation.
12881
12882  Previous Release:
12883    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12884    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12885  Current Release:
12886    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12887    Debug Version:     163.2K Code, 67.4K Data, 230.6K Total
12888
12889
128902) iASL Compiler/Disassembler:
12891
12892Fixed a parse error during compilation of certain Switch/Case constructs.
12893To
12894simplify the parse, the grammar now allows for multiple Default
12895statements
12896and this error is now detected and flagged during the analysis phase.
12897
12898Disassembler: The disassembly now includes the contents of the original
12899table header within a comment at the start of the file. This includes the
12900name and version of the original ASL compiler.
12901
12902----------------------------------------
1290317 November 2005. Summary of changes for version 20051117:
12904
129051) ACPI CA Core Subsystem:
12906
12907Fixed a problem in the AML parser where the method thread count could be
12908decremented below zero if any errors occurred during the method parse
12909phase.
12910This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12911machines.
12912This also fixed a related regression with the mechanism that detects and
12913corrects methods that cannot properly handle reentrancy (related to the
12914deployment of the new OwnerId mechanism.)
12915
12916Eliminated the pre-parsing of control methods (to detect errors) during
12917table load. Related to the problem above, this was causing unwind issues
12918if
12919any errors occurred during the parse, and it seemed to be overkill. A
12920table
12921load should not be aborted if there are problems with any single control
12922method, thus rendering this feature rather pointless.
12923
12924Fixed a problem with the new table-driven resource manager where an
12925internal
12926buffer overflow could occur for small resource templates.
12927
12928Implemented a new external interface, AcpiGetVendorResource. This
12929interface
12930will find and return a vendor-defined resource descriptor within a _CRS
12931or
12932_PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12933Helgaas.
12934
12935Removed the length limit (200) on string objects as per the upcoming ACPI
129363.0A specification. This affects the following areas of the interpreter:
129371)
12938any implicit conversion of a Buffer to a String, 2) a String object
12939result
12940of the ASL Concatenate operator, 3) the String object result of the ASL
12941ToString operator.
12942
12943Fixed a problem in the Windows OS interface layer (OSL) where a
12944WAIT_FOREVER
12945on a semaphore object would incorrectly timeout. This allows the
12946multithreading features of the AcpiExec utility to work properly under
12947Windows.
12948
12949Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12950the recently added file named "utresrc.c".
12951
12952Code and Data Size: The current and previous library sizes for the core
12953subsystem are shown below. These are the code and data sizes for the
12954acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12955These
12956values do not include any ACPI driver or OSPM code. The debug version of
12957the
12958code includes the debug output trace mechanism and has a much larger code
12959and data size. Note that these values will vary depending on the
12960efficiency
12961of the compiler and the compiler options used during generation.
12962
12963  Previous Release:
12964    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
12965    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12966  Current Release:
12967    Non-Debug Version:  76.3K Code, 12.3K Data,  88.6K Total
12968    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
12969
12970
129712) iASL Compiler/Disassembler:
12972
12973Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12974specification. For the iASL compiler, this means that string literals
12975within
12976the source ASL can be of any length.
12977
12978Enhanced the listing output to dump the AML code for resource descriptors
12979immediately after the ASL code for each descriptor, instead of in a block
12980at
12981the end of the entire resource template.
12982
12983Enhanced the compiler debug output to dump the entire original parse tree
12984constructed during the parse phase, before any transforms are applied to
12985the
12986tree. The transformed tree is dumped also.
12987
12988----------------------------------------
1298902 November 2005. Summary of changes for version 20051102:
12990
129911) ACPI CA Core Subsystem:
12992
12993Modified the subsystem initialization sequence to improve GPE support.
12994The
12995GPE initialization has been split into two parts in order to defer
12996execution
12997of the _PRW methods (Power Resources for Wake) until after the hardware
12998is
12999fully initialized and the SCI handler is installed. This allows the _PRW
13000methods to access fields protected by the Global Lock. This will fix
13001systems
13002where a NO_GLOBAL_LOCK exception has been seen during initialization.
13003
13004Converted the ACPI internal object disassemble and display code within
13005the
13006AML debugger to fully table-driven operation, reducing code size and
13007increasing maintainability.
13008
13009Fixed a regression with the ConcatenateResTemplate() ASL operator
13010introduced
13011in the 20051021 release.
13012
13013Implemented support for "local" internal ACPI object types within the
13014debugger "Object" command and the AcpiWalkNamespace external interfaces.
13015These local types include RegionFields, BankFields, IndexFields, Alias,
13016and
13017reference objects.
13018
13019Moved common AML resource handling code into a new file, "utresrc.c".
13020This
13021code is shared by both the Resource Manager and the AML Debugger.
13022
13023Code and Data Size: The current and previous library sizes for the core
13024subsystem are shown below. These are the code and data sizes for the
13025acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13026These
13027values do not include any ACPI driver or OSPM code. The debug version of
13028the
13029code includes the debug output trace mechanism and has a much larger code
13030and data size. Note that these values will vary depending on the
13031efficiency
13032of the compiler and the compiler options used during generation.
13033
13034  Previous Release:
13035    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
13036    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
13037  Current Release:
13038    Non-Debug Version:  76.2K Code, 12.3K Data,  88.5K Total
13039    Debug Version:     163.0K Code, 67.4K Data, 230.4K Total
13040
13041
130422) iASL Compiler/Disassembler:
13043
13044Fixed a problem with very large initializer lists (more than 4000
13045elements)
13046for both Buffer and Package objects where the parse stack could overflow.
13047
13048Enhanced the pre-compile source code scan for non-ASCII characters to
13049ignore
13050characters within comment fields. The scan is now always performed and is
13051no
13052longer optional, detecting invalid characters within a source file
13053immediately rather than during the parse phase or later.
13054
13055Enhanced the ASL grammar definition to force early reductions on all
13056list-
13057style grammar elements so that the overall parse stack usage is greatly
13058reduced. This should improve performance and reduce the possibility of
13059parse
13060stack overflow.
13061
13062Eliminated all reduce/reduce conflicts in the iASL parser generation.
13063Also,
13064with the addition of a %expected statement, the compiler generates from
13065source with no warnings.
13066
13067Fixed a possible segment fault in the disassembler if the input filename
13068does not contain a "dot" extension (Thomas Renninger).
13069
13070----------------------------------------
1307121 October 2005. Summary of changes for version 20051021:
13072
130731) ACPI CA Core Subsystem:
13074
13075Implemented support for the EM64T and other x86-64 processors. This
13076essentially entails recognizing that these processors support non-aligned
13077memory transfers. Previously, all 64-bit processors were assumed to lack
13078hardware support for non-aligned transfers.
13079
13080Completed conversion of the Resource Manager to nearly full table-driven
13081operation. Specifically, the resource conversion code (convert AML to
13082internal format and the reverse) and the debug code to dump internal
13083resource descriptors are fully table-driven, reducing code and data size
13084and
13085improving maintainability.
13086
13087The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
13088word
13089on 64-bit processors instead of a fixed 32-bit word. (With assistance
13090from
13091Alexey Starikovskiy)
13092
13093Implemented support within the resource conversion code for the Type-
13094Specific byte within the various ACPI 3.0 *WordSpace macros.
13095
13096Fixed some issues within the resource conversion code for the type-
13097specific
13098flags for both Memory and I/O address resource descriptors. For Memory,
13099implemented support for the MTP and TTP flags. For I/O, split the TRS and
13100TTP flags into two separate fields.
13101
13102Code and Data Size: The current and previous library sizes for the core
13103subsystem are shown below. These are the code and data sizes for the
13104acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13105These
13106values do not include any ACPI driver or OSPM code. The debug version of
13107the
13108code includes the debug output trace mechanism and has a much larger code
13109and data size. Note that these values will vary depending on the
13110efficiency
13111of the compiler and the compiler options used during generation.
13112
13113  Previous Release:
13114    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
13115    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
13116  Current Release:
13117    Non-Debug Version:  76.1K Code, 12.2K Data,  88.3K Total
13118    Debug Version:     163.5K Code, 67.0K Data, 230.5K Total
13119
13120
13121
131222) iASL Compiler/Disassembler:
13123
13124Relaxed a compiler restriction that disallowed a ResourceIndex byte if
13125the
13126corresponding ResourceSource string was not also present in a resource
13127descriptor declaration. This restriction caused problems with existing
13128AML/ASL code that includes the Index byte without the string. When such
13129AML
13130was disassembled, it could not be compiled without modification. Further,
13131the modified code created a resource template with a different size than
13132the
13133original, breaking code that used fixed offsets into the resource
13134template
13135buffer.
13136
13137Removed a recent feature of the disassembler to ignore a lone
13138ResourceIndex
13139byte. This byte is now emitted if present so that the exact AML can be
13140reproduced when the disassembled code is recompiled.
13141
13142Improved comments and text alignment for the resource descriptor code
13143emitted by the disassembler.
13144
13145Implemented disassembler support for the ACPI 3.0 AccessSize field within
13146a
13147Register() resource descriptor.
13148
13149----------------------------------------
1315030 September 2005. Summary of changes for version 20050930:
13151
131521) ACPI CA Core Subsystem:
13153
13154Completed a major overhaul of the Resource Manager code - specifically,
13155optimizations in the area of the AML/internal resource conversion code.
13156The
13157code has been optimized to simplify and eliminate duplicated code, CPU
13158stack
13159use has been decreased by optimizing function parameters and local
13160variables, and naming conventions across the manager have been
13161standardized
13162for clarity and ease of maintenance (this includes function, parameter,
13163variable, and struct/typedef names.) The update may force changes in some
13164driver code, depending on how resources are handled by the host OS.
13165
13166All Resource Manager dispatch and information tables have been moved to a
13167single location for clarity and ease of maintenance. One new file was
13168created, named "rsinfo.c".
13169
13170The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
13171guarantee that the argument is not evaluated twice, making them less
13172prone
13173to macro side-effects. However, since there exists the possibility of
13174additional stack use if a particular compiler cannot optimize them (such
13175as
13176in the debug generation case), the original macros are optionally
13177available.
13178Note that some invocations of the return_VALUE macro may now cause size
13179mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
13180to
13181eliminate these. (From Randy Dunlap)
13182
13183Implemented a new mechanism to enable debug tracing for individual
13184control
13185methods. A new external interface, AcpiDebugTrace, is provided to enable
13186this mechanism. The intent is to allow the host OS to easily enable and
13187disable tracing for problematic control methods. This interface can be
13188easily exposed to a user or debugger interface if desired. See the file
13189psxface.c for details.
13190
13191AcpiUtCallocate will now return a valid pointer if a length of zero is
13192specified - a length of one is used and a warning is issued. This matches
13193the behavior of AcpiUtAllocate.
13194
13195Code and Data Size: The current and previous library sizes for the core
13196subsystem are shown below. These are the code and data sizes for the
13197acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13198These
13199values do not include any ACPI driver or OSPM code. The debug version of
13200the
13201code includes the debug output trace mechanism and has a much larger code
13202and data size. Note that these values will vary depending on the
13203efficiency
13204of the compiler and the compiler options used during generation.
13205
13206  Previous Release:
13207    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
13208    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
13209  Current Release:
13210    Non-Debug Version:  77.1K Code, 12.1K Data,  89.2K Total
13211    Debug Version:     168.0K Code, 68.3K Data, 236.3K Total
13212
13213
132142) iASL Compiler/Disassembler:
13215
13216A remark is issued if the effective compile-time length of a package or
13217buffer is zero. Previously, this was a warning.
13218
13219----------------------------------------
1322016 September 2005. Summary of changes for version 20050916:
13221
132221) ACPI CA Core Subsystem:
13223
13224Fixed a problem within the Resource Manager where support for the Generic
13225Register descriptor was not fully implemented. This descriptor is now
13226fully
13227recognized, parsed, disassembled, and displayed.
13228
13229Completely restructured the Resource Manager code to utilize table-driven
13230dispatch and lookup, eliminating many of the large switch() statements.
13231This
13232reduces overall subsystem code size and code complexity. Affects the
13233resource parsing and construction, disassembly, and debug dump output.
13234
13235Cleaned up and restructured the debug dump output for all resource
13236descriptors. Improved readability of the output and reduced code size.
13237
13238Fixed a problem where changes to internal data structures caused the
13239optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
13240
13241Code and Data Size: The current and previous library sizes for the core
13242subsystem are shown below. These are the code and data sizes for the
13243acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13244These
13245values do not include any ACPI driver or OSPM code. The debug version of
13246the
13247code includes the debug output trace mechanism and has a much larger code
13248and data size. Note that these values will vary depending on the
13249efficiency
13250of the compiler and the compiler options used during generation.
13251
13252  Previous Release:
13253    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
13254    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
13255  Current Release:
13256    Non-Debug Version:  77.5K Code, 12.0K Data,  89.5K Total
13257    Debug Version:     168.1K Code, 68.4K Data, 236.5K Total
13258
13259
132602) iASL Compiler/Disassembler:
13261
13262Updated the disassembler to automatically insert an EndDependentFn()
13263macro
13264into the ASL stream if this macro is missing in the original AML code,
13265simplifying compilation of the resulting ASL module.
13266
13267Fixed a problem in the disassembler where a disassembled ResourceSource
13268string (within a large resource descriptor) was not surrounded by quotes
13269and
13270not followed by a comma, causing errors when the resulting ASL module was
13271compiled. Also, escape sequences within a ResourceSource string are now
13272handled correctly (especially "\\")
13273
13274----------------------------------------
1327502 September 2005. Summary of changes for version 20050902:
13276
132771) ACPI CA Core Subsystem:
13278
13279Fixed a problem with the internal Owner ID allocation and deallocation
13280mechanisms for control method execution and recursive method invocation.
13281This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
13282messages seen on some systems. Recursive method invocation depth is
13283currently limited to 255. (Alexey Starikovskiy)
13284
13285Completely eliminated all vestiges of support for the "module-level
13286executable code" until this support is fully implemented and debugged.
13287This
13288should eliminate the NO_RETURN_VALUE exceptions seen during table load on
13289some systems that invoke this support.
13290
13291Fixed a problem within the resource manager code where the transaction
13292flags
13293for a 64-bit address descriptor were handled incorrectly in the type-
13294specific flag byte.
13295
13296Consolidated duplicate code within the address descriptor resource
13297manager
13298code, reducing overall subsystem code size.
13299
13300Fixed a fault when using the AML debugger "disassemble" command to
13301disassemble individual control methods.
13302
13303Removed references to the "release_current" directory within the Unix
13304release package.
13305
13306Code and Data Size: The current and previous core subsystem library sizes
13307are shown below. These are the code and data sizes for the acpica.lib
13308produced by the Microsoft Visual C++ 6.0 compiler. These values do not
13309include any ACPI driver or OSPM code. The debug version of the code
13310includes
13311the debug output trace mechanism and has a much larger code and data
13312size.
13313Note that these values will vary depending on the efficiency of the
13314compiler
13315and the compiler options used during generation.
13316
13317  Previous Release:
13318    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13319    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13320  Current Release:
13321    Non-Debug Version:  78.4K Code, 11.8K Data,  90.2K Total
13322    Debug Version:     169.6K Code, 69.9K Data, 239.5K Total
13323
13324
133252) iASL Compiler/Disassembler:
13326
13327Implemented an error check for illegal duplicate values in the interrupt
13328and
13329dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
13330Interrupt().
13331
13332Implemented error checking for the Irq() and IrqNoFlags() macros to
13333detect
13334too many values in the interrupt list (16 max) and invalid values in the
13335list (range 0 - 15)
13336
13337The maximum length string literal within an ASL file is now restricted to
13338200 characters as per the ACPI specification.
13339
13340Fixed a fault when using the -ln option (generate namespace listing).
13341
13342Implemented an error check to determine if a DescriptorName within a
13343resource descriptor has already been used within the current scope.
13344
13345----------------------------------------
1334615 August 2005.  Summary of changes for version 20050815:
13347
133481) ACPI CA Core Subsystem:
13349
13350Implemented a full bytewise compare to determine if a table load request
13351is
13352attempting to load a duplicate table. The compare is performed if the
13353table
13354signatures and table lengths match. This will allow different tables with
13355the same OEM Table ID and revision to be loaded - probably against the
13356ACPI
13357specification, but discovered in the field nonetheless.
13358
13359Added the changes.txt logfile to each of the zipped release packages.
13360
13361Code and Data Size: Current and previous core subsystem library sizes are
13362shown below. These are the code and data sizes for the acpica.lib
13363produced
13364by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13365any ACPI driver or OSPM code. The debug version of the code includes the
13366debug output trace mechanism and has a much larger code and data size.
13367Note
13368that these values will vary depending on the efficiency of the compiler
13369and
13370the compiler options used during generation.
13371
13372  Previous Release:
13373    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13374    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13375  Current Release:
13376    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13377    Debug Version:     170.0K Code, 69.9K Data, 239.9K Total
13378
13379
133802) iASL Compiler/Disassembler:
13381
13382Fixed a problem where incorrect AML code could be generated for Package
13383objects if optimization is disabled (via the -oa switch).
13384
13385Fixed a problem with where incorrect AML code is generated for variable-
13386length packages when the package length is not specified and the number
13387of
13388initializer values is greater than 255.
13389
13390
13391----------------------------------------
1339229 July 2005.  Summary of changes for version 20050729:
13393
133941) ACPI CA Core Subsystem:
13395
13396Implemented support to ignore an attempt to install/load a particular
13397ACPI
13398table more than once. Apparently there exists BIOS code that repeatedly
13399attempts to load the same SSDT upon certain events. With assistance from
13400Venkatesh Pallipadi.
13401
13402Restructured the main interface to the AML parser in order to correctly
13403handle all exceptional conditions. This will prevent leakage of the
13404OwnerId
13405resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
13406some
13407machines. With assistance from Alexey Starikovskiy.
13408
13409Support for "module level code" has been disabled in this version due to
13410a
13411number of issues that have appeared on various machines. The support can
13412be
13413enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
13414compilation. When the issues are fully resolved, the code will be enabled
13415by
13416default again.
13417
13418Modified the internal functions for debug print support to define the
13419FunctionName parameter as a (const char *) for compatibility with
13420compiler
13421built-in macros such as __FUNCTION__, etc.
13422
13423Linted the entire ACPICA source tree for both 32-bit and 64-bit.
13424
13425Implemented support to display an object count summary for the AML
13426Debugger
13427commands Object and Methods.
13428
13429Code and Data Size: Current and previous core subsystem library sizes are
13430shown below. These are the code and data sizes for the acpica.lib
13431produced
13432by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13433any ACPI driver or OSPM code. The debug version of the code includes the
13434debug output trace mechanism and has a much larger code and data size.
13435Note
13436that these values will vary depending on the efficiency of the compiler
13437and
13438the compiler options used during generation.
13439
13440  Previous Release:
13441    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13442    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13443  Current Release:
13444    Non-Debug Version:  78.6K Code, 11.7K Data,  90.3K Total
13445    Debug Version:     167.0K Code, 69.9K Data, 236.9K Total
13446
13447
134482) iASL Compiler/Disassembler:
13449
13450Fixed a regression that appeared in the 20050708 version of the compiler
13451where an error message was inadvertently emitted for invocations of the
13452_OSI
13453reserved control method.
13454
13455----------------------------------------
1345608 July 2005.  Summary of changes for version 20050708:
13457
134581) ACPI CA Core Subsystem:
13459
13460The use of the CPU stack in the debug version of the subsystem has been
13461considerably reduced. Previously, a debug structure was declared in every
13462function that used the debug macros. This structure has been removed in
13463favor of declaring the individual elements as parameters to the debug
13464functions. This reduces the cumulative stack use during nested execution
13465of
13466ACPI function calls at the cost of a small increase in the code size of
13467the
13468debug version of the subsystem. With assistance from Alexey Starikovskiy
13469and
13470Len Brown.
13471
13472Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
13473headers to define a macro that will return the current function name at
13474runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
13475by
13476the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
13477compiler-dependent header, the function name is saved on the CPU stack
13478(one
13479pointer per function.) This mechanism is used because apparently there
13480exists no standard ANSI-C defined macro that that returns the function
13481name.
13482
13483Redesigned and reimplemented the "Owner ID" mechanism used to track
13484namespace objects created/deleted by ACPI tables and control method
13485execution. A bitmap is now used to allocate and free the IDs, thus
13486solving
13487the wraparound problem present in the previous implementation. The size
13488of
13489the namespace node descriptor was reduced by 2 bytes as a result (Alexey
13490Starikovskiy).
13491
13492Removed the UINT32_BIT and UINT16_BIT types that were used for the
13493bitfield
13494flag definitions within the headers for the predefined ACPI tables. These
13495have been replaced by UINT8_BIT in order to increase the code portability
13496of
13497the subsystem. If the use of UINT8 remains a problem, we may be forced to
13498eliminate bitfields entirely because of a lack of portability.
13499
13500Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
13501This
13502is a frequently used function and this improvement increases the
13503performance
13504of the entire subsystem (Alexey Starikovskiy).
13505
13506Fixed several possible memory leaks and the inverse - premature object
13507deletion (Alexey Starikovskiy).
13508
13509Code and Data Size: Current and previous core subsystem library sizes are
13510shown below. These are the code and data sizes for the acpica.lib
13511produced
13512by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13513any ACPI driver or OSPM code. The debug version of the code includes the
13514debug output trace mechanism and has a much larger code and data size.
13515Note
13516that these values will vary depending on the efficiency of the compiler
13517and
13518the compiler options used during generation.
13519
13520  Previous Release:
13521    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13522    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13523  Current Release:
13524    Non-Debug Version:  78.6K Code, 11.6K Data,  90.2K Total
13525    Debug Version:     170.0K Code, 69.7K Data, 239.7K Total
13526
13527----------------------------------------
1352824 June 2005.  Summary of changes for version 20050624:
13529
135301) ACPI CA Core Subsystem:
13531
13532Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
13533the host-defined cache object. This allows the OSL implementation to
13534define
13535and type this object in any manner desired, simplifying the OSL
13536implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
13537Linux, and should be defined in the OS-specific header file for other
13538operating systems as required.
13539
13540Changed the interface to AcpiOsAcquireObject to directly return the
13541requested object as the function return (instead of ACPI_STATUS.) This
13542change was made for performance reasons, since this is the purpose of the
13543interface in the first place. AcpiOsAcquireObject is now similar to the
13544AcpiOsAllocate interface.
13545
13546Implemented a new AML debugger command named Businfo. This command
13547displays
13548information about all devices that have an associate _PRT object. The
13549_ADR,
13550_HID, _UID, and _CID are displayed for these devices.
13551
13552Modified the initialization sequence in AcpiInitializeSubsystem to call
13553the
13554OSL interface AcpiOslInitialize first, before any local initialization.
13555This
13556change was required because the global initialization now calls OSL
13557interfaces.
13558
13559Enhanced the Dump command to display the entire contents of Package
13560objects
13561(including all sub-objects and their values.)
13562
13563Restructured the code base to split some files because of size and/or
13564because the code logically belonged in a separate file. New files are
13565listed
13566below. All makefiles and project files included in the ACPI CA release
13567have
13568been updated.
13569    utilities/utcache.c           /* Local cache interfaces */
13570    utilities/utmutex.c           /* Local mutex support */
13571    utilities/utstate.c           /* State object support */
13572    interpreter/parser/psloop.c   /* Main AML parse loop */
13573
13574Code and Data Size: Current and previous core subsystem library sizes are
13575shown below. These are the code and data sizes for the acpica.lib
13576produced
13577by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13578any ACPI driver or OSPM code. The debug version of the code includes the
13579debug output trace mechanism and has a much larger code and data size.
13580Note
13581that these values will vary depending on the efficiency of the compiler
13582and
13583the compiler options used during generation.
13584
13585  Previous Release:
13586    Non-Debug Version:  78.3K Code, 11.6K Data,  89.9K Total
13587    Debug Version:     164.0K Code, 69.1K Data, 233.1K Total
13588  Current Release:
13589    Non-Debug Version:  78.6K Code, 11.5K Data,  90.1K Total
13590    Debug Version:     165.2K Code, 69.6K Data, 234.8K Total
13591
13592
135932) iASL Compiler/Disassembler:
13594
13595Fixed a regression introduced in version 20050513 where the use of a
13596Package
13597object within a Case() statement caused a compile time exception. The
13598original behavior has been restored (a Match() operator is emitted.)
13599
13600----------------------------------------
1360117 June 2005.  Summary of changes for version 20050617:
13602
136031) ACPI CA Core Subsystem:
13604
13605Moved the object cache operations into the OS interface layer (OSL) to
13606allow
13607the host OS to handle these operations if desired (for example, the Linux
13608OSL will invoke the slab allocator). This support is optional; the
13609compile
13610time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13611cache
13612code in the ACPI CA core. The new OSL interfaces are shown below. See
13613utalloc.c for an example implementation, and acpiosxf.h for the exact
13614interface definitions. With assistance from Alexey Starikovskiy.
13615    AcpiOsCreateCache
13616    AcpiOsDeleteCache
13617    AcpiOsPurgeCache
13618    AcpiOsAcquireObject
13619    AcpiOsReleaseObject
13620
13621Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13622return
13623and restore a flags parameter. This fits better with many OS lock models.
13624Note: the current execution state (interrupt handler or not) is no longer
13625passed to these interfaces. If necessary, the OSL must determine this
13626state
13627by itself, a simple and fast operation. With assistance from Alexey
13628Starikovskiy.
13629
13630Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13631present if the revision of the RSDP was 2 or greater. According to the
13632ACPI
13633specification, the XSDT is optional in all cases, and the table manager
13634therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13635Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13636contain
13637only the RSDT.
13638
13639Fixed an interpreter problem with the Mid() operator in the case of an
13640input
13641string where the resulting output string is of zero length. It now
13642correctly
13643returns a valid, null terminated string object instead of a string object
13644with a null pointer.
13645
13646Fixed a problem with the control method argument handling to allow a
13647store
13648to an Arg object that already contains an object of type Device. The
13649Device
13650object is now correctly overwritten. Previously, an error was returned.
13651
13652
13653Enhanced the debugger Find command to emit object values in addition to
13654the
13655found object pathnames. The output format is the same as the dump
13656namespace
13657command.
13658
13659Enhanced the debugger Set command. It now has the ability to set the
13660value
13661of any Named integer object in the namespace (Previously, only method
13662locals
13663and args could be set.)
13664
13665Code and Data Size: Current and previous core subsystem library sizes are
13666shown below. These are the code and data sizes for the acpica.lib
13667produced
13668by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13669any ACPI driver or OSPM code. The debug version of the code includes the
13670debug output trace mechanism and has a much larger code and data size.
13671Note
13672that these values will vary depending on the efficiency of the compiler
13673and
13674the compiler options used during generation.
13675
13676  Previous Release:
13677    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13678    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13679  Current 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
13683
136842) iASL Compiler/Disassembler:
13685
13686Fixed a regression in the disassembler where if/else/while constructs
13687were
13688output incorrectly. This problem was introduced in the previous release
13689(20050526). This problem also affected the single-step disassembly in the
13690debugger.
13691
13692Fixed a problem where compiling the reserved _OSI method would randomly
13693(but
13694rarely) produce compile errors.
13695
13696Enhanced the disassembler to emit compilable code in the face of
13697incorrect
13698AML resource descriptors. If the optional ResourceSourceIndex is present,
13699but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13700disassembly. Otherwise, the resulting code cannot be compiled without
13701errors.
13702
13703----------------------------------------
1370426 May 2005.  Summary of changes for version 20050526:
13705
137061) ACPI CA Core Subsystem:
13707
13708Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13709the module level (not within a control method.) These opcodes are
13710executed
13711exactly once at the time the table is loaded. This type of code was legal
13712up
13713until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13714in
13715order to provide backwards compatibility with earlier BIOS
13716implementations.
13717This eliminates the "Encountered executable code at module level" warning
13718that was previously generated upon detection of such code.
13719
13720Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13721inadvertently be generated during the lookup of namespace objects in the
13722second pass parse of ACPI tables and control methods. It appears that
13723this
13724problem could occur during the resolution of forward references to
13725namespace
13726objects.
13727
13728Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13729corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13730allows the deadlock detection debug code to be compiled out in the normal
13731case, improving mutex performance (and overall subsystem performance)
13732considerably.
13733
13734Implemented a handful of miscellaneous fixes for possible memory leaks on
13735error conditions and error handling control paths. These fixes were
13736suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13737
13738Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13739(tbxfroot.c)
13740to prevent a fault in this error case.
13741
13742Code and Data Size: Current and previous core subsystem library sizes are
13743shown below. These are the code and data sizes for the acpica.lib
13744produced
13745by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13746any ACPI driver or OSPM code. The debug version of the code includes the
13747debug output trace mechanism and has a much larger code and data size.
13748Note
13749that these values will vary depending on the efficiency of the compiler
13750and
13751the compiler options used during generation.
13752
13753  Previous Release:
13754    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13755    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13756  Current Release:
13757    Non-Debug Version:  78.1K Code, 11.6K Data,  89.7K Total
13758    Debug Version:     164.0K Code, 69.3K Data, 233.3K Total
13759
13760
137612) iASL Compiler/Disassembler:
13762
13763Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13764the module level (not within a control method.) These operators will be
13765executed once at the time the table is loaded. This type of code was
13766legal
13767up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13768compiler in order to provide backwards compatibility with earlier BIOS
13769ASL
13770code.
13771
13772The ACPI integer width (specified via the table revision ID or the -r
13773override, 32 or 64 bits) is now used internally during compile-time
13774constant
13775folding to ensure that constants are truncated to 32 bits if necessary.
13776Previously, the revision ID value was only emitted in the AML table
13777header.
13778
13779An error message is now generated for the Mutex and Method operators if
13780the
13781SyncLevel parameter is outside the legal range of 0 through 15.
13782
13783Fixed a problem with the Method operator ParameterTypes list handling
13784(ACPI
137853.0). Previously, more than 2 types or 2 arguments generated a syntax
13786error.
13787The actual underlying implementation of method argument typechecking is
13788still under development, however.
13789
13790----------------------------------------
1379113 May 2005.  Summary of changes for version 20050513:
13792
137931) ACPI CA Core Subsystem:
13794
13795Implemented support for PCI Express root bridges -- added support for
13796device
13797PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13798
13799The interpreter now automatically truncates incoming 64-bit constants to
1380032
13801bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13802This
13803also affects the iASL compiler constant folding. (Note: as per below, the
13804iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13805
13806Fixed a problem where string and buffer objects with "static" pointers
13807(pointers to initialization data within an ACPI table) were not handled
13808consistently. The internal object copy operation now always copies the
13809data
13810to a newly allocated buffer, regardless of whether the source object is
13811static or not.
13812
13813Fixed a problem with the FromBCD operator where an implicit result
13814conversion was improperly performed while storing the result to the
13815target
13816operand. Since this is an "explicit conversion" operator, the implicit
13817conversion should never be performed on the output.
13818
13819Fixed a problem with the CopyObject operator where a copy to an existing
13820named object did not always completely overwrite the existing object
13821stored
13822at name. Specifically, a buffer-to-buffer copy did not delete the
13823existing
13824buffer.
13825
13826Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13827and
13828structs for consistency.
13829
13830Code and Data Size: Current and previous core subsystem library sizes are
13831shown below. These are the code and data sizes for the acpica.lib
13832produced
13833by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13834any ACPI driver or OSPM code. The debug version of the code includes the
13835debug output trace mechanism and has a much larger code and data size.
13836Note
13837that these values will vary depending on the efficiency of the compiler
13838and
13839the compiler options used during generation.
13840
13841  Previous Release:
13842    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13843    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13844  Current Release: (Same sizes)
13845    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13846    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13847
13848
138492) iASL Compiler/Disassembler:
13850
13851The compiler now emits a warning if an attempt is made to generate a 64-
13852bit
13853integer constant from within a 32-bit ACPI table (Revision < 2). The
13854integer
13855is truncated to 32 bits.
13856
13857Fixed a problem with large package objects: if the static length of the
13858package is greater than 255, the "variable length package" opcode is
13859emitted. Previously, this caused an error. This requires an update to the
13860ACPI spec, since it currently (incorrectly) states that packages larger
13861than
13862255 elements are not allowed.
13863
13864The disassembler now correctly handles variable length packages and
13865packages
13866larger than 255 elements.
13867
13868----------------------------------------
1386908 April 2005.  Summary of changes for version 20050408:
13870
138711) ACPI CA Core Subsystem:
13872
13873Fixed three cases in the interpreter where an "index" argument to an ASL
13874function was still (internally) 32 bits instead of the required 64 bits.
13875This was the Index argument to the Index, Mid, and Match operators.
13876
13877The "strupr" function is now permanently local (AcpiUtStrupr), since this
13878is
13879not a POSIX-defined function and not present in most kernel-level C
13880libraries. All references to the C library strupr function have been
13881removed
13882from the headers.
13883
13884Completed the deployment of static functions/prototypes. All prototypes
13885with
13886the static attribute have been moved from the headers to the owning C
13887file.
13888
13889Implemented an extract option (-e) for the AcpiBin utility (AML binary
13890utility). This option allows the utility to extract individual ACPI
13891tables
13892from the output of AcpiDmp. It provides the same functionality of the
13893acpixtract.pl perl script without the worry of setting the correct perl
13894options. AcpiBin runs on Windows and has not yet been generated/validated
13895in
13896the Linux/Unix environment (but should be soon).
13897
13898Updated and fixed the table dump option for AcpiBin (-d). This option
13899converts a single ACPI table to a hex/ascii file, similar to the output
13900of
13901AcpiDmp.
13902
13903Code and Data Size: Current and previous core subsystem library sizes are
13904shown below. These are the code and data sizes for the acpica.lib
13905produced
13906by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13907any ACPI driver or OSPM code. The debug version of the code includes the
13908debug output trace mechanism and has a much larger code and data size.
13909Note
13910that these values will vary depending on the efficiency of the compiler
13911and
13912the compiler options used during generation.
13913
13914  Previous Release:
13915    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13916    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13917  Current Release:
13918    Non-Debug Version:  78.2K Code, 11.6K Data,  89.8K Total
13919    Debug Version:     163.7K Code, 69.3K Data, 233.0K Total
13920
13921
139222) iASL Compiler/Disassembler:
13923
13924Disassembler fix: Added a check to ensure that the table length found in
13925the
13926ACPI table header within the input file is not longer than the actual
13927input
13928file size. This indicates some kind of file or table corruption.
13929
13930----------------------------------------
1393129 March 2005.  Summary of changes for version 20050329:
13932
139331) ACPI CA Core Subsystem:
13934
13935An error is now generated if an attempt is made to create a Buffer Field
13936of
13937length zero (A CreateField with a length operand of zero.)
13938
13939The interpreter now issues a warning whenever executable code at the
13940module
13941level is detected during ACPI table load. This will give some idea of the
13942prevalence of this type of code.
13943
13944Implemented support for references to named objects (other than control
13945methods) within package objects.
13946
13947Enhanced package object output for the debug object. Package objects are
13948now
13949completely dumped, showing all elements.
13950
13951Enhanced miscellaneous object output for the debug object. Any object can
13952now be written to the debug object (for example, a device object can be
13953written, and the type of the object will be displayed.)
13954
13955The "static" qualifier has been added to all local functions across both
13956the
13957core subsystem and the iASL compiler.
13958
13959The number of "long" lines (> 80 chars) within the source has been
13960significantly reduced, by about 1/3.
13961
13962Cleaned up all header files to ensure that all CA/iASL functions are
13963prototyped (even static functions) and the formatting is consistent.
13964
13965Two new header files have been added, acopcode.h and acnames.h.
13966
13967Removed several obsolete functions that were no longer used.
13968
13969Code and Data Size: Current and previous core subsystem library sizes are
13970shown below. These are the code and data sizes for the acpica.lib
13971produced
13972by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13973any ACPI driver or OSPM code. The debug version of the code includes the
13974debug output trace mechanism and has a much larger code and data size.
13975Note
13976that these values will vary depending on the efficiency of the compiler
13977and
13978the compiler options used during generation.
13979
13980  Previous Release:
13981    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
13982    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
13983  Current Release:
13984    Non-Debug Version:  78.0K Code, 11.6K Data,  89.6K Total
13985    Debug Version:     163.5K Code, 69.3K Data, 232.8K Total
13986
13987
13988
139892) iASL Compiler/Disassembler:
13990
13991Fixed a problem with the resource descriptor generation/support. For the
13992ResourceSourceIndex and the ResourceSource fields, both must be present,
13993or
13994both must be not present - can't have one without the other.
13995
13996The compiler now returns non-zero from the main procedure if any errors
13997have
13998occurred during the compilation.
13999
14000
14001----------------------------------------
1400209 March 2005.  Summary of changes for version 20050309:
14003
140041) ACPI CA Core Subsystem:
14005
14006The string-to-buffer implicit conversion code has been modified again
14007after
14008a change to the ACPI specification.  In order to match the behavior of
14009the
14010other major ACPI implementation, the target buffer is no longer truncated
14011if
14012the source string is smaller than an existing target buffer. This change
14013requires an update to the ACPI spec, and should eliminate the recent
14014AE_AML_BUFFER_LIMIT issues.
14015
14016The "implicit return" support was rewritten to a new algorithm that
14017solves
14018the general case. Rather than attempt to determine when a method is about
14019to
14020exit, the result of every ASL operator is saved momentarily until the
14021very
14022next ASL operator is executed. Therefore, no matter how the method exits,
14023there will always be a saved implicit return value. This feature is only
14024enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
14025eliminate
14026AE_AML_NO_RETURN_VALUE errors when enabled.
14027
14028Implemented implicit conversion support for the predicate (operand) of
14029the
14030If, Else, and While operators. String and Buffer arguments are
14031automatically
14032converted to Integers.
14033
14034Changed the string-to-integer conversion behavior to match the new ACPI
14035errata: "If no integer object exists, a new integer is created. The ASCII
14036string is interpreted as a hexadecimal constant. Each string character is
14037interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
14038with the first character as the most significant digit, and ending with
14039the
14040first non-hexadecimal character or end-of-string." This means that the
14041first
14042non-hex character terminates the conversion and this is the code that was
14043changed.
14044
14045Fixed a problem where the ObjectType operator would fail (fault) when
14046used
14047on an Index of a Package which pointed to a null package element. The
14048operator now properly returns zero (Uninitialized) in this case.
14049
14050Fixed a problem where the While operator used excessive memory by not
14051properly popping the result stack during execution. There was no memory
14052leak
14053after execution, however. (Code provided by Valery Podrezov.)
14054
14055Fixed a problem where references to control methods within Package
14056objects
14057caused the method to be invoked, instead of producing a reference object
14058pointing to the method.
14059
14060Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
14061to
14062improve performance and reduce code size. (Code provided by Alexey
14063Starikovskiy.)
14064
14065Code and Data Size: Current and previous core subsystem library sizes are
14066shown below. These are the code and data sizes for the acpica.lib
14067produced
14068by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14069any ACPI driver or OSPM code. The debug version of the code includes the
14070debug output trace mechanism and has a much larger code and data size.
14071Note
14072that these values will vary depending on the efficiency of the compiler
14073and
14074the compiler options used during generation.
14075
14076  Previous Release:
14077    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14078    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
14079  Current Release:
14080    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14081    Debug Version:     165.4K Code, 69.7K Data, 236.1K Total
14082
14083
140842) iASL Compiler/Disassembler:
14085
14086Fixed a problem with the Return operator with no arguments. Since the AML
14087grammar for the byte encoding requires an operand for the Return opcode,
14088the
14089compiler now emits a Return(Zero) for this case.  An ACPI specification
14090update has been written for this case.
14091
14092For tables other than the DSDT, namepath optimization is automatically
14093disabled. This is because SSDTs can be loaded anywhere in the namespace,
14094the
14095compiler has no knowledge of where, and thus cannot optimize namepaths.
14096
14097Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
14098inadvertently omitted from the ACPI specification, and will require an
14099update to the spec.
14100
14101The source file scan for ASCII characters is now optional (-a). This
14102change
14103was made because some vendors place non-ascii characters within comments.
14104However, the scan is simply a brute-force byte compare to ensure all
14105characters in the file are in the range 0x00 to 0x7F.
14106
14107Fixed a problem with the CondRefOf operator where the compiler was
14108inappropriately checking for the existence of the target. Since the point
14109of
14110the operator is to check for the existence of the target at run-time, the
14111compiler no longer checks for the target existence.
14112
14113Fixed a problem where errors generated from the internal AML interpreter
14114during constant folding were not handled properly, causing a fault.
14115
14116Fixed a problem with overly aggressive range checking for the Stall
14117operator. The valid range (max 255) is now only checked if the operand is
14118of
14119type Integer. All other operand types cannot be statically checked.
14120
14121Fixed a problem where control method references within the RefOf,
14122DeRefOf,
14123and ObjectType operators were not treated properly. They are now treated
14124as
14125actual references, not method invocations.
14126
14127Fixed and enhanced the "list namespace" option (-ln). This option was
14128broken
14129a number of releases ago.
14130
14131Improved error handling for the Field, IndexField, and BankField
14132operators.
14133The compiler now cleanly reports and recovers from errors in the field
14134component (FieldUnit) list.
14135
14136Fixed a disassembler problem where the optional ResourceDescriptor fields
14137TRS and TTP were not always handled correctly.
14138
14139Disassembler - Comments in output now use "//" instead of "/*"
14140
14141----------------------------------------
1414228 February 2005.  Summary of changes for version 20050228:
14143
141441) ACPI CA Core Subsystem:
14145
14146Fixed a problem where the result of an Index() operator (an object
14147reference) must increment the reference count on the target object for
14148the
14149life of the object reference.
14150
14151Implemented AML Interpreter and Debugger support for the new ACPI 3.0
14152Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
14153WordSpace
14154resource descriptors.
14155
14156Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
14157Space Descriptor" string, indicating interpreter support for the
14158descriptors
14159above.
14160
14161Implemented header support for the new ACPI 3.0 FADT flag bits.
14162
14163Implemented header support for the new ACPI 3.0 PCI Express bits for the
14164PM1
14165status/enable registers.
14166
14167Updated header support for the MADT processor local Apic struct and MADT
14168platform interrupt source struct for new ACPI 3.0 fields.
14169
14170Implemented header support for the SRAT and SLIT ACPI tables.
14171
14172Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
14173flag
14174at runtime.
14175
14176Code and Data Size: Current and previous core subsystem library sizes are
14177shown below. These are the code and data sizes for the acpica.lib
14178produced
14179by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14180any ACPI driver or OSPM code. The debug version of the code includes the
14181debug output trace mechanism and has a much larger code and data size.
14182Note
14183that these values will vary depending on the efficiency of the compiler
14184and
14185the compiler options used during generation.
14186
14187  Previous Release:
14188    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
14189    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
14190  Current Release:
14191    Non-Debug Version:  78.3K Code, 11.5K Data,  89.8K Total
14192    Debug Version:     165.4K Code, 69.6K Data, 236.0K Total
14193
14194
141952) iASL Compiler/Disassembler:
14196
14197Fixed a problem with the internal 64-bit String-to-integer conversion
14198with
14199strings less than two characters long.
14200
14201Fixed a problem with constant folding where the result of the Index()
14202operator can not be considered a constant. This means that Index() cannot
14203be
14204a type3 opcode and this will require an update to the ACPI specification.
14205
14206Disassembler: Implemented support for the TTP, MTP, and TRS resource
14207descriptor fields. These fields were inadvertently ignored and not output
14208in
14209the disassembly of the resource descriptor.
14210
14211
14212 ----------------------------------------
1421311 February 2005.  Summary of changes for version 20050211:
14214
142151) ACPI CA Core Subsystem:
14216
14217Implemented ACPI 3.0 support for implicit conversion within the Match()
14218operator. MatchObjects can now be of type integer, buffer, or string
14219instead
14220of just type integer.  Package elements are implicitly converted to the
14221type
14222of the MatchObject. This change aligns the behavior of Match() with the
14223behavior of the other logical operators (LLess(), etc.) It also requires
14224an
14225errata change to the ACPI specification as this support was intended for
14226ACPI 3.0, but was inadvertently omitted.
14227
14228Fixed a problem with the internal implicit "to buffer" conversion.
14229Strings
14230that are converted to buffers will cause buffer truncation if the string
14231is
14232smaller than the target buffer. Integers that are converted to buffers
14233will
14234not cause buffer truncation, only zero extension (both as per the ACPI
14235spec.) The problem was introduced when code was added to truncate the
14236buffer, but this should not be performed in all cases, only the string
14237case.
14238
14239Fixed a problem with the Buffer and Package operators where the
14240interpreter
14241would get confused if two such operators were used as operands to an ASL
14242operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
14243stack was not being popped after the execution of these operators,
14244resulting
14245in an AE_NO_RETURN_VALUE exception.
14246
14247Fixed a problem with constructs of the form Store(Index(...),...). The
14248reference object returned from Index was inadvertently resolved to an
14249actual
14250value. This problem was introduced in version 20050114 when the behavior
14251of
14252Store() was modified to restrict the object types that can be used as the
14253source operand (to match the ACPI specification.)
14254
14255Reduced excessive stack use within the AcpiGetObjectInfo procedure.
14256
14257Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
14258
14259Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
14260
14261Code and Data Size: Current and previous core subsystem library sizes are
14262shown below. These are the code and data sizes for the acpica.lib
14263produced
14264by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14265any ACPI driver or OSPM code. The debug version of the code includes the
14266debug output trace mechanism and has a much larger code and data size.
14267Note
14268that these values will vary depending on the efficiency of the compiler
14269and
14270the compiler options used during generation.
14271
14272  Previous Release:
14273    Non-Debug Version:  78.1K Code, 11.5K Data,  89.6K Total
14274    Debug Version:     164.8K Code, 69.2K Data, 234.0K Total
14275  Current Release:
14276    Non-Debug Version:  78.2K Code, 11.5K Data,  89.7K Total
14277    Debug Version:     164.9K Code, 69.2K Data, 234.1K Total
14278
14279
142802) iASL Compiler/Disassembler:
14281
14282Fixed a code generation problem in the constant folding optimization code
14283where incorrect code was generated if a constant was reduced to a buffer
14284object (i.e., a reduced type 5 opcode.)
14285
14286Fixed a typechecking problem for the ToBuffer operator. Caused by an
14287incorrect return type in the internal opcode information table.
14288
14289----------------------------------------
1429025 January 2005.  Summary of changes for version 20050125:
14291
142921) ACPI CA Core Subsystem:
14293
14294Fixed a recently introduced problem with the Global Lock where the
14295underlying semaphore was not created.  This problem was introduced in
14296version 20050114, and caused an AE_AML_NO_OPERAND exception during an
14297Acquire() operation on _GL.
14298
14299The local object cache is now optional, and is disabled by default. Both
14300AcpiExec and the iASL compiler enable the cache because they run in user
14301mode and this enhances their performance. #define
14302ACPI_ENABLE_OBJECT_CACHE
14303to enable the local cache.
14304
14305Fixed an issue in the internal function AcpiUtEvaluateObject concerning
14306the
14307optional "implicit return" support where an error was returned if no
14308return
14309object was expected, but one was implicitly returned. AE_OK is now
14310returned
14311in this case and the implicitly returned object is deleted.
14312AcpiUtEvaluateObject is only occasionally used, and only to execute
14313reserved
14314methods such as _STA and _INI where the return type is known up front.
14315
14316Fixed a few issues with the internal convert-to-integer code. It now
14317returns
14318an error if an attempt is made to convert a null string, a string of only
14319blanks/tabs, or a zero-length buffer. This affects both implicit
14320conversion
14321and explicit conversion via the ToInteger() operator.
14322
14323The internal debug code in AcpiUtAcquireMutex has been commented out. It
14324is
14325not needed for normal operation and should increase the performance of
14326the
14327entire subsystem. The code remains in case it is needed for debug
14328purposes
14329again.
14330
14331The AcpiExec source and makefile are included in the Unix/Linux package
14332for
14333the first time.
14334
14335Code and Data Size: Current and previous core subsystem library sizes are
14336shown below. These are the code and data sizes for the acpica.lib
14337produced
14338by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14339any ACPI driver or OSPM code. The debug version of the code includes the
14340debug output trace mechanism and has a much larger code and data size.
14341Note
14342that these values will vary depending on the efficiency of the compiler
14343and
14344the compiler options used during generation.
14345
14346  Previous Release:
14347    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14348    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14349  Current Release:
14350    Non-Debug Version:  78.1K Code,  11.5K Data,   89.6K Total
14351    Debug Version:     164.8K Code,  69.2K Data,  234.0K Total
14352
143532) iASL Compiler/Disassembler:
14354
14355Switch/Case support: A warning is now issued if the type of the Switch
14356value
14357cannot be determined at compile time. For example, Switch(Arg0) will
14358generate the warning, and the type is assumed to be an integer. As per
14359the
14360ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
14361the
14362warning.
14363
14364Switch/Case support: Implemented support for buffer and string objects as
14365the switch value.  This is an ACPI 3.0 feature, now that LEqual supports
14366buffers and strings.
14367
14368Switch/Case support: The emitted code for the LEqual() comparisons now
14369uses
14370the switch value as the first operand, not the second. The case value is
14371now
14372the second operand, and this allows the case value to be implicitly
14373converted to the type of the switch value, not the other way around.
14374
14375Switch/Case support: Temporary variables are now emitted immediately
14376within
14377the control method, not at the global level. This means that there are
14378now
1437936 temps available per-method, not 36 temps per-module as was the case
14380with
14381the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
14382
14383----------------------------------------
1438414 January 2005.  Summary of changes for version 20050114:
14385
14386Added 2005 copyright to all module headers.  This affects every module in
14387the core subsystem, iASL compiler, and the utilities.
14388
143891) ACPI CA Core Subsystem:
14390
14391Fixed an issue with the String-to-Buffer conversion code where the string
14392null terminator was not included in the buffer after conversion, but
14393there
14394is existing ASL that assumes the string null terminator is included. This
14395is
14396the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
14397introduced in the previous version when the code was updated to correctly
14398set the converted buffer size as per the ACPI specification. The ACPI
14399spec
14400is ambiguous and will be updated to specify that the null terminator must
14401be
14402included in the converted buffer. This also affects the ToBuffer() ASL
14403operator.
14404
14405Fixed a problem with the Mid() ASL/AML operator where it did not work
14406correctly on Buffer objects. Newly created sub-buffers were not being
14407marked
14408as initialized.
14409
14410
14411Fixed a problem in AcpiTbFindTable where incorrect string compares were
14412performed on the OemId and OemTableId table header fields.  These fields
14413are
14414not null terminated, so strncmp is now used instead of strcmp.
14415
14416Implemented a restriction on the Store() ASL/AML operator to align the
14417behavior with the ACPI specification.  Previously, any object could be
14418used
14419as the source operand.  Now, the only objects that may be used are
14420Integers,
14421Buffers, Strings, Packages, Object References, and DDB Handles.  If
14422necessary, the original behavior can be restored by enabling the
14423EnableInterpreterSlack flag.
14424
14425Enhanced the optional "implicit return" support to allow an implicit
14426return
14427value from methods that are invoked externally via the AcpiEvaluateObject
14428interface.  This enables implicit returns from the _STA and _INI methods,
14429for example.
14430
14431Changed the Revision() ASL/AML operator to return the current version of
14432the
14433AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
14434returned
14435the supported ACPI version (This is the function of the _REV method).
14436
14437Updated the _REV predefined method to return the currently supported
14438version
14439of ACPI, now 3.
14440
14441Implemented batch mode option for the AcpiExec utility (-b).
14442
14443Code and Data Size: Current and previous core subsystem library sizes are
14444shown below. These are the code and data sizes for the acpica.lib
14445produced
14446by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14447any ACPI driver or OSPM code. The debug version of the code includes the
14448debug output trace mechanism and has a much larger code and data size.
14449Note
14450that these values will vary depending on the efficiency of the compiler
14451and
14452the compiler options used during generation.
14453
14454  Previous Release:
14455    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14456    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14457  Current Release:
14458    Non-Debug Version:  78.4K Code,  11.5K Data,   89.9K Total
14459    Debug Version:     165.4K Code,  69.4K Data,  234.8K Total
14460
14461----------------------------------------
1446210 December 2004.  Summary of changes for version 20041210:
14463
14464ACPI 3.0 support is nearing completion in both the iASL compiler and the
14465ACPI CA core subsystem.
14466
144671) ACPI CA Core Subsystem:
14468
14469Fixed a problem in the ToDecimalString operator where the resulting
14470string
14471length was incorrectly calculated. The length is now calculated exactly,
14472eliminating incorrect AE_STRING_LIMIT exceptions.
14473
14474Fixed a problem in the ToHexString operator to allow a maximum 200
14475character
14476string to be produced.
14477
14478Fixed a problem in the internal string-to-buffer and buffer-to-buffer
14479copy
14480routine where the length of the resulting buffer was not truncated to the
14481new size (if the target buffer already existed).
14482
14483Code and Data Size: Current and previous core subsystem library sizes are
14484shown below. These are the code and data sizes for the acpica.lib
14485produced
14486by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14487any ACPI driver or OSPM code. The debug version of the code includes the
14488debug output trace mechanism and has a much larger code and data size.
14489Note
14490that these values will vary depending on the efficiency of the compiler
14491and
14492the compiler options used during generation.
14493
14494  Previous Release:
14495    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14496    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14497  Current Release:
14498    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14499    Debug Version:     165.3K Code,  69.4K Data,  234.7K Total
14500
14501
145022) iASL Compiler/Disassembler:
14503
14504Implemented the new ACPI 3.0 resource template macros - DWordSpace,
14505ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
14506Includes support in the disassembler.
14507
14508Implemented support for the new (ACPI 3.0) parameter to the Register
14509macro,
14510AccessSize.
14511
14512Fixed a problem where the _HE resource name for the Interrupt macro was
14513referencing bit 0 instead of bit 1.
14514
14515Implemented check for maximum 255 interrupts in the Interrupt macro.
14516
14517Fixed a problem with the predefined resource descriptor names where
14518incorrect AML code was generated if the offset within the resource buffer
14519was 0 or 1.  The optimizer shortened the AML code to a single byte opcode
14520but did not update the surrounding package lengths.
14521
14522Changes to the Dma macro:  All channels within the channel list must be
14523in
14524the range 0-7.  Maximum 8 channels can be specified. BusMaster operand is
14525optional (default is BusMaster).
14526
14527Implemented check for maximum 7 data bytes for the VendorShort macro.
14528
14529The ReadWrite parameter is now optional for the Memory32 and similar
14530macros.
14531
14532----------------------------------------
1453303 December 2004.  Summary of changes for version 20041203:
14534
145351) ACPI CA Core Subsystem:
14536
14537The low-level field insertion/extraction code (exfldio) has been
14538completely
14539rewritten to eliminate unnecessary complexity, bugs, and boundary
14540conditions.
14541
14542Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
14543ToDecimalString
14544operators where the input operand could be inadvertently deleted if no
14545conversion was necessary (e.g., if the input to ToInteger was an Integer
14546object.)
14547
14548Fixed a problem with the ToDecimalString and ToHexString where an
14549incorrect
14550exception code was returned if the resulting string would be > 200 chars.
14551AE_STRING_LIMIT is now returned.
14552
14553Fixed a problem with the Concatenate operator where AE_OK was always
14554returned, even if the operation failed.
14555
14556Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
14557semaphores to be allocated.
14558
14559Code and Data Size: Current and previous core subsystem library sizes are
14560shown below. These are the code and data sizes for the acpica.lib
14561produced
14562by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14563any ACPI driver or OSPM code. The debug version of the code includes the
14564debug output trace mechanism and has a much larger code and data size.
14565Note
14566that these values will vary depending on the efficiency of the compiler
14567and
14568the compiler options used during generation.
14569
14570  Previous Release:
14571    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14572    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14573  Current Release:
14574    Non-Debug Version:  78.3K Code,  11.5K Data,   89.8K Total
14575    Debug Version:     164.7K Code,  68.5K Data,  233.2K Total
14576
14577
145782) iASL Compiler/Disassembler:
14579
14580Fixed typechecking for the ObjectType and SizeOf operators.  Problem was
14581recently introduced in 20041119.
14582
14583Fixed a problem with the ToUUID macro where the upper nybble of each
14584buffer
14585byte was inadvertently set to zero.
14586
14587----------------------------------------
1458819 November 2004.  Summary of changes for version 20041119:
14589
145901) ACPI CA Core Subsystem:
14591
14592Fixed a problem in the internal ConvertToInteger routine where new
14593integers
14594were not truncated to 32 bits for 32-bit ACPI tables. This routine
14595converts
14596buffers and strings to integers.
14597
14598Implemented support to store a value to an Index() on a String object.
14599This
14600is an ACPI 2.0 feature that had not yet been implemented.
14601
14602Implemented new behavior for storing objects to individual package
14603elements
14604(via the Index() operator). The previous behavior was to invoke the
14605implicit
14606conversion rules if an object was already present at the index.  The new
14607behavior is to simply delete any existing object and directly store the
14608new
14609object. Although the ACPI specification seems unclear on this subject,
14610other
14611ACPI implementations behave in this manner.  (This is the root of the
14612AE_BAD_HEX_CONSTANT issue.)
14613
14614Modified the RSDP memory scan mechanism to support the extended checksum
14615for
14616ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14617RSDP signature is found with a valid checksum.
14618
14619Code and Data Size: Current and previous core subsystem library sizes are
14620shown below. These are the code and data sizes for the acpica.lib
14621produced
14622by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14623any ACPI driver or OSPM code. The debug version of the code includes the
14624debug output trace mechanism and has a much larger code and data size.
14625Note
14626that these values will vary depending on the efficiency of the compiler
14627and
14628the compiler options used during generation.
14629
14630  Previous Release:
14631    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14632    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14633  Current Release:
14634    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14635    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14636
14637
146382) iASL Compiler/Disassembler:
14639
14640Fixed a missing semicolon in the aslcompiler.y file.
14641
14642----------------------------------------
1464305 November 2004.  Summary of changes for version 20041105:
14644
146451) ACPI CA Core Subsystem:
14646
14647Implemented support for FADT revision 2.  This was an interim table
14648(between
14649ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14650
14651Implemented optional support to allow uninitialized LocalX and ArgX
14652variables in a control method.  The variables are initialized to an
14653Integer
14654object with a value of zero.  This support is enabled by setting the
14655AcpiGbl_EnableInterpreterSlack flag to TRUE.
14656
14657Implemented support for Integer objects for the SizeOf operator.  Either
146584
14659or 8 is returned, depending on the current integer size (32-bit or 64-
14660bit,
14661depending on the parent table revision).
14662
14663Fixed a problem in the implementation of the SizeOf and ObjectType
14664operators
14665where the operand was resolved to a value too early, causing incorrect
14666return values for some objects.
14667
14668Fixed some possible memory leaks during exceptional conditions.
14669
14670Code and Data Size: Current and previous core subsystem library sizes are
14671shown below. These are the code and data sizes for the acpica.lib
14672produced
14673by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14674any ACPI driver or OSPM code. The debug version of the code includes the
14675debug output trace mechanism and has a much larger code and data size.
14676Note
14677that these values will vary depending on the efficiency of the compiler
14678and
14679the compiler options used during generation.
14680
14681  Previous Release:
14682    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14683    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14684  Current Release:
14685    Non-Debug Version:  78.5K Code,  11.5K Data,   90.0K Total
14686    Debug Version:     165.2K Code,  68.6K Data,  233.8K Total
14687
14688
146892) iASL Compiler/Disassembler:
14690
14691Implemented support for all ACPI 3.0 reserved names and methods.
14692
14693Implemented all ACPI 3.0 grammar elements in the front-end, including
14694support for semicolons.
14695
14696Implemented the ACPI 3.0 Function() and ToUUID() macros
14697
14698Fixed a problem in the disassembler where a Scope() operator would not be
14699emitted properly if the target of the scope was in another table.
14700
14701----------------------------------------
1470215 October 2004.  Summary of changes for version 20041015:
14703
14704Note:  ACPI CA is currently undergoing an in-depth and complete formal
14705evaluation to test/verify the following areas. Other suggestions are
14706welcome. This will result in an increase in the frequency of releases and
14707the number of bug fixes in the next few months.
14708  - Functional tests for all ASL/AML operators
14709  - All implicit/explicit type conversions
14710  - Bit fields and operation regions
14711  - 64-bit math support and 32-bit-only "truncated" math support
14712  - Exceptional conditions, both compiler and interpreter
14713  - Dynamic object deletion and memory leaks
14714  - ACPI 3.0 support when implemented
14715  - External interfaces to the ACPI subsystem
14716
14717
147181) ACPI CA Core Subsystem:
14719
14720Fixed two alignment issues on 64-bit platforms - within debug statements
14721in
14722AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14723Address
14724field within the non-aligned ACPI generic address structure.
14725
14726Fixed a problem in the Increment and Decrement operators where incorrect
14727operand resolution could result in the inadvertent modification of the
14728original integer when the integer is passed into another method as an
14729argument and the arg is then incremented/decremented.
14730
14731Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14732bit
14733BCD number were truncated during conversion.
14734
14735Fixed a problem in the ToDecimal operator where the length of the
14736resulting
14737string could be set incorrectly too long if the input operand was a
14738Buffer
14739object.
14740
14741Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14742(0)
14743within a buffer would prematurely terminate a compare between buffer
14744objects.
14745
14746Added a check for string overflow (>200 characters as per the ACPI
14747specification) during the Concatenate operator with two string operands.
14748
14749Code and Data Size: Current and previous core subsystem library sizes are
14750shown below. These are the code and data sizes for the acpica.lib
14751produced
14752by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14753any ACPI driver or OSPM code. The debug version of the code includes the
14754debug output trace mechanism and has a much larger code and data size.
14755Note
14756that these values will vary depending on the efficiency of the compiler
14757and
14758the compiler options used during generation.
14759
14760  Previous Release:
14761    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14762    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14763  Current Release:
14764    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
14765    Debug Version:     164.8K Code,  68.6K Data,  233.4K Total
14766
14767
14768
147692) iASL Compiler/Disassembler:
14770
14771Allow the use of the ObjectType operator on uninitialized Locals and Args
14772(returns 0 as per the ACPI specification).
14773
14774Fixed a problem where the compiler would fault if there was a syntax
14775error
14776in the FieldName of all of the various CreateXXXField operators.
14777
14778Disallow the use of lower case letters within the EISAID macro, as per
14779the
14780ACPI specification.  All EISAID strings must be of the form "UUUNNNN"
14781Where
14782U is an uppercase letter and N is a hex digit.
14783
14784
14785----------------------------------------
1478606 October 2004.  Summary of changes for version 20041006:
14787
147881) ACPI CA Core Subsystem:
14789
14790Implemented support for the ACPI 3.0 Timer operator. This ASL function
14791implements a 64-bit timer with 100 nanosecond granularity.
14792
14793Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14794implement the ACPI 3.0 Timer operator.  This allows the host OS to
14795implement
14796the timer with the best clock available. Also, it keeps the core
14797subsystem
14798out of the clock handling business, since the host OS (usually) performs
14799this function.
14800
14801Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14802functions use a 64-bit address which is part of the packed ACPI Generic
14803Address Structure. Since the structure is non-aligned, the alignment
14804macros
14805are now used to extract the address to a local variable before use.
14806
14807Fixed a problem where the ToInteger operator assumed all input strings
14808were
14809hexadecimal. The operator now handles both decimal strings and hex
14810strings
14811(prefixed with "0x").
14812
14813Fixed a problem where the string length in the string object created as a
14814result of the internal ConvertToString procedure could be incorrect. This
14815potentially affected all implicit conversions and also the
14816ToDecimalString
14817and ToHexString operators.
14818
14819Fixed two problems in the ToString operator. If the length parameter was
14820zero, an incorrect string object was created and the value of the input
14821length parameter was inadvertently changed from zero to Ones.
14822
14823Fixed a problem where the optional ResourceSource string in the
14824ExtendedIRQ
14825resource macro was ignored.
14826
14827Simplified the interfaces to the internal division functions, reducing
14828code
14829size and complexity.
14830
14831Code and Data Size: Current and previous core subsystem library sizes are
14832shown below. These are the code and data sizes for the acpica.lib
14833produced
14834by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14835any ACPI driver or OSPM code. The debug version of the code includes the
14836debug output trace mechanism and has a much larger code and data size.
14837Note
14838that these values will vary depending on the efficiency of the compiler
14839and
14840the compiler options used during generation.
14841
14842  Previous Release:
14843    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14844    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14845  Current Release:
14846    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
14847    Debug Version:     164.6K Code,  68.5K Data,  233.1K Total
14848
14849
148502) iASL Compiler/Disassembler:
14851
14852Implemented support for the ACPI 3.0 Timer operator.
14853
14854Fixed a problem where the Default() operator was inadvertently ignored in
14855a
14856Switch/Case block.  This was a problem in the translation of the Switch
14857statement to If...Else pairs.
14858
14859Added support to allow a standalone Return operator, with no parentheses
14860(or
14861operands).
14862
14863Fixed a problem with code generation for the ElseIf operator where the
14864translated Else...If parse tree was improperly constructed leading to the
14865loss of some code.
14866
14867----------------------------------------
1486822 September 2004.  Summary of changes for version 20040922:
14869
148701) ACPI CA Core Subsystem:
14871
14872Fixed a problem with the implementation of the LNot() operator where
14873"Ones"
14874was not returned for the TRUE case. Changed the code to return Ones
14875instead
14876of (!Arg) which was usually 1. This change affects iASL constant folding
14877for
14878this operator also.
14879
14880Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14881not
14882initialized properly -- Now zero the entire buffer in this case where the
14883buffer already exists.
14884
14885Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14886Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14887related code considerably. This will require changes/updates to all OS
14888interface layers (OSLs.)
14889
14890Implemented a new external interface, AcpiInstallExceptionHandler, to
14891allow
14892a system exception handler to be installed. This handler is invoked upon
14893any
14894run-time exception that occurs during control method execution.
14895
14896Added support for the DSDT in AcpiTbFindTable. This allows the
14897DataTableRegion() operator to access the local copy of the DSDT.
14898
14899Code and Data Size: Current and previous core subsystem library sizes are
14900shown below. These are the code and data sizes for the acpica.lib
14901produced
14902by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14903any ACPI driver or OSPM code. The debug version of the code includes the
14904debug output trace mechanism and has a much larger code and data size.
14905Note
14906that these values will vary depending on the efficiency of the compiler
14907and
14908the compiler options used during generation.
14909
14910  Previous Release:
14911    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
14912    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
14913  Current Release:
14914    Non-Debug Version:  77.9K Code,  11.4K Data,   89.3K Total
14915    Debug Version:     164.5K Code,  68.3K Data,  232.8K Total
14916
14917
149182) iASL Compiler/Disassembler:
14919
14920Fixed a problem with constant folding and the LNot operator. LNot was
14921returning 1 in the TRUE case, not Ones as per the ACPI specification.
14922This
14923could result in the generation of an incorrect folded/reduced constant.
14924
14925End-Of-File is now allowed within a "//"-style comment.  A parse error no
14926longer occurs if such a comment is at the very end of the input ASL
14927source
14928file.
14929
14930Implemented the "-r" option to override the Revision in the table header.
14931The initial use of this option will be to simplify the evaluation of the
14932AML
14933interpreter by allowing a single ASL source module to be compiled for
14934either
1493532-bit or 64-bit integers.
14936
14937
14938----------------------------------------
1493927 August 2004.  Summary of changes for version 20040827:
14940
149411) ACPI CA Core Subsystem:
14942
14943- Implemented support for implicit object conversion in the non-numeric
14944logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14945and
14946LNotEqual.)  Any combination of Integers/Strings/Buffers may now be used;
14947the second operand is implicitly converted on the fly to match the type
14948of
14949the first operand.  For example:
14950
14951    LEqual (Source1, Source2)
14952
14953Source1 and Source2 must each evaluate to an integer, a string, or a
14954buffer.
14955The data type of Source1 dictates the required type of Source2. Source2
14956is
14957implicitly converted if necessary to match the type of Source1.
14958
14959- Updated and corrected the behavior of the string conversion support.
14960The
14961rules concerning conversion of buffers to strings (according to the ACPI
14962specification) are as follows:
14963
14964ToDecimalString - explicit byte-wise conversion of buffer to string of
14965decimal values (0-255) separated by commas. ToHexString - explicit byte-
14966wise
14967conversion of buffer to string of hex values (0-FF) separated by commas.
14968ToString - explicit byte-wise conversion of buffer to string.  Byte-by-
14969byte
14970copy with no transform except NULL terminated. Any other implicit buffer-
14971to-
14972string conversion - byte-wise conversion of buffer to string of hex
14973values
14974(0-FF) separated by spaces.
14975
14976- Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
14977
14978- Fixed a problem in AcpiNsGetPathnameLength where the returned length
14979was
14980one byte too short in the case of a node in the root scope.  This could
14981cause a fault during debug output.
14982
14983- Code and Data Size: Current and previous core subsystem library sizes
14984are
14985shown below.  These are the code and data sizes for the acpica.lib
14986produced
14987by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14988any ACPI driver or OSPM code.  The debug version of the code includes the
14989debug output trace mechanism and has a much larger code and data size.
14990Note
14991that these values will vary depending on the efficiency of the compiler
14992and
14993the compiler options used during generation.
14994
14995  Previous Release:
14996    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
14997    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
14998  Current Release:
14999    Non-Debug Version:  77.8K Code,  11.4K Data,   89.2K Total
15000    Debug Version:     164.2K Code,  68.2K Data,  232.4K Total
15001
15002
150032) iASL Compiler/Disassembler:
15004
15005- Fixed a Linux generation error.
15006
15007
15008----------------------------------------
1500916 August 2004.  Summary of changes for version 20040816:
15010
150111) ACPI CA Core Subsystem:
15012
15013Designed and implemented support within the AML interpreter for the so-
15014called "implicit return".  This support returns the result of the last
15015ASL
15016operation within a control method, in the absence of an explicit Return()
15017operator.  A few machines depend on this behavior, even though it is not
15018explicitly supported by the ASL language.  It is optional support that
15019can
15020be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
15021
15022Removed support for the PCI_Config address space from the internal low
15023level
15024hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite).  This
15025support was not used internally, and would not work correctly anyway
15026because
15027the PCI bus number and segment number were not supported.  There are
15028separate interfaces for PCI configuration space access because of the
15029unique
15030interface.
15031
15032Code and Data Size: Current and previous core subsystem library sizes are
15033shown below.  These are the code and data sizes for the acpica.lib
15034produced
15035by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15036any ACPI driver or OSPM code.  The debug version of the code includes the
15037debug output trace mechanism and has a much larger code and data size.
15038Note
15039that these values will vary depending on the efficiency of the compiler
15040and
15041the compiler options used during generation.
15042
15043  Previous Release:
15044    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
15045    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
15046  Current Release:
15047    Non-Debug Version:  77.9K Code,  11.5K Data,   89.4K Total
15048    Debug Version:     164.1K Code,  68.3K Data,  232.4K Total
15049
15050
150512) iASL Compiler/Disassembler:
15052
15053Fixed a problem where constants in ASL expressions at the root level (not
15054within a control method) could be inadvertently truncated during code
15055generation.  This problem was introduced in the 20040715 release.
15056
15057
15058----------------------------------------
1505915 July 2004.  Summary of changes for version 20040715:
15060
150611) ACPI CA Core Subsystem:
15062
15063Restructured the internal HW GPE interfaces to pass/track the current
15064state
15065of interrupts (enabled/disabled) in order to avoid possible deadlock and
15066increase flexibility of the interfaces.
15067
15068Implemented a "lexicographical compare" for String and Buffer objects
15069within
15070the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
15071-
15072as per further clarification to the ACPI specification.  Behavior is
15073similar
15074to C library "strcmp".
15075
15076Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
15077external function.  In the 32-bit non-debug case, the stack use has been
15078reduced from 168 bytes to 32 bytes.
15079
15080Deployed a new run-time configuration flag,
15081AcpiGbl_EnableInterpreterSlack,
15082whose purpose is to allow the AML interpreter to forgive certain bad AML
15083constructs.  Default setting is FALSE.
15084
15085Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
15086IO
15087support code.  If enabled, it allows field access to go beyond the end of
15088a
15089region definition if the field is within the region length rounded up to
15090the
15091next access width boundary (a common coding error.)
15092
15093Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
15094ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols.  Also,
15095these
15096symbols are lowercase by the latest version of the AcpiSrc tool.
15097
15098The prototypes for the PCI interfaces in acpiosxf.h have been updated to
15099rename "Register" to simply "Reg" to prevent certain compilers from
15100complaining.
15101
15102Code and Data Size: Current and previous core subsystem library sizes are
15103shown below.  These are the code and data sizes for the acpica.lib
15104produced
15105by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15106any ACPI driver or OSPM code.  The debug version of the code includes the
15107debug output trace mechanism and has a much larger code and data size.
15108Note
15109that these values will vary depending on the efficiency of the compiler
15110and
15111the compiler options used during generation.
15112
15113  Previous Release:
15114    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15115    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
15116  Current Release:
15117    Non-Debug Version:  78.0K Code,  11.5K Data,   89.5K Total
15118    Debug Version:     164.1K Code,  68.2K Data,  232.3K Total
15119
15120
151212) iASL Compiler/Disassembler:
15122
15123Implemented full support for Package objects within the Case() operator.
15124Note: The Break() operator is currently not supported within Case blocks
15125(TermLists) as there is some question about backward compatibility with
15126ACPI
151271.0 interpreters.
15128
15129
15130Fixed a problem where complex terms were not supported properly within
15131the
15132Switch() operator.
15133
15134Eliminated extraneous warning for compiler-emitted reserved names of the
15135form "_T_x".  (Used in Switch/Case operators.)
15136
15137Eliminated optimization messages for "_T_x" objects and small constants
15138within the DefinitionBlock operator.
15139
15140
15141----------------------------------------
1514215 June 2004.  Summary of changes for version 20040615:
15143
151441) ACPI CA Core Subsystem:
15145
15146Implemented support for Buffer and String objects (as per ACPI 2.0) for
15147the
15148following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
15149LLessEqual.
15150
15151All directory names in the entire source package are lower case, as they
15152were in earlier releases.
15153
15154Implemented "Disassemble" command in the AML debugger that will
15155disassemble
15156a single control method.
15157
15158Code and Data Size: Current and previous core subsystem library sizes are
15159shown below.  These are the code and data sizes for the acpica.lib
15160produced
15161by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15162any ACPI driver or OSPM code.  The debug version of the code includes the
15163debug output trace mechanism and has a much larger code and data size.
15164Note
15165that these values will vary depending on the efficiency of the compiler
15166and
15167the compiler options used during generation.
15168
15169  Previous Release:
15170    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
15171    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
15172
15173  Current Release:
15174    Non-Debug Version:  77.8K Code,  11.5K Data,   89.3K Total
15175    Debug Version:     163.8K Code,  68.2K Data,  232.0K Total
15176
15177
151782) iASL Compiler/Disassembler:
15179
15180Implemented support for Buffer and String objects (as per ACPI 2.0) for
15181the
15182following ASL operators:  LEqual, LGreater, LLess, LGreaterEqual, and
15183LLessEqual.
15184
15185All directory names in the entire source package are lower case, as they
15186were in earlier releases.
15187
15188Fixed a fault when using the -g or -d<nofilename> options if the FADT was
15189not found.
15190
15191Fixed an issue with the Windows version of the compiler where later
15192versions
15193of Windows place the FADT in the registry under the name "FADT" and not
15194"FACP" as earlier versions did.  This applies when using the -g or -
15195d<nofilename> options.  The compiler now looks for both strings as
15196necessary.
15197
15198Fixed a problem with compiler namepath optimization where a namepath
15199within
15200the Scope() operator could not be optimized if the namepath was a subpath
15201of
15202the current scope path.
15203
15204----------------------------------------
1520527 May 2004.  Summary of changes for version 20040527:
15206
152071) ACPI CA Core Subsystem:
15208
15209Completed a new design and implementation for EBDA (Extended BIOS Data
15210Area)
15211support in the RSDP scan code.  The original code improperly scanned for
15212the
15213EBDA by simply scanning from memory location 0 to 0x400.  The correct
15214method
15215is to first obtain the EBDA pointer from within the BIOS data area, then
15216scan 1K of memory starting at the EBDA pointer.  There appear to be few
15217if
15218any machines that place the RSDP in the EBDA, however.
15219
15220Integrated a fix for a possible fault during evaluation of BufferField
15221arguments.  Obsolete code that was causing the problem was removed.
15222
15223Found and fixed a problem in the Field Support Code where data could be
15224corrupted on a bit field read that starts on an aligned boundary but does
15225not end on an aligned boundary.  Merged the read/write "datum length"
15226calculation code into a common procedure.
15227
15228Rolled in a couple of changes to the FreeBSD-specific header.
15229
15230
15231Code and Data Size: Current and previous core subsystem library sizes are
15232shown below.  These are the code and data sizes for the acpica.lib
15233produced
15234by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15235any ACPI driver or OSPM code.  The debug version of the code includes the
15236debug output trace mechanism and has a much larger code and data size.
15237Note
15238that these values will vary depending on the efficiency of the compiler
15239and
15240the compiler options used during generation.
15241
15242  Previous Release:
15243    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15244    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
15245  Current Release:
15246    Non-Debug Version:  77.7K Code,  11.5K Data,   89.2K Total
15247    Debug Version:     163.3K Code,  67.2K Data,  230.5K Total
15248
15249
152502) iASL Compiler/Disassembler:
15251
15252Fixed a generation warning produced by some overly-verbose compilers for
15253a
1525464-bit constant.
15255
15256----------------------------------------
1525714 May 2004.  Summary of changes for version 20040514:
15258
152591) ACPI CA Core Subsystem:
15260
15261Fixed a problem where hardware GPE enable bits sometimes not set properly
15262during and after GPE method execution.  Result of 04/27 changes.
15263
15264Removed extra "clear all GPEs" when sleeping/waking.
15265
15266Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
15267AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
15268to
15269the new AcpiEv* calls as appropriate.
15270
15271ACPI_OS_NAME was removed from the OS-specific headers.  The default name
15272is
15273now "Microsoft Windows NT" for maximum compatibility.  However this can
15274be
15275changed by modifying the acconfig.h file.
15276
15277Allow a single invocation of AcpiInstallNotifyHandler for a handler that
15278traps both types of notifies (System, Device).  Use ACPI_ALL_NOTIFY flag.
15279
15280Run _INI methods on ThermalZone objects.  This is against the ACPI
15281specification, but there is apparently ASL code in the field that has
15282these
15283_INI methods, and apparently "other" AML interpreters execute them.
15284
15285Performed a full 16/32/64 bit lint that resulted in some small changes.
15286
15287Added a sleep simulation command to the AML debugger to test sleep code.
15288
15289Code and Data Size: Current and previous core subsystem library sizes are
15290shown below.  These are the code and data sizes for the acpica.lib
15291produced
15292by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15293any ACPI driver or OSPM code.  The debug version of the code includes the
15294debug output trace mechanism and has a much larger code and data size.
15295Note
15296that these values will vary depending on the efficiency of the compiler
15297and
15298the compiler options used during generation.
15299
15300  Previous Release:
15301    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15302    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15303  Current Release:
15304    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15305    Debug Version:     163.2K Code,  67.2K Data,  230.4K Total
15306
15307----------------------------------------
1530827 April 2004.  Summary of changes for version 20040427:
15309
153101) ACPI CA Core Subsystem:
15311
15312Completed a major overhaul of the GPE handling within ACPI CA.  There are
15313now three types of GPEs:  wake-only, runtime-only, and combination
15314wake/run.
15315The only GPEs allowed to be combination wake/run are for button-style
15316devices such as a control-method power button, control-method sleep
15317button,
15318or a notebook lid switch.  GPEs that have an _Lxx or _Exx method and are
15319not
15320referenced by any _PRW methods are marked for "runtime" and hardware
15321enabled.  Any GPE that is referenced by a _PRW method is marked for
15322"wake"
15323(and disabled at runtime).  However, at sleep time, only those GPEs that
15324have been specifically enabled for wake via the AcpiEnableGpe interface
15325will
15326actually be hardware enabled.
15327
15328A new external interface has been added, AcpiSetGpeType(), that is meant
15329to
15330be used by device drivers to force a GPE to a particular type.  It will
15331be
15332especially useful for the drivers for the button devices mentioned above.
15333
15334Completed restructuring of the ACPI CA initialization sequence so that
15335default operation region handlers are installed before GPEs are
15336initialized
15337and the _PRW methods are executed.  This will prevent errors when the
15338_PRW
15339methods attempt to access system memory or I/O space.
15340
15341GPE enable/disable no longer reads the GPE enable register.  We now keep
15342the
15343enable info for runtime and wake separate and in the GPE_EVENT_INFO.  We
15344thus no longer depend on the hardware to maintain these bits.
15345
15346Always clear the wake status and fixed/GPE status bits before sleep, even
15347for state S5.
15348
15349Improved the AML debugger output for displaying the GPE blocks and their
15350current status.
15351
15352Added new strings for the _OSI method, of the form "Windows 2001 SPx"
15353where
15354x = 0,1,2,3,4.
15355
15356Fixed a problem where the physical address was incorrectly calculated
15357when
15358the Load() operator was used to directly load from an Operation Region
15359(vs.
15360loading from a Field object.)  Also added check for minimum table length
15361for
15362this case.
15363
15364Fix for multiple mutex acquisition.  Restore original thread SyncLevel on
15365mutex release.
15366
15367Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
15368consistency with the other fields returned.
15369
15370Shrunk the ACPI_GPE_EVENT_INFO structure by 40%.  There is one such
15371structure for each GPE in the system, so the size of this structure is
15372important.
15373
15374CPU stack requirement reduction:  Cleaned up the method execution and
15375object
15376evaluation paths so that now a parameter structure is passed, instead of
15377copying the various method parameters over and over again.
15378
15379In evregion.c:  Correctly exit and reenter the interpreter region if and
15380only if dispatching an operation region request to a user-installed
15381handler.
15382Do not exit/reenter when dispatching to a default handler (e.g., default
15383system memory or I/O handlers)
15384
15385
15386Notes for updating drivers for the new GPE support.  The following
15387changes
15388must be made to ACPI-related device drivers that are attached to one or
15389more
15390GPEs: (This information will be added to the ACPI CA Programmer
15391Reference.)
15392
153931) AcpiInstallGpeHandler no longer automatically enables the GPE, you
15394must
15395explicitly call AcpiEnableGpe.
153962) There is a new interface called AcpiSetGpeType. This should be called
15397before enabling the GPE.  Also, this interface will automatically disable
15398the GPE if it is currently enabled.
153993) AcpiEnableGpe no longer supports a GPE type flag.
15400
15401Specific drivers that must be changed:
154021) EC driver:
15403    AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
15404AeGpeHandler, NULL);
15405    AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
15406    AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
15407
154082) Button Drivers (Power, Lid, Sleep):
15409Run _PRW method under parent device
15410If _PRW exists: /* This is a control-method button */
15411    Extract GPE number and possibly GpeDevice
15412    AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
15413    AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
15414
15415For all other devices that have _PRWs, we automatically set the GPE type
15416to
15417ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
15418This
15419must be done on a selective basis, usually requiring some kind of user
15420app
15421to allow the user to pick the wake devices.
15422
15423
15424Code and Data Size: Current and previous core subsystem library sizes are
15425shown below.  These are the code and data sizes for the acpica.lib
15426produced
15427by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15428any ACPI driver or OSPM code.  The debug version of the code includes the
15429debug output trace mechanism and has a much larger code and data size.
15430Note
15431that these values will vary depending on the efficiency of the compiler
15432and
15433the compiler options used during generation.
15434
15435  Previous Release:
15436    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15437    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15438  Current Release:
15439
15440    Non-Debug Version:  77.6K Code,  11.5K Data,   89.1K Total
15441    Debug Version:     162.9K Code,  67.0K Data,  229.9K Total
15442
15443
15444
15445----------------------------------------
1544602 April 2004.  Summary of changes for version 20040402:
15447
154481) ACPI CA Core Subsystem:
15449
15450Fixed an interpreter problem where an indirect store through an ArgX
15451parameter was incorrectly applying the "implicit conversion rules" during
15452the store.  From the ACPI specification: "If the target is a method local
15453or
15454argument (LocalX or ArgX), no conversion is performed and the result is
15455stored directly to the target".  The new behavior is to disable implicit
15456conversion during ALL stores to an ArgX.
15457
15458Changed the behavior of the _PRW method scan to ignore any and all errors
15459returned by a given _PRW.  This prevents the scan from aborting from the
15460failure of any single _PRW.
15461
15462Moved the runtime configuration parameters from the global init procedure
15463to
15464static variables in acglobal.h.  This will allow the host to override the
15465default values easily.
15466
15467Code and Data Size: Current and previous core subsystem library sizes are
15468shown below.  These are the code and data sizes for the acpica.lib
15469produced
15470by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15471any ACPI driver or OSPM code.  The debug version of the code includes the
15472debug output trace mechanism and has a much larger code and data size.
15473Note
15474that these values will vary depending on the efficiency of the compiler
15475and
15476the compiler options used during generation.
15477
15478  Previous Release:
15479    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15480    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15481  Current Release:
15482    Non-Debug Version:  77.0K Code,  11.4K Data,   88.4K Total
15483    Debug Version:     161.0K Code,  66.3K Data,  227.3K Total
15484
15485
154862) iASL Compiler/Disassembler:
15487
15488iASL now fully disassembles SSDTs.  However, External() statements are
15489not
15490generated automatically for unresolved symbols at this time.  This is a
15491planned feature for future implementation.
15492
15493Fixed a scoping problem in the disassembler that occurs when the type of
15494the
15495target of a Scope() operator is overridden.  This problem caused an
15496incorrectly nested internal namespace to be constructed.
15497
15498Any warnings or errors that are emitted during disassembly are now
15499commented
15500out automatically so that the resulting file can be recompiled without
15501any
15502hand editing.
15503
15504----------------------------------------
1550526 March 2004.  Summary of changes for version 20040326:
15506
155071) ACPI CA Core Subsystem:
15508
15509Implemented support for "wake" GPEs via interaction between GPEs and the
15510_PRW methods.  Every GPE that is pointed to by one or more _PRWs is
15511identified as a WAKE GPE and by default will no longer be enabled at
15512runtime.  Previously, we were blindly enabling all GPEs with a
15513corresponding
15514_Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
15515We
15516believe this has been the cause of thousands of "spurious" GPEs on some
15517systems.
15518
15519This new GPE behavior is can be reverted to the original behavior (enable
15520ALL GPEs at runtime) via a runtime flag.
15521
15522Fixed a problem where aliased control methods could not access objects
15523properly.  The proper scope within the namespace was not initialized
15524(transferred to the target of the aliased method) before executing the
15525target method.
15526
15527Fixed a potential race condition on internal object deletion on the
15528return
15529object in AcpiEvaluateObject.
15530
15531Integrated a fix for resource descriptors where both _MEM and _MTP were
15532being extracted instead of just _MEM.  (i.e. bitmask was incorrectly too
15533wide, 0x0F instead of 0x03.)
15534
15535Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
15536preventing
15537a
15538fault in some cases.
15539
15540Updated Notify() values for debug statements in evmisc.c
15541
15542Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
15543
15544Code and Data Size: Current and previous core subsystem library sizes are
15545shown below.  These are the code and data sizes for the acpica.lib
15546produced
15547by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15548any ACPI driver or OSPM code.  The debug version of the code includes the
15549debug output trace mechanism and has a much larger code and data size.
15550Note
15551that these values will vary depending on the efficiency of the compiler
15552and
15553the compiler options used during generation.
15554
15555  Previous Release:
15556
15557    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15558    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15559  Current Release:
15560    Non-Debug Version:  76.9K Code,  11.4K Data,   88.3K Total
15561    Debug Version:     160.8K Code,  66.1K Data,  226.9K Total
15562
15563----------------------------------------
1556411 March 2004.  Summary of changes for version 20040311:
15565
155661) ACPI CA Core Subsystem:
15567
15568Fixed a problem where errors occurring during the parse phase of control
15569method execution did not abort cleanly.  For example, objects created and
15570installed in the namespace were not deleted.  This caused all subsequent
15571invocations of the method to return the AE_ALREADY_EXISTS exception.
15572
15573Implemented a mechanism to force a control method to "Serialized"
15574execution
15575if the method attempts to create namespace objects. (The root of the
15576AE_ALREADY_EXISTS problem.)
15577
15578Implemented support for the predefined _OSI "internal" control method.
15579Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
15580and
15581"Windows 2001.1", and can be easily upgraded for new strings as
15582necessary.
15583This feature will allow "other" operating systems to execute the fully
15584tested, "Windows" code path through the ASL code
15585
15586Global Lock Support:  Now allows multiple acquires and releases with any
15587internal thread.  Removed concept of "owning thread" for this special
15588mutex.
15589
15590Fixed two functions that were inappropriately declaring large objects on
15591the
15592CPU stack:  PsParseLoop, NsEvaluateRelative.  Reduces the stack usage
15593during
15594method execution considerably.
15595
15596Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15597S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15598
15599Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15600defined on the machine.
15601
15602Implemented two runtime options:  One to force all control method
15603execution
15604to "Serialized" to mimic Windows behavior, another to disable _OSI
15605support
15606if it causes problems on a given machine.
15607
15608Code and Data Size: Current and previous core subsystem library sizes are
15609shown below.  These are the code and data sizes for the acpica.lib
15610produced
15611by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15612any ACPI driver or OSPM code.  The debug version of the code includes the
15613debug output trace mechanism and has a much larger code and data size.
15614Note
15615that these values will vary depending on the efficiency of the compiler
15616and
15617the compiler options used during generation.
15618
15619  Previous Release:
15620    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15621    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15622  Current Release:
15623    Non-Debug Version:  76.5K Code,  11.3K Data,   87.8K Total
15624    Debug Version:     160.3K Code,  66.0K Data,  226.3K Total
15625
156262) iASL Compiler/Disassembler:
15627
15628Fixed an array size problem for FreeBSD that would cause the compiler to
15629fault.
15630
15631----------------------------------------
1563220 February 2004.  Summary of changes for version 20040220:
15633
15634
156351) ACPI CA Core Subsystem:
15636
15637Implemented execution of _SxD methods for Device objects in the
15638GetObjectInfo interface.
15639
15640Fixed calls to _SST method to pass the correct arguments.
15641
15642Added a call to _SST on wake to restore to "working" state.
15643
15644Check for End-Of-Buffer failure case in the WalkResources interface.
15645
15646Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15647structures to the beginning of the file.
15648
15649After wake, clear GPE status register(s) before enabling GPEs.
15650
15651After wake, clear/enable power button.  (Perhaps we should clear/enable
15652all
15653fixed events upon wake.)
15654
15655Fixed a couple of possible memory leaks in the Namespace manager.
15656
15657Integrated latest acnetbsd.h file.
15658
15659----------------------------------------
1566011 February 2004.  Summary of changes for version 20040211:
15661
15662
156631) ACPI CA Core Subsystem:
15664
15665Completed investigation and implementation of the call-by-reference
15666mechanism for control method arguments.
15667
15668Fixed a problem where a store of an object into an indexed package could
15669fail if the store occurs within a different method than the method that
15670created the package.
15671
15672Fixed a problem where the ToDecimal operator could return incorrect
15673results.
15674
15675Fixed a problem where the CopyObject operator could fail on some of the
15676more
15677obscure objects (e.g., Reference objects.)
15678
15679Improved the output of the Debug object to display buffer, package, and
15680index objects.
15681
15682Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15683return
15684the expected result.
15685
15686Added permanent ACPI_REPORT_ERROR macros for all instances of the
15687ACPI_AML_INTERNAL exception.
15688
15689Integrated latest version of acfreebsd.h
15690
15691----------------------------------------
1569216 January 2004.  Summary of changes for version 20040116:
15693
15694The purpose of this release is primarily to update the copyright years in
15695each module, thus causing a huge number of diffs.  There are a few small
15696functional changes, however.
15697
156981) ACPI CA Core Subsystem:
15699
15700Improved error messages when there is a problem finding one or more of
15701the
15702required base ACPI tables
15703
15704Reintroduced the definition of APIC_HEADER in actbl.h
15705
15706Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15707
15708Removed extraneous reference to NewObj in dsmthdat.c
15709
157102) iASL compiler
15711
15712Fixed a problem introduced in December that disabled the correct
15713disassembly
15714of Resource Templates
15715
15716
15717----------------------------------------
1571803 December 2003.  Summary of changes for version 20031203:
15719
157201) ACPI CA Core Subsystem:
15721
15722Changed the initialization of Operation Regions during subsystem
15723init to perform two entire walks of the ACPI namespace; The first
15724to initialize the regions themselves, the second to execute the
15725_REG methods.  This fixed some interdependencies across _REG
15726methods found on some machines.
15727
15728Fixed a problem where a Store(Local0, Local1) could simply update
15729the object reference count, and not create a new copy of the
15730object if the Local1 is uninitialized.
15731
15732Implemented support for the _SST reserved method during sleep
15733transitions.
15734
15735Implemented support to clear the SLP_TYP and SLP_EN bits when
15736waking up, this is apparently required by some machines.
15737
15738When sleeping, clear the wake status only if SleepState is not S5.
15739
15740Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15741pointer arithmetic advanced a string pointer too far.
15742
15743Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15744could be returned if the requested table has not been loaded.
15745
15746Within the support for IRQ resources, restructured the handling of
15747the active and edge/level bits.
15748
15749Fixed a few problems in AcpiPsxExecute() where memory could be
15750leaked under certain error conditions.
15751
15752Improved error messages for the cases where the ACPI mode could
15753not be entered.
15754
15755Code and Data Size: Current and previous core subsystem library
15756sizes are shown below.  These are the code and data sizes for the
15757acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15758these values do not include any ACPI driver or OSPM code.  The
15759debug version of the code includes the debug output trace
15760mechanism and has a much larger code and data size.  Note that
15761these values will vary depending on the efficiency of the compiler
15762and the compiler options used during generation.
15763
15764  Previous Release (20031029):
15765    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15766    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15767  Current Release:
15768    Non-Debug Version:  74.8K Code,  10.1K Data,   84.9K Total
15769    Debug Version:     158.7K Code,  65.1K Data,  223.8K Total
15770
157712) iASL Compiler/Disassembler:
15772
15773Implemented a fix for the iASL disassembler where a bad index was
15774generated.  This was most noticeable on 64-bit platforms
15775
15776
15777----------------------------------------
1577829 October 2003.  Summary of changes for version 20031029:
15779
157801) ACPI CA Core Subsystem:
15781
15782
15783Fixed a problem where a level-triggered GPE with an associated
15784_Lxx control method was incorrectly cleared twice.
15785
15786Fixed a problem with the Field support code where an access can
15787occur beyond the end-of-region if the field is non-aligned but
15788extends to the very end of the parent region (resulted in an
15789AE_AML_REGION_LIMIT exception.)
15790
15791Fixed a problem with ACPI Fixed Events where an RT Clock handler
15792would not get invoked on an RTC event.  The RTC event bitmasks for
15793the PM1 registers were not being initialized properly.
15794
15795Implemented support for executing _STA and _INI methods for
15796Processor objects.  Although this is currently not part of the
15797ACPI specification, there is existing ASL code that depends on the
15798init-time execution of these methods.
15799
15800Implemented and deployed a GetDescriptorName function to decode
15801the various types of internal descriptors.  Guards against null
15802descriptors during debug output also.
15803
15804Implemented and deployed a GetNodeName function to extract the 4-
15805character namespace node name.  This function simplifies the debug
15806and error output, as well as guarding against null pointers during
15807output.
15808
15809Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15810simplify the debug and error output of 64-bit integers.  This
15811macro replaces the HIDWORD and LODWORD macros for dumping these
15812integers.
15813
15814Updated the implementation of the Stall() operator to only call
15815AcpiOsStall(), and also return an error if the operand is larger
15816than 255.  This preserves the required behavior of not
15817relinquishing the processor, as would happen if AcpiOsSleep() was
15818called for "long stalls".
15819
15820Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15821initialized are now treated as NOOPs.
15822
15823Cleaned up a handful of warnings during 64-bit generation.
15824
15825Fixed a reported error where and incorrect GPE number was passed
15826to the GPE dispatch handler.  This value is only used for error
15827output, however.  Used this opportunity to clean up and streamline
15828the GPE dispatch code.
15829
15830Code and Data Size: Current and previous core subsystem library
15831sizes are shown below.  These are the code and data sizes for the
15832acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15833these values do not include any ACPI driver or OSPM code.  The
15834
15835debug version of the code includes the debug output trace
15836mechanism and has a much larger code and data size.  Note that
15837these values will vary depending on the efficiency of the compiler
15838and the compiler options used during generation.
15839
15840  Previous Release (20031002):
15841    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15842    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15843  Current Release:
15844    Non-Debug Version:  74.4K Code,  10.1K Data,   84.5K Total
15845    Debug Version:     158.3K Code,  65.0K Data,  223.3K Total
15846
15847
158482) iASL Compiler/Disassembler:
15849
15850Updated the iASL compiler to return an error if the operand to the
15851Stall() operator is larger than 255.
15852
15853
15854----------------------------------------
1585502 October 2003.  Summary of changes for version 20031002:
15856
15857
158581) ACPI CA Core Subsystem:
15859
15860Fixed a problem with Index Fields where the index was not
15861incremented for fields that require multiple writes to the
15862index/data registers (Fields that are wider than the data
15863register.)
15864
15865Fixed a problem with all Field objects where a write could go
15866beyond the end-of-field if the field was larger than the access
15867granularity and therefore required multiple writes to complete the
15868request.  An extra write beyond the end of the field could happen
15869inadvertently.
15870
15871Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15872would incorrectly be returned if the width of the Data Register
15873was larger than the specified field access width.
15874
15875Completed fixes for LoadTable() and Unload() and verified their
15876operation.  Implemented full support for the "DdbHandle" object
15877throughout the ACPI CA subsystem.
15878
15879Implemented full support for the MADT and ECDT tables in the ACPI
15880CA header files.  Even though these tables are not directly
15881consumed by ACPI CA, the header definitions are useful for ACPI
15882device drivers.
15883
15884Integrated resource descriptor fixes posted to the Linux ACPI
15885list.  This included checks for minimum descriptor length, and
15886support for trailing NULL strings within descriptors that have
15887optional string elements.
15888
15889Code and Data Size: Current and previous core subsystem library
15890sizes are shown below.  These are the code and data sizes for the
15891acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15892these values do not include any ACPI driver or OSPM code.  The
15893debug version of the code includes the debug output trace
15894mechanism and has a much larger code and data size.  Note that
15895these values will vary depending on the efficiency of the compiler
15896and the compiler options used during generation.
15897
15898  Previous Release (20030918):
15899    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15900    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15901  Current Release:
15902    Non-Debug Version:  74.1K Code,   9.7K Data,   83.8K Total
15903    Debug Version:     157.9K Code,  64.8K Data,  222.7K Total
15904
15905
159062) iASL Compiler:
15907
15908Implemented detection of non-ASCII characters within the input
15909source ASL file.  This catches attempts to compile binary (AML)
15910files early in the compile, with an informative error message.
15911
15912Fixed a problem where the disassembler would fault if the output
15913filename could not be generated or if the output file could not be
15914opened.
15915
15916----------------------------------------
1591718 September 2003.  Summary of changes for version 20030918:
15918
15919
159201) ACPI CA Core Subsystem:
15921
15922Found and fixed a longstanding problem with the late execution of
15923the various deferred AML opcodes (such as Operation Regions,
15924Buffer Fields, Buffers, and Packages).  If the name string
15925specified for the name of the new object placed the object in a
15926scope other than the current scope, the initialization/execution
15927of the opcode failed.  The solution to this problem was to
15928implement a mechanism where the late execution of such opcodes
15929does not attempt to lookup/create the name a second time in an
15930incorrect scope.  This fixes the "region size computed
15931incorrectly" problem.
15932
15933Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15934Global Lock AE_BAD_PARAMETER error.
15935
15936Fixed several 64-bit issues with prototypes, casting and data
15937types.
15938
15939Removed duplicate prototype from acdisasm.h
15940
15941Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15942
15943Code and Data Size: Current and previous core subsystem library
15944sizes are shown below.  These are the code and data sizes for the
15945acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15946these values do not include any ACPI driver or OSPM code.  The
15947debug version of the code includes the debug output trace
15948mechanism and has a much larger code and data size.  Note that
15949these values will vary depending on the efficiency of the compiler
15950and the compiler options used during generation.
15951
15952  Previous Release:
15953
15954    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
15955    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
15956  Current Release:
15957    Non-Debug Version:  73.9K Code,   9.7K Data,   83.6K Total
15958    Debug Version:     157.3K Code,  64.5K Data,  221.8K Total
15959
15960
159612) Linux:
15962
15963Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15964correct sleep time in seconds.
15965
15966----------------------------------------
1596714 July 2003.  Summary of changes for version 20030619:
15968
159691) ACPI CA Core Subsystem:
15970
15971Parse SSDTs in order discovered, as opposed to reverse order
15972(Hrvoje Habjanic)
15973
15974Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15975Klausner,
15976   Nate Lawson)
15977
15978
159792) Linux:
15980
15981Dynamically allocate SDT list (suggested by Andi Kleen)
15982
15983proc function return value cleanups (Andi Kleen)
15984
15985Correctly handle NMI watchdog during long stalls (Andrew Morton)
15986
15987Make it so acpismp=force works (reported by Andrew Morton)
15988
15989
15990----------------------------------------
1599119 June 2003.  Summary of changes for version 20030619:
15992
159931) ACPI CA Core Subsystem:
15994
15995Fix To/FromBCD, eliminating the need for an arch-specific #define.
15996
15997Do not acquire a semaphore in the S5 shutdown path.
15998
15999Fix ex_digits_needed for 0. (Takayoshi Kochi)
16000
16001Fix sleep/stall code reversal. (Andi Kleen)
16002
16003Revert a change having to do with control method calling
16004semantics.
16005
160062) Linux:
16007
16008acpiphp update (Takayoshi Kochi)
16009
16010Export acpi_disabled for sonypi (Stelian Pop)
16011
16012Mention acpismp=force in config help
16013
16014Re-add acpitable.c and acpismp=force. This improves backwards
16015
16016compatibility and also cleans up the code to a significant degree.
16017
16018Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
16019
16020----------------------------------------
1602122 May 2003.  Summary of changes for version 20030522:
16022
160231) ACPI CA Core Subsystem:
16024
16025Found and fixed a reported problem where an AE_NOT_FOUND error
16026occurred occasionally during _BST evaluation.  This turned out to
16027be an Owner ID allocation issue where a called method did not get
16028a new ID assigned to it.  Eventually, (after 64k calls), the Owner
16029ID UINT16 would wraparound so that the ID would be the same as the
16030caller's and the called method would delete the caller's
16031namespace.
16032
16033Implemented extended error reporting for control methods that are
16034aborted due to a run-time exception.  Output includes the exact
16035AML instruction that caused the method abort, a dump of the method
16036locals and arguments at the time of the abort, and a trace of all
16037nested control method calls.
16038
16039Modified the interpreter to allow the creation of buffers of zero
16040length from the AML code. Implemented new code to ensure that no
16041attempt is made to actually allocate a memory buffer (of length
16042zero) - instead, a simple buffer object with a NULL buffer pointer
16043and length zero is created.  A warning is no longer issued when
16044the AML attempts to create a zero-length buffer.
16045
16046Implemented a workaround for the "leading asterisk issue" in
16047_HIDs, _UIDs, and _CIDs in the AML interpreter.  One leading
16048asterisk is automatically removed if present in any HID, UID, or
16049CID strings.  The iASL compiler will still flag this asterisk as
16050an error, however.
16051
16052Implemented full support for _CID methods that return a package of
16053multiple CIDs (Compatible IDs).  The AcpiGetObjectInfo() interface
16054now additionally returns a device _CID list if present.  This
16055required a change to the external interface in order to pass an
16056ACPI_BUFFER object as a parameter since the _CID list is of
16057variable length.
16058
16059Fixed a problem with the new AE_SAME_HANDLER exception where
16060handler initialization code did not know about this exception.
16061
16062Code and Data Size: Current and previous core subsystem library
16063sizes are shown below.  These are the code and data sizes for the
16064acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16065these values do not include any ACPI driver or OSPM code.  The
16066debug version of the code includes the debug output trace
16067mechanism and has a much larger code and data size.  Note that
16068these values will vary depending on the efficiency of the compiler
16069and the compiler options used during generation.
16070
16071  Previous Release (20030509):
16072    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
16073    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
16074  Current Release:
16075    Non-Debug Version:  73.7K Code,   9.7K Data,   83.4K Total
16076    Debug Version:     156.9K Code,  64.2K Data,  221.1K Total
16077
16078
160792) Linux:
16080
16081Fixed a bug in which we would reinitialize the ACPI interrupt
16082after it was already working, thus disabling all ACPI and the IRQs
16083for any other device sharing the interrupt. (Thanks to Stian
16084Jordet)
16085
16086Toshiba driver update (John Belmonte)
16087
16088Return only 0 or 1 for our interrupt handler status (Andrew
16089Morton)
16090
16091
160923) iASL Compiler:
16093
16094Fixed a reported problem where multiple (nested) ElseIf()
16095statements were not handled correctly by the compiler, resulting
16096in incorrect warnings and incorrect AML code.  This was a problem
16097in both the ASL parser and the code generator.
16098
16099
161004) Documentation:
16101
16102Added changes to existing interfaces, new exception codes, and new
16103text concerning reference count object management versus garbage
16104collection.
16105
16106----------------------------------------
1610709 May 2003.  Summary of changes for version 20030509.
16108
16109
161101) ACPI CA Core Subsystem:
16111
16112Changed the subsystem initialization sequence to hold off
16113installation of address space handlers until the hardware has been
16114initialized and the system has entered ACPI mode.  This is because
16115the installation of space handlers can cause _REG methods to be
16116run.  Previously, the _REG methods could potentially be run before
16117ACPI mode was enabled.
16118
16119Fixed some memory leak issues related to address space handler and
16120notify handler installation.  There were some problems with the
16121reference count mechanism caused by the fact that the handler
16122objects are shared across several namespace objects.
16123
16124Fixed a reported problem where reference counts within the
16125namespace were not properly updated when named objects created by
16126method execution were deleted.
16127
16128Fixed a reported problem where multiple SSDTs caused a deletion
16129issue during subsystem termination.  Restructured the table data
16130structures to simplify the linked lists and the related code.
16131
16132Fixed a problem where the table ID associated with secondary
16133tables (SSDTs) was not being propagated into the namespace objects
16134created by those tables.  This would only present a problem for
16135tables that are unloaded at run-time, however.
16136
16137Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
16138type as the length parameter (instead of UINT32).
16139
16140Solved a long-standing problem where an ALREADY_EXISTS error
16141appears on various systems.  This problem could happen when there
16142are multiple PCI_Config operation regions under a single PCI root
16143bus.  This doesn't happen very frequently, but there are some
16144systems that do this in the ASL.
16145
16146Fixed a reported problem where the internal DeleteNode function
16147was incorrectly handling the case where a namespace node was the
16148first in the parent's child list, and had additional peers (not
16149the only child, but first in the list of children.)
16150
16151Code and Data Size: Current core subsystem library sizes are shown
16152below.  These are the code and data sizes for the acpica.lib
16153produced by the Microsoft Visual C++ 6.0 compiler, and these
16154values do not include any ACPI driver or OSPM code.  The debug
16155version of the code includes the debug output trace mechanism and
16156has a much larger code and data size.  Note that these values will
16157vary depending on the efficiency of the compiler and the compiler
16158options used during generation.
16159
16160  Previous Release
16161    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
16162    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
16163  Current Release:
16164    Non-Debug Version:  73.4K Code,   9.7K Data,   83.1K Total
16165    Debug Version:     156.1K Code,  63.9K Data,  220.0K Total
16166
16167
161682) Linux:
16169
16170Allow ":" in OS override string (Ducrot Bruno)
16171
16172Kobject fix (Greg KH)
16173
16174
161753 iASL Compiler/Disassembler:
16176
16177Fixed a problem in the generation of the C source code files (AML
16178is emitted in C source statements for BIOS inclusion) where the
16179Ascii dump that appears within a C comment at the end of each line
16180could cause a compile time error if the AML sequence happens to
16181have an open comment or close comment sequence embedded.
16182
16183
16184----------------------------------------
1618524 April 2003.  Summary of changes for version 20030424.
16186
16187
161881) ACPI CA Core Subsystem:
16189
16190Support for big-endian systems has been implemented.  Most of the
16191support has been invisibly added behind big-endian versions of the
16192ACPI_MOVE_* macros.
16193
16194Fixed a problem in AcpiHwDisableGpeBlock() and
16195AcpiHwClearGpeBlock() where an incorrect offset was passed to the
16196low level hardware write routine.  The offset parameter was
16197actually eliminated from the low level read/write routines because
16198they had become obsolete.
16199
16200Fixed a problem where a handler object was deleted twice during
16201the removal of a fixed event handler.
16202
16203
162042) Linux:
16205
16206A fix for SMP systems with link devices was contributed by
16207
16208Compaq's Dan Zink.
16209
16210(2.5) Return whether we handled the interrupt in our IRQ handler.
16211(Linux ISRs no longer return void, so we can propagate the handler
16212return value from the ACPI CA core back to the OS.)
16213
16214
16215
162163) Documentation:
16217
16218The ACPI CA Programmer Reference has been updated to reflect new
16219interfaces and changes to existing interfaces.
16220
16221----------------------------------------
1622228 March 2003.  Summary of changes for version 20030328.
16223
162241) ACPI CA Core Subsystem:
16225
16226The GPE Block Device support has been completed.  New interfaces
16227are AcpiInstallGpeBlock and AcpiRemoveGpeBlock.  The Event
16228interfaces (enable, disable, clear, getstatus) have been split
16229into separate interfaces for Fixed Events and General Purpose
16230Events (GPEs) in order to support GPE Block Devices properly.
16231
16232Fixed a problem where the error message "Failed to acquire
16233semaphore" would appear during operations on the embedded
16234controller (EC).
16235
16236Code and Data Size: Current core subsystem library sizes are shown
16237below.  These are the code and data sizes for the acpica.lib
16238produced by the Microsoft Visual C++ 6.0 compiler, and these
16239values do not include any ACPI driver or OSPM code.  The debug
16240version of the code includes the debug output trace mechanism and
16241has a much larger code and data size.  Note that these values will
16242vary depending on the efficiency of the compiler and the compiler
16243options used during generation.
16244
16245  Previous Release
16246    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
16247    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
16248  Current Release:
16249    Non-Debug Version:  73.7K Code,   9.5K Data,   83.2K Total
16250    Debug Version:     156.1K Code,  63.6K Data,  219.7K Total
16251
16252
16253----------------------------------------
1625428 February 2003.  Summary of changes for version 20030228.
16255
16256
162571) ACPI CA Core Subsystem:
16258
16259The GPE handling and dispatch code has been completely overhauled
16260in preparation for support of GPE Block Devices (ID ACPI0006).
16261This affects internal data structures and code only; there should
16262be no differences visible externally.  One new file has been
16263added, evgpeblk.c
16264
16265The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
16266fields that are used to determine the GPE block lengths.  The
16267REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
16268structures are ignored.  This is per the ACPI specification but it
16269isn't very clear.  The full 256 Block 0/1 GPEs are now supported
16270(the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
16271
16272In the SCI interrupt handler, removed the read of the PM1_CONTROL
16273register to look at the SCI_EN bit.  On some machines, this read
16274causes an SMI event and greatly slows down SCI events.  (This may
16275in fact be the cause of slow battery status response on some
16276systems.)
16277
16278Fixed a problem where a store of a NULL string to a package object
16279could cause the premature deletion of the object.  This was seen
16280during execution of the battery _BIF method on some systems,
16281resulting in no battery data being returned.
16282
16283Added AcpiWalkResources interface to simplify parsing of resource
16284lists.
16285
16286Code and Data Size: Current core subsystem library sizes are shown
16287below.  These are the code and data sizes for the acpica.lib
16288produced by the Microsoft Visual C++ 6.0 compiler, and these
16289values do not include any ACPI driver or OSPM code.  The debug
16290version of the code includes the debug output trace mechanism and
16291has a much larger code and data size.  Note that these values will
16292vary depending on the efficiency of the compiler and the compiler
16293options used during generation.
16294
16295  Previous Release
16296    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16297    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16298  Current Release:
16299    Non-Debug Version:  72.3K Code,   9.5K Data,   81.8K Total
16300    Debug Version:     154.0K Code,  63.4K Data,  217.4K Total
16301
16302
163032) Linux
16304
16305S3 fixes (Ole Rohne)
16306
16307Update ACPI PHP driver with to use new acpi_walk_resource API
16308(Bjorn Helgaas)
16309
16310Add S4BIOS support (Pavel Machek)
16311
16312Map in entire table before performing checksum (John Stultz)
16313
16314Expand the mem= cmdline to allow the specification of reserved and
16315ACPI DATA blocks (Pavel Machek)
16316
16317Never use ACPI on VISWS
16318
16319Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
16320
16321Revert a change that allowed P_BLK lengths to be 4 or 5. This is
16322causing us to think that some systems support C2 when they really
16323don't.
16324
16325Do not count processor objects for non-present CPUs (Thanks to
16326Dominik Brodowski)
16327
16328
163293) iASL Compiler:
16330
16331Fixed a problem where ASL include files could not be found and
16332opened.
16333
16334Added support for the _PDC reserved name.
16335
16336
16337----------------------------------------
1633822 January 2003.  Summary of changes for version 20030122.
16339
16340
163411) ACPI CA Core Subsystem:
16342
16343Added a check for constructs of the form:  Store (Local0, Local0)
16344where Local0 is not initialized.  Apparently, some BIOS
16345programmers believe that this is a NOOP.  Since this store doesn't
16346do anything anyway, the new prototype behavior will ignore this
16347error.  This is a case where we can relax the strict checking in
16348the interpreter in the name of compatibility.
16349
16350
163512) Linux
16352
16353The AcpiSrc Source Conversion Utility has been released with the
16354Linux package for the first time.  This is the utility that is
16355used to convert the ACPI CA base source code to the Linux version.
16356
16357(Both) Handle P_BLK lengths shorter than 6 more gracefully
16358
16359(Both) Move more headers to include/acpi, and delete an unused
16360header.
16361
16362(Both) Move drivers/acpi/include directory to include/acpi
16363
16364(Both) Boot functions don't use cmdline, so don't pass it around
16365
16366(Both) Remove include of unused header (Adrian Bunk)
16367
16368(Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
16369the
16370former now also includes the latter, acpiphp.h only needs the one,
16371now.
16372
16373(2.5) Make it possible to select method of bios restoring after S3
16374resume. [=> no more ugly ifdefs] (Pavel Machek)
16375
16376(2.5) Make proc write interfaces work (Pavel Machek)
16377
16378(2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
16379
16380(2.5) Break out ACPI Perf code into its own module, under cpufreq
16381(Dominik Brodowski)
16382
16383(2.4) S4BIOS support (Ducrot Bruno)
16384
16385(2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
16386Visinoni)
16387
16388
163893) iASL Compiler:
16390
16391Added support to disassemble SSDT and PSDTs.
16392
16393Implemented support to obtain SSDTs from the Windows registry if
16394available.
16395
16396
16397----------------------------------------
1639809 January 2003.  Summary of changes for version 20030109.
16399
164001) ACPI CA Core Subsystem:
16401
16402Changed the behavior of the internal Buffer-to-String conversion
16403function.  The current ACPI specification states that the contents
16404of the buffer are "converted to a string of two-character
16405hexadecimal numbers, each separated by a space".  Unfortunately,
16406this definition is not backwards compatible with existing ACPI 1.0
16407implementations (although the behavior was not defined in the ACPI
164081.0 specification).  The new behavior simply copies data from the
16409buffer to the string until a null character is found or the end of
16410the buffer is reached.  The new String object is always null
16411terminated.  This problem was seen during the generation of _BIF
16412battery data where incorrect strings were returned for battery
16413type, etc.  This will also require an errata to the ACPI
16414specification.
16415
16416Renamed all instances of NATIVE_UINT and NATIVE_INT to
16417ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
16418
16419Copyright in all module headers (both Linux and non-Linux) has be
16420updated to 2003.
16421
16422Code and Data Size: Current core subsystem library sizes are shown
16423below.  These are the code and data sizes for the acpica.lib
16424produced by the Microsoft Visual C++ 6.0 compiler, and these
16425values do not include any ACPI driver or OSPM code.  The debug
16426version of the code includes the debug output trace mechanism and
16427has a much larger code and data size.  Note that these values will
16428vary depending on the efficiency of the compiler and the compiler
16429options used during generation.
16430
16431  Previous Release
16432    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16433    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16434  Current Release:
16435    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16436    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16437
16438
164392) Linux
16440
16441Fixed an oops on module insertion/removal (Matthew Tippett)
16442
16443(2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
16444
16445(2.5) Replace pr_debug (Randy Dunlap)
16446
16447(2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
16448
16449(Both) Eliminate spawning of thread from timer callback, in favor
16450of schedule_work()
16451
16452(Both) Show Lid status in /proc (Zdenek OGAR Skalak)
16453
16454(Both) Added define for Fixed Function HW region (Matthew Wilcox)
16455
16456(Both) Add missing statics to button.c (Pavel Machek)
16457
16458Several changes have been made to the source code translation
16459utility that generates the Linux Code in order to make the code
16460more "Linux-like":
16461
16462All typedefs on structs and unions have been removed in keeping
16463with the Linux coding style.
16464
16465Removed the non-Linux SourceSafe module revision number from each
16466module header.
16467
16468Completed major overhaul of symbols to be lowercase for linux.
16469Doubled the number of symbols that are lowercase.
16470
16471Fixed a problem where identifiers within procedure headers and
16472within quotes were not fully lower cased (they were left with a
16473starting capital.)
16474
16475Some C macros whose only purpose is to allow the generation of 16-
16476bit code are now completely removed in the Linux code, increasing
16477readability and maintainability.
16478
16479----------------------------------------
16480
1648112 December 2002.  Summary of changes for version 20021212.
16482
16483
164841) ACPI CA Core Subsystem:
16485
16486Fixed a problem where the creation of a zero-length AML Buffer
16487would cause a fault.
16488
16489Fixed a problem where a Buffer object that pointed to a static AML
16490buffer (in an ACPI table) could inadvertently be deleted, causing
16491memory corruption.
16492
16493Fixed a problem where a user buffer (passed in to the external
16494ACPI CA interfaces) could be overwritten if the buffer was too
16495small to complete the operation, causing memory corruption.
16496
16497Fixed a problem in the Buffer-to-String conversion code where a
16498string of length one was always returned, regardless of the size
16499of the input Buffer object.
16500
16501Removed the NATIVE_CHAR data type across the entire source due to
16502lack of need and lack of consistent use.
16503
16504Code and Data Size: Current core subsystem library sizes are shown
16505below.  These are the code and data sizes for the acpica.lib
16506produced by the Microsoft Visual C++ 6.0 compiler, and these
16507values do not include any ACPI driver or OSPM code.  The debug
16508version of the code includes the debug output trace mechanism and
16509has a much larger code and data size.  Note that these values will
16510vary depending on the efficiency of the compiler and the compiler
16511options used during generation.
16512
16513  Previous Release
16514    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16515    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16516  Current Release:
16517    Non-Debug Version:  72.0K Code,   9.5K Data,   81.5K Total
16518    Debug Version:     153.0K Code,  62.9K Data,  215.9K Total
16519
16520
16521----------------------------------------
1652205 December 2002.  Summary of changes for version 20021205.
16523
165241) ACPI CA Core Subsystem:
16525
16526Fixed a problem where a store to a String or Buffer object could
16527cause corruption of the DSDT if the object type being stored was
16528the same as the target object type and the length of the object
16529being stored was equal to or smaller than the original (existing)
16530target object.  This was seen to cause corruption of battery _BIF
16531buffers if the _BIF method modified the buffer on the fly.
16532
16533Fixed a problem where an internal error was generated if a control
16534method invocation was used in an OperationRegion, Buffer, or
16535Package declaration.  This was caused by the deferred parsing of
16536the control method and thus the deferred creation of the internal
16537method object.  The solution to this problem was to create the
16538internal method object at the moment the method is encountered in
16539the first pass - so that subsequent references to the method will
16540able to obtain the required parameter count and thus properly
16541parse the method invocation.  This problem presented itself as an
16542AE_AML_INTERNAL during the pass 1 parse phase during table load.
16543
16544Fixed a problem where the internal String object copy routine did
16545not always allocate sufficient memory for the target String object
16546and caused memory corruption.  This problem was seen to cause
16547"Allocation already present in list!" errors as memory allocation
16548became corrupted.
16549
16550Implemented a new function for the evaluation of namespace objects
16551that allows the specification of the allowable return object
16552types.  This simplifies a lot of code that checks for a return
16553object of one or more specific objects returned from the
16554evaluation (such as _STA, etc.)  This may become and external
16555function if it would be useful to ACPI-related drivers.
16556
16557Completed another round of prefixing #defines with "ACPI_" for
16558clarity.
16559
16560Completed additional code restructuring to allow more modular
16561linking for iASL compiler and AcpiExec.  Several files were split
16562creating new files.  New files:  nsparse.c dsinit.c evgpe.c
16563
16564Implemented an abort mechanism to terminate an executing control
16565method via the AML debugger.  This feature is useful for debugging
16566control methods that depend (wait) for specific hardware
16567responses.
16568
16569Code and Data Size: Current core subsystem library sizes are shown
16570below.  These are the code and data sizes for the acpica.lib
16571produced by the Microsoft Visual C++ 6.0 compiler, and these
16572values do not include any ACPI driver or OSPM code.  The debug
16573version of the code includes the debug output trace mechanism and
16574has a much larger code and data size.  Note that these values will
16575vary depending on the efficiency of the compiler and the compiler
16576options used during generation.
16577
16578  Previous Release
16579    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16580    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16581  Current Release:
16582    Non-Debug Version:  72.1K Code,   9.5K Data,   81.6K Total
16583    Debug Version:     152.7K Code,  62.7K Data,  215.4K Total
16584
16585
165862) iASL Compiler/Disassembler
16587
16588Fixed a compiler code generation problem for "Interrupt" Resource
16589Descriptors.  If specified in the ASL, the optional "Resource
16590Source Index" and "Resource Source" fields were not inserted into
16591the correct location within the AML resource descriptor, creating
16592an invalid descriptor.
16593
16594Fixed a disassembler problem for "Interrupt" resource descriptors.
16595The optional "Resource Source Index" and "Resource Source" fields
16596were ignored.
16597
16598
16599----------------------------------------
1660022 November 2002.  Summary of changes for version 20021122.
16601
16602
166031) ACPI CA Core Subsystem:
16604
16605Fixed a reported problem where an object stored to a Method Local
16606or Arg was not copied to a new object during the store - the
16607object pointer was simply copied to the Local/Arg.  This caused
16608all subsequent operations on the Local/Arg to also affect the
16609original source of the store operation.
16610
16611Fixed a problem where a store operation to a Method Local or Arg
16612was not completed properly if the Local/Arg contained a reference
16613(from RefOf) to a named field.  The general-purpose store-to-
16614namespace-node code is now used so that this case is handled
16615automatically.
16616
16617Fixed a problem where the internal object copy routine would cause
16618a protection fault if the object being copied was a Package and
16619contained either 1) a NULL package element or 2) a nested sub-
16620package.
16621
16622Fixed a problem with the GPE initialization that resulted from an
16623ambiguity in the ACPI specification.  One section of the
16624specification states that both the address and length of the GPE
16625block must be zero if the block is not supported.  Another section
16626implies that only the address need be zero if the block is not
16627supported.  The code has been changed so that both the address and
16628the length must be non-zero to indicate a valid GPE block (i.e.,
16629if either the address or the length is zero, the GPE block is
16630invalid.)
16631
16632Code and Data Size: Current core subsystem library sizes are shown
16633below.  These are the code and data sizes for the acpica.lib
16634produced by the Microsoft Visual C++ 6.0 compiler, and these
16635values do not include any ACPI driver or OSPM code.  The debug
16636version of the code includes the debug output trace mechanism and
16637has a much larger code and data size.  Note that these values will
16638vary depending on the efficiency of the compiler and the compiler
16639options used during generation.
16640
16641  Previous Release
16642    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16643    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16644  Current Release:
16645    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16646    Debug Version:     152.9K Code,  63.3K Data,  216.2K Total
16647
16648
166492) Linux
16650
16651Cleaned up EC driver. Exported an external EC read/write
16652interface. By going through this, other drivers (most notably
16653sonypi) will be able to serialize access to the EC.
16654
16655
166563) iASL Compiler/Disassembler
16657
16658Implemented support to optionally generate include files for both
16659ASM and C (the -i switch).  This simplifies BIOS development by
16660automatically creating include files that contain external
16661declarations for the symbols that are created within the
16662
16663(optionally generated) ASM and C AML source files.
16664
16665
16666----------------------------------------
1666715 November 2002.  Summary of changes for version 20021115.
16668
166691) ACPI CA Core Subsystem:
16670
16671Fixed a memory leak problem where an error during resolution of
16672
16673method arguments during a method invocation from another method
16674failed to cleanup properly by deleting all successfully resolved
16675argument objects.
16676
16677Fixed a problem where the target of the Index() operator was not
16678correctly constructed if the source object was a package.  This
16679problem has not been detected because the use of a target operand
16680with Index() is very rare.
16681
16682Fixed a problem with the Index() operator where an attempt was
16683made to delete the operand objects twice.
16684
16685Fixed a problem where an attempt was made to delete an operand
16686twice during execution of the CondRefOf() operator if the target
16687did not exist.
16688
16689Implemented the first of perhaps several internal create object
16690functions that create and initialize a specific object type.  This
16691consolidates duplicated code wherever the object is created, thus
16692shrinking the size of the subsystem.
16693
16694Implemented improved debug/error messages for errors that occur
16695during nested method invocations.  All executing method pathnames
16696are displayed (with the error) as the call stack is unwound - thus
16697simplifying debug.
16698
16699Fixed a problem introduced in the 10/02 release that caused
16700premature deletion of a buffer object if a buffer was used as an
16701ASL operand where an integer operand is required (Thus causing an
16702implicit object conversion from Buffer to Integer.)  The change in
16703the 10/02 release was attempting to fix a memory leak (albeit
16704incorrectly.)
16705
16706Code and Data Size: Current core subsystem library sizes are shown
16707below.  These are the code and data sizes for the acpica.lib
16708produced by the Microsoft Visual C++ 6.0 compiler, and these
16709values do not include any ACPI driver or OSPM code.  The debug
16710version of the code includes the debug output trace mechanism and
16711has a much larger code and data size.  Note that these values will
16712vary depending on the efficiency of the compiler and the compiler
16713options used during generation.
16714
16715  Previous Release
16716    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16717    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16718  Current Release:
16719    Non-Debug Version:  71.3K Code,   9.0K Data,   80.3K Total
16720    Debug Version:     152.7K Code,  63.2K Data,  215.5K Total
16721
16722
167232) Linux
16724
16725Changed the implementation of the ACPI semaphores to use down()
16726instead of down_interruptable().  It is important that the
16727execution of ACPI control methods not be interrupted by signals.
16728Methods must run to completion, or the system may be left in an
16729unknown/unstable state.
16730
16731Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16732(Shawn Starr)
16733
16734
167353) iASL Compiler/Disassembler
16736
16737
16738Changed the default location of output files.  All output files
16739are now placed in the current directory by default instead of in
16740the directory of the source file.  This change may affect some
16741existing makefiles, but it brings the behavior of the compiler in
16742line with other similar tools.  The location of the output files
16743can be overridden with the -p command line switch.
16744
16745
16746----------------------------------------
1674711 November 2002.  Summary of changes for version 20021111.
16748
16749
167500) ACPI Specification 2.0B is released and is now available at:
16751http://www.acpi.info/index.html
16752
16753
167541) ACPI CA Core Subsystem:
16755
16756Implemented support for the ACPI 2.0 SMBus Operation Regions.
16757This includes the early detection and handoff of the request to
16758the SMBus region handler (avoiding all of the complex field
16759support code), and support for the bidirectional return packet
16760from an SMBus write operation.  This paves the way for the
16761development of SMBus drivers in each host operating system.
16762
16763Fixed a problem where the semaphore WAIT_FOREVER constant was
16764defined as 32 bits, but must be 16 bits according to the ACPI
16765specification.  This had the side effect of causing ASL
16766Mutex/Event timeouts even though the ASL code requested a wait
16767forever.  Changed all internal references to the ACPI timeout
16768parameter to 16 bits to prevent future problems.  Changed the name
16769of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16770
16771Code and Data Size: Current core subsystem library sizes are shown
16772below.  These are the code and data sizes for the acpica.lib
16773produced by the Microsoft Visual C++ 6.0 compiler, and these
16774values do not include any ACPI driver or OSPM code.  The debug
16775version of the code includes the debug output trace mechanism and
16776has a much larger code and data size.  Note that these values will
16777vary depending on the efficiency of the compiler and the compiler
16778options used during generation.
16779
16780  Previous Release
16781    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16782    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16783  Current Release:
16784    Non-Debug Version:  71.9K Code,   9.1K Data,   81.0K Total
16785    Debug Version:     153.1K Code,  63.3K Data,  216.4K Total
16786
16787
167882) Linux
16789
16790Module loading/unloading fixes (John Cagle)
16791
16792
167933) iASL Compiler/Disassembler
16794
16795Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16796
16797Implemented support for the disassembly of all SMBus protocol
16798keywords (SMBQuick, SMBWord, etc.)
16799
16800----------------------------------------
1680101 November 2002.  Summary of changes for version 20021101.
16802
16803
168041) ACPI CA Core Subsystem:
16805
16806Fixed a problem where platforms that have a GPE1 block but no GPE0
16807block were not handled correctly.  This resulted in a "GPE
16808overlap" error message.  GPE0 is no longer required.
16809
16810Removed code added in the previous release that inserted nodes
16811into the namespace in alphabetical order.  This caused some side-
16812effects on various machines.  The root cause of the problem is
16813still under investigation since in theory, the internal ordering
16814of the namespace nodes should not matter.
16815
16816
16817Enhanced error reporting for the case where a named object is not
16818found during control method execution.  The full ACPI namepath
16819(name reference) of the object that was not found is displayed in
16820this case.
16821
16822Note: as a result of the overhaul of the namespace object types in
16823the previous release, the namespace nodes for the predefined
16824scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16825instead of ACPI_TYPE_ANY.  This simplifies the namespace
16826management code but may affect code that walks the namespace tree
16827looking for specific object types.
16828
16829Code and Data Size: Current core subsystem library sizes are shown
16830below.  These are the code and data sizes for the acpica.lib
16831produced by the Microsoft Visual C++ 6.0 compiler, and these
16832values do not include any ACPI driver or OSPM code.  The debug
16833version of the code includes the debug output trace mechanism and
16834has a much larger code and data size.  Note that these values will
16835vary depending on the efficiency of the compiler and the compiler
16836options used during generation.
16837
16838  Previous Release
16839    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16840    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16841  Current Release:
16842    Non-Debug Version:  71.4K Code,   9.0K Data,   80.4K Total
16843    Debug Version:     152.3K Code,  63.0K Data,  215.3K Total
16844
16845
168462) Linux
16847
16848Fixed a problem introduced in the previous release where the
16849Processor and Thermal objects were not recognized and installed in
16850/proc.  This was related to the scope type change described above.
16851
16852
168533) iASL Compiler/Disassembler
16854
16855Implemented the -g option to get all of the required ACPI tables
16856from the registry and save them to files (Windows version of the
16857compiler only.)  The required tables are the FADT, FACS, and DSDT.
16858
16859Added ACPI table checksum validation during table disassembly in
16860order to catch corrupted tables.
16861
16862
16863----------------------------------------
1686422 October 2002.  Summary of changes for version 20021022.
16865
168661) ACPI CA Core Subsystem:
16867
16868Implemented a restriction on the Scope operator that the target
16869must already exist in the namespace at the time the operator is
16870encountered (during table load or method execution).  In other
16871words, forward references are not allowed and Scope() cannot
16872create a new object. This changes the previous behavior where the
16873interpreter would create the name if not found.  This new behavior
16874correctly enables the search-to-root algorithm during namespace
16875lookup of the target name.  Because of this upsearch, this fixes
16876the known Compaq _SB_.OKEC problem and makes both the AML
16877interpreter and iASL compiler compatible with other ACPI
16878implementations.
16879
16880Completed a major overhaul of the internal ACPI object types for
16881the ACPI Namespace and the associated operand objects.  Many of
16882these types had become obsolete with the introduction of the two-
16883pass namespace load.  This cleanup simplifies the code and makes
16884the entire namespace load mechanism much clearer and easier to
16885understand.
16886
16887Improved debug output for tracking scope opening/closing to help
16888diagnose scoping issues.  The old scope name as well as the new
16889scope name are displayed.  Also improved error messages for
16890problems with ASL Mutex objects and error messages for GPE
16891problems.
16892
16893Cleaned up the namespace dump code, removed obsolete code.
16894
16895All string output (for all namespace/object dumps) now uses the
16896common ACPI string output procedure which handles escapes properly
16897and does not emit non-printable characters.
16898
16899Fixed some issues with constants in the 64-bit version of the
16900local C library (utclib.c)
16901
16902
169032) Linux
16904
16905EC Driver:  No longer attempts to acquire the Global Lock at
16906interrupt level.
16907
16908
169093) iASL Compiler/Disassembler
16910
16911Implemented ACPI 2.0B grammar change that disallows all Type 1 and
169122 opcodes outside of a control method.  This means that the
16913"executable" operators (versus the "namespace" operators) cannot
16914be used at the table level; they can only be used within a control
16915method.
16916
16917Implemented the restriction on the Scope() operator where the
16918target must already exist in the namespace at the time the
16919operator is encountered (during ASL compilation). In other words,
16920forward references are not allowed and Scope() cannot create a new
16921object.  This makes the iASL compiler compatible with other ACPI
16922implementations and makes the Scope() implementation adhere to the
16923ACPI specification.
16924
16925Fixed a problem where namepath optimization for the Alias operator
16926was optimizing the wrong path (of the two namepaths.)  This caused
16927a "Missing alias link" error message.
16928
16929Fixed a problem where an "unknown reserved name" warning could be
16930incorrectly generated for names like "_SB" when the trailing
16931underscore is not used in the original ASL.
16932
16933Fixed a problem where the reserved name check did not handle
16934NamePaths with multiple NameSegs correctly.  The first nameseg of
16935the NamePath was examined instead of the last NameSeg.
16936
16937
16938----------------------------------------
16939
1694002 October 2002.  Summary of changes for this release.
16941
16942
169431) ACPI CA Core Subsystem version 20021002:
16944
16945Fixed a problem where a store/copy of a string to an existing
16946string did not always set the string length properly in the String
16947object.
16948
16949Fixed a reported problem with the ToString operator where the
16950behavior was identical to the ToHexString operator instead of just
16951simply converting a raw buffer to a string data type.
16952
16953Fixed a problem where CopyObject and the other "explicit"
16954conversion operators were not updating the internal namespace node
16955type as part of the store operation.
16956
16957Fixed a memory leak during implicit source operand conversion
16958where the original object was not deleted if it was converted to a
16959new object of a different type.
16960
16961Enhanced error messages for all problems associated with namespace
16962lookups.  Common procedure generates and prints the lookup name as
16963well as the formatted status.
16964
16965Completed implementation of a new design for the Alias support
16966within the namespace.  The existing design did not handle the case
16967where a new object was assigned to one of the two names due to the
16968use of an explicit conversion operator, resulting in the two names
16969pointing to two different objects.  The new design simply points
16970the Alias name to the original name node - not to the object.
16971This results in a level of indirection that must be handled in the
16972name resolution mechanism.
16973
16974Code and Data Size: Current core subsystem library sizes are shown
16975below.  These are the code and data sizes for the acpica.lib
16976produced by the Microsoft Visual C++ 6.0 compiler, and these
16977values do not include any ACPI driver or OSPM code.  The debug
16978version of the code includes the debug output trace mechanism and
16979has a larger code and data size.  Note that these values will vary
16980depending on the efficiency of the compiler and the compiler
16981options used during generation.
16982
16983  Previous Release
16984    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
16985    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
16986  Current Release:
16987    Non-Debug Version:  70.7K Code,   8.6K Data,   79.3K Total
16988    Debug Version:     151.7K Code,  62.4K Data,  214.1K Total
16989
16990
169912) Linux
16992
16993Initialize thermal driver's timer before it is used. (Knut
16994Neumann)
16995
16996Allow handling negative celsius values. (Kochi Takayoshi)
16997
16998Fix thermal management and make trip points. R/W (Pavel Machek)
16999
17000Fix /proc/acpi/sleep. (P. Christeas)
17001
17002IA64 fixes. (David Mosberger)
17003
17004Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
17005
17006Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
17007Brodowski)
17008
17009
170103) iASL Compiler/Disassembler
17011
17012Clarified some warning/error messages.
17013
17014
17015----------------------------------------
1701618 September 2002.  Summary of changes for this release.
17017
17018
170191) ACPI CA Core Subsystem version 20020918:
17020
17021Fixed a reported problem with reference chaining (via the Index()
17022and RefOf() operators) in the ObjectType() and SizeOf() operators.
17023The definition of these operators includes the dereferencing of
17024all chained references to return information on the base object.
17025
17026Fixed a problem with stores to indexed package elements - the
17027existing code would not complete the store if an "implicit
17028conversion" was not performed.  In other words, if the existing
17029object (package element) was to be replaced completely, the code
17030didn't handle this case.
17031
17032Relaxed typechecking on the ASL "Scope" operator to allow the
17033target name to refer to an object of type Integer, String, or
17034Buffer, in addition to the scoping object types (Device,
17035predefined Scopes, Processor, PowerResource, and ThermalZone.)
17036This allows existing AML code that has workarounds for a bug in
17037Windows to function properly.  A warning is issued, however.  This
17038affects both the AML interpreter and the iASL compiler. Below is
17039an example of this type of ASL code:
17040
17041      Name(DEB,0x00)
17042      Scope(DEB)
17043      {
17044
17045Fixed some reported problems with 64-bit integer support in the
17046local implementation of C library functions (clib.c)
17047
17048
170492) Linux
17050
17051Use ACPI fix map region instead of IOAPIC region, since it is
17052undefined in non-SMP.
17053
17054Ensure that the SCI has the proper polarity and trigger, even on
17055systems that do not have an interrupt override entry in the MADT.
17056
170572.5 big driver reorganization (Pat Mochel)
17058
17059Use early table mapping code from acpitable.c (Andi Kleen)
17060
17061New blacklist entries (Andi Kleen)
17062
17063Blacklist improvements. Split blacklist code out into a separate
17064file. Move checking the blacklist to very early. Previously, we
17065would use ACPI tables, and then halfway through init, check the
17066blacklist -- too late. Now, it's early enough to completely fall-
17067back to non-ACPI.
17068
17069
170703) iASL Compiler/Disassembler version 20020918:
17071
17072Fixed a problem where the typechecking code didn't know that an
17073alias could point to a method.  In other words, aliases were not
17074being dereferenced during typechecking.
17075
17076
17077----------------------------------------
1707829 August 2002.  Summary of changes for this release.
17079
170801) ACPI CA Core Subsystem Version 20020829:
17081
17082If the target of a Scope() operator already exists, it must be an
17083object type that actually opens a scope -- such as a Device,
17084Method, Scope, etc.  This is a fatal runtime error.  Similar error
17085check has been added to the iASL compiler also.
17086
17087Tightened up the namespace load to disallow multiple names in the
17088same scope.  This previously was allowed if both objects were of
17089the same type.  (i.e., a lookup was the same as entering a new
17090name).
17091
17092
170932) Linux
17094
17095Ensure that the ACPI interrupt has the proper trigger and
17096polarity.
17097
17098local_irq_disable is extraneous. (Matthew Wilcox)
17099
17100Make "acpi=off" actually do what it says, and not use the ACPI
17101interpreter *or* the tables.
17102
17103Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
17104Takayoshi)
17105
17106
171073) iASL Compiler/Disassembler  Version 20020829:
17108
17109Implemented namepath optimization for name declarations.  For
17110example, a declaration like "Method (\_SB_.ABCD)" would get
17111optimized to "Method (ABCD)" if the declaration is within the
17112\_SB_ scope.  This optimization is in addition to the named
17113reference path optimization first released in the previous
17114version. This would seem to complete all possible optimizations
17115for namepaths within the ASL/AML.
17116
17117If the target of a Scope() operator already exists, it must be an
17118object type that actually opens a scope -- such as a Device,
17119Method, Scope, etc.
17120
17121Implemented a check and warning for unreachable code in the same
17122block below a Return() statement.
17123
17124Fixed a problem where the listing file was not generated if the
17125compiler aborted if the maximum error count was exceeded (200).
17126
17127Fixed a problem where the typechecking of method return values was
17128broken.  This includes the check for a return value when the
17129method is invoked as a TermArg (a return value is expected.)
17130
17131Fixed a reported problem where EOF conditions during a quoted
17132string or comment caused a fault.
17133
17134
17135----------------------------------------
1713615 August 2002.  Summary of changes for this release.
17137
171381) ACPI CA Core Subsystem Version 20020815:
17139
17140Fixed a reported problem where a Store to a method argument that
17141contains a reference did not perform the indirect store correctly.
17142This problem was created during the conversion to the new
17143reference object model - the indirect store to a method argument
17144code was not updated to reflect the new model.
17145
17146Reworked the ACPI mode change code to better conform to ACPI 2.0,
17147handle corner cases, and improve code legibility (Kochi Takayoshi)
17148
17149Fixed a problem with the pathname parsing for the carat (^)
17150prefix.  The heavy use of the carat operator by the new namepath
17151optimization in the iASL compiler uncovered a problem with the AML
17152interpreter handling of this prefix.  In the case where one or
17153more carats precede a single nameseg, the nameseg was treated as
17154standalone and the search rule (to root) was inadvertently
17155applied.  This could cause both the iASL compiler and the
17156interpreter to find the wrong object or to miss the error that
17157should occur if the object does not exist at that exact pathname.
17158
17159Found and fixed the problem where the HP Pavilion DSDT would not
17160load.  This was a relatively minor tweak to the table loading code
17161(a problem caused by the unexpected encounter with a method
17162invocation not within a control method), but it does not solve the
17163overall issue of the execution of AML code at the table level.
17164This investigation is still ongoing.
17165
17166Code and Data Size: Current core subsystem library sizes are shown
17167below.  These are the code and data sizes for the acpica.lib
17168produced by the Microsoft Visual C++ 6.0 compiler, and these
17169values do not include any ACPI driver or OSPM code.  The debug
17170version of the code includes the debug output trace mechanism and
17171has a larger code and data size.  Note that these values will vary
17172depending on the efficiency of the compiler and the compiler
17173options used during generation.
17174
17175  Previous Release
17176    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
17177    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
17178  Current Release:
17179    Non-Debug Version:  69.6K Code,   8.3K Data,   77.9K Total
17180    Debug Version:     150.0K Code,  61.7K Data,  211.7K Total
17181
17182
171832) Linux
17184
17185Remove redundant slab.h include (Brad Hards)
17186
17187Fix several bugs in thermal.c (Herbert Nachtnebel)
17188
17189Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
17190
17191Change acpi_system_suspend to use updated irq functions (Pavel
17192Machek)
17193
17194Export acpi_get_firmware_table (Matthew Wilcox)
17195
17196Use proper root proc entry for ACPI (Kochi Takayoshi)
17197
17198Fix early-boot table parsing (Bjorn Helgaas)
17199
17200
172013) iASL Compiler/Disassembler
17202
17203Reworked the compiler options to make them more consistent and to
17204use two-letter options where appropriate.  We were running out of
17205sensible letters.   This may break some makefiles, so check the
17206current options list by invoking the compiler with no parameters.
17207
17208Completed the design and implementation of the ASL namepath
17209optimization option for the compiler.  This option optimizes all
17210references to named objects to the shortest possible path.  The
17211first attempt tries to utilize a single nameseg (4 characters) and
17212the "search-to-root" algorithm used by the interpreter.  If that
17213cannot be used (because either the name is not in the search path
17214or there is a conflict with another object with the same name),
17215the pathname is optimized using the carat prefix (usually a
17216shorter string than specifying the entire path from the root.)
17217
17218Implemented support to obtain the DSDT from the Windows registry
17219(when the disassembly option is specified with no input file).
17220Added this code as the implementation for AcpiOsTableOverride in
17221the Windows OSL.  Migrated the 16-bit code (used in the AcpiDump
17222utility) to scan memory for the DSDT to the AcpiOsTableOverride
17223function in the DOS OSL to make the disassembler truly OS
17224independent.
17225
17226Implemented a new option to disassemble and compile in one step.
17227When used without an input filename, this option will grab the
17228DSDT from the local machine, disassemble it, and compile it in one
17229step.
17230
17231Added a warning message for invalid escapes (a backslash followed
17232by any character other than the allowable escapes).  This catches
17233the quoted string error "\_SB_" (which should be "\\_SB_" ).
17234
17235Also, there are numerous instances in the ACPI specification where
17236this error occurs.
17237
17238Added a compiler option to disable all optimizations.  This is
17239basically the "compatibility mode" because by using this option,
17240the AML code will come out exactly the same as other ASL
17241compilers.
17242
17243Added error messages for incorrectly ordered dependent resource
17244functions.  This includes: missing EndDependentFn macro at end of
17245dependent resource list, nested dependent function macros (both
17246start and end), and missing StartDependentFn macro.  These are
17247common errors that should be caught at compile time.
17248
17249Implemented _OSI support for the disassembler and compiler.  _OSI
17250must be included in the namespace for proper disassembly (because
17251the disassembler must know the number of arguments.)
17252
17253Added an "optimization" message type that is optional (off by
17254default).  This message is used for all optimizations - including
17255constant folding, integer optimization, and namepath optimization.
17256
17257----------------------------------------
1725825 July 2002.  Summary of changes for this release.
17259
17260
172611) ACPI CA Core Subsystem Version 20020725:
17262
17263The AML Disassembler has been enhanced to produce compilable ASL
17264code and has been integrated into the iASL compiler (see below) as
17265well as the single-step disassembly for the AML debugger and the
17266disassembler for the AcpiDump utility.  All ACPI 2.0A opcodes,
17267resource templates and macros are fully supported.  The
17268disassembler has been tested on over 30 different AML files,
17269producing identical AML when the resulting disassembled ASL file
17270is recompiled with the same ASL compiler.
17271
17272Modified the Resource Manager to allow zero interrupts and zero
17273dma channels during the GetCurrentResources call.  This was
17274causing problems on some platforms.
17275
17276Added the AcpiOsRedirectOutput interface to the OSL to simplify
17277output redirection for the AcpiOsPrintf and AcpiOsVprintf
17278interfaces.
17279
17280Code and Data Size: Current core subsystem library sizes are shown
17281below.  These are the code and data sizes for the acpica.lib
17282produced by the Microsoft Visual C++ 6.0 compiler, and these
17283values do not include any ACPI driver or OSPM code.  The debug
17284version of the code includes the debug output trace mechanism and
17285has a larger code and data size.  Note that these values will vary
17286depending on the efficiency of the compiler and the compiler
17287options used during generation.
17288
17289  Previous Release
17290    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17291    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17292  Current Release:
17293    Non-Debug Version:  69.1K Code,   8.2K Data,   77.3K Total
17294    Debug Version:     149.4K Code,  61.6K Data,  211.0K Total
17295
17296
172972) Linux
17298
17299Fixed a panic in the EC driver (Dominik Brodowski)
17300
17301Implemented checksum of the R/XSDT itself during Linux table scan
17302(Richard Schaal)
17303
17304
173053) iASL compiler
17306
17307The AML disassembler is integrated into the compiler.  The "-d"
17308option invokes the disassembler  to completely disassemble an
17309input AML file, producing as output a text ASL file with the
17310extension ".dsl" (to avoid name collisions with existing .asl
17311source files.)  A future enhancement will allow the disassembler
17312to obtain the BIOS DSDT from the registry under Windows.
17313
17314Fixed a problem with the VendorShort and VendorLong resource
17315descriptors where an invalid AML sequence was created.
17316
17317Implemented a fix for BufferData term in the ASL parser.  It was
17318inadvertently defined twice, allowing invalid syntax to pass and
17319causing reduction conflicts.
17320
17321Fixed a problem where the Ones opcode could get converted to a
17322value of zero if "Ones" was used where a byte, word or dword value
17323was expected.  The 64-bit value is now truncated to the correct
17324size with the correct value.
17325
17326
17327
17328----------------------------------------
1732902 July 2002.  Summary of changes for this release.
17330
17331
173321) ACPI CA Core Subsystem Version 20020702:
17333
17334The Table Manager code has been restructured to add several new
17335features.  Tables that are not required by the core subsystem
17336(other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
17337validated in any way and are returned from AcpiGetFirmwareTable if
17338requested.  The AcpiOsTableOverride interface is now called for
17339each table that is loaded by the subsystem in order to allow the
17340host to override any table it chooses.  Previously, only the DSDT
17341could be overridden.  Added one new files, tbrsdt.c and
17342tbgetall.c.
17343
17344Fixed a problem with the conversion of internal package objects to
17345external objects (when a package is returned from a control
17346method.)  The return buffer length was set to zero instead of the
17347proper length of the package object.
17348
17349Fixed a reported problem with the use of the RefOf and DeRefOf
17350operators when passing reference arguments to control methods.  A
17351new type of Reference object is used internally for references
17352produced by the RefOf operator.
17353
17354Added additional error messages in the Resource Manager to explain
17355AE_BAD_DATA errors when they occur during resource parsing.
17356
17357Split the AcpiEnableSubsystem into two primitives to enable a
17358finer granularity initialization sequence.  These two calls should
17359be called in this order: AcpiEnableSubsystem (flags),
17360AcpiInitializeObjects (flags).  The flags parameter remains the
17361same.
17362
17363
173642) Linux
17365
17366Updated the ACPI utilities module to understand the new style of
17367fully resolved package objects that are now returned from the core
17368subsystem.  This eliminates errors of the form:
17369
17370    ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
17371    acpi_utils-0430 [145] acpi_evaluate_reference:
17372        Invalid element in package (not a device reference)
17373
17374The method evaluation utility uses the new buffer allocation
17375scheme instead of calling AcpiEvaluate Object twice.
17376
17377Added support for ECDT. This allows the use of the Embedded
17378
17379Controller before the namespace has been fully initialized, which
17380is necessary for ACPI 2.0 support, and for some laptops to
17381initialize properly. (Laptops using ECDT are still rare, so only
17382limited testing was performed of the added functionality.)
17383
17384Fixed memory leaks in the EC driver.
17385
17386Eliminated a brittle code structure in acpi_bus_init().
17387
17388Eliminated the acpi_evaluate() helper function in utils.c. It is
17389no longer needed since acpi_evaluate_object can optionally
17390allocate memory for the return object.
17391
17392Implemented fix for keyboard hang when getting battery readings on
17393some systems (Stephen White)
17394
17395PCI IRQ routing update (Dominik Brodowski)
17396
17397Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
17398support
17399
17400----------------------------------------
1740111 June 2002.  Summary of changes for this release.
17402
17403
174041) ACPI CA Core Subsystem Version 20020611:
17405
17406Fixed a reported problem where constants such as Zero and One
17407appearing within _PRT packages were not handled correctly within
17408the resource manager code.  Originally reported against the ASL
17409compiler because the code generator now optimizes integers to
17410their minimal AML representation (i.e. AML constants if possible.)
17411The _PRT code now handles all AML constant opcodes correctly
17412(Zero, One, Ones, Revision).
17413
17414Fixed a problem with the Concatenate operator in the AML
17415interpreter where a buffer result object was incorrectly marked as
17416not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
17417
17418All package sub-objects are now fully resolved before they are
17419returned from the external ACPI interfaces.  This means that name
17420strings are resolved to object handles, and constant operators
17421(Zero, One, Ones, Revision) are resolved to Integers.
17422
17423Implemented immediate resolution of the AML Constant opcodes
17424(Zero, One, Ones, Revision) to Integer objects upon detection
17425within the AML stream. This has simplified and reduced the
17426generated code size of the subsystem by eliminating about 10
17427switch statements for these constants (which previously were
17428contained in Reference objects.)  The complicating issues are that
17429the Zero opcode is used as a "placeholder" for unspecified
17430optional target operands and stores to constants are defined to be
17431no-ops.
17432
17433Code and Data Size: Current core subsystem library sizes are shown
17434below. These are the code and data sizes for the acpica.lib
17435produced by the Microsoft Visual C++ 6.0 compiler, and these
17436values do not include any ACPI driver or OSPM code.  The debug
17437version of the code includes the debug output trace mechanism and
17438has a larger code and data size.  Note that these values will vary
17439depending on the efficiency of the compiler and the compiler
17440options used during generation.
17441
17442  Previous Release
17443    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17444    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17445  Current Release:
17446    Non-Debug Version:  68.7K Code,   7.4K Data,   76.1K Total
17447    Debug Version:     142.9K Code,  58.7K Data,  201.6K Total
17448
17449
174502) Linux
17451
17452
17453Added preliminary support for obtaining _TRA data for PCI root
17454bridges (Bjorn Helgaas).
17455
17456
174573) iASL Compiler Version X2046:
17458
17459Fixed a problem where the "_DDN" reserved name was defined to be a
17460control method with one argument.  There are no arguments, and
17461_DDN does not have to be a control method.
17462
17463Fixed a problem with the Linux version of the compiler where the
17464source lines printed with error messages were the wrong lines.
17465This turned out to be the "LF versus CR/LF" difference between
17466Windows and Unix.  This appears to be the longstanding issue
17467concerning listing output and error messages.
17468
17469Fixed a problem with the Linux version of compiler where opcode
17470names within error messages were wrong.  This was caused by a
17471slight difference in the output of the Flex tool on Linux versus
17472Windows.
17473
17474Fixed a problem with the Linux compiler where the hex output files
17475contained some garbage data caused by an internal buffer overrun.
17476
17477
17478----------------------------------------
1747917 May 2002.  Summary of changes for this release.
17480
17481
174821) ACPI CA Core Subsystem Version 20020517:
17483
17484Implemented a workaround to an BIOS bug discovered on the HP
17485OmniBook where the FADT revision number and the table size are
17486inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size).  The new
17487behavior is to fallback to using only the ACPI 1.0 fields of the
17488FADT if the table is too small to be a ACPI 2.0 table as claimed
17489by the revision number.  Although this is a BIOS bug, this is a
17490case where the workaround is simple enough and with no side
17491effects, so it seemed prudent to add it.  A warning message is
17492issued, however.
17493
17494Implemented minimum size checks for the fixed-length ACPI tables -
17495- the FADT and FACS, as well as consistency checks between the
17496revision number and the table size.
17497
17498Fixed a reported problem in the table override support where the
17499new table pointer was incorrectly treated as a physical address
17500instead of a logical address.
17501
17502Eliminated the use of the AE_AML_ERROR exception and replaced it
17503with more descriptive codes.
17504
17505Fixed a problem where an exception would occur if an ASL Field was
17506defined with no named Field Units underneath it (used by some
17507index fields).
17508
17509Code and Data Size: Current core subsystem library sizes are shown
17510below.  These are the code and data sizes for the acpica.lib
17511produced by the Microsoft Visual C++ 6.0 compiler, and these
17512values do not include any ACPI driver or OSPM code.  The debug
17513version of the code includes the debug output trace mechanism and
17514has a larger code and data size.  Note that these values will vary
17515depending on the efficiency of the compiler and the compiler
17516options used during generation.
17517
17518  Previous Release
17519    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17520    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17521  Current Release:
17522    Non-Debug Version:  69.3K Code,   7.4K Data,   76.7K Total
17523    Debug Version:     143.8K Code,  58.8K Data,  202.6K Total
17524
17525
17526
175272) Linux
17528
17529Much work done on ACPI init (MADT and PCI IRQ routing support).
17530(Paul D. and Dominik Brodowski)
17531
17532Fix PCI IRQ-related panic on boot (Sam Revitch)
17533
17534Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
17535
17536Fix "MHz" typo (Dominik Brodowski)
17537
17538Fix RTC year 2000 issue (Dominik Brodowski)
17539
17540Preclude multiple button proc entries (Eric Brunet)
17541
17542Moved arch-specific code out of include/platform/aclinux.h
17543
175443) iASL Compiler Version X2044:
17545
17546Implemented error checking for the string used in the EISAID macro
17547(Usually used in the definition of the _HID object.)  The code now
17548strictly enforces the PnP format - exactly 7 characters, 3
17549uppercase letters and 4 hex digits.
17550
17551If a raw string is used in the definition of the _HID object
17552(instead of the EISAID macro), the string must contain all
17553alphanumeric characters (e.g., "*PNP0011" is not allowed because
17554of the asterisk.)
17555
17556Implemented checking for invalid use of ACPI reserved names for
17557most of the name creation operators (Name, Device, Event, Mutex,
17558OperationRegion, PowerResource, Processor, and ThermalZone.)
17559Previously, this check was only performed for control methods.
17560
17561Implemented an additional check on the Name operator to emit an
17562error if a reserved name that must be implemented in ASL as a
17563control method is used.  We know that a reserved name must be a
17564method if it is defined with input arguments.
17565
17566The warning emitted when a namespace object reference is not found
17567during the cross reference phase has been changed into an error.
17568The "External" directive should be used for names defined in other
17569modules.
17570
17571
175724) Tools and Utilities
17573
17574The 16-bit tools (adump16 and aexec16) have been regenerated and
17575tested.
17576
17577Fixed a problem with the output of both acpidump and adump16 where
17578the indentation of closing parentheses and brackets was not
17579
17580aligned properly with the parent block.
17581
17582
17583----------------------------------------
1758403 May 2002.  Summary of changes for this release.
17585
17586
175871) ACPI CA Core Subsystem Version 20020503:
17588
17589Added support a new OSL interface that allows the host operating
17590
17591system software to override the DSDT found in the firmware -
17592AcpiOsTableOverride.  With this interface, the OSL can examine the
17593version of the firmware DSDT and replace it with a different one
17594if desired.
17595
17596Added new external interfaces for accessing ACPI registers from
17597device drivers and other system software - AcpiGetRegister and
17598AcpiSetRegister.  This was simply an externalization of the
17599existing AcpiHwBitRegister interfaces.
17600
17601Fixed a regression introduced in the previous build where the
17602ASL/AML CreateField operator always returned an error,
17603"destination must be a NS Node".
17604
17605Extended the maximum time (before failure) to successfully enable
17606ACPI mode to 3 seconds.
17607
17608Code and Data Size: Current core subsystem library sizes are shown
17609below.  These are the code and data sizes for the acpica.lib
17610produced by the Microsoft Visual C++ 6.0 compiler, and these
17611values do not include any ACPI driver or OSPM code.  The debug
17612version of the code includes the debug output trace mechanism and
17613has a larger code and data size.  Note that these values will vary
17614depending on the efficiency of the compiler and the compiler
17615options used during generation.
17616
17617  Previous Release
17618    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17619    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17620  Current Release:
17621    Non-Debug Version:  68.8K Code,   7.1K Data,   75.9K Total
17622    Debug Version:     142.9K Code,  58.4K Data,  201.3K Total
17623
17624
176252) Linux
17626
17627Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17628free. While 3 out of 4 of our in-house systems work fine, the last
17629one still hangs when testing the LAPIC timer.
17630
17631Renamed many files in 2.5 kernel release to omit "acpi_" from the
17632name.
17633
17634Added warning on boot for Presario 711FR.
17635
17636Sleep improvements (Pavel Machek)
17637
17638ACPI can now be built without CONFIG_PCI enabled.
17639
17640IA64: Fixed memory map functions (JI Lee)
17641
17642
176433) iASL Compiler Version X2043:
17644
17645Added support to allow the compiler to be integrated into the MS
17646VC++ development environment for one-button compilation of single
17647files or entire projects -- with error-to-source-line mapping.
17648
17649Implemented support for compile-time constant folding for the
17650Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17651specification.  This allows the ASL writer to use expressions
17652instead of Integer/Buffer/String constants in terms that must
17653evaluate to constants at compile time and will also simplify the
17654emitted AML in any such sub-expressions that can be folded
17655(evaluated at compile-time.)  This increases the size of the
17656compiler significantly because a portion of the ACPI CA AML
17657interpreter is included within the compiler in order to pre-
17658evaluate constant expressions.
17659
17660
17661Fixed a problem with the "Unicode" ASL macro that caused the
17662compiler to fault.  (This macro is used in conjunction with the
17663_STR reserved name.)
17664
17665Implemented an AML opcode optimization to use the Zero, One, and
17666Ones opcodes where possible to further reduce the size of integer
17667constants and thus reduce the overall size of the generated AML
17668code.
17669
17670Implemented error checking for new reserved terms for ACPI version
176712.0A.
17672
17673Implemented the -qr option to display the current list of ACPI
17674reserved names known to the compiler.
17675
17676Implemented the -qc option to display the current list of ASL
17677operators that are allowed within constant expressions and can
17678therefore be folded at compile time if the operands are constants.
17679
17680
176814) Documentation
17682
17683Updated the Programmer's Reference for new interfaces, data types,
17684and memory allocation model options.
17685
17686Updated the iASL Compiler User Reference to apply new format and
17687add information about new features and options.
17688
17689----------------------------------------
1769019 April 2002.  Summary of changes for this release.
17691
176921) ACPI CA Core Subsystem Version 20020419:
17693
17694The source code base for the Core Subsystem has been completely
17695cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17696versions.  The Lint option files used are included in the
17697/acpi/generate/lint directory.
17698
17699Implemented enhanced status/error checking across the entire
17700Hardware manager subsystem.  Any hardware errors (reported from
17701the OSL) are now bubbled up and will abort a running control
17702method.
17703
17704
17705Fixed a problem where the per-ACPI-table integer width (32 or 64)
17706was stored only with control method nodes, causing a fault when
17707non-control method code was executed during table loading.  The
17708solution implemented uses a global variable to indicate table
17709width across the entire ACPI subsystem.  Therefore, ACPI CA does
17710not support mixed integer widths across different ACPI tables
17711(DSDT, SSDT).
17712
17713Fixed a problem where NULL extended fields (X fields) in an ACPI
177142.0 ACPI FADT caused the table load to fail.  Although the
17715existing ACPI specification is a bit fuzzy on this topic, the new
17716behavior is to fall back on a ACPI 1.0 field if the corresponding
17717ACPI 2.0 X field is zero (even though the table revision indicates
17718a full ACPI 2.0 table.)  The ACPI specification will be updated to
17719clarify this issue.
17720
17721Fixed a problem with the SystemMemory operation region handler
17722where memory was always accessed byte-wise even if the AML-
17723specified access width was larger than a byte.  This caused
17724problems on systems with memory-mapped I/O.  Memory is now
17725accessed with the width specified.  On systems that do not support
17726non-aligned transfers, a check is made to guarantee proper address
17727alignment before proceeding in order to avoid an AML-caused
17728alignment fault within the kernel.
17729
17730
17731Fixed a problem with the ExtendedIrq resource where only one byte
17732of the 4-byte Irq field was extracted.
17733
17734Fixed the AcpiExDigitsNeeded() procedure to support _UID.  This
17735function was out of date and required a rewrite.
17736
17737Code and Data Size: Current core subsystem library sizes are shown
17738below.  These are the code and data sizes for the acpica.lib
17739produced by the Microsoft Visual C++ 6.0 compiler, and these
17740values do not include any ACPI driver or OSPM code.  The debug
17741version of the code includes the debug output trace mechanism and
17742has a larger code and data size.  Note that these values will vary
17743depending on the efficiency of the compiler and the compiler
17744options used during generation.
17745
17746  Previous Release
17747    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17748    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17749  Current Release:
17750    Non-Debug Version:  68.5K Code,   7.0K Data,   75.5K Total
17751    Debug Version:     142.4K Code,  58.3K Data,  200.7K Total
17752
17753
177542) Linux
17755
17756PCI IRQ routing fixes (Dominik Brodowski)
17757
17758
177593) iASL Compiler Version X2042:
17760
17761Implemented an additional compile-time error check for a field
17762unit whose size + minimum access width would cause a run-time
17763access beyond the end-of-region.  Previously, only the field size
17764itself was checked.
17765
17766The Core subsystem and iASL compiler now share a common parse
17767object in preparation for compile-time evaluation of the type
177683/4/5 ASL operators.
17769
17770
17771----------------------------------------
17772Summary of changes for this release: 03_29_02
17773
177741) ACPI CA Core Subsystem Version 20020329:
17775
17776Implemented support for late evaluation of TermArg operands to
17777Buffer and Package objects.  This allows complex expressions to be
17778used in the declarations of these object types.
17779
17780Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
177811.0, if the field was larger than 32 bits, it was returned as a
17782buffer - otherwise it was returned as an integer.  In ACPI 2.0,
17783the field is returned as a buffer only if the field is larger than
1778464 bits.  The TableRevision is now considered when making this
17785conversion to avoid incompatibility with existing ASL code.
17786
17787Implemented logical addressing for AcpiOsGetRootPointer.  This
17788allows an RSDP with either a logical or physical address.  With
17789this support, the host OS can now override all ACPI tables with
17790one logical RSDP.  Includes implementation of  "typed" pointer
17791support to allow a common data type for both physical and logical
17792pointers internally.  This required a change to the
17793AcpiOsGetRootPointer interface.
17794
17795Implemented the use of ACPI 2.0 Generic Address Structures for all
17796GPE, Fixed Event, and PM Timer I/O.  This allows the use of memory
17797mapped I/O for these ACPI features.
17798
17799Initialization now ignores not only non-required tables (All
17800tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17801not validate the table headers of unrecognized tables.
17802
17803Fixed a problem where a notify handler could only be
17804installed/removed on an object of type Device.  All "notify"
17805
17806objects are now supported -- Devices, Processor, Power, and
17807Thermal.
17808
17809Removed most verbosity from the ACPI_DB_INFO debug level.  Only
17810critical information is returned when this debug level is enabled.
17811
17812Code and Data Size: Current core subsystem library sizes are shown
17813below.  These are the code and data sizes for the acpica.lib
17814produced by the Microsoft Visual C++ 6.0 compiler, and these
17815values do not include any ACPI driver or OSPM code.  The debug
17816version of the code includes the debug output trace mechanism and
17817has a larger code and data size.  Note that these values will vary
17818depending on the efficiency of the compiler and the compiler
17819options used during generation.
17820
17821  Previous Release
17822    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
17823    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
17824  Current Release:
17825    Non-Debug Version:  66.6K Code,   6.5K Data,   73.1K Total
17826    Debug Version:     139.8K Code,  57.4K Data,  197.2K Total
17827
17828
178292) Linux:
17830
17831The processor driver (acpi_processor.c) now fully supports ACPI
178322.0-based processor performance control (e.g. Intel(R)
17833SpeedStep(TM) technology) Note that older laptops that only have
17834the Intel "applet" interface are not supported through this.  The
17835'limit' and 'performance' interface (/proc) are fully functional.
17836[Note that basic policy for controlling performance state
17837transitions will be included in the next version of ospmd.]  The
17838idle handler was modified to more aggressively use C2, and PIIX4
17839errata handling underwent a complete overhaul (big thanks to
17840Dominik Brodowski).
17841
17842Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17843based devices in the ACPI namespace are now dynamically bound
17844(associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17845This allows, among other things, ACPI to resolve bus numbers for
17846subordinate PCI bridges.
17847
17848Enhanced PCI IRQ routing to get the proper bus number for _PRT
17849entries defined underneath PCI bridges.
17850
17851Added IBM 600E to bad bios list due to invalid _ADR value for
17852PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17853
17854In the process of adding full MADT support (e.g. IOAPIC) for IA32
17855(acpi.c, mpparse.c) -- stay tuned.
17856
17857Added back visual differentiation between fixed-feature and
17858control-method buttons in dmesg.  Buttons are also subtyped (e.g.
17859button/power/PWRF) to simplify button identification.
17860
17861We no longer use -Wno-unused when compiling debug. Please ignore
17862any "_THIS_MODULE defined but not used" messages.
17863
17864Can now shut down the system using "magic sysrq" key.
17865
17866
178673) iASL Compiler version 2041:
17868
17869Fixed a problem where conversion errors for hex/octal/decimal
17870constants were not reported.
17871
17872Implemented a fix for the General Register template Address field.
17873This field was 8 bits when it should be 64.
17874
17875Fixed a problem where errors/warnings were no longer being emitted
17876within the listing output file.
17877
17878Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17879exactly 4 characters, alphanumeric only.
17880
17881
17882
17883
17884----------------------------------------
17885Summary of changes for this release: 03_08_02
17886
17887
178881) ACPI CA Core Subsystem Version 20020308:
17889
17890Fixed a problem with AML Fields where the use of the "AccessAny"
17891keyword could cause an interpreter error due to attempting to read
17892or write beyond the end of the parent Operation Region.
17893
17894Fixed a problem in the SystemMemory Operation Region handler where
17895an attempt was made to map memory beyond the end of the region.
17896This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17897errors on some Linux systems.
17898
17899Fixed a problem where the interpreter/namespace "search to root"
17900algorithm was not functioning for some object types.  Relaxed the
17901internal restriction on the search to allow upsearches for all
17902external object types as well as most internal types.
17903
17904
179052) Linux:
17906
17907We now use safe_halt() macro versus individual calls to sti | hlt.
17908
17909Writing to the processor limit interface should now work. "echo 1"
17910will increase the limit, 2 will decrease, and 0 will reset to the
17911
17912default.
17913
17914
179153) ASL compiler:
17916
17917Fixed segfault on Linux version.
17918
17919
17920----------------------------------------
17921Summary of changes for this release: 02_25_02
17922
179231) ACPI CA Core Subsystem:
17924
17925
17926Fixed a problem where the GPE bit masks were not initialized
17927properly, causing erratic GPE behavior.
17928
17929Implemented limited support for multiple calling conventions.  The
17930code can be generated with either the VPL (variable parameter
17931list, or "C") convention, or the FPL (fixed parameter list, or
17932"Pascal") convention.  The core subsystem is about 3.4% smaller
17933when generated with FPL.
17934
17935
179362) Linux
17937
17938Re-add some /proc/acpi/event functionality that was lost during
17939the rewrite
17940
17941Resolved issue with /proc events for fixed-feature buttons showing
17942up as the system device.
17943
17944Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17945
17946Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17947
17948Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17949
17950Fixed limit interface & usage to fix bugs with passive cooling
17951hysterisis.
17952
17953Restructured PRT support.
17954
17955
17956----------------------------------------
17957Summary of changes for this label: 02_14_02
17958
17959
179601) ACPI CA Core Subsystem:
17961
17962Implemented support in AcpiLoadTable to allow loading of FACS and
17963FADT tables.
17964
17965Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17966been removed.  All 64-bit platforms should be migrated to the ACPI
179672.0 tables.  The actbl71.h header has been removed from the source
17968tree.
17969
17970All C macros defined within the subsystem have been prefixed with
17971"ACPI_" to avoid collision with other system include files.
17972
17973Removed the return value for the two AcpiOsPrint interfaces, since
17974it is never used and causes lint warnings for ignoring the return
17975value.
17976
17977Added error checking to all internal mutex acquire and release
17978calls.  Although a failure from one of these interfaces is
17979probably a fatal system error, these checks will cause the
17980immediate abort of the currently executing method or interface.
17981
17982Fixed a problem where the AcpiSetCurrentResources interface could
17983fault.  This was a side effect of the deployment of the new memory
17984allocation model.
17985
17986Fixed a couple of problems with the Global Lock support introduced
17987in the last major build.  The "common" (1.0/2.0) internal FACS was
17988being overwritten with the FACS signature and clobbering the
17989Global Lock pointer.  Also, the actual firmware FACS was being
17990unmapped after construction of the "common" FACS, preventing
17991access to the actual Global Lock field within it.  The "common"
17992internal FACS is no longer installed as an actual ACPI table; it
17993is used simply as a global.
17994
17995Code and Data Size: Current core subsystem library sizes are shown
17996below.  These are the code and data sizes for the acpica.lib
17997produced by the Microsoft Visual C++ 6.0 compiler, and these
17998values do not include any ACPI driver or OSPM code.  The debug
17999version of the code includes the debug output trace mechanism and
18000has a larger code and data size.  Note that these values will vary
18001depending on the efficiency of the compiler and the compiler
18002options used during generation.
18003
18004  Previous Release (02_07_01)
18005    Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
18006    Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
18007  Current Release:
18008    Non-Debug Version:  65.4K Code,   6.2K Data,   71.6K Total
18009    Debug Version:     138.0K Code,  56.6K Data,  194.6K Total
18010
18011
180122) Linux
18013
18014Updated Linux-specific code for core macro and OSL interface
18015changes described above.
18016
18017Improved /proc/acpi/event. It now can be opened only once and has
18018proper poll functionality.
18019
18020Fixed and restructured power management (acpi_bus).
18021
18022Only create /proc "view by type" when devices of that class exist.
18023
18024Fixed "charging/discharging" bug (and others) in acpi_battery.
18025
18026Improved thermal zone code.
18027
18028
180293) ASL Compiler, version X2039:
18030
18031
18032Implemented the new compiler restriction on ASL String hex/octal
18033escapes to non-null, ASCII values.  An error results if an invalid
18034value is used.  (This will require an ACPI 2.0 specification
18035change.)
18036
18037AML object labels that are output to the optional C and ASM source
18038are now prefixed with both the ACPI table signature and table ID
18039to help guarantee uniqueness within a large BIOS project.
18040
18041
18042----------------------------------------
18043Summary of changes for this label: 02_01_02
18044
180451) ACPI CA Core Subsystem:
18046
18047ACPI 2.0 support is complete in the entire Core Subsystem and the
18048ASL compiler. All new ACPI 2.0 operators are implemented and all
18049other changes for ACPI 2.0 support are complete.  With
18050simultaneous code and data optimizations throughout the subsystem,
18051ACPI 2.0 support has been implemented with almost no additional
18052cost in terms of code and data size.
18053
18054Implemented a new mechanism for allocation of return buffers.  If
18055the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
18056be allocated on behalf of the caller.  Consolidated all return
18057buffer validation and allocation to a common procedure.  Return
18058buffers will be allocated via the primary OSL allocation interface
18059since it appears that a separate pool is not needed by most users.
18060If a separate pool is required for these buffers, the caller can
18061still use the original mechanism and pre-allocate the buffer(s).
18062
18063Implemented support for string operands within the DerefOf
18064operator.
18065
18066Restructured the Hardware and Event managers to be table driven,
18067simplifying the source code and reducing the amount of generated
18068code.
18069
18070Split the common read/write low-level ACPI register bitfield
18071procedure into a separate read and write, simplifying the code
18072considerably.
18073
18074Obsoleted the AcpiOsCallocate OSL interface.  This interface was
18075used only a handful of times and didn't have enough critical mass
18076for a separate interface.  Replaced with a common calloc procedure
18077in the core.
18078
18079Fixed a reported problem with the GPE number mapping mechanism
18080that allows GPE1 numbers to be non-contiguous with GPE0.
18081Reorganized the GPE information and shrunk a large array that was
18082originally large enough to hold info for all possible GPEs (256)
18083to simply large enough to hold all GPEs up to the largest GPE
18084number on the machine.
18085
18086Fixed a reported problem with resource structure alignment on 64-
18087bit platforms.
18088
18089Changed the AcpiEnableEvent and AcpiDisableEvent external
18090interfaces to not require any flags for the common case of
18091enabling/disabling a GPE.
18092
18093Implemented support to allow a "Notify" on a Processor object.
18094
18095Most TBDs in comments within the source code have been resolved
18096and eliminated.
18097
18098
18099Fixed a problem in the interpreter where a standalone parent
18100prefix (^) was not handled correctly in the interpreter and
18101debugger.
18102
18103Removed obsolete and unnecessary GPE save/restore code.
18104
18105Implemented Field support in the ASL Load operator.  This allows a
18106table to be loaded from a named field, in addition to loading a
18107table directly from an Operation Region.
18108
18109Implemented timeout and handle support in the external Global Lock
18110interfaces.
18111
18112Fixed a problem in the AcpiDump utility where pathnames were no
18113longer being generated correctly during the dump of named objects.
18114
18115Modified the AML debugger to give a full display of if/while
18116predicates instead of just one AML opcode at a time.  (The
18117predicate can have several nested ASL statements.)  The old method
18118was confusing during single stepping.
18119
18120Code and Data Size: Current core subsystem library sizes are shown
18121below. These are the code and data sizes for the acpica.lib
18122produced by the Microsoft Visual C++ 6.0 compiler, and these
18123values do not include any ACPI driver or OSPM code.  The debug
18124version of the code includes the debug output trace mechanism and
18125has a larger code and data size.  Note that these values will vary
18126depending on the efficiency of the compiler and the compiler
18127options used during generation.
18128
18129  Previous Release (12_18_01)
18130     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
18131     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
18132   Current Release:
18133     Non-Debug Version:  65.2K Code,   6.2K Data,   71.4K Total
18134     Debug Version:     136.9K Code,  56.4K Data,  193.3K Total
18135
181362) Linux
18137
18138 Implemented fix for PIIX reverse throttling errata (Processor
18139driver)
18140
18141Added new Limit interface (Processor and Thermal drivers)
18142
18143New thermal policy (Thermal driver)
18144
18145Many updates to /proc
18146
18147Battery "low" event support (Battery driver)
18148
18149Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
18150
18151IA32 - IA64 initialization unification, no longer experimental
18152
18153Menuconfig options redesigned
18154
181553) ASL Compiler, version X2037:
18156
18157Implemented several new output features to simplify integration of
18158AML code into  firmware: 1) Output the AML in C source code with
18159labels for each named ASL object.  The    original ASL source code
18160is interleaved as C comments. 2) Output the AML in ASM source code
18161with labels and interleaved ASL    source. 3) Output the AML in
18162raw hex table form, in either C or ASM.
18163
18164Implemented support for optional string parameters to the
18165LoadTable operator.
18166
18167Completed support for embedded escape sequences within string
18168literals.  The compiler now supports all single character escapes
18169as well as the Octal and Hex escapes.  Note: the insertion of a
18170null byte into a string literal (via the hex/octal escape) causes
18171the string to be immediately terminated.  A warning is issued.
18172
18173Fixed a problem where incorrect AML was generated for the case
18174where an ASL namepath consists of a single parent prefix (
18175
18176) with no trailing name segments.
18177
18178The compiler has been successfully generated with a 64-bit C
18179compiler.
18180
18181
18182
18183
18184----------------------------------------
18185Summary of changes for this label: 12_18_01
18186
181871) Linux
18188
18189Enhanced blacklist with reason and severity fields. Any table's
18190signature may now be used to identify a blacklisted system.
18191
18192Call _PIC control method to inform the firmware which interrupt
18193model the OS is using. Turn on any disabled link devices.
18194
18195Cleaned up busmgr /proc error handling (Andreas Dilger)
18196
18197 2) ACPI CA Core Subsystem:
18198
18199Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
18200while loop)
18201
18202Completed implementation of the ACPI 2.0 "Continue",
18203"ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
18204operators.  All new ACPI 2.0 operators are now implemented in both
18205the ASL compiler and the AML interpreter.  The only remaining ACPI
182062.0 task is support for the String data type in the DerefOf
18207operator.  Fixed a problem with AcquireMutex where the status code
18208was lost if the caller had to actually wait for the mutex.
18209
18210Increased the maximum ASL Field size from 64K bits to 4G bits.
18211
18212Completed implementation of the external Global Lock interfaces --
18213AcpiAcquireGlobalLock and AcpiReleaseGlobalLock.  The Timeout and
18214Handler parameters were added.
18215
18216Completed another pass at removing warnings and issues when
18217compiling with 64-bit compilers.  The code now compiles cleanly
18218with the Intel 64-bit C/C++ compiler.  Most notably, the pointer
18219add and subtract (diff) macros have changed considerably.
18220
18221
18222Created and deployed a new ACPI_SIZE type that is 64-bits wide on
1822364-bit platforms, 32-bits on all others.  This type is used
18224wherever memory allocation and/or the C sizeof() operator is used,
18225and affects the OSL memory allocation interfaces AcpiOsAllocate
18226and AcpiOsCallocate.
18227
18228Implemented sticky user breakpoints in the AML debugger.
18229
18230Code and Data Size: Current core subsystem library sizes are shown
18231below. These are the code and data sizes for the acpica.lib
18232produced by the Microsoft Visual C++ 6.0 compiler, and these
18233values do not include any ACPI driver or OSPM code.  The debug
18234version of the code includes the debug output trace mechanism and
18235has a larger code and data size. Note that these values will vary
18236depending on the efficiency of the compiler and the compiler
18237options used during generation.
18238
18239  Previous Release (12_05_01)
18240     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
18241     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
18242   Current Release:
18243     Non-Debug Version:  66.1K Code,   5.5K Data,   71.6K Total
18244     Debug Version:     138.3K Code,  55.9K Data,  194.2K Total
18245
18246 3) ASL Compiler, version X2034:
18247
18248Now checks for (and generates an error if detected) the use of a
18249Break or Continue statement without an enclosing While statement.
18250
18251
18252Successfully generated the compiler with the Intel 64-bit C
18253compiler.
18254
18255 ----------------------------------------
18256Summary of changes for this label: 12_05_01
18257
18258 1) ACPI CA Core Subsystem:
18259
18260The ACPI 2.0 CopyObject operator is fully implemented.  This
18261operator creates a new copy of an object (and is also used to
18262bypass the "implicit conversion" mechanism of the Store operator.)
18263
18264The ACPI 2.0 semantics for the SizeOf operator are fully
18265implemented.  The change is that performing a SizeOf on a
18266reference object causes an automatic dereference of the object to
18267the actual value before the size is evaluated. This behavior was
18268undefined in ACPI 1.0.
18269
18270The ACPI 2.0 semantics for the Extended IRQ resource descriptor
18271have been implemented.  The interrupt polarity and mode are now
18272independently set.
18273
18274Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
18275appearing in Package objects were not properly converted to
18276integers when the internal Package was converted to an external
18277object (via the AcpiEvaluateObject interface.)
18278
18279Fixed a problem with the namespace object deletion mechanism for
18280objects created by control methods.  There were two parts to this
18281problem: 1) Objects created during the initialization phase method
18282parse were not being deleted, and 2) The object owner ID mechanism
18283to track objects was broken.
18284
18285Fixed a problem where the use of the ASL Scope operator within a
18286control method would result in an invalid opcode exception.
18287
18288Fixed a problem introduced in the previous label where the buffer
18289length required for the _PRT structure was not being returned
18290correctly.
18291
18292Code and Data Size: Current core subsystem library sizes are shown
18293below. These are the code and data sizes for the acpica.lib
18294produced by the Microsoft Visual C++ 6.0 compiler, and these
18295values do not include any ACPI driver or OSPM code.  The debug
18296version of the code includes the debug output trace mechanism and
18297has a larger code and data size.  Note that these values will vary
18298depending on the efficiency of the compiler and the compiler
18299options used during generation.
18300
18301  Previous Release (11_20_01)
18302     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
18303     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
18304
18305  Current Release:
18306     Non-Debug Version:  64.7K Code,   5.3K Data,   70.0K Total
18307     Debug Version:     136.2K Code,  55.6K Data,  191.8K Total
18308
18309 2) Linux:
18310
18311Updated all files to apply cleanly against 2.4.16.
18312
18313Added basic PCI Interrupt Routing Table (PRT) support for IA32
18314(acpi_pci.c), and unified the PRT code for IA32 and IA64.  This
18315version supports both static and dynamic PRT entries, but dynamic
18316entries are treated as if they were static (not yet
18317reconfigurable).  Architecture- specific code to use this data is
18318absent on IA32 but should be available shortly.
18319
18320Changed the initialization sequence to start the ACPI interpreter
18321(acpi_init) prior to initialization of the PCI driver (pci_init)
18322in init/main.c.  This ordering is required to support PRT and
18323facilitate other (future) enhancement.  A side effect is that the
18324ACPI bus driver and certain device drivers can no longer be loaded
18325as modules.
18326
18327Modified the 'make menuconfig' options to allow PCI Interrupt
18328Routing support to be included without the ACPI Bus and other
18329device drivers.
18330
18331 3) ASL Compiler, version X2033:
18332
18333Fixed some issues with the use of the new CopyObject and
18334DataTableRegion operators.  Both are fully functional.
18335
18336 ----------------------------------------
18337Summary of changes for this label: 11_20_01
18338
18339 20 November 2001.  Summary of changes for this release.
18340
18341 1) ACPI CA Core Subsystem:
18342
18343Updated Index support to match ACPI 2.0 semantics.  Storing a
18344Integer, String, or Buffer to an Index of a Buffer will store only
18345the least-significant byte of the source to the Indexed buffer
18346byte.  Multiple writes are not performed.
18347
18348Fixed a problem where the access type used in an AccessAs ASL
18349operator was not recorded correctly into the field object.
18350
18351Fixed a problem where ASL Event objects were created in a
18352signalled state. Events are now created in an unsignalled state.
18353
18354The internal object cache is now purged after table loading and
18355initialization to reduce the use of dynamic kernel memory -- on
18356the assumption that object use is greatest during the parse phase
18357of the entire table (versus the run-time use of individual control
18358methods.)
18359
18360ACPI 2.0 variable-length packages are now fully operational.
18361
18362Code and Data Size: Code and Data optimizations have permitted new
18363feature development with an actual reduction in the library size.
18364Current core subsystem library sizes are shown below.  These are
18365the code and data sizes for the acpica.lib produced by the
18366Microsoft Visual C++ 6.0 compiler, and these values do not include
18367any ACPI driver or OSPM code.  The debug version of the code
18368includes the debug output trace mechanism and has a larger code
18369and data size.  Note that these values will vary depending on the
18370efficiency of the compiler and the compiler options used during
18371generation.
18372
18373  Previous Release (11_09_01):
18374     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18375     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18376
18377  Current Release:
18378     Non-Debug Version:  64.1K Code,   5.3K Data,   69.4K Total
18379     Debug Version:     135.1K Code,  55.4K Data,  190.5K Total
18380
18381 2) Linux:
18382
18383Enhanced the ACPI boot-time initialization code to allow the use
18384of Local APIC tables for processor enumeration on IA-32, and to
18385pave the way for a fully MPS-free boot (on SMP systems) in the
18386near future.  This functionality replaces
18387arch/i386/kernel/acpitables.c, which was introduced in an earlier
183882.4.15-preX release.  To enable this feature you must add
18389"acpi_boot=on" to the kernel command line -- see the help entry
18390for CONFIG_ACPI_BOOT for more information.  An IA-64 release is in
18391the works...
18392
18393Restructured the configuration options to allow boot-time table
18394parsing support without inclusion of the ACPI Interpreter (and
18395other) code.
18396
18397NOTE: This release does not include fixes for the reported events,
18398power-down, and thermal passive cooling issues (coming soon).
18399
18400 3) ASL Compiler:
18401
18402Added additional typechecking for Fields within restricted access
18403Operation Regions.  All fields within EC and CMOS regions must be
18404declared with ByteAcc. All fields within SMBus regions must be
18405declared with the BufferAcc access type.
18406
18407Fixed a problem where the listing file output of control methods
18408no longer interleaved the actual AML code with the ASL source
18409code.
18410
18411
18412
18413
18414----------------------------------------
18415Summary of changes for this label: 11_09_01
18416
184171) ACPI CA Core Subsystem:
18418
18419Implemented ACPI 2.0-defined support for writes to fields with a
18420Buffer, String, or Integer source operand that is smaller than the
18421target field. In these cases, the source operand is zero-extended
18422to fill the target field.
18423
18424Fixed a problem where a Field starting bit offset (within the
18425parent operation region) was calculated incorrectly if the
18426
18427alignment of the field differed from the access width.  This
18428affected CreateWordField, CreateDwordField, CreateQwordField, and
18429possibly other fields that use the "AccessAny" keyword.
18430
18431Fixed a problem introduced in the 11_02_01 release where indirect
18432stores through method arguments did not operate correctly.
18433
184342) Linux:
18435
18436Implemented boot-time ACPI table parsing support
18437(CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems.  This code
18438facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
18439legacy BIOS interfaces (e.g. MPS) for the configuration of system
18440processors, memory, and interrupts during setup_arch().  Note that
18441this patch does not include the required architecture-specific
18442changes required to apply this information -- subsequent patches
18443will be posted for both IA32 and IA64 to achieve this.
18444
18445Added low-level sleep support for IA32 platforms, courtesy of Pat
18446Mochel. This allows IA32 systems to transition to/from various
18447sleeping states (e.g. S1, S3), although the lack of a centralized
18448driver model and power-manageable drivers will prevent its
18449(successful) use on most systems.
18450
18451Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
18452submenu, unified IA32 and IA64 options, added new "Boot using ACPI
18453tables" option, etc.
18454
18455Increased the default timeout for the EC driver from 1ms to 10ms
18456(1000 cycles of 10us) to try to address AE_TIME errors during EC
18457transactions.
18458
18459 ----------------------------------------
18460Summary of changes for this label: 11_02_01
18461
184621) ACPI CA Core Subsystem:
18463
18464ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
18465(QWordAcc keyword). All ACPI 2.0 64-bit support is now
18466implemented.
18467
18468OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
18469changes to support ACPI 2.0 Qword field access.  Read/Write
18470PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
18471accept an ACPI_INTEGER (64 bits) as the value parameter.  Also,
18472the value parameter for the address space handler interface is now
18473an ACPI_INTEGER.  OSL implementations of these interfaces must now
18474handle the case where the Width parameter is 64.
18475
18476Index Fields: Fixed a problem where unaligned bit assembly and
18477disassembly for IndexFields was not supported correctly.
18478
18479Index and Bank Fields:  Nested Index and Bank Fields are now
18480supported. During field access, a check is performed to ensure
18481that the value written to an Index or Bank register is not out of
18482the range of the register.  The Index (or Bank) register is
18483written before each access to the field data. Future support will
18484include allowing individual IndexFields to be wider than the
18485DataRegister width.
18486
18487Fields: Fixed a problem where the AML interpreter was incorrectly
18488attempting to write beyond the end of a Field/OpRegion.  This was
18489a boundary case that occurred when a DWORD field was written to a
18490BYTE access OpRegion, forcing multiple writes and causing the
18491interpreter to write one datum too many.
18492
18493Fields: Fixed a problem with Field/OpRegion access where the
18494starting bit address of a field was incorrectly calculated if the
18495current access type was wider than a byte (WordAcc, DwordAcc, or
18496QwordAcc).
18497
18498Fields: Fixed a problem where forward references to individual
18499FieldUnits (individual Field names within a Field definition) were
18500not resolved during the AML table load.
18501
18502Fields: Fixed a problem where forward references from a Field
18503definition to the parent Operation Region definition were not
18504resolved during the AML table load.
18505
18506Fields: Duplicate FieldUnit names within a scope are now detected
18507during AML table load.
18508
18509Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
18510returned an incorrect name for the root node.
18511
18512Code and Data Size: Code and Data optimizations have permitted new
18513feature development with an actual reduction in the library size.
18514Current core subsystem library sizes are shown below.  These are
18515the code and data sizes for the acpica.lib produced by the
18516Microsoft Visual C++ 6.0 compiler, and these values do not include
18517any ACPI driver or OSPM code.  The debug version of the code
18518includes the debug output trace mechanism and has a larger code
18519and data size.  Note that these values will vary depending on the
18520efficiency of the compiler and the compiler options used during
18521generation.
18522
18523  Previous Release (10_18_01):
18524     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18525     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18526
18527  Current Release:
18528     Non-Debug Version:  63.7K Code,   5.2K Data,   68.9K Total
18529     Debug Version:     134.5K Code,  55.4K Data,  189.9K Total
18530
18531 2) Linux:
18532
18533Improved /proc processor output (Pavel Machek) Re-added
18534MODULE_LICENSE("GPL") to all modules.
18535
18536 3) ASL Compiler version X2030:
18537
18538Duplicate FieldUnit names within a scope are now detected and
18539flagged as errors.
18540
18541 4) Documentation:
18542
18543Programmer Reference updated to reflect OSL and address space
18544handler interface changes described above.
18545
18546----------------------------------------
18547Summary of changes for this label: 10_18_01
18548
18549ACPI CA Core Subsystem:
18550
18551Fixed a problem with the internal object reference count mechanism
18552that occasionally caused premature object deletion. This resolves
18553all of the outstanding problem reports where an object is deleted
18554in the middle of an interpreter evaluation.  Although this problem
18555only showed up in rather obscure cases, the solution to the
18556problem involved an adjustment of all reference counts involving
18557objects attached to namespace nodes.
18558
18559Fixed a problem with Field support in the interpreter where
18560writing to an aligned field whose length is an exact multiple (2
18561or greater) of the field access granularity would cause an attempt
18562to write beyond the end of the field.
18563
18564The top level AML opcode execution functions within the
18565interpreter have been renamed with a more meaningful and
18566consistent naming convention.  The modules exmonad.c and
18567exdyadic.c were eliminated.  New modules are exoparg1.c,
18568exoparg2.c, exoparg3.c, and exoparg6.c.
18569
18570Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
18571
18572Fixed a problem where the AML debugger was causing some internal
18573objects to not be deleted during subsystem termination.
18574
18575Fixed a problem with the external AcpiEvaluateObject interface
18576where the subsystem would fault if the named object to be
18577evaluated referred to a constant such as Zero, Ones, etc.
18578
18579Fixed a problem with IndexFields and BankFields where the
18580subsystem would fault if the index, data, or bank registers were
18581not defined in the same scope as the field itself.
18582
18583Added printf format string checking for compilers that support
18584this feature.  Corrected more than 50 instances of issues with
18585format specifiers within invocations of ACPI_DEBUG_PRINT
18586throughout the core subsystem code.
18587
18588The ASL "Revision" operator now returns the ACPI support level
18589implemented in the core - the value "2" since the ACPI 2.0 support
18590is more than 50% implemented.
18591
18592Enhanced the output of the AML debugger "dump namespace" command
18593to output in a more human-readable form.
18594
18595Current core subsystem library code sizes are shown below.  These
18596
18597are the code and data sizes for the acpica.lib produced by the
18598Microsoft Visual C++ 6.0 compiler, and these values do not include
18599any ACPI driver or OSPM code.  The debug version of the code
18600includes the full debug trace mechanism -- leading to a much
18601
18602larger code and data size.  Note that these values will vary
18603depending on the efficiency of the compiler and the compiler
18604options used during generation.
18605
18606     Previous Label (09_20_01):
18607     Non-Debug Version:    65K Code,     5K Data,     70K Total
18608     Debug Version:       138K Code,    58K Data,    196K Total
18609
18610     This Label:
18611
18612     Non-Debug Version:  63.9K Code,   5.1K Data,   69.0K Total
18613     Debug Version:     136.7K Code,  57.4K Data,  194.2K Total
18614
18615Linux:
18616
18617Implemented a "Bad BIOS Blacklist" to track machines that have
18618known ASL/AML problems.
18619
18620Enhanced the /proc interface for the thermal zone driver and added
18621support for _HOT (the critical suspend trip point).  The 'info'
18622file now includes threshold/policy information, and allows setting
18623of _SCP (cooling preference) and _TZP (polling frequency) values
18624to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18625frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18626preference to the passive/quiet mode (if supported by the ASL).
18627
18628Implemented a workaround for a gcc bug that resuted in an OOPs
18629when loading the control method battery driver.
18630
18631 ----------------------------------------
18632Summary of changes for this label: 09_20_01
18633
18634 ACPI CA Core Subsystem:
18635
18636The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18637modified to allow individual GPE levels to be flagged as wake-
18638enabled (i.e., these GPEs are to remain enabled when the platform
18639sleeps.)
18640
18641The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18642support wake-enabled GPEs.  This means that upon entering the
18643sleep state, all GPEs that are not wake-enabled are disabled.
18644When leaving the sleep state, these GPEs are re-enabled.
18645
18646A local double-precision divide/modulo module has been added to
18647enhance portability to OS kernels where a 64-bit math library is
18648not available.  The new module is "utmath.c".
18649
18650Several optimizations have been made to reduce the use of CPU
18651stack.  Originally over 2K, the maximum stack usage is now below
186522K at 1860  bytes (1.82k)
18653
18654Fixed a problem with the AcpiGetFirmwareTable interface where the
18655root table pointer was not mapped into a logical address properly.
18656
18657Fixed a problem where a NULL pointer was being dereferenced in the
18658interpreter code for the ASL Notify operator.
18659
18660Fixed a problem where the use of the ASL Revision operator
18661returned an error. This operator now returns the current version
18662of the ACPI CA core subsystem.
18663
18664Fixed a problem where objects passed as control method parameters
18665to AcpiEvaluateObject were always deleted at method termination.
18666However, these objects may end up being stored into the namespace
18667by the called method.  The object reference count mechanism was
18668applied to these objects instead of a force delete.
18669
18670Fixed a problem where static strings or buffers (contained in the
18671AML code) that are declared as package elements within the ASL
18672code could cause a fault because the interpreter would attempt to
18673delete them.  These objects are now marked with the "static
18674object" flag to prevent any attempt to delete them.
18675
18676Implemented an interpreter optimization to use operands directly
18677from the state object instead of extracting the operands to local
18678variables.  This reduces stack use and code size, and improves
18679performance.
18680
18681The module exxface.c was eliminated as it was an unnecessary extra
18682layer of code.
18683
18684Current core subsystem library code sizes are shown below.  These
18685are the code and data sizes for the acpica.lib produced by the
18686Microsoft Visual C++ 6.0 compiler, and these values do not include
18687any ACPI driver or OSPM code.  The debug version of the code
18688includes the full debug trace mechanism -- leading to a much
18689larger code and data size.  Note that these values will vary
18690depending on the efficiency of the compiler and the compiler
18691options used during generation.
18692
18693  Non-Debug Version:  65K Code,   5K Data,   70K Total
18694(Previously 69K)   Debug Version:     138K Code,  58K Data,  196K
18695Total  (Previously 195K)
18696
18697Linux:
18698
18699Support for ACPI 2.0 64-bit integers has been added.   All ACPI
18700Integer objects are now 64 bits wide
18701
18702All Acpi data types and structures are now in lower case.  Only
18703Acpi macros are upper case for differentiation.
18704
18705 Documentation:
18706
18707Changes to the external interfaces as described above.
18708
18709 ----------------------------------------
18710Summary of changes for this label: 08_31_01
18711
18712 ACPI CA Core Subsystem:
18713
18714A bug with interpreter implementation of the ASL Divide operator
18715was found and fixed.  The implicit function return value (not the
18716explicit store operands) was returning the remainder instead of
18717the quotient.  This was a longstanding bug and it fixes several
18718known outstanding issues on various platforms.
18719
18720The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18721been further optimized for size.  There are 700 invocations of the
18722DEBUG_PRINT macro alone, so each optimization reduces the size of
18723the debug version of the subsystem significantly.
18724
18725A stack trace mechanism has been implemented.  The maximum stack
18726usage is about 2K on 32-bit platforms.  The debugger command "stat
18727stack" will display the current maximum stack usage.
18728
18729All public symbols and global variables within the subsystem are
18730now prefixed with the string "Acpi".  This keeps all of the
18731symbols grouped together in a kernel map, and avoids conflicts
18732with other kernel subsystems.
18733
18734Most of the internal fixed lookup tables have been moved into the
18735code segment via the const operator.
18736
18737Several enhancements have been made to the interpreter to both
18738reduce the code size and improve performance.
18739
18740Current core subsystem library code sizes are shown below.  These
18741are the code and data sizes for the acpica.lib produced by the
18742Microsoft Visual C++ 6.0 compiler, and these values do not include
18743any ACPI driver or OSPM code.  The debug version of the code
18744includes the full debug trace mechanism which contains over 700
18745invocations of the DEBUG_PRINT macro, 500 function entry macro
18746invocations, and over 900 function exit macro invocations --
18747leading to a much larger code and data size.  Note that these
18748values will vary depending on the efficiency of the compiler and
18749the compiler options used during generation.
18750
18751        Non-Debug Version:  64K Code,   5K Data,   69K Total
18752Debug Version:     137K Code,  58K Data,  195K Total
18753
18754 Linux:
18755
18756Implemented wbinvd() macro, pending a kernel-wide definition.
18757
18758Fixed /proc/acpi/event to handle poll() and short reads.
18759
18760 ASL Compiler, version X2026:
18761
18762Fixed a problem introduced in the previous label where the AML
18763
18764code emitted for package objects produced packages with zero
18765length.
18766
18767 ----------------------------------------
18768Summary of changes for this label: 08_16_01
18769
18770ACPI CA Core Subsystem:
18771
18772The following ACPI 2.0 ASL operators have been implemented in the
18773AML interpreter (These are already supported by the Intel ASL
18774compiler):  ToDecimalString, ToHexString, ToString, ToInteger, and
18775ToBuffer.  Support for 64-bit AML constants is implemented in the
18776AML parser, debugger, and disassembler.
18777
18778The internal memory tracking mechanism (leak detection code) has
18779been upgraded to reduce the memory overhead (a separate tracking
18780block is no longer allocated for each memory allocation), and now
18781supports all of the internal object caches.
18782
18783The data structures and code for the internal object caches have
18784been coelesced and optimized so that there is a single cache and
18785memory list data structure and a single group of functions that
18786implement generic cache management.  This has reduced the code
18787size in both the debug and release versions of the subsystem.
18788
18789The DEBUG_PRINT macro(s) have been optimized for size and replaced
18790by ACPI_DEBUG_PRINT.  The syntax for this macro is slightly
18791different, because it generates a single call to an internal
18792function.  This results in a savings of about 90 bytes per
18793invocation, resulting in an overall code and data savings of about
1879416% in the debug version of the subsystem.
18795
18796 Linux:
18797
18798Fixed C3 disk corruption problems and re-enabled C3 on supporting
18799machines.
18800
18801Integrated low-level sleep code by Patrick Mochel.
18802
18803Further tweaked source code Linuxization.
18804
18805Other minor fixes.
18806
18807 ASL Compiler:
18808
18809Support for ACPI 2.0 variable length packages is fixed/completed.
18810
18811Fixed a problem where the optional length parameter for the ACPI
188122.0 ToString operator.
18813
18814Fixed multiple extraneous error messages when a syntax error is
18815detected within the declaration line of a control method.
18816
18817 ----------------------------------------
18818Summary of changes for this label: 07_17_01
18819
18820ACPI CA Core Subsystem:
18821
18822Added a new interface named AcpiGetFirmwareTable to obtain any
18823ACPI table via the ACPI signature.  The interface can be called at
18824any time during kernel initialization, even before the kernel
18825virtual memory manager is initialized and paging is enabled.  This
18826allows kernel subsystems to obtain ACPI tables very early, even
18827before the ACPI CA subsystem is initialized.
18828
18829Fixed a problem where Fields defined with the AnyAcc attribute
18830could be resolved to the incorrect address under the following
18831conditions: 1) the field width is larger than 8 bits and 2) the
18832parent operation region is not defined on a DWORD boundary.
18833
18834Fixed a problem where the interpreter is not being locked during
18835namespace initialization (during execution of the _INI control
18836methods), causing an error when an attempt is made to release it
18837later.
18838
18839ACPI 2.0 support in the AML Interpreter has begun and will be
18840ongoing throughout the rest of this year.  In this label, The Mod
18841operator is implemented.
18842
18843Added a new data type to contain full PCI addresses named
18844ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18845and Function values.
18846
18847 Linux:
18848
18849Enhanced the Linux version of the source code to change most
18850capitalized ACPI type names to lowercase. For example, all
18851instances of ACPI_STATUS are changed to acpi_status.  This will
18852result in a large diff, but the change is strictly cosmetic and
18853aligns the CA code closer to the Linux coding standard.
18854
18855OSL Interfaces:
18856
18857The interfaces to the PCI configuration space have been changed to
18858add the PCI Segment number and to split the single 32-bit combined
18859DeviceFunction field into two 16-bit fields.  This was
18860accomplished by moving the four values that define an address in
18861PCI configuration space (segment, bus, device, and function) to
18862the new ACPI_PCI_ID structure.
18863
18864The changes to the PCI configuration space interfaces led to a
18865reexamination of the complete set of address space access
18866interfaces for PCI, I/O, and Memory.  The previously existing 18
18867interfaces have proven difficult to maintain (any small change
18868must be propagated across at least 6 interfaces) and do not easily
18869allow for future expansion to 64 bits if necessary.  Also, on some
18870systems, it would not be appropriate to demultiplex the access
18871width (8, 16, 32,or 64) before calling the OSL if the
18872corresponding native OS interfaces contain a similar access width
18873parameter.  For these reasons, the 18 address space interfaces
18874have been replaced by these 6 new ones:
18875
18876AcpiOsReadPciConfiguration
18877AcpiOsWritePciConfiguration
18878AcpiOsReadMemory
18879AcpiOsWriteMemory
18880AcpiOsReadPort
18881AcpiOsWritePort
18882
18883Added a new interface named AcpiOsGetRootPointer to allow the OSL
18884to perform the platform and/or OS-specific actions necessary to
18885obtain the ACPI RSDP table pointer.  On IA-32 platforms, this
18886interface will simply call down to the CA core to perform the low-
18887memory search for the table.  On IA-64, the RSDP is obtained from
18888EFI.  Migrating this interface to the OSL allows the CA core to
18889
18890remain OS and platform independent.
18891
18892Added a new interface named AcpiOsSignal to provide a generic
18893"function code and pointer" interface for various miscellaneous
18894signals and notifications that must be made to the host OS.   The
18895first such signals are intended to support the ASL Fatal and
18896Breakpoint operators.  In the latter case, the AcpiOsBreakpoint
18897interface has been obsoleted.
18898
18899The definition of the AcpiFormatException interface has been
18900changed to simplify its use.  The caller no longer must supply a
18901buffer to the call; A pointer to a const string is now returned
18902directly.  This allows the call to be easily used in printf
18903statements, etc. since the caller does not have to manage a local
18904buffer.
18905
18906
18907 ASL Compiler, Version X2025:
18908
18909The ACPI 2.0 Switch/Case/Default operators have been implemented
18910and are fully functional.  They will work with all ACPI 1.0
18911interpreters, since the operators are simply translated to If/Else
18912pairs.
18913
18914The ACPI 2.0 ElseIf operator is implemented and will also work
18915with 1.0 interpreters, for the same reason.
18916
18917Implemented support for ACPI 2.0 variable-length packages.  These
18918packages have a separate opcode, and their size is determined by
18919the interpreter at run-time.
18920
18921Documentation The ACPI CA Programmer Reference has been updated to
18922reflect the new interfaces and changes to existing interfaces.
18923
18924 ------------------------------------------
18925Summary of changes for this label: 06_15_01
18926
18927 ACPI CA Core Subsystem:
18928
18929Fixed a problem where a DWORD-accessed field within a Buffer
18930object would get its byte address inadvertently rounded down to
18931the nearest DWORD.  Buffers are always Byte-accessible.
18932
18933 ASL Compiler, version X2024:
18934
18935Fixed a problem where the Switch() operator would either fault or
18936hang the compiler.  Note however, that the AML code for this ACPI
189372.0 operator is not yet implemented.
18938
18939Compiler uses the new AcpiOsGetTimer interface to obtain compile
18940timings.
18941
18942Implementation of the CreateField operator automatically converts
18943a reference to a named field within a resource descriptor from a
18944byte offset to a bit offset if required.
18945
18946Added some missing named fields from the resource descriptor
18947support. These are the names that are automatically created by the
18948compiler to reference fields within a descriptor.  They are only
18949valid at compile time and are not passed through to the AML
18950interpreter.
18951
18952Resource descriptor named fields are now typed as Integers and
18953subject to compile-time typechecking when used in expressions.
18954
18955 ------------------------------------------
18956Summary of changes for this label: 05_18_01
18957
18958 ACPI CA Core Subsystem:
18959
18960Fixed a couple of problems in the Field support code where bits
18961from adjacent fields could be returned along with the proper field
18962bits. Restructured the field support code to improve performance,
18963readability and maintainability.
18964
18965New DEBUG_PRINTP macro automatically inserts the procedure name
18966into the output, saving hundreds of copies of procedure name
18967strings within the source, shrinking the memory footprint of the
18968debug version of the core subsystem.
18969
18970 Source Code Structure:
18971
18972The source code directory tree was restructured to reflect the
18973current organization of the component architecture.  Some files
18974and directories have been moved and/or renamed.
18975
18976 Linux:
18977
18978Fixed leaking kacpidpc processes.
18979
18980Fixed queueing event data even when /proc/acpi/event is not
18981opened.
18982
18983 ASL Compiler, version X2020:
18984
18985Memory allocation performance enhancement - over 24X compile time
18986improvement on large ASL files.  Parse nodes and namestring
18987buffers are now allocated from a large internal compiler buffer.
18988
18989The temporary .SRC file is deleted unless the "-s" option is
18990specified
18991
18992The "-d" debug output option now sends all output to the .DBG file
18993instead of the console.
18994
18995"External" second parameter is now optional
18996
18997"ElseIf" syntax now properly allows the predicate
18998
18999Last operand to "Load" now recognized as a Target operand
19000
19001Debug object can now be used anywhere as a normal object.
19002
19003ResourceTemplate now returns an object of type BUFFER
19004
19005EISAID now returns an object of type INTEGER
19006
19007"Index" now works with a STRING operand
19008
19009"LoadTable" now accepts optional parameters
19010
19011"ToString" length parameter is now optional
19012
19013"Interrupt (ResourceType," parse error fixed.
19014
19015"Register" with a user-defined region space parse error fixed
19016
19017Escaped backslash at the end of a string ("\\") scan/parse error
19018fixed
19019
19020"Revision" is now an object of type INTEGER.
19021
19022
19023
19024------------------------------------------
19025Summary of changes for this label: 05_02_01
19026
19027Linux:
19028
19029/proc/acpi/event now blocks properly.
19030
19031Removed /proc/sys/acpi. You can still dump your DSDT from
19032/proc/acpi/dsdt.
19033
19034 ACPI CA Core Subsystem:
19035
19036Fixed a problem introduced in the previous label where some of the
19037"small" resource descriptor types were not recognized.
19038
19039Improved error messages for the case where an ASL Field is outside
19040the range of the parent operation region.
19041
19042 ASL Compiler, version X2018:
19043
19044
19045Added error detection for ASL Fields that extend beyond the length
19046of the parent operation region (only if the length of the region
19047is known at compile time.)  This includes fields that have a
19048minimum access width that is smaller than the parent region, and
19049individual field units that are partially or entirely beyond the
19050extent of the parent.
19051
19052
19053
19054------------------------------------------
19055Summary of changes for this label: 04_27_01
19056
19057 ACPI CA Core Subsystem:
19058
19059Fixed a problem where the namespace mutex could be released at the
19060wrong time during execution of AcpiRemoveAddressSpaceHandler.
19061
19062Added optional thread ID output for debug traces, to simplify
19063debugging of multiple threads.  Added context switch notification
19064when the debug code realizes that a different thread is now
19065executing ACPI code.
19066
19067Some additional external data types have been prefixed with the
19068string "ACPI_" for consistency.  This may effect existing code.
19069The data types affected are the external callback typedefs - e.g.,
19070
19071WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
19072
19073 Linux:
19074
19075Fixed an issue with the OSL semaphore implementation where a
19076thread was waking up with an error from receiving a SIGCHLD
19077signal.
19078
19079Linux version of ACPI CA now uses the system C library for string
19080manipulation routines instead of a local implementation.
19081
19082Cleaned up comments and removed TBDs.
19083
19084 ASL Compiler, version X2017:
19085
19086Enhanced error detection and reporting for all file I/O
19087operations.
19088
19089 Documentation:
19090
19091Programmer Reference updated to version 1.06.
19092
19093
19094
19095------------------------------------------
19096Summary of changes for this label: 04_13_01
19097
19098 ACPI CA Core Subsystem:
19099
19100Restructured support for BufferFields and RegionFields.
19101BankFields support is now fully operational.  All known 32-bit
19102limitations on field sizes have been removed.  Both BufferFields
19103and (Operation) RegionFields are now supported by the same field
19104management code.
19105
19106Resource support now supports QWORD address and IO resources. The
1910716/32/64 bit address structures and the Extended IRQ structure
19108have been changed to properly handle Source Resource strings.
19109
19110A ThreadId of -1 is now used to indicate a "mutex not acquired"
19111condition internally and must never be returned by AcpiOsThreadId.
19112This reserved value was changed from 0 since Unix systems allow a
19113thread ID of 0.
19114
19115Linux:
19116
19117Driver code reorganized to enhance portability
19118
19119Added a kernel configuration option to control ACPI_DEBUG
19120
19121Fixed the EC driver to honor _GLK.
19122
19123ASL Compiler, version X2016:
19124
19125Fixed support for the "FixedHw" keyword.  Previously, the FixedHw
19126address space was set to 0, not 0x7f as it should be.
19127
19128 ------------------------------------------
19129Summary of changes for this label: 03_13_01
19130
19131 ACPI CA Core Subsystem:
19132
19133During ACPI initialization, the _SB_._INI method is now run if
19134present.
19135
19136Notify handler fix - notifies are deferred until the parent method
19137completes execution.  This fixes the "mutex already acquired"
19138issue seen occasionally.
19139
19140Part of the "implicit conversion" rules in ACPI 2.0 have been
19141found to cause compatibility problems with existing ASL/AML.  The
19142convert "result-to-target-type" implementation has been removed
19143for stores to method Args and Locals.  Source operand conversion
19144is still fully implemented.  Possible changes to ACPI 2.0
19145specification pending.
19146
19147Fix to AcpiRsCalculatePciRoutingTableLength to return correct
19148length.
19149
19150Fix for compiler warnings for 64-bit compiles.
19151
19152 Linux:
19153
19154/proc output aligned for easier parsing.
19155
19156Release-version compile problem fixed.
19157
19158New kernel configuration options documented in Configure.help.
19159
19160IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
19161context" message.
19162
19163 OSPM:
19164
19165Power resource driver integrated with bus manager.
19166
19167Fixed kernel fault during active cooling for thermal zones.
19168
19169Source Code:
19170
19171The source code tree has been restructured.
19172
19173
19174
19175------------------------------------------
19176Summary of changes for this label: 03_02_01
19177
19178 Linux OS Services Layer (OSL):
19179
19180Major revision of all Linux-specific code.
19181
19182Modularized all ACPI-specific drivers.
19183
19184Added new thermal zone and power resource drivers.
19185
19186Revamped /proc interface (new functionality is under /proc/acpi).
19187
19188New kernel configuration options.
19189
19190 Linux known issues:
19191
19192New kernel configuration options not documented in Configure.help
19193yet.
19194
19195
19196Module dependencies not currently implemented. If used, they
19197should be loaded in this order: busmgr, power, ec, system,
19198processor, battery, ac_adapter, button, thermal.
19199
19200Modules will not load if CONFIG_MODVERSION is set.
19201
19202IBM 600E - entering S5 may reboot instead of shutting down.
19203
19204IBM 600E - Sleep button may generate "Invalid <NULL> context"
19205message.
19206
19207Some systems may fail with "execution mutex already acquired"
19208message.
19209
19210 ACPI CA Core Subsystem:
19211
19212Added a new OSL Interface, AcpiOsGetThreadId.  This was required
19213for the  deadlock detection code. Defined to return a non-zero, 32-
19214bit thread ID for the currently executing thread.  May be a non-
19215zero constant integer on single-thread systems.
19216
19217Implemented deadlock detection for internal subsystem mutexes.  We
19218may add conditional compilation for this code (debug only) later.
19219
19220ASL/AML Mutex object semantics are now fully supported.  This
19221includes multiple acquires/releases by owner and support for the
19222
19223Mutex SyncLevel parameter.
19224
19225A new "Force Release" mechanism automatically frees all ASL
19226Mutexes that have been acquired but not released when a thread
19227exits the interpreter.  This forces conformance to the ACPI spec
19228("All mutexes must be released when an invocation exits") and
19229prevents deadlocked ASL threads.  This mechanism can be expanded
19230(later) to monitor other resource acquisitions if OEM ASL code
19231continues to misbehave (which it will).
19232
19233Several new ACPI exception codes have been added for the Mutex
19234support.
19235
19236Recursive method calls are now allowed and supported (the ACPI
19237spec does in fact allow recursive method calls.)  The number of
19238recursive calls is subject to the restrictions imposed by the
19239SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
19240parameter.
19241
19242Implemented support for the SyncLevel parameter for control
19243methods (ACPI 2.0 feature)
19244
19245Fixed a deadlock problem when multiple threads attempted to use
19246the interpreter.
19247
19248Fixed a problem where the string length of a String package
19249element was not always set in a package returned from
19250AcpiEvaluateObject.
19251
19252Fixed a problem where the length of a String package element was
19253not always included in the length of the overall package returned
19254from AcpiEvaluateObject.
19255
19256Added external interfaces (Acpi*) to the ACPI debug memory
19257manager.  This manager keeps a list of all outstanding
19258allocations, and can therefore detect memory leaks and attempts to
19259free memory blocks more than once. Useful for code such as the
19260power manager, etc.  May not be appropriate for device drivers.
19261Performance with the debug code enabled is slow.
19262
19263The ACPI Global Lock is now an optional hardware element.
19264
19265 ASL Compiler Version X2015:
19266
19267Integrated changes to allow the compiler to be generated on
19268multiple platforms.
19269
19270Linux makefile added to generate the compiler on Linux
19271
19272 Source Code:
19273
19274All platform-specific headers have been moved to their own
19275subdirectory, Include/Platform.
19276
19277New source file added, Interpreter/ammutex.c
19278
19279New header file, Include/acstruct.h
19280
19281 Documentation:
19282
19283The programmer reference has been updated for the following new
19284interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
19285
19286 ------------------------------------------
19287Summary of changes for this label: 02_08_01
19288
19289Core ACPI CA Subsystem: Fixed a problem where an error was
19290incorrectly returned if the return resource buffer was larger than
19291the actual data (in the resource interfaces).
19292
19293References to named objects within packages are resolved to the
19294
19295full pathname string before packages are returned directly (via
19296the AcpiEvaluateObject interface) or indirectly via the resource
19297interfaces.
19298
19299Linux OS Services Layer (OSL):
19300
19301Improved /proc battery interface.
19302
19303
19304Added C-state debugging output and other miscellaneous fixes.
19305
19306ASL Compiler Version X2014:
19307
19308All defined method arguments can now be used as local variables,
19309including the ones that are not actually passed in as parameters.
19310The compiler tracks initialization of the arguments and issues an
19311exception if they are used without prior assignment (just like
19312locals).
19313
19314The -o option now specifies a filename prefix that is used for all
19315output files, including the AML output file.  Otherwise, the
19316default behavior is as follows:  1) the AML goes to the file
19317specified in the DSDT.  2) all other output files use the input
19318source filename as the base.
19319
19320 ------------------------------------------
19321Summary of changes for this label: 01_25_01
19322
19323Core ACPI CA Subsystem: Restructured the implementation of object
19324store support within the  interpreter.  This includes support for
19325the Store operator as well  as any ASL operators that include a
19326target operand.
19327
19328Partially implemented support for Implicit Result-to-Target
19329conversion. This is when a result object is converted on the fly
19330to the type of  an existing target object.  Completion of this
19331support is pending  further analysis of the ACPI specification
19332concerning this matter.
19333
19334CPU-specific code has been removed from the subsystem (hardware
19335directory).
19336
19337New Power Management Timer functions added
19338
19339Linux OS Services Layer (OSL): Moved system state transition code
19340to the core, fixed it, and modified  Linux OSL accordingly.
19341
19342Fixed C2 and C3 latency calculations.
19343
19344
19345We no longer use the compilation date for the version message on
19346initialization, but retrieve the version from AcpiGetSystemInfo().
19347
19348Incorporated for fix Sony VAIO machines.
19349
19350Documentation:  The Programmer Reference has been updated and
19351reformatted.
19352
19353
19354ASL Compiler:  Version X2013: Fixed a problem where the line
19355numbering and error reporting could get out  of sync in the
19356presence of multiple include files.
19357
19358 ------------------------------------------
19359Summary of changes for this label: 01_15_01
19360
19361Core ACPI CA Subsystem:
19362
19363Implemented support for type conversions in the execution of the
19364ASL  Concatenate operator (The second operand is converted to
19365match the type  of the first operand before concatenation.)
19366
19367Support for implicit source operand conversion is partially
19368implemented.   The ASL source operand types Integer, Buffer, and
19369String are freely  interchangeable for most ASL operators and are
19370converted by the interpreter  on the fly as required.  Implicit
19371Target operand conversion (where the  result is converted to the
19372target type before storing) is not yet implemented.
19373
19374Support for 32-bit and 64-bit BCD integers is implemented.
19375
19376Problem fixed where a field read on an aligned field could cause a
19377read  past the end of the field.
19378
19379New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
19380does not return a value, but the caller expects one.  (The ASL
19381compiler flags this as a warning.)
19382
19383ASL Compiler:
19384
19385Version X2011:
193861. Static typechecking of all operands is implemented. This
19387prevents the use of invalid objects (such as using a Package where
19388an Integer is required) at compile time instead of at interpreter
19389run-time.
193902. The ASL source line is printed with ALL errors and warnings.
193913. Bug fix for source EOF without final linefeed.
193924. Debug option is split into a parse trace and a namespace trace.
193935. Namespace output option (-n) includes initial values for
19394integers and strings.
193956. Parse-only option added for quick syntax checking.
193967. Compiler checks for duplicate ACPI name declarations
19397
19398Version X2012:
193991. Relaxed typechecking to allow interchangeability between
19400strings, integers, and buffers.  These types are now converted by
19401the interpreter at runtime.
194022. Compiler reports time taken by each internal subsystem in the
19403debug         output file.
19404
19405
19406 ------------------------------------------
19407Summary of changes for this label: 12_14_00
19408
19409ASL Compiler:
19410
19411This is the first official release of the compiler. Since the
19412compiler requires elements of the Core Subsystem, this label
19413synchronizes everything.
19414
19415------------------------------------------
19416Summary of changes for this label: 12_08_00
19417
19418
19419Fixed a problem where named references within the ASL definition
19420of both OperationRegions and CreateXXXFields did not work
19421properly.  The symptom was an AE_AML_OPERAND_TYPE during
19422initialization of the region/field. This is similar (but not
19423related internally) to the problem that was fixed in the last
19424label.
19425
19426Implemented both 32-bit and 64-bit support for the BCD ASL
19427functions ToBCD and FromBCD.
19428
19429Updated all legal headers to include "2000" in the copyright
19430years.
19431
19432 ------------------------------------------
19433Summary of changes for this label: 12_01_00
19434
19435Fixed a problem where method invocations within the ASL definition
19436of both OperationRegions and CreateXXXFields did not work
19437properly.  The symptom was an AE_AML_OPERAND_TYPE during
19438initialization of the region/field:
19439
19440  nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
19441[DEBG]   ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
19442(0x3005)
19443
19444Fixed a problem where operators with more than one nested
19445subexpression would fail.  The symptoms were varied, by mostly
19446AE_AML_OPERAND_TYPE errors.  This was actually a rather serious
19447problem that has gone unnoticed until now.
19448
19449  Subtract (Add (1,2), Multiply (3,4))
19450
19451Fixed a problem where AcpiGetHandle didn't quite get fixed in the
19452previous build (The prefix part of a relative path was handled
19453incorrectly).
19454
19455Fixed a problem where Operation Region initialization failed if
19456the operation region name was a "namepath" instead of a simple
19457"nameseg". Symptom was an AE_NO_OPERAND error.
19458
19459Fixed a problem where an assignment to a local variable via the
19460indirect RefOf mechanism only worked for the first such
19461assignment.  Subsequent assignments were ignored.
19462
19463 ------------------------------------------
19464Summary of changes for this label: 11_15_00
19465
19466ACPI 2.0 table support with backwards support for ACPI 1.0 and the
194670.71 extensions.  Note: although we can read ACPI 2.0 BIOS tables,
19468the AML  interpreter does NOT have support for the new 2.0 ASL
19469grammar terms at this time.
19470
19471All ACPI hardware access is via the GAS structures in the ACPI 2.0
19472FADT.
19473
19474All physical memory addresses across all platforms are now 64 bits
19475wide. Logical address width remains dependent on the platform
19476(i.e., "void *").
19477
19478AcpiOsMapMemory interface changed to a 64-bit physical address.
19479
19480The AML interpreter integer size is now 64 bits, as per the ACPI
194812.0 specification.
19482
19483For backwards compatibility with ACPI 1.0, ACPI tables with a
19484revision number less than 2 use 32-bit integers only.
19485
19486Fixed a problem where the evaluation of OpRegion operands did not
19487always resolve them to numbers properly.
19488
19489------------------------------------------
19490Summary of changes for this label: 10_20_00
19491
19492Fix for CBN_._STA issue.  This fix will allow correct access to
19493CBN_ OpRegions when the _STA returns 0x8.
19494
19495Support to convert ACPI constants (Ones, Zeros, One) to actual
19496values before a package object is returned
19497
19498Fix for method call as predicate to if/while construct causing
19499incorrect if/while behavior
19500
19501Fix for Else block package lengths sometimes calculated wrong (if
19502block > 63 bytes)
19503
19504Fix for Processor object length field, was always zero
19505
19506Table load abort if FACP sanity check fails
19507
19508Fix for problem with Scope(name) if name already exists
19509
19510Warning emitted if a named object referenced cannot be found
19511(resolved) during method execution.
19512
19513
19514
19515
19516
19517------------------------------------------
19518Summary of changes for this label: 9_29_00
19519
19520New table initialization interfaces: AcpiInitializeSubsystem no
19521longer has any parameters AcpiFindRootPointer - Find the RSDP (if
19522necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
19523>RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
19524AcpiLoadTables
19525
19526Note: These interface changes require changes to all existing OSDs
19527
19528The PCI_Config default address space handler is always installed
19529at the root namespace object.
19530
19531-------------------------------------------
19532Summary of changes for this label: 09_15_00
19533
19534The new initialization architecture is implemented.  New
19535interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
19536AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
19537
19538(Namespace is automatically loaded when a table is loaded)
19539
19540The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
1954152 bytes to 32 bytes.  There is usually one of these for every
19542namespace object, so the memory savings is significant.
19543
19544Implemented just-in-time evaluation of the CreateField operators.
19545
19546Bug fixes for IA-64 support have been integrated.
19547
19548Additional code review comments have been implemented
19549
19550The so-called "third pass parse" has been replaced by a final walk
19551through the namespace to initialize all operation regions (address
19552spaces) and fields that have not yet been initialized during the
19553execution of the various _INI and REG methods.
19554
19555New file - namespace/nsinit.c
19556
19557-------------------------------------------
19558Summary of changes for this label: 09_01_00
19559
19560Namespace manager data structures have been reworked to change the
19561primary  object from a table to a single object.  This has
19562resulted in dynamic memory  savings of 3X within the namespace and
195632X overall in the ACPI CA subsystem.
19564
19565Fixed problem where the call to AcpiEvFindPciRootBuses was
19566inadvertently left  commented out.
19567
19568Reduced the warning count when generating the source with the GCC
19569compiler.
19570
19571Revision numbers added to each module header showing the
19572SourceSafe version of the file.  Please refer to this version
19573number when giving us feedback or comments on individual modules.
19574
19575The main object types within the subsystem have been renamed to
19576clarify their  purpose:
19577
19578ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
19579ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
19580ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
19581
19582NOTE: no changes to the initialization sequence are included in
19583this label.
19584
19585-------------------------------------------
19586Summary of changes for this label: 08_23_00
19587
19588Fixed problem where TerminateControlMethod was being called
19589multiple times per  method
19590
19591Fixed debugger problem where single stepping caused a semaphore to
19592be  oversignalled
19593
19594Improved performance through additional parse object caching -
19595added  ACPI_EXTENDED_OP type
19596
19597-------------------------------------------
19598Summary of changes for this label: 08_10_00
19599
19600Parser/Interpreter integration:  Eliminated the creation of
19601complete parse trees  for ACPI tables and control methods.
19602Instead, parse subtrees are created and  then deleted as soon as
19603they are processed (Either entered into the namespace or  executed
19604by the interpreter).  This reduces the use of dynamic kernel
19605memory  significantly. (about 10X)
19606
19607Exception codes broken into classes and renumbered.  Be sure to
19608recompile all  code that includes acexcep.h.  Hopefully we won't
19609have to renumber the codes  again now that they are split into
19610classes (environment, programmer, AML code,  ACPI table, and
19611internal).
19612
19613Fixed some additional alignment issues in the Resource Manager
19614subcomponent
19615
19616Implemented semaphore tracking in the AcpiExec utility, and fixed
19617several places  where mutexes/semaphores were being unlocked
19618without a corresponding lock  operation.  There are no known
19619semaphore or mutex "leaks" at this time.
19620
19621Fixed the case where an ASL Return operator is used to return an
19622unnamed  package.
19623
19624-------------------------------------------
19625Summary of changes for this label: 07_28_00
19626
19627Fixed a problem with the way addresses were calculated in
19628AcpiAmlReadFieldData()  and AcpiAmlWriteFieldData(). This problem
19629manifested itself when a Field was  created with WordAccess or
19630DwordAccess, but the field unit defined within the  Field was less
19631
19632than a Word or Dword.
19633
19634Fixed a problem in AmlDumpOperands() module's loop to pull
19635operands off of the  operand stack to display information. The
19636problem manifested itself as a TLB  error on 64-bit systems when
19637accessing an operand stack with two or more  operands.
19638
19639Fixed a problem with the PCI configuration space handlers where
19640context was  getting confused between accesses. This required a
19641change to the generic address  space handler and address space
19642setup definitions. Handlers now get both a  global handler context
19643(this is the one passed in by the user when executing
19644AcpiInstallAddressSpaceHandler() and a specific region context
19645that is unique to  each region (For example, the _ADR, _SEG and
19646_BBN values associated with a  specific region). The generic
19647function definitions have changed to the  following:
19648
19649typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19650UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19651*HandlerContext, // This used to be void *Context void
19652*RegionContext); // This is an additional parameter
19653
19654typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19655RegionHandle, UINT32 Function, void *HandlerContext,  void
19656**RegionContext); // This used to be **ReturnContext
19657
19658-------------------------------------------
19659Summary of changes for this label: 07_21_00
19660
19661Major file consolidation and rename.  All files within the
19662interpreter have been  renamed as well as most header files.  This
19663was done to prevent collisions with  existing files in the host
19664OSs -- filenames such as "config.h" and "global.h"  seem to be
19665quite common.  The VC project files have been updated.  All
19666makefiles  will require modification.
19667
19668The parser/interpreter integration continues in Phase 5 with the
19669implementation  of a complete 2-pass parse (the AML is parsed
19670twice) for each table;  This  avoids the construction of a huge
19671parse tree and therefore reduces the amount of  dynamic memory
19672required by the subsystem.  Greater use of the parse object cache
19673means that performance is unaffected.
19674
19675Many comments from the two code reviews have been rolled in.
19676
19677The 64-bit alignment support is complete.
19678
19679-------------------------------------------
19680Summary of changes for this label: 06_30_00
19681
19682With a nod and a tip of the hat to the technology of yesteryear,
19683we've added  support in the source code for 80 column output
19684devices.  The code is now mostly  constrained to 80 columns or
19685less to support environments and editors that 1)  cannot display
19686or print more than 80 characters on a single line, and 2) cannot
19687disable line wrapping.
19688
19689A major restructuring of the namespace data structure has been
19690completed.  The  result is 1) cleaner and more
19691understandable/maintainable code, and 2) a  significant reduction
19692in the dynamic memory requirement for each named ACPI  object
19693(almost half).
19694
19695-------------------------------------------
19696Summary of changes for this label: 06_23_00
19697
19698Linux support has been added.  In order to obtain approval to get
19699the ACPI CA  subsystem into the Linux kernel, we've had to make
19700quite a few changes to the  base subsystem that will affect all
19701users (all the changes are generic and OS- independent).  The
19702effects of these global changes have been somewhat far  reaching.
19703Files have been merged and/or renamed and interfaces have been
19704renamed.   The major changes are described below.
19705
19706Osd* interfaces renamed to AcpiOs* to eliminate namespace
19707pollution/confusion  within our target kernels.  All OSD
19708interfaces must be modified to match the new  naming convention.
19709
19710Files merged across the subsystem.  A number of the smaller source
19711and header  files have been merged to reduce the file count and
19712increase the density of the  existing files.  There are too many
19713to list here.  In general, makefiles that  call out individual
19714files will require rebuilding.
19715
19716Interpreter files renamed.  All interpreter files now have the
19717prefix am*  instead of ie* and is*.
19718
19719Header files renamed:  The acapi.h file is now acpixf.h.  The
19720acpiosd.h file is  now acpiosxf.h.  We are removing references to
19721the acronym "API" since it is  somewhat windowsy. The new name is
19722"external interface" or xface or xf in the  filenames.j
19723
19724
19725All manifest constants have been forced to upper case (some were
19726mixed case.)   Also, the string "ACPI_" has been prepended to many
19727(not all) of the constants,  typedefs, and structs.
19728
19729The globals "DebugLevel" and "DebugLayer" have been renamed
19730"AcpiDbgLevel" and  "AcpiDbgLayer" respectively.
19731
19732All other globals within the subsystem are now prefixed with
19733"AcpiGbl_" Internal procedures within the subsystem are now
19734prefixed with "Acpi" (with only  a few exceptions).  The original
19735two-letter abbreviation for the subcomponent  remains after "Acpi"
19736- for example, CmCallocate became AcpiCmCallocate.
19737
19738Added a source code translation/conversion utility.  Used to
19739generate the Linux  source code, it can be modified to generate
19740other types of source as well. Can  also be used to cleanup
19741existing source by removing extraneous spaces and blank  lines.
19742Found in tools/acpisrc/*
19743
19744OsdUnMapMemory was renamed to OsdUnmapMemory and then
19745AcpiOsUnmapMemory.  (UnMap  became Unmap).
19746
19747A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19748When set to  one, this indicates that the caller wants to use the
19749
19750semaphore as a mutex, not a  counting semaphore.  ACPI CA uses
19751both types.  However, implementers of this  call may want to use
19752different OS primitives depending on the type of semaphore
19753requested.  For example, some operating systems provide separate
19754
19755"mutex" and  "semaphore" interfaces - where the mutex interface is
19756much faster because it  doesn't have all the overhead of a full
19757semaphore implementation.
19758
19759Fixed a deadlock problem where a method that accesses the PCI
19760address space can  block forever if it is the first access to the
19761space.
19762
19763-------------------------------------------
19764Summary of changes for this label: 06_02_00
19765
19766Support for environments that cannot handle unaligned data
19767accesses (e.g.  firmware and OS environments devoid of alignment
19768handler technology namely  SAL/EFI and the IA-64 Linux kernel) has
19769been added (via configurable macros) in  these three areas: -
19770Transfer of data from the raw AML byte stream is done via byte
19771moves instead of    word/dword/qword moves. - External objects are
19772aligned within the user buffer, including package   elements (sub-
19773objects). - Conversion of name strings to UINT32 Acpi Names is now
19774done byte-wise.
19775
19776The Store operator was modified to mimic Microsoft's
19777implementation when storing  to a Buffer Field.
19778
19779Added a check of the BM_STS bit before entering C3.
19780
19781The methods subdirectory has been obsoleted and removed.  A new
19782file, cmeval.c  subsumes the functionality.
19783
19784A 16-bit (DOS) version of AcpiExec has been developed.  The
19785makefile is under  the acpiexec directory.
19786