changes.txt revision 1.1.1.32 1 ----------------------------------------
2 28 June 2023. Summary of changes for version 20230628:
3
4 0) Global changes:
5
6 Fixed 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 (a] nvidia.com.
7
8 Added 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 (a] intel.com.
9
10 Added support for _DSC (Deepest State for Configuration) as per ACPI 6.5.
11
12 1) ACPICA kernel-resident subsystem:
13
14 Added port definitions for CDAT SSLBIS. Add upstream port and any port definitions for SSLBIS. Reported by: Dave Jiang dave.jiang (a] intel.com.
15
16 Fixed misspelled CDAT DSMAS define: ACPI_CEDT_DSMAS_NON_VOLATILE -> ACPI_CDAT_DSMAS_NON_VOLATILE. Reported by: Dave Jiang dave.jiang (a] intel.com.
17
18 1) ACPICA kernel-resident subsystem:
19
20 Fix 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
22 Also, 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
24 2) iASL Compiler/Disassembler and ACPICA tools:.
25
26 IASL/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
28 AcpiExec: 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 (a] arm.com.
29
30 AcpiExec: 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 (a] arm.com.
31 ----------------------------------------
32 31 March 2023. Summary of changes for version 20230331:
33
34 This release is available at https://acpica.org/downloads
35
36 0) Global changes:
37
38
39 Update all copyright notices to the year 2023. This effects all source
40 modules, as well as utility signons.
41 Add OS-specific support for Zephyr RTOS.
42 Fix miscellaneous code that accesses various objects.
43 Remove some dead code.
44 Add C ?Flexible Array? support.
45 Add support for 64 bit LoongArch compilation.
46 Add first batch of RISC-V related definitions.
47 Performed a global automated update to remove tabs, fix indentation
48 issues, etc.
49
50 1) ACPICA kernel-resident subsystem:
51
52 hwvalid: Drop port I/O validation.
53
54 2) ACPICA tools and utilities:
55
56 iASL: Added full macro support in the preprocessor. Example:
57 #define ABCD(a,b,c,d) a+b+c-d
58
59 Known macro support limitations (at this time):
60 No support for multi-line #define macros (backslash continuation
61 lines)
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
67 Add support for AMD Secure Processor Table (ASPT) version 1.
68 Add support for Arm's MPAM ACPI table version 2.
69 ACPI 6.5: MADT: add support for trace buffer extension in GICC.
70 Headers: Delete bogus NodeArray array of pointers from AEST table.
71 PHAT table support is still ongoing.
72
73
74 ----------------------------------------
75 20 October 2022. Summary of changes for version 20221020:
76
77 This release is available at https://acpica.org/downloads
78
79 0) Global changes:
80
81 Allow disabling of -Werror. For distro maintainers having `-Werror` can
82 delay update of GCC. Since every GCC release might add new warnings that
83 were not yet captured, it might break the build of packages. With this
84 change, distros can now build with `NOWERROR=TRUE` instead of patching
85 either the errors or the makefiles. The default behavior keeps on using
86 `-Werror`.
87
88 1) ACPICA kernel-resident subsystem:
89
90 Added support for FFH Operation Region special context data. FFH(Fixed
91 Function Hardware) Opregion is approved to be added in ACPI 6.5 via code
92 first approach[1]. It requires special context data similar to GPIO and
93 Generic Serial Bus as it needs to know platform specific offset and
94 length.
95
96 Reverted this commit "executer/exsystem: Warn about sleeps greater than
97 10 ms." Due to user complaints about valid sleeps greater than 10ms seen
98 in some existing machines -- generating lots of warnings.
99
100 Do not touch VGA memory when EBDA < 1KiB. The ACPICA code assumes that
101 EBDA region must be at least 1KiB in size. Because this is not
102 guaranteed, it might happen that while scanning the memory for RSDP
103 pointer, the kernel touches memory above 640KiB. This is unwanted as the
104 VGA memory range may not be decoded or even present when running under
105 virtualization.
106
107 Check that EBDA pointer is in valid memory. If the memory at 0x40e is
108 uninitialized, the retrieved physical memory address of EBDA may be
109 beyond the low memory (i.e. above 640K). If so, the kernel may
110 unintentionally access the VGA memory, that might not be decoded or even
111 present in case of virtualization.
112
113 2) iASL Compiler/Disassembler and ACPICA tools:
114
115 Completed the existing partial support for the CDAT "table". Although
116 this isn't technically an ACPI table (It doesn't go into the XSDT), it is
117 possible to support this table in the Data Table compiler. Created one
118 new file, "utilities/utcksum.c", used to centralize checksum
119 generation/validation into one location. Includes changes to makefiles
120 and MSVC project files.
121
122 Updated support for the IORT table - update to version E.e
123
124 Added CXL 3.0 structures (CXIMS & RDPAS) to the CEDT table
125
126 iASL: Added CCEL table to both compiler/disassembler.
127
128 iASL: NHLT table: Fixed compilation of optional undocumented fields
129
130 iASL: Fix iASL compile error due to ACPI_TDEL_OFFSET. Commit # 10e4763
131 ("iASL: Add CCEL table to both compiler/disassembler") introduced the
132 iASL build issue. The issue is due to using ACPI_TDEL_OFFSET for CCEL
133 table member reference. To fix it, change ACPI_TDEL_OFFSET with
134 ACPI_CCEL_OFFSET.
135
136 ----------------------------------------
137 31 March 2022. Summary of changes for version 20220331:
138
139 0) Global changes:
140
141 Update all copyright notices to the year 2022. This effects all source
142 modules, as well as utility signons.
143
144
145 1) ACPICA kernel-resident subsystem:
146
147 For the ASL Sleep() operator, issue a warning if the sleep value is
148 greater than 10 Milliseconds. Quick boottime is important, so warn about
149 sleeps greater than 10 ms. Distribution Linux kernels reach initrd in 350
150 ms, so excessive delays should be called out. 10 ms is chosen randomly,
151 but three of such delays would already make up ten percent of the
152 boottime.
153
154 Namespace: Avoid attempting to walk the Namespace if the Namespace does
155 not exist.
156
157 AML interpreter/iASL compiler: Add new Acpi 6.4 semantics for the
158 LoadTable and Load operators. DDB_HANDLE is gone, now loadtable returns a
159 pass/fail integer. Now load returns a pass/fail integer, as well as
160 storing the return value in an optional 2nd argument.
161
162 Headers: Use uintptr_t and offsetof() in Linux kernel builds. To avoid
163 "performing pointer subtraction with a null pointer has undefined
164 behavior" compiler warnings, use uintptr_t and offsetof() that are always
165 available during Linux kernel builds to define ACPI_UINTPTR_T and the
166 ACPI_TO_INTEGER() and ACPI_OFFSET() macros when building the ACPICA code
167 in the Linux kernel.
168
169 Added support for the Windows 11 _OSI string ("Windows 2021"). Submitted
170 by superm1.
171
172 executer/exsystem: Inform users about ACPI spec violation for the Stall()
173 operator. Values greater than 100 microseconds violate the ACPI
174 specification, so warn users about it. From the ACPI Specification
175 version 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
181 2) iASL Compiler/Disassembler and ACPICA tools:
182
183 Data Table Compiler/Disassembler: Add support for the APMT table - ARM
184 Performance Monitoring Unit table. Submitted by @bwicaksononv.
185
186 Data Table Compiler/Disassembler: For MADT, add support for the OEM-
187 defined subtables (Types 0x80-0x7F).
188
189 Data Table Compiler: Fixed a problem with support for the SDEV table,
190 where a subtable Length was not computed correctly.
191
192 Data Table Compiler/Disassembler: Add/fix the CFMWS subtable to the CEDT
193 Acpi table support.
194
195 Data Table Compiler/Disassembler: Fix a compile issue with the CEDT and
196 add template. Submitted by MasterDrogo.
197
198 Data Table Compiler/Disassembler: NHLT Changes provided by Piotr Maziarz:
199 iASL/NHLT: Rename linux specific structures to DeviceInfo to improve
200 readability of the code.
201 iASL/NHLT: Fix parsing undocumented bytes at the end of Endpoint.
202 Undocumented bytes at the end of Endpoint Descriptor can be present
203 independently of Linux-specific structures. Their size can also vary.
204 iASL/NHLT: Treat TableTerminator as SpecificConfig. SpecificConfig has 4
205 bytes of size and then an amount of bytes specified by size. All of the
206 terminators that I've seen had a size equal to 4, but theoretically it
207 can vary.
208
209 iASL/AcpiExec: Use _exit instead of exit in signal handers (ctrl-C).
210
211 iASL: Remove a remark due to excessive output. Removed a remark for
212 duplicate Offset() operators, due to a user complaint.
213
214 ----------------------------------------
215 17 December 2021. Summary of changes for version 20211217:
216
217 1) ACPICA kernel-resident subsystem:
218
219 Hardware: Do not flush CPU cache when entering S4 and S5. According to
220 ACPI 6.4, Section 16.2, the CPU cache flushing is required on entering to
221 S1, S2, and S3, but the ACPICA code flushes the CPU cache regardless of
222 the sleep state. Blind cache flush on entering S5 causes problems for
223 TDX.
224
225 Avoid subobject buffer overflow when validating RSDP signature. Since the
226 Signature member is accessed through an ACPI_TABLE_HEADER, the pointer to
227 it is only to a 4-char array, and so trying to read past the 4th
228 character, as will be done when it is an RSDP, reads beyond the bounds of
229 the accessed member. Contributed by jrtc27.
230
231 Add support for PCC Opregion special context data. PCC Opregion added in
232 ACPIC 6.3 requires special context data similar to GPIO and Generic
233 Serial Bus as it needs to know the internal PCC buffer and its length as
234 well as the PCC channel index when the opregion handler is being executed
235 by the OSPM. Adds support for the special context data needed by PCC
236 Opregion. Submitted by Sudeep Holla <sudeep.holla (a] arm.com>
237
238 2) iASL Compiler/Disassembler and ACPICA tools:
239
240 iASL: Completed compiler support for the NHLT ACPI table.
241
242 iASL/NHLT table: Fixed a reported problem where a fault would occur
243 during disassembly of a "Linux-Specific" section if the "Specific Data"
244 part was not present.
245
246 iASL: Added full support (compiler and disassembler) for the AGDI ACPI
247 table. Contributed by: Ilkka Koskinen <ilkka (a] os.amperecomputing.com>.
248
249 iASL: Added full support for the TDEL ACPI table.
250
251 iASL table compiler: FADT support updates:
252 1) Allow the 32-bit DSDT address to be zero.
253 2) Issue error if both the 32-bit and 64-bit DSDT addresses are zero.
254
255 iASL: Fix unaligned accesses to local cache allocations. Contributed by
256 jrtc27.
257
258 iASL: Open binary input files in binary mode, not text mode Affects
259 binary input AML files, as well as binary data table files, for
260 disassembly.
261
262 ----------------------------------------
263 30 September 2021. Summary of changes for version 20210930:
264
265 This release is available at https://acpica.org/downloads
266
267 1) ACPICA kernel-resident subsystem:
268
269 Hardware: Avoid evaluating methods too early during system resume. During
270 wakeup from system-wide sleep states, AcpiGetSleepTypeData() is called
271 and it tries to get memory from the OS in order to evaluate a control
272 method, but if KFENCE is enabled in the Linux kernel, the memory
273 allocation attempt causes an IRQ work to be queued and a self-IPI to be
274 sent to the CPU running the code which requires the memory controller to
275 be ready, so if that happens too early in the wakeup path, it doesn't
276 work.
277
278 Prevent that from taking place by calling AcpiGetSleepTypeData() for S0
279 upfront, when preparing to enter a given sleep state, and saving the data
280 obtained by it for later use during system wakeup.
281
282 Added a new _OSI string, "Windows 2020". Posted by superm1.
283
284 2) iASL Compiler/Disassembler and ACPICA tools:
285
286 iASL compiler: Updated the check for usage of _CRS, _DIS, _PRS, and _SRS
287 objects:
288 New/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
293 requires _CRS and _SRS)
294 4) If _SRS is present, probably should have a _DIS (Remark only)
295
296 iASL table disassembler: Added disassembly support for the NHLT ACPI
297 table. Note: support for Vendor-defined microphone arrays and SNR
298 extensions are not supported at this time -- mostly due to a lack of
299 example tables. Actual compiler support for NHLT is forthcoming.
300
301 Added a new subtable type for ACPI 6.4 SRAT Generic Port Affinity. It
302 uses the same subtable structure as the existing Generic Initiator
303 Affinity type.
304
305 Added the flag for online capable in the MADT, introduced in ACPI 6.3.
306 Posted by superm1.
307
308 3) ACPICA documentation: Updated the legal info (that appears at the
309 start of the Documents) to clarify distribution rights that are granted.
310
311
312 ----------------------------------------
313 30 July 2021. Summary of changes for version 20210730:
314
315 This release is available at https://acpica.org/downloads
316
317 1) ACPICA kernel-resident subsystem:
318
319 2) iASL Compiler/Disassembler and ACPICA tools:
320
321 iasl: 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
326 A warning will be issued for each of these cases.
327 Note: For existing ASL/projects, these warnings may be disabled by
328 specifying this on the command line:
329 "-vw 3141"
330
331 iASL Table Disassembler/Table compiler: Fix for WPBT table with no
332 command-line arguments. Handle the case where the Command-line
333 Arguments table field does not exist (zero).
334
335 Headers: Add new DBG2 Serial Port Subtypes
336 The Microsoft Debug Port Table 2 (DBG2) specification revision
337 September 21, 2020 comprises additional Serial Port Subtypes [1].
338 Reflect that in the actbl1.h header file. Submitted by:
339 semihalf-wojtas-marcin
340
341 iASL: Add full support for the AEST table (data compiler)
342 Includes support in the table compiler and the disassembler.
343
344 Add PRMT module header to facilitate parsing.
345 This structure is used in to parse PRMT in other Operating Systems
346 that relies on using subtable headers in order to parse ACPI tables.
347 Although the PRMT doesn't have "subtables" it has a list of module
348 information structures that act as subtables.
349
350 iASL: Table disassembler: Add missing strings to decode subtable types.
351 Includes the MADT and CEDT tables.
352
353
354 ----------------------------------------
355 04 June 2021. Summary of changes for version 20210604:
356
357 1) ACPICA kernel-resident subsystem:
358
359 Cleaned up (delete) the context mutex during local address handler object
360 deletion.
361
362 Fixed a memory leak caused by the _CID repair function.
363
364 Added support for PlatformRtMechanism OperationRegion handler. Adds a new
365 utility function, AcpiUtConvertUuidToString. Writing a buffer to a
366 PlatformRtMechanism fieldunit invokes a bidirectional transaction. The
367 input buffer contains 26 bytes containing 9 bytes of status, a command
368 byte and a 16-byte UUID. This change will simply pass this incoming
369 buffer to a handler registered by the OS.
370
371 2) iASL Compiler/Disassembler and ACPICA tools:
372
373 Added full support for the PRMT ACPI table (Platform Runtime Mechanism
374 Table). Includes support in the iASL compiler, the disassembler, and the
375 template generator.
376
377 Added full support for the BDAT (BIOS Data ACPI Table) ACPI table.
378
379 Added full support for the RGRT (Regulatory Graphics Resource Table) ACPI
380 table.
381
382 Added full support for the SVKL (Storage Volume Key Location Table) ACPI
383 table. Header file support from Kuppuswamy Sathyanarayanan
384 <sathyanarayanan.kuppuswamy (a] linux.intel.com>.
385
386 Completed full support for the IVRS (I/O Virtualization Reporting
387 Structure) ACPI table. Added compiler support for IVRS, updated
388 disassembler support. Adds a new utility, UtIsIdInteger, to determine if
389 a HID/CID is an integer or a string.
390
391 Headers: Added more structs to the CEDT table: CXL fixed memory window
392 structure.
393
394 ACPI 6.4: MADT: added Multiprocessor Wakeup Mailbox Structure.
395
396 ----------------------------------------
397 31 March 2021. Summary of changes for version 20210331:
398
399 This release is available at https://acpica.org/downloads, and includes
400 all ACPI 6.4 support
401
402 1) ACPICA kernel-resident subsystem:
403 ACPI 6.4: iASL: deprecate DDBHandleObj keyword
404 Always create namespace nodes using AcpiNsCreateNode(). ACPICA is
405 allocating an object using kmalloc(), but then frees it
406 using kmem_cache_free(<"Acpi-Namespace" kmem_cache>). This is wrong.
407 Fixed a race condition in generic serial bus operation region handler.
408 Fixed by Hans de Goede.
409
410 2) iASL Compiler/Disassembler and ACPICA tools:
411
412 ACPI 6.4: NFIT: add Location Cookie field
413 ACPI 6.4: HMAT: add new fields/flags
414 ACPI 6.4: Add new flags in SRAT
415 ACPI 6.4: add SDEV secure access components
416 ACPI 6.4: add Csi2Bus resource template
417 ACPI 6.4: add support for PHAT table
418 ACPI 6.4: add support for PMTT table
419 Add disassembly support for the IVRS table. Compilation of the table is
420 not yet complete.
421 Fixed a potential infinite loop due to type mismatch. The for-loop is
422 using a UINT8 counter and comparing the upper
423 limit against a UINT32 AslGbl_ExpectedMessagesIndex maximum. In
424 the case where AslGbl_ExpectedMessagesIndex is > 255 the counter i
425 will wrap around to zero and the loop will never exit. I suspect
426 the AslGbl_ExpectedMessagesIndex is never that high, but fixing
427 this does future proof the code and cleans up static analysis
428 warnings.Colin King.
429 iASL/TableCompiler: update it with IORT table E.b revision changes. From
430 shamiali2008.
431 iASL/TableCompiler: Add compilation support for the VIOT table. Signed-
432 off-by: Jean-Philippe Brucker.
433 iASL/TableCompiler: Add compilation support for CEDT table. Also, update
434 the CEDT template.
435
436 ----------------------------------------
437 05 January 2021. Summary of changes for version 20210105:
438
439 This release is available at https://acpica.org/downloads
440
441
442 1) ACPICA kernel-resident subsystem:
443
444 Updated all copyrights to 2021. This affects all ACPICA source code
445 modules.
446
447 2) iASL Compiler/Disassembler and ACPICA tools:
448
449 ASL test suite (ASLTS): Updated all copyrights to 2021.
450
451 Tools and utilities: Updated all signon copyrights to 2021.
452
453 iASL Table Compiler: Removed support for obsolete ACPI tables: VRTC,
454 MTMR. Al Stone.
455
456
457 ----------------------------------------
458 17 December 2020. Summary of changes for version 20201217:
459
460 This release is available at https://acpica.org/downloads
461
462
463 1) ACPICA kernel-resident subsystem:
464
465 Note: The implementation of ACPI 6.4 is underway, and is expected to be
466 mostly finished next month, when ACPI 6.4 is released.
467
468 From qzed:- fixed-ae-class-macros. Fix exception code class checks. Added
469 several new macros, such as ACPI_CNTL_EXCEPTION(Status) in order to
470 enable this.
471
472 AcpiExec/iASL/AcpiHelp: Added a few changes for support of GCC 10.2.0.
473 These included a few casts, as well as a null pointer check.
474
475 Fix -Wfallthrough: GCC 7.1 gained -Wimplicit-fallthrough to warn on
476 implicit fallthrough, as well as __attribute__((__fallthrough__)) and
477 comments to explicitly denote that cases of fallthrough were intentional.
478 Clang also supports this warning and statement attribute, but not the
479 comment form. Added a new macro, ACPI_FALLTHROUGH to support this feature
480 of GCC. With assistance from @nickdesaulniers.
481
482 2) iASL Compiler/Disassembler and ACPICA tools:
483
484 Added improvement to method call analysis by saving the return type and
485 relaxing certain cases of type checking.
486
487 iASL Table Compiler: Improved info messages. Added a message to the -T
488 option for when the default template (DSDT) is used.
489 Also added a note for when multiple SSDTs are created with a DSDT that
490 the SSDTs are created in the same file as the DSDT.
491
492
493 ----------------------------------------
494
495 13 November 2020. Summary of changes for version 20201113:
496
497 This release is available at https://acpica.org/downloads
498
499
500 1) ACPICA kernel-resident subsystem:
501
502 Interpreter: fixed a memory leak by using use existing buffer in _HID
503 repair. There was a memory leak that occurred when a _CID object is
504 defined as a package containing string objects. When _CID is checked for
505 any possible repairs, it calls a helper function to repair _HID (because
506 _CID basically contains multiple _HID entries). The _HID repair function
507 assumes that string objects are standalone objects that are not contained
508 inside of any packages. The _HID repair function replaced the string
509 object with a brand new object and attempted to delete the old object by
510 decrementing the reference count of the old object. Strings inside of
511 packages have a reference count of 2 so the _HID repair function leaves
512 this object in a dangling state and causes a memory leak. Instead of
513 allocating a brand new object and removing the old object, use the
514 existing object when repairing the _HID object.
515
516 Added function trace macros to improve namespace debugging. The namespace
517 repair mechanism does not have function tracing macros. Add several trace
518 macros to improve debuggability.
519
520 Handle "orphan" _REG methods for GPIO OpRegions. Before this change
521 AcpiEvExecuteRegMethods() had special handling to handle "orphan" (no
522 matching OpRegion declared) _REG methods for EC nodes. On Intel Cherry
523 Trail devices there are 2 possible ACPI OpRegions for accessing GPIOs.
524 The standard GeneralPurposeIo OpRegion and the Cherry Trail - specific
525 UserDefined 0x9X OpRegions. Having 2 different types of OpRegions leads
526 to potential issues with checks for OpRegion availability, or in other
527 words checks if _REG has been called for the OpRegion which the ACPI code
528 wants to use. Except for the "orphan" EC handling, ACPICA core does not
529 call _REG on an ACPI node which does not define an OpRegion matching the
530 type being registered; and the reference design DSDT, from which most
531 Cherry Trail DSDTs are derived, does not define GeneralPurposeIo, nor
532 UserDefined(0x93) OpRegions for the GPO2 (UID 3) device, because no pins
533 were assigned ACPI controlled functions in the reference design. Together
534 this leads to the perfect storm, at least on the Cherry Trail based
535 Medion Akayo E1239T. This design does use a GPO2 pin from its ACPI code
536 and has added the Cherry Trail specific UserDefined(0x93) opregion to its
537 GPO2 ACPI node to access this pin. But it uses a "has _REG been called"
538 availability check for the standard GeneralPurposeIo OpRegion. This
539 clearly is a bug in the DSDT, but this does work under Windows. This
540 issue leads to the intel vbtn driver reporting the device always being in
541 tablet-mode at boot, even if it is in laptop mode. Which in turn causes
542 userspace to ignore touchpad events. So in other words, this issue causes
543 the 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
545 handlers.
546
547
548 2) iASL Compiler/Disassembler and ACPICA tools:
549
550 iASL: Added more info to namespace dump file (-ln option). In a separate
551 section of the dump file (after the main namespace dump), emit the full
552 pathname for each namespace node, its type, and the ASL filename and line
553 number where it is declared.
554
555 AcpiHelp: Added an option to display/decode iASL exceptions. Option is: -
556 x [Hex Value] where "Hex Value" is the iASL exception code. If Hex Value
557 is omitted, all iASL exceptions are displayed.
558
559 iASL: Use StringLiteral instead of StringData for some ASL macros. The
560 use of the stringData rule allows for some "string" oriented opcodes
561 (Such as ToString, ToHexString, etc.) None of which make sense with the
562 macros in question. This change modifies the StringData part of the rule
563 for these macros to a simple string literal - thus disallowing the use
564 of ToString, ToHexString, etc.
565 The following ASL operators (macros) are affected:
566 EisaId
567 Fprintf
568 Printf
569 ToUuid
570 Unicode
571 Note: The MS compiler requires the use of string literals for these
572 operators also.
573
574 iASL: Added a remark for an unknown UUID: ASL_MSG_UUID_NOT_FOUND. Search
575 the list of "known" UUIDs for the input to the ToUUID macro.
576
577 Added 5 new UUIDs to the known UUID table. All related to NVDIMM and the
578 NFIT table.
579
580
581 ----------------------------------------
582
583 25 September 2020. Summary of changes for version 20200925:
584
585 This release is available at https://acpica.org/downloads
586
587
588 1) ACPICA kernel-resident subsystem:
589
590 Preserve memory opregion mappings. The ACPICA's strategy with respect to
591 the handling of memory mappings associated with memory operation regions
592 is to avoid mapping the entire region at once which may be problematic at
593 least in principle (for example, it may lead to conflicts with
594 overlapping mappings having different attributes created by drivers). It
595 may also be wasteful, because memory opregions on some systems take up
596 vastchunks of address space while the fields in those regions actually
597 accessed by AML are sparsely distributed.
598
599 For this reason, a one-page "window" is mapped for a given opregion on
600 the first memory access through it and if that "window" does not cover an
601 address range accessed through that opregion subsequently, it is unmapped
602 and a new "window" is mapped to replace it. Next, if the new "window" is
603 not sufficient to access memory through the opregion in question in the
604 future, it will be replaced with yet another "window" and so on. That
605 may lead to a suboptimal sequence of memory mapping and unmapping
606 operations, for example if two fields in one opregion separated from each
607 other by a sufficiently wide chunk of unused address space are accessed
608 in an alternating pattern.
609
610 Added support for 64 bit risc-v compilation. Useful for acpica tools and
611 incorporating ACPICA into the Firmware Test Suite. Colin Ian King
612 <colin.king (a] canonical.com>.
613
614 Added support for SMBus predefined names (from SMBus Control Method
615 Interface Specification, Version 1.0, December 10, 1999. New predefined
616 names:
617 _SBA
618 _SBI
619 _SBR
620 _SBT
621 _SBW
622
623 AML Disassembler: Added a new command, "All <NameSeg>". This command will
624 evaluate all objects in the current namespace whose NameString contains
625 the input NameSeg as the last element of the NameString. Useful for
626 debugging.
627
628
629 2) iASL Compiler/Disassembler and ACPICA tools:
630
631 iASL: fixed a crash that occurred when predefined objects return packages
632 with lengths that exceed the initializer list.
633
634 iASL: added more detail to external resolution error message when
635 compiling multiple definition blocks.
636
637 iASL: added a remark for an attempt to create a nameseg or namestring
638 containing lower-case letters. This should prevent declaring multiple
639 namesegs or namestrings in an attempt to refer to different objects (with
640 different cases), but actually refer to the same object(s).
641
642 iASL: improve alias analysis by saving object type. If the alias is a
643 method type, the parameter count is also recorded.
644
645 AcpiExec: Increase the default loop timeout value. Was 1 second, is now
646 10 seconds. Prevents unnecessary timeouts when executing control methods
647 from the command line.
648
649 AcpiHelp/disassembler: Added a bunch of "known" UUIDs to the internal
650 list. 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
662 17 July 2020. Summary of changes for version 20200717:
663
664 This release is available at https://acpica.org/downloads
665
666
667 1) ACPICA kernel-resident subsystem:
668
669 Do not increment OperationRegion reference counts for field units. Recent
670 server firmware has revealed that this reference count can overflow on
671 large servers that declare many field units (thousands) under the same
672 OperationRegion. This occurs because each field unit declaration will add
673 a reference count to the source OperationRegion. This release solves the
674 reference count overflow for OperationRegion objects by preventing
675 fieldUnits from incrementing their parent OperationRegion's reference
676 count.
677
678 Replaced one-element arrays with flexible-arrays, which were introduced
679 in C99.
680
681 Restored the readme file containing the directions for generation of
682 ACPICA from source on MSVC 2017. Updated the file for MSVC 2017. File is
683 located at: generate/msvc2017/readme.txt
684
685 2) iASL Compiler/Disassembler and ACPICA tools:
686
687 iASL: Fixed a regression found in version 20200214. Prevent iASL from
688 emitting an extra byte of garbage data when control methods declared a
689 single parameter type without using braces. This extra byte is known to
690 cause a blue screen on the Windows AML interpreter.
691
692 iASL: Made a change to allow external declarations to specify the type of
693 a named object even when some name segments are not defined.
694 This change allows the following ASL code to compile (When DEV0 is not
695 defined or not defined yet):
696
697 External (\_SB.DEV0.OBJ1, IntObj)
698 External (\_SB.DEV0, DeviceObj)
699
700 iASL: Fixed a problem where method names in "Alias ()" statement could be
701 misinterpreted. They are now interpreted correctly as method invocations.
702
703 iASL: capture a method parameter count (Within the Method info segment,
704 as well as the argument node) when using parameter type lists.
705
706 ----------------------------------------
707
708
709 28 May 2020. Summary of changes for version 20200528:
710
711
712 1) ACPICA kernel-resident subsystem:
713
714 Removed old/obsolete Visual Studio files which were used to build the
715 Windows versions of the ACPICA tools. Since we have moved to Visual
716 Studio 2017, we are no longer supporting Visual Studio 2006 and 2009
717 project files. The new subdirectory and solution file are located at:
718
719 acpica/generate/msvc2017/AcpiComponents.sln
720
721
722 2) iASL Compiler/Disassembler and ACPICA tools:
723
724 iASL: added support for a new OperationRegion Address Space (subtype):
725 PlatformRtMechanism. Support for this new keyword is being released for
726 early prototyping. It will appear in the next release of the ACPI
727 specification.
728
729 iASL: do not optimize the NameString parameter of the CondRefOf operator.
730 In the previous iASL compiler release, the NameString parameter of the
731 CondRefOf was optimized. There is evidence that some implementations of
732 the AML interpreter do not perform the recursive search-to-parent search
733 during the execution of the CondRefOf operator. Therefore, the CondRefOf
734 operator behaves differently when the NameString parameter is a single
735 name segment (a NameSeg) as opposed to a full NamePath (starting at the
736 root scope) or a NameString containing parent prefixes.
737
738 iASL: Prevent an inadvertent remark message. This change prevents a
739 remark if within a control method the following exist:
740 1) An Operation Region is defined, and
741 2) A Field operator is defined that refers to the region.
742 This happens because at the top level, the Field operator does not
743 actually create a new named object, it simply references the operation
744 region.
745
746 Removed support for the acpinames utility. The acpinames was a simple
747 utility used to populate and display the ACPI namespace without executing
748 any AML code. However, ACPICA now supports executable opcodes outside of
749 control methods. This means that executable AML opcodes such as If and
750 Store opcodes need to be executed during table load. Therefore, acpinames
751 would need to be updated to match the same behavior as the acpiexec
752 utility 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,
756 execute the following command from the command line:
757
758 acpiexec -b "n" [aml files]
759
760 ----------------------------------------
761
762
763 30 April 2020. Summary of changes for version 20200430:
764
765 1) ACPICA kernel-resident subsystem:
766
767 Cleaned up the coding style of a couple of global variables
768 (AcpiGbl_NextCmdNum and AcpiProtocolLengths) caught by static analyzers.
769 AcpiProtocolLengths was made static, and the definition of
770 AcpiGbl_NextCmdNum was moved to acglobal.h.
771
772
773 2) iASL Compiler/Disassembler and ACPICA tools:
774
775 iASL DataTable Compiler: Fixed a segfault on errors that aren't directly
776 associated with a field.
777
778 Disassembler: has been made more resilient so that it will continue to
779 parse AML even if the AML generates ACPI namespace errors. This enables
780 iASL to disassemble some AML that may have been compiled using older
781 versions of iASL that no longer compile with newer versions of iASL.
782
783 iASL: Fixed the required parameters for _NIH and _NIG. Previously, there
784 was a mixup where _NIG required one parameter and _NIH required zero
785 parameters. This change swaps these parameter requirements. Now it is
786 required that _NIH must be called with one parameter and _NIG requires
787 zero parameters.
788
789 iASL: Allow use of undefined externals as long as they are protected by
790 an if (CondRefOf (...)) block when compiling multiple definition blocks.
791
792 iASL: Fixed the type override behavior of named objects that are declared
793 as External. External declarations will no longer override the type of
794 the actual definition if it already exists.
795
796 AcpiNames: Added setargv.obj to the MSVC 2017 link sequence to enable
797 command line wildcard support on Windows. Note: the AcpiNames utility is
798 essentially redundant with the AcpiExec utility (using the "namespace"
799 command) and is therefore deprecated. It will be removed in future
800 releases of ACPICA.
801
802 Disassembler: ignore AE_ALREADY_EXISTS status when parsing create*
803 operators. The disassembler is intended to emit existing ASL code as-is.
804 Therefore, error messages emitted during disassembly should be ignored or
805 handled in a way such that the disassembler can continue to parse the
806 AML. This change ignores AE_ALREADY_EXISTS errors during the deferred Op
807 parsing for create operators in order to complete parsing ASL termlists.
808
809 iASL DataTable Compiler: IVRS table: fix potentially uninitialized
810 variable warning. Some compilers catch potential uninitialized variables.
811 This is done by examining branches of if/else statements. This change
812 replaces an "else if" with an "else" to fix the uninitialized variable
813 warning.
814
815
816 ----------------------------------------
817 26 March 2020. Summary of changes for version 20200326:
818
819
820 1) ACPICA kernel-resident subsystem:
821
822 Performed a code clean-up to prevent build errors on early versions of
823 GCC-10.
824
825 Added the NHLT table signature. iASL data table compiler/disassembler
826 support for this table is coming soon.
827
828
829 2) iASL Compiler/Disassembler and ACPICA tools:
830
831 AcpiExec: Fixed several problems with the namespace initialization file
832 (-fi<filename> option). Includes fixes to prevent AE_ALREADY_EXISTS
833 errors, several seg faults, and enhancements to line parsing within the
834 init file. In addition, each object found in the init file and it's new
835 value is displayed, as well as any such entries that do not have a
836 corresponding name in the namespace. For reference, the syntax for the
837 various 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
845 iASL: Added a custom iASL macro __EXPECT__(iASL-Error-Code). This macro
846 can be used anywhere in a given ASL file to configure iASL to expect an
847 iASL compiler error code on the line where this macro was placed. If the
848 error code does not exist, an error is generated. This is intended to be
849 used for ACPICA's ASL test suite, but can be used by ASL developers as
850 well.
851
852 iASL: table compiler: Implemented IVRS IVHD type 11h parsing. The AMD
853 IVRS table parsing supported only IVHD type 10h structures. Parsing an
854 IVHD type 11h caused the iasl to report unknown subtable type. Add
855 necessary structure definition for IVHD type 11h and apply correct
856 parsing method based on subtable type. Micha? ?ygowski.
857
858 iASL: table compiler: Fixed IVRS table IVHD type 10h reserved field name
859 According to AMD IOMMU Specification Revision 3.05 the reserved field
860 should be IOMMU Feature Reporting. Change the name of the field to the
861 correct one. Micha? ?ygowski.
862
863 acpiexec: removed redeclaration of AcpiGbl_DbOpt_NoRegionSupport. Patch
864 based on suggestions by David Seifert and Benjamin Berg.
865
866 iASL: table compiler: removed an unused variable (DtCompilerParserResult)
867 causing linking errors. Patch based on suggestions by David Seifert and
868 Benjamin Berg.
869
870 iASL: table compiler: make LexBuffer static to avoid linking errors in
871 newer compilers. Patch based on suggestions by David Seifert and Benjamin
872 Berg.
873
874 iASL: fixed type matching between External and Named objects. External
875 object types can only be expressed with ACPI object type values that are
876 defined in the ACPI spec. However, iASL uses ACPI object type values that
877 are local to ACPICA in addition to the values defined in the ACPI spec.
878 This change implements type matching to map some object type values
879 specific to ACPICA to ones that are defined in the ACPI spec.
880
881 iASL: Dropped the type mismatch compiler error that can arise from
882 External declarations to a warning. This warning can occur when there is
883 a type difference between the external declaration and the actual object
884 declaration (when compiling multiple files/modules simultaneously).
885
886 iASL: removed an incorrect error message regarding externals. This change
887 removes an incorrect error that is emitted when a duplicate external
888 declaration does not contain a type that opens a scope. This is incorrect
889 because the duplicate external with conflicting types are already caught
890 by iASL and it doesn't make any sense to enforce what this conflicting
891 type should be.
892
893 AcpiXtract: fix AX_IS_TABLE_BLOCK_HEADER macro. This macro needs to be
894 surrounded by parens. Otherwise, a logical statement that applies a
895 logical not operator to this macro could result in a computation that
896 applies the operator to the left side of the logical and but not the
897 right. Reported-by: John Levon <john.levon (a] joyent.com>
898
899 Fixed a problem with the local version of sprint(): On 32-bit, the
900 provided sprintf() is non-functional: with a size of ACPI_UINT32_MAX,
901 String + Size will wrap, meaning End < Start, and
902 AcpiUtBoundStringOutput() will never output anything as a result. The
903 symptom seen of this was acpixtract failing to output anything -- with a
904 custom build that included utprint.c. Signed-off-by: John Levon
905 <john.levon (a] joyent.com>
906
907 iASL: Changed the "PlatformCommChannel" ASL keyword to "PCC", as per the
908 ACPI specification.
909
910
911 ----------------------------------------
912 14 February 2020. Summary of changes for version 20200214:
913
914
915 1) ACPICA kernel-resident subsystem:
916
917 Enable sleep button on ACPI legacy wake: Hibernation (S4) is triggered
918 in a guest when it receives a sleep trigger from the hypervisor. When the
919 guest resumes from this power state, it does not see the SleepEnabled
920 bit. In other words, the sleepHibernation (S4) is triggered in a guest
921 when it receives a sleep trigger from the hypervisor. When the guest
922 resumes from this power state, it does not see the SleepEnabled bit. In
923 other words, the sleep button is not enabled on waking from an S4 state.
924 This causes subsequent invocation of sleep state to fail since the
925 guest.button is not enabled on waking from an S4 state. This causes
926 subsequent invocation of sleep state to fail in the guest. Fix this
927 problem by enabling the sleep button in ACPI legacy wake. From Anchal
928 Agarwal <anchalag (a] amazon.com>.
929
930 Implemented a new external interface, AcpiAnyGpeStatusSet (). To be used
931 for checking the status bits of all enabled GPEs in one go. It is needed
932 to distinguish spurious SCIs from genuine ones when deciding whether or
933 not to wake up the system from suspend-to-idle.
934
935 Generic Makefiles: replace HOST name with ACPI_HOST: Some machines may be
936 using HOST in their environment to represent the host name for their
937 machines. Avoid this problem by renaming this variable from HOST to
938 ACPI_HOST.
939
940 MSVC 2017 project files: Enable multiprocessor generation to improve
941 build performance.
942
943 Added a macro to get the byte width of a Generic Address structure. New
944 ACPI_ACCESS_BYTE_WIDTH is in addition to the existing
945 ACPI_ACCESS_BIT_WIDTH. From Mika Westerberg.
946
947
948 2) iASL Compiler/Disassembler and ACPICA tools:
949
950 iASL: Implemented full support for the (optional, rarely used) ReturnType
951 and ParameterTypesList for the Method, Function, and External operators.
952 For Method declarations, the number of individual ParameterTypes must
953 match the declaration of the number of arguments (NumArgs). This also
954 Fixes a problem with the External operator where extra/extraneous bytes
955 were emitted in the AML code if the optional ReturnType/ParameterTypes
956 were specified for a MethodObj declaration.
957 New error message:
958 1) Method NumArgs count does not match length of ParameterTypes list
959
960 iASL: Implemented detection of type mismatches between External
961 declarations and named object declarations. Also, detect type mismatches
962 between multiple External declarations of the same Name.
963 New error messages:
964 1) Type mismatch between external declaration and actual object
965 declaration detected
966 2) Type mismatch between multiple external declarations detected
967
968 iASL: Implemented new error messages for External operators that specify
969 a ReturnType and/or ParameterTypesList for any object type other than
970 control methods (MethodObj).
971 New error messages:
972 1) Return type is only allowed for Externals declared as MethodObj
973 2) Parameter type is only allowed for Externals declared as MethodObj
974
975 iASL: Implemented two new remark/warning messages for ASL code that
976 creates named objects from within a control method. This is very
977 inefficient since the named object must be created and deleted each time
978 the method is executed.
979 New messages:
980 1) Creation of named objects within a method is highly inefficient, use
981 globals or method local variables instead (remark)
982 2) Static OperationRegion should be declared outside control method
983 (warning)
984
985 iASL: Improved illegal forward reference detection by adding support to
986 detect forward-reference method invocations.
987
988 iASL: Detect and issue an error message for NameStrings that contain too
989 many individual NameSegs (>255). This is an AML limitation that is
990 defined in the ACPI specification.
991 New message:
992 1) NameString contains too many NameSegs (>255)
993
994 acpidump: windows: use GetSystemFirmwareTable API for all tables except
995 SSDT. By using this API, acpidump is able to get all tables in the XSDT
996
997 iASL: Removed unused parser file and updated msvc2017 project files.
998 Removed the obsolete AslCompiler.y from the repository.
999
1000 iASL: msvc2017: Fixed macros in the file dependency list to prevent
1001 unnecessary rebuilds. Replace %(Directory) with %(RelativeDir).
1002
1003 Disassembler: Prevent spilling error messages to the output file. All
1004 errors are directed to the console instead. These error messages
1005 prevented re-compilation of the resulting disassembled ASL output file
1006 (.DSL).
1007
1008
1009 ----------------------------------------
1010 10 January 2020. Summary of changes for version 20200110:
1011
1012
1013 1) ACPICA kernel-resident subsystem:
1014
1015 Updated all copyrights to 2020. This affects all ACPICA source code
1016 modules.
1017
1018
1019 2) iASL Compiler/Disassembler and ACPICA tools:
1020
1021 ASL test suite (ASLTS): Updated all copyrights to 2020.
1022
1023 Tools and utilities: Updated all signon copyrights to 2020.
1024
1025 iASL: fix forward reference analysis for field declarations. Fixes
1026 forward reference analysis for field declarations by searching the
1027 parent scope for the named object when the object is not present in
1028 the current scope.
1029
1030 iASL: Improved the error output for ALREADY_EXISTS errors. Now, the
1031 full pathname of the name that already exists is printed.
1032
1033 iASL: Enhance duplicate Case() detection for buffers. Add check for
1034 buffers with no initializer list (these buffers will be filled with
1035 zeros at runtime.)
1036
1037
1038 ----------------------------------------
1039 13 December 2019. Summary of changes for version 20191213:
1040
1041
1042 1) ACPICA kernel-resident subsystem:
1043
1044 Return a Buffer object for all fields created via the CreateField
1045 operator. Previously, an Integer would be returned if the size of
1046 the field was less than or equal to the current size of an Integer.
1047 Although this goes against the ACPI specification, it provides
1048 compatibility with other ACPI implementations. Also updated the
1049 ASLTS test suite to reflect this new behavior.
1050
1051 2) iASL Compiler/Disassembler and ACPICA tools:
1052
1053 iASL: Implemented detection of (and throw an error for) duplicate
1054 values for Case statements within a single Switch statement. Duplicate
1055 Integers, Strings, and Buffers are supported.
1056
1057 iASL: Fix error logging issue during multiple file compilation --
1058 Switch to the correct input file during error node creation.
1059
1060 iASL: For duplicate named object creation, now emit an error instead
1061 of a warning - since this will cause a runtime error.
1062
1063 AcpiSrc: Add unix line-ending support for non-Windows builds.
1064
1065 iASL: Add an error condition for an attempt to create a NameString
1066 with > 255 NameSegs (the max allowable via the AML definition).
1067
1068
1069 ----------------------------------------
1070 18 October 2019. Summary of changes for version 20191018:
1071
1072
1073 1) ACPICA kernel-resident subsystem:
1074
1075 Debugger: added a new command: ?Fields [address space ID]?. This command
1076 dumps the contents of all field units that are defined within the
1077 namespace with a particular address space ID.
1078
1079 Modified the external interface AcpiLoadTable() to return a table index.
1080 This 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
1086 Implemented a new external interface: AcpiUnloadTable() This new function
1087 takes a table index as an argument and unloads the table. Useful for
1088 debugging only.
1089 ACPI_STATUS
1090 AcpiUnloadTable (
1091 UINT32 TableIndex))
1092
1093 Ported the AcpiNames utility to use the new table initialization
1094 sequence. The utility was broken before this change. Also, it was
1095 required to include most of the AML interpreter into the utility in order
1096 to process table initialization (module-level code execution.)
1097
1098 Update for results from running Clang V8.0.1. This fixes all "dead
1099 assignment" warnings. There are still several "Dereference of NULL
1100 pointer" warnings, but these have been found to be false positive
1101 warnings.
1102
1103
1104 2) iASL Compiler/Disassembler and ACPICA tools:
1105
1106 iASL: numerous table compiler changes to ensure that the usage of
1107 yacc/bison syntax is POSIX-compliant.
1108
1109 iASL/disassembler: several simple bug fixes in the data table
1110 disassembler.
1111
1112 Acpiexec: expanded the initialization file (the -fi option) to initialize
1113 strings, buffers, packages, and field units.
1114
1115
1116 ----------------------------------------
1117 16 August 2019. Summary of changes for version 20190816:
1118
1119 This release is available at https://acpica.org/downloads
1120
1121
1122 1) ACPICA kernel-resident subsystem:
1123
1124 Modified the OwnerId mechanism to allow for more Owner Ids. The previous
1125 limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
1126 exceptions on machines with a large number of initialization threads,
1127 many CPU cores and nested initialization control methods.
1128
1129 Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
1130 checking if the given GPE (as represented by a GPE device handle and a
1131 GPE number) is currently active and dispatching it (if that's the case)
1132 outside of interrupt context.
1133
1134 Table load: exit the interpreter before initializing objects within the
1135 new table This prevents re-acquiring the interpreter lock when loading
1136 tables
1137
1138 Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
1139 uk Kim
1140
1141 Macros: removed pointer math on a null pointer. Causes warnings on some
1142 compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
1143 instead of using arithmetic.
1144
1145 Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
1146 across all "printf-like" internal functions. Also, cleanup all calls to
1147 such functions (both in 32-bit mode and 64-bit mode) now that they are
1148 analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
1149
1150
1151 2) iASL Compiler/Disassembler and ACPICA tools:
1152
1153 iASL: implemented a new data table compiler flex/bison front-end. This
1154 change is internal and is not intended to result in changes to the
1155 compiled code. This new compiler front-end can be invoked using the -tp
1156 option for now, until the old mechanism is removed.
1157
1158 ASLTS: Implemented a new data table compiler test suite. This test suite
1159 generates all table templates and compile/disassemble/re-compile/binary-
1160 compare each file.
1161
1162 iASL: return -1 if AML files were not generated due to compiler errors
1163
1164 iASL: added a warning on use of the now-legacy ASL Processor () keyword.
1165
1166 iASL: added an error on _UID object declaration that returns a String
1167 within a Processor () declaration. A _UID for a processor must be an
1168 Integer.
1169
1170 iASL: added a null terminator to name strings that consist only of
1171 multiple parent prefixes (^)
1172
1173 iASL: added support to compile both ASL and data table files in a single
1174 command.
1175
1176 Updated the tool generation project files that were recently migrated to
1177 MSVC 2017 to eliminate all new warnings. The new project files appear in
1178 the directory \acpica\generate\msvc2017. This change effectively
1179 deprecates the older project files in \acpica\generate\msvc9.
1180
1181
1182 ----------------------------------------
1183 03 July 2019. Summary of changes for version 20190703:
1184
1185
1186 1) ACPICA kernel-resident subsystem:
1187
1188 Remove legacy module-level support code. There were still some remnants
1189 of the legacy module-level code executions. Since we no longer support
1190 this option, this is essentially dead code and has been removed from the
1191 ACPICA source.
1192
1193 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1194 scope. If these named objects are declared outside the root scope, they
1195 will not be invoked by any host Operating System.
1196
1197 Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
1198 one) can be enabled in two situations. First, the GPEs with existing _Lxx
1199 and _Exx methods are enabled implicitly by ACPICA during system
1200 initialization. Second, the GPEs without these methods (like GPEs listed
1201 by _PRW objects for wakeup devices) need to be enabled directly by the
1202 code that is going to use them (e.g. ACPI power management or device
1203 drivers).
1204
1205 In the former case, if the status of a given GPE is set to start with,
1206 its handler method (either _Lxx or _Exx) needs to be invoked to take care
1207 of the events (possibly) signaled before the GPE was enabled. In the
1208 latter case, however, the first caller of AcpiEnableGpe() for a given GPE
1209 should not be expected to care about any events that might be signaled
1210 through it earlier. In that case, it is better to clear the status of
1211 the GPE before enabling it, to prevent stale events from triggering
1212 unwanted actions (like spurious system resume, for example).
1213
1214 For this reason, modify AcpiEvAddGpeReference() to take an additional
1215 boolean argument indicating whether or not the GPE status needs to be
1216 cleared when its reference counter changes from zero to one and make
1217 AcpiEnableGpe() pass TRUE to it through that new argument.
1218
1219
1220 2) iASL Compiler/Disassembler and ACPICA tools:
1221
1222 The tool generation process has been migrated to MSVC 2017, and all
1223 project files have been upgraded. The new project files appear in the
1224 directory \acpica\generate\msvc2017. This change effectively deprecates
1225 the older project files in \acpica\generate\msvc9.
1226
1227 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
1228 scope. If these named objects are declared outside the root scope, they
1229 will not be invoked by any host Operating System
1230
1231 ----------------------------------------
1232 09 May 2019. Summary of changes for version 20190509:
1233
1234
1235 1) ACPICA kernel-resident subsystem:
1236
1237 Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling
1238 them") that causes problems with Thunderbolt controllers to occur if a
1239 dock device is connected at init time (the xhci_hcd and thunderbolt
1240 modules crash which prevents peripherals connected through them from
1241 working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
1242 Dispatch active GPEs at init time") to get undone, so the problem
1243 addressed by commit ecc1165b8b74 appears again as a result of it.
1244
1245
1246 2) iASL Compiler/Disassembler and ACPICA tools:
1247
1248 Reverted iASL: Additional forward reference detection. This change
1249 reverts forward reference detection for field declarations. The feature
1250 unintentionally emitted AML bytecode with incorrect package lengths for
1251 some ASL code related to Fields and OperationRegions. This malformed AML
1252 can cause systems to crash
1253 during boot. The malformed AML bytecode is emitted in iASL version
1254 20190329 and 20190405.
1255
1256 iASL: improve forward reference detection. This change improves forward
1257 reference detection for named objects inside of scopes. If a parse object
1258 has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
1259 a named object that is declared later in the AML bytecode. This is
1260 allowed if the reference is inside of a method and the declaration is
1261 outside of a method like so:
1262
1263 DefinitionBlock(...)
1264 {
1265 Method (TEST)
1266 {
1267 Return (NUM0)
1268 }
1269 Name (NUM0,0)
1270 }
1271
1272 However, if the declaration and reference are both in the same method or
1273 outside any methods, this is a forward reference and should be marked as
1274 an error because it would result in runtime errors.
1275
1276 DefinitionBlock(...)
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
1289 iASL: Implemented additional buffer overflow analysis for BufferField
1290 declarations. Check if a buffer index argument to a create buffer field
1291 operation is beyond the end of the target buffer.
1292
1293 This 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
1303 validation 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
1309 Example:
1310 Name (BUF1, Buffer() {1,2})
1311 CreateField (BUF1, 7, 9, CF03) // 3: ERR
1312
1313 dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR
1314 Error 6165 - ^ Buffer index beyond end of
1315 target buffer
1316
1317
1318 ----------------------------------------
1319 05 April 2019. Summary of changes for version 20190405:
1320
1321
1322 1) ACPICA kernel-resident subsystem:
1323
1324 Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
1325 unconditionally clearing ACPI IRQs during suspend/resume") was added
1326 earlier to stop clearing of event status bits unconditionally on suspend
1327 and resume paths. Though this change fixed an issue on suspend path, it
1328 introduced regressions on several resume paths. In the case of S0ix,
1329 events are enabled as part of device suspend path. If status bits for the
1330 events are set when they are enabled, it could result in premature wake
1331 from S0ix. If status is cleared for any event that is being enabled so
1332 that any stale events are cleared out. In case of S0ix, events are
1333 enabled as part of device suspend path. If status bits for the events are
1334 set when they are enabled, it could result in premature wake from S0ix.
1335
1336 This change ensures that status is cleared for any event that is being
1337 enabled so that any stale events are cleared out.
1338
1339
1340 2) iASL Compiler/Disassembler and ACPICA tools:
1341
1342 iASL: Implemented an enhanced multiple file compilation that combines
1343 named objects from all input files to a single namespace. With this
1344 feature, any unresolved external declarations as well as duplicate named
1345 object declarations can be detected during compilation rather than
1346 generating errors much later at runtime. The following commands are
1347 examples 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 ----------------------------------------
1353 29 March 2019. Summary of changes for version 20190329:
1354
1355
1356 1) ACPICA kernel-resident subsystem:
1357
1358 Namespace support: Remove the address nodes from global list after method
1359 termination. The global address list contains pointers to namespace nodes
1360 that represent Operation Regions. This change properly removes Operation
1361 Region namespace nodes that are declared dynamically during method
1362 execution.
1363
1364 Linux: Use a different debug default than ACPICA. There was a divergence
1365 between Linux and the ACPICA codebases. In order to resolve this
1366 divergence, Linux now declares its own debug default in aclinux.h
1367
1368 Renamed some internal macros to improve code understanding and
1369 maintenance. The macros below all operate on single 4-character ACPI
1370 NameSegs, 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
1375 Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
1376 table.
1377
1378 Test suite: Update makefiles, add PCC operation region support
1379
1380
1381 2) iASL Compiler/Disassembler and Tools:
1382
1383 iASL: Implemented additional illegal forward reference detection. Now
1384 detect and emit an error upon detection of a forward reference from a
1385 Field to an Operation Region. This will fail at runtime if allowed to
1386 pass the compiler.
1387
1388 AcpiExec: Add an address list check for dynamic Operation Regions. This
1389 feature performs a sanity test for each node the global address list.
1390 This is done in order to ensure that all dynamic operation regions are
1391 properly removed from the global address list and no dangling pointers
1392 are left behind.
1393
1394 Disassembler: Improved generation of resource pathnames. This change
1395 improves the code that generates resource descriptor and resource tag
1396 pathnames. The original code used a bunch of str* C library functions
1397 that caused warnings on some compilers.
1398
1399 iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
1400 function can overwrite buffers if the calling code is not very careful.
1401 In the case of generating a module/table header, use of memmove is a
1402 better implementation.
1403
1404
1405 3) Status of new features that have not been completed at this time:
1406
1407 iASL: Implementing an enhanced multiple file compilation into a single
1408 namespace feature (Status): This feature will be released soon, and
1409 allows multiple ASL files to be compiled into the same single namespace.
1410 By doing so, any unresolved external declarations as well as duplicate
1411 named object declarations can be detected during compilation (rather than
1412 later during runtime). The following commands are examples that utilize
1413 this feature:
1414 iasl dsdt.asl ssdt.asl
1415 iasl dsdt.asl ssdt1.asl ssdt2.asl
1416 iasl dsdt.asl ssdt*.asl
1417
1418 ASL tutorial status: Feedback is being gathered internally and the
1419 current plan is to publish this tutorial on the ACPICA website after a
1420 final review by a tech writer.
1421
1422 ----------------------------------------
1423 15 February 2019. Summary of changes for version 20190215:
1424
1425
1426 0) Support for ACPI specification version 6.3:
1427
1428 Add PCC operation region support for the AML interpreter. This adds PCC
1429 operation region support in the AML interpreter and a default handler for
1430 acpiexec. The change also renames the PCC region address space keyword to
1431 PlatformCommChannel.
1432
1433 Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
1434 These methods provide OSPM with health information and device boot
1435 status.
1436
1437 PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
1438 defines if the trigger needs to be invoked by OSPM before or at the end
1439 of kernel crash dump processing/handling operation.
1440
1441 SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
1442 is used for describing devices such as heterogeneous processors,
1443 accelerators, GPUs, and IO devices with integrated compute or DMA
1444 engines.
1445
1446 MADT: Add support for statistical profiling in GICC. Statistical
1447 profiling extension (SPE) is an architecture-specific feature for ARM.
1448
1449 MADT: Add online capable flag. If this bit is set, system hardware
1450 supports enabling this processor during OS runtime.
1451
1452 New Error Disconnect Recover Notification value. There are a number of
1453 scenarios where system Firmware in collaboration with hardware may
1454 disconnect one or more devices from the rest of the system for purposes
1455 of error containment. Firmware can use this new notification value to
1456 alert OSPM of such a removal.
1457
1458 PPTT: New additional fields in Processor Structure Flags. These flags
1459 provide more information about processor topology.
1460
1461 NFIT/Disassembler: Change a field name from "Address Range" to "Region
1462 Type".
1463
1464 HMAT updates: make several existing fields to be reserved as well as
1465 rename subtable 0 to "memory proximity domain attributes".
1466
1467 GTDT: Add support for new GTDT Revision 3. This revision adds information
1468 for the EL2 timer.
1469
1470 iASL: Update the HMAT example template for new fields.
1471
1472 iASL: Add support for the new revision of the GTDT (Rev 3).
1473
1474
1475 1) ACPICA kernel-resident subsystem:
1476
1477 AML Parser: fix the main AML parse loop to correctly skip erroneous
1478 extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
1479 byte extended opcodes. If an error occurs during an AML table load, the
1480 AML parser will continue loading the table by skipping the offending
1481 opcode. This implements a "load table at any cost" philosophy.
1482
1483
1484 2) iASL Compiler/Disassembler and Tools:
1485
1486 iASL: Add checks for illegal object references, such as a reference
1487 outside of method to an object within a method. Such an object is only
1488 temporary.
1489
1490 iASL: Emit error for creation of a zero-length operation region. Such a
1491 region is rather pointless. If encountered, a runtime error is also
1492 implemented in the interpreter.
1493
1494 Debugger: Fix a possible fault with the "test objects" command.
1495
1496 iASL: Makefile: support parent directory filenames containing embedded
1497 spaces.
1498
1499 iASL: Update the TPM2 template to revision 4.
1500
1501 iASL: Add the ability to report specific warnings or remarks as errors.
1502
1503 Disassembler: Disassemble OEMx tables as actual AML byte code.
1504 Previously, these tables were treated as "unknown table".
1505
1506 iASL: Add definition and disassembly for TPM2 revision 3.
1507
1508 iASL: Add support for TPM2 rev 3 compilation.
1509
1510
1511 ----------------------------------------
1512 08 January 2019. Summary of changes for version 20190108:
1513
1514
1515 1) ACPICA kernel-resident subsystem:
1516
1517 Updated all copyrights to 2019. This affects all source code modules.
1518
1519
1520 2) iASL Compiler/Disassembler and Tools:
1521
1522 ASL test suite (ASLTS): Updated all copyrights to 2019.
1523
1524 Tools: Updated all signon copyrights to 2019.
1525
1526 AcpiExec: Added a new option to dump extra information concerning any
1527 memory leaks detected by the internal object/cache tracking mechanism. -
1528 va
1529
1530 iASL: Updated the table template for the TPM2 table to the newest version
1531 of the table (Revision 4)
1532
1533
1534 ----------------------------------------
1535 13 December 2018. Summary of changes for version 20181213:
1536
1537
1538 1) ACPICA Kernel-resident Subsystem:
1539
1540 Fixed some buffer length issues with the GenericSerialBus, related to two
1541 of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
1542 which are rarely seen in the field. For these, the LEN field of the ASL
1543 buffer is now ignored. Hans de Goede
1544
1545 Implemented a new object evaluation trace mechanism for control methods
1546 and data objects. This includes nested control methods. It is
1547 particularly useful for examining the ACPI execution during system
1548 initialization since the output is relatively terse. The flag below
1549 enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
1550 #define ACPI_LV_EVALUATION 0x00080000
1551
1552 Examples:
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
1562 Added two recently-defined _OSI strings. See
1563 https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
1564 osi.
1565 "Windows 2018"
1566 "Windows 2018.2"
1567
1568 Update for buffer-to-string conversions via the ToHexString ASL operator.
1569 A "0x" is now prepended to each of the hex values in the output string.
1570 This provides compatibility with other ACPI implementations. The ACPI
1571 specification is somewhat vague on this issue.
1572 Example output string after conversion:
1573 "0x01,0x02,0x03,0x04,0x05,0x06"
1574
1575 Return a run-time error for TermArg expressions within individual package
1576 elements. Although this is technically supported by the ASL grammar,
1577 other ACPI implementations do not support this either. Also, this fixes a
1578 fault if this type of construct is ever encountered (it never has been).
1579
1580
1581 2) iASL Compiler/Disassembler and Tools:
1582
1583 iASL: Implemented a new compile option (-ww) that will promote individual
1584 warnings and remarks to errors. This is intended to enhance the firmware
1585 build process.
1586
1587 AcpiExec: Implemented a new command-line option (-eo) to support the new
1588 object evaluation trace mechanism described above.
1589
1590 Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
1591 instead of a "unknown table" message.
1592
1593 AcpiHelp: 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
1595 used for "xx" and "x".
1596
1597 ----------------------------------------
1598 31 October 2018. Summary of changes for version 20181031:
1599
1600
1601 An Operation Region regression was fixed by properly adding address
1602 ranges to a global list during initialization. This allows OS to
1603 accurately check for overlapping regions between native devices (such as
1604 PCI) and Operation regions as well as checking for region conflicts
1605 between two Operation Regions.
1606
1607 Added support for the 2-byte extended opcodes in the code/feature that
1608 attempts to continue parsing during the table load phase. Skip parsing
1609 Device declarations (and other extended opcodes) when an error occurs
1610 during parsing. Previously, only single-byte opcodes were supported.
1611
1612 Cleanup: Simplified the module-level code support by eliminating a
1613 useless global variable (AcpiGbl_GroupModuleLeveCode).
1614
1615
1616 2) iASL Compiler/Disassembler and Tools:
1617
1618 iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
1619 could cause a fault in the preprocessor. This was an inadvertent side-
1620 effect from moving more allocations/frees to the local cache/memory
1621 mechanism.
1622
1623 iASL: Enhanced error detection by validating that all NameSeg elements
1624 within a NamePatch actually exist. The previous behavior was spotty at
1625 best, and such errors could be improperly ignored at compiler time (never
1626 at runtime, however. There are two new error messages, as shown in the
1627 examples below:
1628
1629 dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1)
1630 Error 6161 - ^ One or more objects within
1631 the Pathname do not exist (TTTT.BXXX)
1632
1633 dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
1634 Error 6160 - One or more prefix Scopes do not exist ^
1635 (BBBB.CBF1)
1636
1637 iASL: Disassembler/table-compiler: Added support for the static data
1638 table TPM2 revision 3 (an older version of TPM2). The support has been
1639 added for the compiler and the disassembler.
1640
1641 Fixed compilation of DOS format data table file on Unix/Linux systems.
1642 iASL now properly detects line continuations (\) for DOS format data
1643 table definition language files on when executing on Unix/Linux.
1644
1645 ----------------------------------------
1646 03 October 2018. Summary of changes for version 20181003:
1647
1648
1649 2) iASL Compiler/Disassembler and Tools:
1650
1651 Fixed a regression introduced in version 20180927 that could cause the
1652 compiler to fault, especially with NamePaths containing one or more
1653 carats (^). Such as: ^^_SB_PCI0
1654
1655 Added a new remark for the Sleep() operator when the sleep time operand
1656 is larger than one second. This is a very long time for the ASL/BIOS code
1657 and may not be what was intended by the ASL writer.
1658
1659 ----------------------------------------
1660 27 September 2018. Summary of changes for version 20180927:
1661
1662
1663 1) ACPICA kernel-resident subsystem:
1664
1665 Updated the GPE support to clear the status of all ACPI events when
1666 entering any/all sleep states in order to avoid premature wakeups. In
1667 theory, this may cause some wakeup events to be missed, but the
1668 likelihood of this is small. This change restores the original behavior
1669 of the ACPICA code in order to fix a regression seen from the previous
1670 "Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
1671 This regression could cause some systems to incorrectly wake immediately.
1672
1673 Updated the execution of the _REG methods during initialization and
1674 namespace loading to bring the behavior into closer conformance to the
1675 ACPI specification and other ACPI implementations:
1676
1677 From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
1678 "Control methods must assume all operation regions are inaccessible
1679 until the _REG(RegionSpace, 1) method is executed"
1680
1681 "The exceptions to this rule are:
1682 1. OSPM must guarantee that the following operation regions are always
1683 accessible:
1684 SystemIO operation regions.
1685 SystemMemory operation regions when accessing memory returned by the
1686 System Address Map reporting interfaces."
1687
1688 Since the state of both the SystemIO and SystemMemory address spaces are
1689 defined by the specification to never change, this ACPICA change ensures
1690 that now _REG is never called on them. This solves some problems seen in
1691 the field and provides compatibility with other ACPI implementations. An
1692 update to the upcoming new version of the ACPI specification will help
1693 clarify this behavior.
1694
1695 Updated the implementation of support for the Generic Serial Bus. For the
1696 "bidirectional" protocols, the internal implementation now automatically
1697 creates a return data buffer of the maximum size (255). This handles the
1698 worst-case for data that is returned from the serial bus handler, and
1699 fixes some problems seen in the field. This new buffer is directly
1700 returned to the ASL. As such, there is no true "bidirectional" buffer,
1701 which matches the ACPI specification. This is the reason for the "double
1702 store" seen in the example ASL code in the specification, shown below:
1703
1704 Word 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
1717 transaction
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
1723 2) iASL Compiler/Disassembler and Tools:
1724
1725 iASL: Implemented detection of extraneous/redundant uses of the Offset()
1726 operator within a Field Unit list. A remark is now issued for these. For
1727 example, the first two of the Offset() operators below are extraneous.
1728 Because both the compiler and the interpreter track the offsets
1729 automatically, these Offsets simply refer to the current offset and are
1730 unnecessary. Note, when optimization is enabled, the iASL compiler will
1731 in fact remove the redundant Offset operators and will not emit any AML
1732 code 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 }
1744 dsdt.asl 14: Offset (0),
1745 Remark 2158 - ^ Unnecessary/redundant use of Offset
1746 operator
1747
1748 dsdt.asl 16: Offset (4),
1749 Remark 2158 - ^ Unnecessary/redundant use of Offset
1750 operator
1751
1752 ----------------------------------------
1753 10 August 2018. Summary of changes for version 20180810:
1754
1755
1756 1) ACPICA kernel-resident subsystem:
1757
1758 Initial ACPI table loading: Attempt to continue loading ACPI tables
1759 regardless of malformed AML. Since migrating table initialization to the
1760 new module-level code support, the AML interpreter rejected tables upon
1761 any ACPI error encountered during table load. This is a problem because
1762 non-serious ACPI errors during table load do not necessarily mean that
1763 the entire definition block (DSDT or SSDT) is invalid. This change
1764 improves the table loading by ignoring some types of errors that can be
1765 generated by incorrect AML. This can range from object type errors, scope
1766 errors, and index errors.
1767
1768 Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
1769 during suspend/resume. The status of ACPI events is no longer cleared
1770 when entering the ACPI S5 system state (power off) which caused some
1771 systems to power up immediately after turning off power in certain
1772 situations. This was a functional regression. It was fixed by clearing
1773 the status of all ACPI events again when entering S5 (for system-wide
1774 suspend or hibernation the clearing of the status of all events is not
1775 desirable, as it might cause the kernel to miss wakeup events sometimes).
1776 Rafael Wysocki.
1777
1778
1779 2) iASL Compiler/Disassembler and Tools:
1780
1781 AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
1782 elements listed in the initialization file were previously initialized
1783 after the table load and before executing module-level code blocks.
1784 Recent changes in the module-level code support means that the table load
1785 becomes a large control method execution. If fields are used within
1786 module-level code and we are executing with the -fi option, the
1787 initialization values were used to initialize the namespace object(s)
1788 only after the table was finished loading. This change Provides an early
1789 initialization of objects specified in the initialization file so that
1790 field unit values are populated during the table load (not after the
1791 load).
1792
1793 AcpiExec: Fixed a small memory leak regression that could result in
1794 warnings during exit of the utility. These warnings were similar to
1795 these:
1796 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
1797 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
1798
1799 ----------------------------------------
1800 29 June 2018. Summary of changes for version 20180629:
1801
1802
1803 1) iASL Compiler/Disassembler and Tools:
1804
1805 iASL: Fixed a regression related to the use of the ASL External
1806 statement. Error checking for the use of the External() statement has
1807 been relaxed. Previously, a restriction on the use of External meant that
1808 the referenced named object was required to be defined in a different
1809 table (an SSDT). Thus it would be an error to declare an object as an
1810 external and then define the same named object in the same table. For
1811 example:
1812 DefinitionBlock (...)
1813 {
1814 External (DEV1)
1815 Device (DEV1){...} // This was an error
1816 }
1817 However, this behavior has caused regressions in some existing ASL code,
1818 because there is code that depends on named objects and externals (with
1819 the same name) being declared in the same table. This change will allow
1820 the ASL code above to compile without errors or warnings.
1821
1822 iASL: Implemented ASL language extensions for four operators to make some
1823 of 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)
1829 For the Field operators above, the AccessType, LockRule, and UpdateRule
1830 are now optional arguments. The default values are:
1831 AccessType: AnyAcc
1832 LockRule: NoLock
1833 UpdateRule: Preserve
1834 4) Mutex (MutexName, SyncLevel)
1835 For this operator, the SyncLevel argument is now optional. This argument
1836 is rarely used in any meaningful way by ASL code, and thus it makes sense
1837 to make it optional. The default value is:
1838 SyncLevel: 0
1839
1840 iASL: Attempted use of the ASL Unload() operator now results in the
1841 following warning:
1842 "Unload is not supported by all operating systems"
1843 This is in fact very true, and the Unload operator may be completely
1844 deprecated in the near future.
1845
1846 AcpiExec: Fixed a regression for the -fi option (Namespace initialization
1847 file. Recent changes in the ACPICA module-level code support altered the
1848 table load/initialization sequence . This means that the table load has
1849 become a large method execution of the table itself. If Operation Region
1850 Fields are used within any module-level code and the -fi option was
1851 specified, the initialization values were populated only after the table
1852 had completely finished loading (and thus the module-level code had
1853 already been executed). This change moves the initialization of objects
1854 listed in the initialization file to before the table is executed as a
1855 method. Field unit values are now initialized before the table execution
1856 is performed.
1857
1858 ----------------------------------------
1859 31 May 2018. Summary of changes for version 20180531:
1860
1861
1862 1) ACPICA kernel-resident Subsystem:
1863
1864 Implemented additional support to help ensure that a DSDT or SSDT is
1865 fully loaded even if errors are incurred during the load. The majority of
1866 the problems that are seen is the failure of individual AML operators
1867 that occur during execution of any module-level code (MLC) existing in
1868 the table. This support adds a mechanism to abort the current ASL
1869 statement (AML opcode), emit an error message, and to simply move on to
1870 the next opcode -- instead of aborting the entire table load. This is
1871 different than the execution of a control method where the entire method
1872 is aborted upon any error. The goal is to perform a very "best effort" to
1873 load the ACPI tables. The most common MLC errors that have been seen in
1874 the field are direct references to unresolved ASL/AML symbols (referenced
1875 directly without the use of the CondRefOf operator to validate the
1876 symbol). This new ACPICA behavior is now compatible with other ACPI
1877 implementations.
1878
1879 Interpreter: The Unload AML operator is no longer supported for the
1880 reasons below. An AE_NOT_IMPLEMENTED exception is returned.
1881 1) A correct implementation on at least some hosts may not be possible.
1882 2) Other ACPI implementations do not correctly/fully support it.
1883 3) It requires host device driver support which is not known to exist.
1884 (To properly support namespace unload out from underneath.)
1885 4) This AML operator has never been seen in the field.
1886
1887 Parser: Added a debug option to dump AML parse sub-trees as they are
1888 being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
1889 ACPI_DB_PARSE_TREES.
1890
1891 Debugger: Reduced the verbosity for errors incurred during table load and
1892 module-level code execution.
1893
1894 Completed an investigation into adding a namespace node "owner list"
1895 instead of the current "owner ID" associated with namespace nodes. This
1896 list would link together all nodes that are owned by an individual
1897 control method. The purpose would be to enhance control method execution
1898 by speeding up cleanup during method exit (all namespace nodes created by
1899 a method are deleted upon method termination.) Currently, the entire
1900 namespace must be searched for matching owner IDs if (and only if) the
1901 method creates named objects outside of the local scope. However, by far
1902 the most common case is that methods create objects locally, not outside
1903 the method scope. There is already an ACPICA optimization in place that
1904 only searches the entire namespace in the rare case of a method creating
1905 objects elsewhere in the namespace. Therefore, it is felt that the
1906 overhead of adding an additional pointer to each namespace node to
1907 implement the owner list makes this feature unnecessary.
1908
1909
1910 2) iASL Compiler/Disassembler and Tools:
1911
1912 iASL, Disassembler, and Template generator: Implemented support for
1913 Revision D of the IORT table. Adds a new subtable that is used to specify
1914 SMMUv3 PMCGs. rmurphy-arm.
1915
1916 Disassembler: Restored correct table header validation for the "special"
1917 ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
1918 table header and must be special-cased. This was a regression that has
1919 been present for apparently a long time.
1920
1921 AcpiExec: Reduced verbosity of the local exception handler implemented
1922 within acpiexec. This handler is invoked by ACPICA upon any exceptions
1923 generated during control method execution. A new option was added: -vh
1924 restores the original verbosity level if desired.
1925
1926 AcpiExec: 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
1928 behavior of the corresponding iASL -x option.
1929
1930 AcpiExec: Restored a force-exit on multiple control-c (sigint)
1931 interrupts. This allows program termination even if other issues cause
1932 the control-c to fail.
1933
1934 ASL test suite (ASLTS): Added tests for the recently implemented package
1935 element resolution mechanism that allows forward references to named
1936 objects from individual package elements (this mechanism provides
1937 compatibility with other ACPI implementations.)
1938
1939
1940 ----------------------------------------
1941 8 May 2018. Summary of changes for version 20180508:
1942
1943
1944 1) ACPICA kernel-resident subsystem:
1945
1946 Completed the new (recently deployed) package resolution mechanism for
1947 the Load and LoadTable ASL/AML operators. This fixes a regression that
1948 was introduced in version 20180209 that could result in an
1949 AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
1950 (SSDT) that contains package objects.
1951
1952
1953 2) iASL Compiler/Disassembler and Tools:
1954
1955 AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
1956 1 MB. This change allows for table offsets within the acpidump file to be
1957 up to 8 characters. These changes are backwards compatible with existing
1958 acpidump files.
1959
1960
1961 ----------------------------------------
1962 27 April 2018. Summary of changes for version 20180427:
1963
1964
1965 1) ACPICA kernel-resident subsystem:
1966
1967 Debugger: Added support for Package objects in the "Test Objects"
1968 command. This command walks the entire namespace and evaluates all named
1969 data objects (Integers, Strings, Buffers, and now Packages).
1970
1971 Improved error messages for the namespace root node. Originally, the root
1972 was referred to by the confusing string "\___". This has been replaced by
1973 "Namespace Root" for clarification.
1974
1975 Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
1976 Ian King <colin.king (a] canonical.com>.
1977
1978
1979 2) iASL Compiler/Disassembler and Tools:
1980
1981 iASL: Implemented support to detect and flag illegal forward references.
1982 For compatibility with other ACPI implementations, these references are
1983 now illegal at the root level of the DSDT or SSDTs. Forward references
1984 have always been illegal within control methods. This change should not
1985 affect existing ASL/AML code because of the fact that these references
1986 have always been illegal in the other ACPI implementation.
1987
1988 iASL: Added error messages for the case where a table OEM ID and OEM
1989 TABLE ID strings are longer than the ACPI-defined length. Previously,
1990 these strings were simply silently truncated.
1991
1992 iASL: Enhanced the -tc option (which creates an AML hex file in C,
1993 suitable for import into a firmware project):
1994 1) Create a unique name for the table, to simplify use of multiple
1995 SSDTs.
1996 2) Add a protection #ifdef in the file, similar to a .h header file.
1997 With assistance from Sami Mujawar, sami.mujawar (a] arm.com and Evan Lloyd,
1998 evan.lloyd (a] arm.com
1999
2000 AcpiExec: Added a new option, -df, to disable the local fault handler.
2001 This is useful during debugging, where it may be desired to drop into a
2002 debugger on a fault.
2003
2004 ----------------------------------------
2005 13 March 2018. Summary of changes for version 20180313:
2006
2007
2008 1) ACPICA kernel-resident subsystem:
2009
2010 Implemented various improvements to the GPE support:
2011
2012 1) Dispatch all active GPEs at initialization time so that no GPEs are
2013 lost.
2014 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
2015 before devices are enumerated.
2016 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
2017 IRQs are not lost.
2018 4) Add parallel GPE handling to eliminate the possibility of dispatching
2019 the same GPE twice.
2020 5) Dispatch any pending GPEs after enabling for the first time.
2021
2022 AcpiGetObjectInfo - removed support for the _STA method. This was causing
2023 problems on some platforms.
2024
2025 Added a new _OSI string, "Windows 2017.2".
2026
2027 Cleaned up and simplified the module-level code support. These changes
2028 are in preparation for the eventual removal of the legacy MLC support
2029 (deferred execution), replaced by the new MLC architecture which executes
2030 the MLC as a table is loaded (DSDT/SSDTs).
2031
2032 Changed a compile-time option to a runtime option. Changes the option to
2033 ignore ACPI table load-time package resolution errors into a runtime
2034 option. Used only for platforms that generate many AE_NOT_FOUND errors
2035 during boot. AcpiGbl_IgnorePackageResolutionErrors.
2036
2037 Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
2038 ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
2039 compilation errors from unused variables (seen with some compilers).
2040
2041
2042 2) iASL Compiler/Disassembler and Tools:
2043
2044 ASLTS: parallelized execution in order to achieve an (approximately) 2X
2045 performance increase.
2046
2047 ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
2048 error reporting.
2049
2050 ----------------------------------------
2051 09 February 2018. Summary of changes for version 20180209:
2052
2053
2054 1) ACPICA kernel-resident subsystem:
2055
2056 Completed the final integration of the recent changes to Package Object
2057 handling and the module-level AML code support. This allows forward
2058 references from individual package elements when the package object is
2059 declared from within module-level code blocks. Provides compatibility
2060 with other ACPI implementations.
2061
2062 The new architecture for the AML module-level code has been completed and
2063 is now the default for the ACPICA code. This new architecture executes
2064 the module-level code in-line as the ACPI table is loaded/parsed instead
2065 of the previous architecture which deferred this code until after the
2066 table was fully loaded. This solves some ASL code ordering issues and
2067 provides compatibility with other ACPI implementations. At this time,
2068 there is an option to fallback to the earlier architecture, but this
2069 support is deprecated and is planned to be completely removed later this
2070 year.
2071
2072 Added a compile-time option to ignore AE_NOT_FOUND exceptions during
2073 resolution of named reference elements within Package objects. Although
2074 this is potentially a serious problem, it can generate a lot of
2075 noise/errors on platforms whose firmware carries around a bunch of unused
2076 Package objects. To disable these errors, define
2077 ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
2078 errors are always reported for ACPICA applications such as AcpiExec.
2079
2080 Fixed a regression related to the explicit type-conversion AML operators
2081 (ToXXXX). The regression was introduced early in 2017 but was not seen
2082 until recently because these operators are not fully supported by other
2083 ACPI implementations and are thus rarely used by firmware developers. The
2084 operators are defined by the ACPI specification to not implement the
2085 "implicit result object conversion". The regression incorrectly
2086 introduced this object conversion for the following explicit conversion
2087 operators:
2088 ToInteger
2089 ToString
2090 ToBuffer
2091 ToDecimalString
2092 ToHexString
2093 ToBCD
2094 FromBCD
2095
2096
2097 2) iASL Compiler/Disassembler and Tools:
2098
2099 iASL: Fixed a problem with the compiler constant folding feature as
2100 related to the ToXXXX explicit conversion operators. These operators do
2101 not support the "implicit result object conversion" by definition. Thus,
2102 ASL expressions that use these operators cannot be folded to a simple
2103 Store operator because Store implements the implicit conversion. This
2104 change uses the CopyObject operator for the ToXXXX operator folding
2105 instead. CopyObject is defined to not implement implicit result
2106 conversions and is thus appropriate for folding the ToXXXX operators.
2107
2108 iASL: Changed the severity of an error condition to a simple warning for
2109 the case where a symbol is declared both locally and as an external
2110 symbol. This accommodates existing ASL code.
2111
2112 AcpiExec: The -ep option to enable the new architecture for module-level
2113 code has been removed. It is replaced by the -dp option which instead has
2114 the opposite effect: it disables the new architecture (the default) and
2115 enables the legacy architecture. When the legacy code is removed in the
2116 future, the -dp option will be removed also.
2117
2118 ----------------------------------------
2119 05 January 2018. Summary of changes for version 20180105:
2120
2121
2122 1) ACPICA kernel-resident subsystem:
2123
2124 Updated all copyrights to 2018. This affects all source code modules.
2125
2126 Fixed a possible build error caused by an unresolved reference to the
2127 AcpiUtSafeStrncpy function.
2128
2129 Removed NULL pointer arithmetic in the various pointer manipulation
2130 macros. All "(void *) NULL" constructs are converted to "(void *) 0".
2131 This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
2132
2133 Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
2134 Mittal.
2135
2136
2137 2) iASL Compiler/Disassembler and Tools:
2138
2139 ASLTS: Updated all copyrights to 2018.
2140
2141 Tools: Updated all signon copyrights to 2018.
2142
2143 AcpiXtract: Fixed a regression related to ACPI table signatures where the
2144 signature was truncated to 3 characters (instead of 4).
2145
2146 AcpiExec: Restore the original terminal mode after the use of the -v and
2147 -vd options.
2148
2149 ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
2150
2151 ----------------------------------------
2152 14 December 2017. Summary of changes for version 20171214:
2153
2154
2155 1) ACPICA kernel-resident subsystem:
2156
2157 Fixed a regression in the external (public) AcpiEvaluateObjectTyped
2158 interface where the optional "pathname" argument had inadvertently become
2159 a required argument returning an error if omitted (NULL pointer
2160 argument).
2161
2162 Fixed two possible memory leaks related to the recently developed "late
2163 resolution" of reference objects within ASL Package Object definitions.
2164
2165 Added two recently defined _OSI strings: "Windows 2016" and "Windows
2166 2017". Mario Limonciello.
2167
2168 Implemented and deployed a safer version of the C library function
2169 strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the
2170 creation of unterminated strings as a possible result of a standard
2171 strncpy.
2172
2173 Cleaned up and restructured the global variable file (acglobal.h). There
2174 are many changes, but no functional changes.
2175
2176
2177 2) iASL Compiler/Disassembler and Tools:
2178
2179 iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
2180 optional OemData field at the end of the table was incorrectly required
2181 for proper compilation. It is now correctly an optional field.
2182
2183 ASLTS: The entire suite was converted from standard ASL to the ASL+
2184 language, using the ASL-to-ASL+ converter which is integrated into the
2185 iASL compiler. A binary compare of all output files has verified the
2186 correctness of the conversion.
2187
2188 iASL: Fixed the source code build for platforms where "char" is unsigned.
2189 This affected the iASL lexer only. Jung-uk Kim.
2190
2191 ----------------------------------------
2192 10 November 2017. Summary of changes for version 20171110:
2193
2194
2195 1) ACPICA kernel-resident subsystem:
2196
2197 This release implements full support for ACPI 6.2A:
2198 NFIT - Added a new subtable, "Platform Capabilities Structure"
2199 No other changes to ACPICA were required, since ACPI 6.2A is primarily an
2200 errata release of the specification.
2201
2202 Other 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
2205 Linton
2206
2207 Utilities: Modified the string/integer conversion functions to use
2208 internal 64-bit divide support instead of a native divide. On 32-bit
2209 platforms, a 64-bit divide typically requires a library function which
2210 may not be present in the build (kernel or otherwise).
2211
2212 Implemented a targeted error message for timeouts returned from the
2213 Embedded Controller device driver. This is seen frequently enough to
2214 special-case an AE_TIME returned from an EC operation region access:
2215 "Timeout from EC hardware or EC device driver"
2216
2217 Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
2218 runtime error messages have the identical prefix.
2219
2220
2221 2) iASL Compiler/Disassembler and Tools:
2222
2223 AcpiXtract: Fixed a problem with table header detection within the
2224 acpidump file. Processing a table could be ended early if a 0x40 (@)
2225 appears in the original binary table, resulting in the @ symbol appearing
2226 in the decoded ASCII field at the end of the acpidump text line. The
2227 symbol caused acpixtract to incorrectly think it had reached the end of
2228 the current table and the beginning of a new table.
2229
2230 AcpiXtract: Added an option (-f) to ignore some errors during table
2231 extraction. This initial implementation ignores non-ASCII and non-
2232 printable characters found in the acpidump text file.
2233
2234 TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
2235 for ASLTS. This feature is used to track memory allocations from
2236 different memory caches within the ACPICA code. At the end of an ASLTS
2237 run, these memory statistics are recorded and stored in a log file.
2238
2239 Debugger (user-space version): Implemented a simple "Background" command.
2240 Creates a new thread to execute a control method in the background, while
2241 control returns to the debugger prompt to allow additional commands.
2242 Syntax: Background <Namepath> [Arguments]
2243
2244 ----------------------------------------
2245 29 September 2017. Summary of changes for version 20170929:
2246
2247
2248 1) ACPICA kernel-resident subsystem:
2249
2250 Redesigned and implemented an improved ASL While() loop timeout
2251 mechanism. This mechanism is used to prevent infinite loops in the kernel
2252 AML interpreter caused by either non-responsive hardware or incorrect AML
2253 code. The new implementation uses AcpiOsGetTimer instead of a simple
2254 maximum loop count, and is thus more accurate and constant across
2255 different machines. The default timeout is currently 30 seconds, but this
2256 may be adjusted later.
2257
2258 Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
2259 better reflect the new implementation of the loop timeout mechanism.
2260
2261 Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
2262 and to fix an off-by-one error. Jung-uk Kim.
2263
2264 Fixed an EFI build problem by updating the makefiles to for a new file
2265 that was added, utstrsuppt.c
2266
2267
2268 2) iASL Compiler/Disassembler and Tools:
2269
2270 Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
2271 includes support in the table disassembler, compiler, and template
2272 generator.
2273
2274 iASL: Added an exception for an illegal type of recursive method
2275 invocation. If a method creates named objects, the first recursive call
2276 will fail at runtime. This change adds an error detection at compile time
2277 to catch the problem up front. Note: Marking such a method as
2278 "serialized" will not help with this problem, because the same thread can
2279 acquire the method mutex more than once. Example compiler and runtime
2280 output:
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
2292 Previous runtime exception:
2293 ACPI Error: [INT1] Namespace lookup failure,
2294 AE_ALREADY_EXISTS (20170831/dswload2-465)
2295
2296 iASL: Updated support for External() opcodes to improve namespace
2297 management and error detection. These changes are related to issues seen
2298 with multiple-segment namespace pathnames within External declarations,
2299 such as below:
2300
2301 External(\_SB.PCI0.GFX0, DeviceObj)
2302 External(\_SB.PCI0.GFX0.ALSI)
2303
2304 iASL: Implemented support for multi-line error/warning messages. This
2305 enables more detailed and helpful error messages as below, from the
2306 initial 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
2315 AcpiXtract: Added additional flexibility to support differing input hex
2316 dump formats. Specifically, hex dumps that contain partial disassembly
2317 and/or comments within the ACPI table data definition. There exist some
2318 dump utilities seen in the field that create this type of hex dump (such
2319 as 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
2335 Test 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
2340 iASL: Performed some code/module restructuring. Moved all memory
2341 allocation functions to new modules. Two new files, aslallocate.c and
2342 aslcache.c
2343
2344 ----------------------------------------
2345 31 August 2017. Summary of changes for version 20170831:
2346
2347
2348 1) ACPICA kernel-resident subsystem:
2349
2350 Implemented internal support for full 64-bit addresses that appear in all
2351 Generic Address Structure (GAS) structures. Previously, only the lower 32
2352 bits were used. Affects the use of GAS structures in the FADT and other
2353 tables, as well as the GAS structures passed to the AcpiRead and
2354 AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
2355
2356 Added header support for the PDTT ACPI table (Processor Debug Trigger
2357 Table). Full support in the iASL Data Table Compiler and disassembler is
2358 forthcoming.
2359
2360
2361 2) iASL Compiler/Disassembler and Tools:
2362
2363 iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
2364 Properties Topology Table) where a flag bit was specified in the wrong
2365 bit position ("Line Size Valid", bit 6).
2366
2367 iASL: Implemented support for Octal integer constants as defined by the
2368 ASL language grammar, per the ACPI specification. Any integer constant
2369 that 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
2374 iASL: Improved overflow detection for 64-bit string conversions during
2375 compilation of integer constants. "Overflow" in this case means a string
2376 that represents an integer that is too large to fit into a 64-bit value.
2377 Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
2378 the low-order 32 bits with a warning, as previously implemented. Several
2379 new exceptions are defined that indicate a 64-bit overflow, as well as
2380 the 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
2385 iASL: Added a warning for the case where a ResourceTemplate is declared
2386 with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
2387 this case, the resulting template is created with a single END_TAG
2388 descriptor, which is essentially useless.
2389
2390 iASL: Expanded the -vw option (ignore specific warnings/remarks) to
2391 include compilation error codes as well.
2392
2393 ----------------------------------------
2394 28 July 2017. Summary of changes for version 20170728:
2395
2396
2397 1) ACPICA kernel-resident subsystem:
2398
2399 Fixed a regression seen with small resource descriptors that could cause
2400 an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
2401
2402 AML interpreter: Implemented a new feature that allows forward references
2403 from individual named references within package objects that are
2404 contained within blocks of "module-level code". This provides
2405 compatibility with other ACPI implementations and supports existing
2406 firmware 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
2419 AML Interpreter: Fixed a problem with the Alias() operator where aliases
2420 to some ASL objects were not handled properly. Objects affected are:
2421 Mutex, Event, and OperationRegion.
2422
2423 AML Debugger: Enhanced to properly handle AML Alias objects. These
2424 objects have one level of indirection which was not fully supported by
2425 the debugger.
2426
2427 Table Manager: Added support to detect and ignore duplicate SSDTs within
2428 the XSDT/RSDT. This error in the XSDT has been seen in the field.
2429
2430 EFI 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
2437 Added additional support for the _DMA predefined name. _DMA returns a
2438 buffer containing a resource template. This change add support within the
2439 resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
2440 resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi (a] arm.com>
2441
2442
2443 2) iASL Compiler/Disassembler and Tools:
2444
2445 iASL: Fixed a problem where the internal input line buffer(s) could
2446 overflow if there are very long lines in the input ASL source code file.
2447 Implemented buffer management that automatically increases the size of
2448 the buffers as necessary.
2449
2450 iASL: Added an option (-vx) to "expect" particular remarks, warnings and
2451 errors. If the specified exception is not raised during compilation, the
2452 compiler emits an error. This is intended to support the ASL test suite,
2453 but may be useful in other contexts.
2454
2455 iASL: Implemented a new predefined macro, __METHOD__, which returns a
2456 string containing the name of the current control method that is being
2457 compiled.
2458
2459 iASL: Implemented debugger and table compiler support for the SDEI ACPI
2460 table (Software Delegated Exception Interface). James Morse
2461 <james.morse (a] arm.com>
2462
2463 Unix/Linux makefiles: Added an option to disable compile optimizations.
2464 The disable occurs when the NOOPT flag is set to TRUE.
2465 theracermaster (a] gmail.com
2466
2467 Acpidump: Added support for multiple DSDT and FACS tables. This can occur
2468 when there are different tables for 32-bit versus 64-bit.
2469
2470 Enhanced error reporting for the ASL test suite (ASLTS) by removing
2471 unnecessary/verbose text, and emit the actual line number where an error
2472 has occurred. These changes are intended to improve the usefulness of the
2473 test suite.
2474
2475 ----------------------------------------
2476 29 June 2017. Summary of changes for version 20170629:
2477
2478
2479 1) ACPICA kernel-resident subsystem:
2480
2481 Tables: Implemented a deferred ACPI table verification. This is useful
2482 for operating systems where the tables cannot be verified in the early
2483 initialization stage due to early memory mapping limitations on some
2484 architectures. Lv Zheng.
2485
2486 Tables: Removed the signature validation for dynamically loaded tables.
2487 Provides compatibility with other ACPI implementations. Previously, only
2488 SSDT tables were allowed, as per the ACPI specification. Now, any table
2489 signature can be used via the Load() operator. Lv Zheng.
2490
2491 Tables: Fixed several mutex issues that could cause errors during table
2492 acquisition. Lv Zheng.
2493
2494 Tables: Fixed a problem where an ACPI warning could be generated if a
2495 null pointer was passed to the AcpiPutTable interface. Lv Zheng.
2496
2497 Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
2498 AcpiPutTable interfaces. This applies to the "late stage" table loading
2499 when the use of AcpiPutTable is no longer required (since the system
2500 memory manager is fully running and available). Lv Zheng.
2501
2502 Fixed/Reverted a regression during processing of resource descriptors
2503 that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
2504 exception in this case.
2505
2506 Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
2507 I/O Remapping specification. Robin Murphy <robin.murphy (a] arm.com>
2508
2509 Interpreter: Fixed a possible fault if an Alias operator with an invalid
2510 or duplicate target is encountered during Alias creation in
2511 AcpiExCreateAlias. Alex James <theracermaster (a] gmail.com>
2512
2513 Added an option to use designated initializers for function pointers.
2514 Kees Cook <keescook (a] google.com>
2515
2516
2517 2) iASL Compiler/Disassembler and Tools:
2518
2519 iASL: Allow compilation of External declarations with target pathnames
2520 that refer to existing named objects within the table. Erik Schmauss.
2521
2522 iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
2523 FieldUnit name also is declared via External in the same table. Erik
2524 Schmauss.
2525
2526 iASL: Allow existing scope names within pathnames used in External
2527 statements. For example:
2528 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
2529 Device (ABCD)
2530
2531 iASL: IORT ACPI table: Implemented changes required to decode the new
2532 Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
2533 compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni (a] cavium.com>
2534
2535 Disassembler: Don't abort disassembly on errors from External()
2536 statements. Erik Schmauss.
2537
2538 Disassembler: fixed a possible fault when one of the Create*Field
2539 operators references a Resource Template. ACPICA Bugzilla 1396.
2540
2541 iASL: In the source code, resolved some naming inconsistences across the
2542 parsing support. Fixes confusion between "Parse Op" and "Parse Node".
2543 Adds a new file, aslparseop.c
2544
2545 ----------------------------------------
2546 31 May 2017. Summary of changes for version 20170531:
2547
2548
2549 0) ACPI 6.2 support:
2550
2551 The ACPI specification version 6.2 has been released and is available at
2552 http://uefi.org/specifications
2553
2554 This version of ACPICA fully supports the ACPI 6.2 specification. Changes
2555 are summarized below.
2556
2557 New 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
2562 New 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
2567 Simple updates for existing ACPI tables:
2568 BGRT (two new flag bits)
2569 HEST (New bit defined for several subtables, GHES_ASSIST)
2570
2571 New 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
2579 New 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
2585 ASL 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
2595 Miscellaneous:
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
2603 1) ACPICA kernel-resident subsystem:
2604
2605 Added support to disable ACPI events on hardware-reduced platforms.
2606 Eliminates error messages of the form "Could not enable fixed event". Lv
2607 Zheng
2608
2609 Fixed a problem using Device/Thermal objects with the ObjectType and
2610 DerefOf ASL operators. This support had not been fully/properly
2611 implemented.
2612
2613 Fixed a problem where if a Buffer object containing a resource template
2614 was longer than the actual resource template, an error was generated --
2615 even though the AML is legal. This case has been seen in the field.
2616
2617 Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
2618 The values for DUAL_PIC and MULTIPLE_APIC were reversed.
2619
2620 Added header file changes for the TPM2 ACPI table. Update to new version
2621 of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
2622
2623 Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
2624 These interfaces are intended to be used only in conjunction with the
2625 predefined _DLM method (Device Lock Method). "This object appears in a
2626 device scope when AML access to the device must be synchronized with the
2627 OS environment".
2628
2629 Example Code and Data Size: These are the sizes for the OS-independent
2630 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2631 debug version of the code includes the debug output trace mechanism and
2632 has 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
2642 2) iASL Compiler/Disassembler and Tools:
2643
2644 iASL: Fixed a problem where an External() declaration could not refer to
2645 a Field Unit. Erik Schmauss.
2646
2647 Disassembler: Improved support for the Switch/Case operators. This
2648 feature will disassemble AML code back to the original Switch operators
2649 when possible, instead of an If..Else sequence. David Box
2650
2651 iASL and disassembler: Improved the handling of multiple extraneous
2652 parentheses for both ASL input and disassembled ASL output.
2653
2654 Improved the behavior of the iASL compiler and disassembler to detect
2655 improper use of external declarations
2656
2657 Disassembler: Now aborts immediately upon detection of an unknown AML
2658 opcode. The AML parser has no real way to recover from this, and can
2659 result in the creation of an ill-formed parse tree that causes errors
2660 later during the disassembly.
2661
2662 All tools: Fixed a problem where the Unix application OSL did not handle
2663 control-c correctly. For example, a control-c could incorrectly wake the
2664 debugger.
2665
2666 AcpiExec: Improved the Control-C handling and added a handler for
2667 segmentation faults (SIGSEGV). Supports both Windows and Unix-like
2668 environments.
2669
2670 Reduced the verbosity of the generic unix makefiles. Previously, each
2671 compilation displayed the full set of compiler options. This has been
2672 eliminated as the options are easily inspected within the makefiles. Each
2673 compilation now results in a single line of output.
2674
2675 ----------------------------------------
2676 03 March 2017. Summary of changes for version 20170303:
2677
2678
2679 0) ACPICA licensing:
2680
2681 The licensing information at the start of each source code module has
2682 been updated. In addition to the Intel license, the dual GPLv2/BSD
2683 license has been added for completeness. Now, a single version of the
2684 source code should be suitable for all ACPICA customers. This is the
2685 major change for this release since it affects all source code modules.
2686
2687
2688 1) ACPICA kernel-resident subsystem:
2689
2690 Fixed two issues with the common asltypes.h header that could cause
2691 problems 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
2697 2) iASL Compiler/Disassembler and Tools:
2698
2699 Disassembler: fixed a regression introduced in 20170224. A fix for a
2700 memory leak related to resource descriptor tags (names) could fault when
2701 the disassembler was generated with 64-bit compilers.
2702
2703 The ASLTS test suite has been updated to implement a new testing
2704 architecture. During generation of the suite from ASL source, both the
2705 ASL and ASL+ compilers are now validated, as well as the disassembler
2706 itself (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 ----------------------------------------
2716 24 February 2017. Summary of changes for version 20170224:
2717
2718
2719 1) ACPICA kernel-resident subsystem:
2720
2721 Interpreter: Fixed two issues with the control method return value auto-
2722 repair feature, where an attempt to double-delete an internal object
2723 could result in an ACPICA warning (for _CID repair and others). No fault
2724 occurs, however, because the attempted deletion (actually a release to an
2725 internal cache) is detected and ignored via object poisoning.
2726
2727 Debugger: Fixed an AML interpreter mutex issue during the single stepping
2728 of control methods. If certain debugger commands are executed during
2729 stepping, a mutex acquire/release error could occur. Lv Zheng.
2730
2731 Fixed some issues generating ACPICA with the Intel C compiler by
2732 restoring the original behavior and compiler-specific include file in
2733 acenv.h. Lv Zheng.
2734
2735 Example Code and Data Size: These are the sizes for the OS-independent
2736 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2737 debug version of the code includes the debug output trace mechanism and
2738 has 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
2748 2) iASL Compiler/Disassembler and Tools:
2749
2750 iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
2751 tool has been designed, implemented, and included in this release. The
2752 key feature of this utility is that the original comments within the
2753 input ASL file are preserved during the conversion process, and included
2754 within the converted ASL+ file -- thus creating a transparent conversion
2755 of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
2756
2757 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with
2758 converted code
2759
2760 iASL/Disassembler: Improved the detection and correct disassembly of
2761 Switch/Case operators. This feature detects sequences of if/elseif/else
2762 operators that originated from ASL Switch/Case/Default operators and
2763 emits the original operators. David Box.
2764
2765 iASL: Improved the IORT ACPI table support in the following areas. Lv
2766 Zheng:
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
2771 Disassembler: Enhanced the detection and disassembly of resource
2772 template/descriptor within a Buffer object. An EndTag descriptor is now
2773 required to have a zero second byte, since all known ASL compilers emit
2774 this. This helps eliminate incorrect decisions when a buffer is
2775 disassembled (false positives on resource templates).
2776
2777 ----------------------------------------
2778 19 January 2017. Summary of changes for version 20170119:
2779
2780
2781 1) General ACPICA software:
2782
2783 Entire source code base: Added the 2017 copyright to all source code
2784 legal/licensing module headers and utility/tool signons. This includes
2785 the standard Linux dual-license header. This affects virtually every file
2786 in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
2787 the ACPICA test suite.
2788
2789
2790 2) iASL Compiler/Disassembler and Tools:
2791
2792 iASL: Removed/fixed an inadvertent remark when a method argument
2793 containing a reference is used as a target operand within the method (and
2794 never 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
2799 All tools: Removed the bit width of the compiler that generated the tool
2800 from the common signon for all user space tools. This proved to be
2801 confusing and unnecessary. This includes similar removal of HARDWARE_NAME
2802 from 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 ----------------------------------------
2812 22 December 2016. Summary of changes for version 20161222:
2813
2814
2815 1) ACPICA kernel-resident subsystem:
2816
2817 AML Debugger: Implemented a new mechanism to simplify and enhance
2818 debugger integration into all environments, including kernel debuggers
2819 and user-space utilities, as well as remote debug services. This
2820 mechanism essentially consists of new OSL interfaces to support debugger
2821 initialization/termination, as well as wait/notify interfaces to perform
2822 the 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
2833 Update for Generic Address Space (GAS) support: Although the AccessWidth
2834 and/or BitOffset fields of the GAS are not often used, this change now
2835 fully supports these fields. This affects the internal support for FADT
2836 registers, registers in other ACPI data tables, and the AcpiRead and
2837 AcpiWrite public interfaces. Lv Zheng.
2838
2839 Sleep support: In order to simplify integration of ACPI sleep for the
2840 various host operating systems, a new OSL interface has been introduced.
2841 AcpiOsEnterSleep allows the host to perform any required operations
2842 before the final write to the sleep control register(s) is performed by
2843 ACPICA. Lv Zheng.
2844
2845 New OSL interface:
2846 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
2847
2848 Called from these internal interfaces:
2849 AcpiHwLegacySleep
2850 AcpiHwExtendedSleep
2851
2852 EFI support: Added a very small EFI/ACPICA example application. Provides
2853 a simple demo for EFI integration, as well as assisting with resolution
2854 of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
2855
2856 source/tools/efihello/efihello.c
2857
2858 Local C library: Implemented several new functions to enhance ACPICA
2859 portability, for environments where these clib functions are not
2860 available (such as EFI). Lv Zheng:
2861 putchar
2862 getchar
2863 strpbrk
2864 strtok
2865 memmove
2866
2867 Fixed a regression where occasionally a valid resource descriptor was
2868 incorrectly detected as invalid at runtime, and a
2869 AE_AML_NO_RESOURCE_END_TAG was returned.
2870
2871 Fixed a problem with the recently implemented support that enables
2872 control method invocations as Target operands to many ASL operators.
2873 Warnings of this form: "Needed type [Reference], found [Processor]" were
2874 seen at runtime for some method invocations.
2875
2876 Example Code and Data Size: These are the sizes for the OS-independent
2877 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2878 debug version of the code includes the debug output trace mechanism and
2879 has 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
2889 2) iASL Compiler/Disassembler and Tools:
2890
2891 Disassembler: Enhanced output by adding the capability to detect and
2892 disassemble ASL Switch/Case statements back to the original ASL source
2893 code instead of if/else blocks. David Box.
2894
2895 AcpiHelp: Split a large file into separate files based upon
2896 functionality/purpose. New files are:
2897 ahaml.c
2898 ahasl.c
2899
2900 ----------------------------------------
2901 17 November 2016. Summary of changes for version 20161117:
2902
2903
2904 1) ACPICA kernel-resident subsystem:
2905
2906 Table Manager: Fixed a regression introduced in 20160729, "FADT support
2907 cleanup". This was an attempt to remove all references in the source to
2908 the FADT version 2, which never was a legal version number. It was
2909 skipped because it was an early version of 64-bit support that was
2910 eventually abandoned for the current 64-bit support.
2911
2912 Interpreter: Fixed a problem where runtime implicit conversion was
2913 incorrectly disabled for the ASL operators below. This brings the
2914 behavior into compliance with the ACPI specification:
2915 FromBCD
2916 ToBCD
2917 ToDecimalString
2918 ToHexString
2919 ToInteger
2920 ToBuffer
2921
2922 Table Manager: Added a new public interface, AcpiPutTable, used to
2923 release and free an ACPI table returned by AcpiGetTable and related
2924 interfaces. Lv Zheng.
2925
2926 Example Code and Data Size: These are the sizes for the OS-independent
2927 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2928 debug version of the code includes the debug output trace mechanism and
2929 has 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
2939 2) iASL Compiler/Disassembler and Tools:
2940
2941 Disassembler: Fixed a regression for disassembly of Resource Template.
2942 Detection of templates in the AML stream missed some types of templates.
2943
2944 iASL: Fixed a problem where an Access Size error was returned for the PCC
2945 address space when the AccessSize of the GAS register is greater than a
2946 DWORD. Hoan Tran.
2947
2948 iASL: Implemented several grammar changes for the operators below. These
2949 changes 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
2953 that
2954 do not return a reference (Changed TermArg to
2955 SuperName).
2956
2957 iASL: Control method invocations are now allowed for Target operands, as
2958 per the ACPI specification. Removed error for using a control method
2959 invocation as a Target operand.
2960
2961 Disassembler: Improved detection of Resource Templates, Unicode, and
2962 Strings within Buffer objects. These subtypes do not contain a specific
2963 opcode to indicate the originating ASL code, and they must be detected by
2964 other means within the disassembler.
2965
2966 iASL: Implemented an optimization improvement for 32-bit ACPI tables
2967 (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
2968 only after 64-bit to 32-bit truncation. A truncation warning message is
2969 still emitted, however.
2970
2971 AcpiXtract: Implemented handling for both types of line terminators (LF
2972 or CR/LF) so that it can accept AcpiDump output files from any system.
2973 Peter Wu.
2974
2975 AcpiBin: 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 ----------------------------------------
2980 30 September 2016. Summary of changes for version 20160930:
2981
2982
2983 1) ACPICA kernel-resident subsystem:
2984
2985 Fixed a regression in the internal AcpiTbFindTable function where a non
2986 AE_OK exception could inadvertently be returned even if the function did
2987 not fail. This problem affects the following operators:
2988 DataTableRegion
2989 LoadTable
2990
2991 Fixed a regression in the LoadTable operator where a load to any
2992 namespace location other than the root no longer worked properly.
2993
2994 Increased the maximum loop count value that will result in the
2995 AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
2996 prevent infinite loops within the AML interpreter and thus the host OS
2997 kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
2998 1,048,575).
2999
3000 Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
3001 acpixf.h file. This allows hosts to easily configure the maximum loop
3002 count at runtime.
3003
3004 Removed an illegal character in the strtoul64.c file. This character
3005 caused errors with some C compilers.
3006
3007 Example Code and Data Size: These are the sizes for the OS-independent
3008 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3009 debug version of the code includes the debug output trace mechanism and
3010 has 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
3020 2) iASL Compiler/Disassembler and Tools:
3021
3022 Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
3023 the simpler ASL ElseIf keyword. During the conversion, a trailing If
3024 block could be lost and missing from the disassembled output.
3025
3026 iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
3027 the missing rule caused a parse error when using the Index operator as an
3028 operand to ObjectType. This construct now compiles properly. Example:
3029 ObjectType(PKG1[4]).
3030
3031 iASL: Correctly handle unresolved symbols in the hardware map file (-lm
3032 option). Previously, unresolved symbols could cause a protection fault.
3033 Such symbols are now marked as unresolved in the map file.
3034
3035 iASL: Implemented support to allow control method invocations as an
3036 operand to the ASL DeRefOf operator. Example:
3037 DeRefOf(MTH1(Local0))
3038
3039 Disassembler: Improved support for the ToPLD ASL macro. Detection of a
3040 possible _PLD buffer now includes examination of both the normal buffer
3041 length (16 or 20) as well as the surrounding AML package length.
3042
3043 Disassembler: Fixed a problem with the decoding of complex expressions
3044 within the Divide operator for ASL+. For the case where both the quotient
3045 and remainder targets are specified, the entire statement cannot be
3046 disassembled. Previously, the output incorrectly contained a mix of ASL-
3047 and ASL+ operators. This mixed statement causes a syntax error when
3048 compiled. Example:
3049 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly
3050 disassembled to:
3051 Divide (INT1 + 6, 128, RSLT, QUOT)
3052
3053 iASL/Tools: Added support to process AML and non-AML ACPI tables
3054 consistently. For the disassembler and AcpiExec, allow all types of ACPI
3055 tables (AML and data tables). For the iASL -e option, allow only AML
3056 tables (DSDT/SSDT).
3057
3058 ----------------------------------------
3059 31 August 2016. Summary of changes for version 20160831:
3060
3061
3062 1) ACPICA kernel-resident subsystem:
3063
3064 Improve support for the so-called "module-level code", which is defined
3065 to be math, logical and control AML opcodes that appear outside of any
3066 control method. This change improves the support by adding more opcodes
3067 that can be executed in the manner. Some other issues have been solved,
3068 and the ASL grammar changes to support such code under all scope
3069 operators (Device, etc.) are complete. Lv Zheng.
3070
3071 UEFI support: these OSL functions have been implemented. This is an
3072 additional step toward supporting the AcpiExec utility natively (with
3073 full hardware access) under UEFI. Marcelo Ferreira.
3074 AcpiOsReadPciConfiguration
3075 AcpiOsWritePciConfiguration
3076
3077 Fixed a possible mutex error during control method auto-serialization. Lv
3078 Zheng.
3079
3080 Updated support for the Generic Address Structure by fully implementing
3081 all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
3082 Zheng.
3083
3084 Updated the return value for the internal _OSI method. Instead of
3085 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
3086 for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
3087 implementations, and will be reflected and clarified in the next version
3088 of the ACPI specification.
3089
3090 Implemented two new table events that can be passed to an ACPICA table
3091 handler. These events are used to indicate a table installation or
3092 uninstallation. These events are used in addition to existed table load
3093 and unload events. Lv Zheng.
3094
3095 Implemented a cleanup for all internal string-to-integer conversions.
3096 Consolidate multiple versions of this functionality and limit possible
3097 bases to either 10 or 16 to simplify the code. Adds a new file,
3098 utstrtoul64.
3099
3100 Cleanup the inclusion order of the various compiler-specific headers.
3101 This simplifies build configuration management. The compiler-specific
3102 headers are now split out from the host-specific headers. Lv Zheng.
3103
3104 Example Code and Data Size: These are the sizes for the OS-independent
3105 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3106 debug version of the code includes the debug output trace mechanism and
3107 has 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
3114 2) iASL Compiler/Disassembler and Tools:
3115
3116 iASL/AcpiExec: Added a command line option to display the build date/time
3117 of the tool (-vd). This can be useful to verify that the correct version
3118 of the tools are being used.
3119
3120 AML Debugger: Implemented a new subcommand ("execute predef") to execute
3121 all predefined control methods and names within the current namespace.
3122 This can be useful for debugging problems with ACPI tables and the ACPI
3123 namespace.
3124
3125 ----------------------------------------
3126 29 July 2016. Summary of changes for version 20160729:
3127
3128
3129 1) ACPICA kernel-resident subsystem:
3130
3131 Implemented basic UEFI support for the various ACPICA tools. This
3132 includes:
3133 1) An OSL to implement the various AcpiOs* interfaces on UEFI.
3134 2) Support to obtain the ACPI tables on UEFI.
3135 3) Local implementation of required C library functions not available on
3136 UEFI.
3137 4) A front-end (main) function for the tools for UEFI-related
3138 initialization.
3139
3140 The initial deployment of this support is the AcpiDump utility executing
3141 as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
3142 Current environments supported are Linux/Unix. MSVC generation is not
3143 supported at this time. See the generate/efi/README file for build
3144 instructions. Lv Zheng.
3145
3146 Future plans include porting the AcpiExec utility to execute natively on
3147 the platform with I/O and memory access. This will allow viewing/dump of
3148 the platform namespace and native execution of ACPI control methods that
3149 access the actual hardware. To fully implement this support, the OSL
3150 functions below must be implemented with UEFI interfaces. Any community
3151 help in the implementation of these functions would be appreciated:
3152 AcpiOsReadPort
3153 AcpiOsWritePort
3154 AcpiOsReadMemory
3155 AcpiOsWriteMemory
3156 AcpiOsReadPciConfiguration
3157 AcpiOsWritePciConfiguration
3158
3159 Restructured and standardized the C library configuration for ACPICA,
3160 resulting in the various configuration options below. This includes a
3161 global restructuring of the compiler-dependent and platform-dependent
3162 include files. These changes may affect the existing platform-dependent
3163 configuration files on some hosts. Lv Zheng.
3164
3165 The current C library configuration options appear below. For any issues,
3166 it may be helpful to examine the existing compiler-dependent and
3167 platform-dependent files as examples. Lv Zheng.
3168
3169 1) Linux kernel:
3170 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3171 library.
3172 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
3173 2) Unix/Windows/BSD applications:
3174 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
3175 library.
3176 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
3177 3) UEFI applications:
3178 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
3179 library.
3180 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
3181 4) 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
3186 AML interpreter: "module-level code" support. Allows for execution of so-
3187 called "executable" AML code (math/logical operations, etc.) outside of
3188 control methods not just at the module level (top level) but also within
3189 any scope declared outside of a control method - Scope{}, Device{},
3190 Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
3191
3192 Simplified the configuration of the "maximum AML loops" global option by
3193 adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
3194 modified at runtime.
3195
3196
3197 Example Code and Data Size: These are the sizes for the OS-independent
3198 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3199 debug version of the code includes the debug output trace mechanism and
3200 has 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
3207 2) iASL Compiler/Disassembler and Tools:
3208
3209 iASL: Add full support for the RASF ACPI table (RAS Features Table).
3210 Includes disassembler, data table compiler, and header support.
3211
3212 iASL Expand "module-level code" support. Allows for
3213 compilation/disassembly of so-called "executable" AML code (math/logical
3214 operations, etc.) outside of control methods not just at the module level
3215 (top level) but also within any scope declared outside of a control
3216 method - Scope{}, Device{}, Processor{}, PowerResource{}, and
3217 ThermalZone{}.
3218
3219 AcpiDump: Added support for dumping all SSDTs on newer versions of
3220 Windows. These tables are now easily available -- SSDTs are not available
3221 through the registry on older versions.
3222
3223 ----------------------------------------
3224 27 May 2016. Summary of changes for version 20160527:
3225
3226
3227 1) ACPICA kernel-resident subsystem:
3228
3229 Temporarily reverted the new arbitrary bit length/alignment support in
3230 AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
3231 a number of regressions with the new code that need to be fully resolved
3232 and tested before this support can be finally integrated into ACPICA.
3233 Apologies for any inconveniences these issues may have caused.
3234
3235 The ACPI message macros are not configurable (ACPI_MSG_ERROR,
3236 ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
3237 and ACPI_MSG_BIOS_WARNING). Lv Zheng.
3238
3239 Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
3240 option. Adds a new return macro, return_STR. Junk-uk Kim.
3241
3242 Example Code and Data Size: These are the sizes for the OS-independent
3243 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3244 debug version of the code includes the debug output trace mechanism and
3245 has 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 ----------------------------------------
3255 22 April 2016. Summary of changes for version 20160422:
3256
3257 1) ACPICA kernel-resident subsystem:
3258
3259 Fixed a regression in the GAS (generic address structure) arbitrary bit
3260 support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
3261 and incorrect return values. Lv Zheng. ACPICA BZ 1270.
3262
3263 ACPI 6.0: Added support for new/renamed resource macros. One new argument
3264 was added to each of these macros, and the original name has been
3265 deprecated. The AML disassembler will always disassemble to the new
3266 names. Support for the new macros was added to iASL, disassembler,
3267 resource manager, and the acpihelp utility. ACPICA BZ 1274.
3268
3269 I2cSerialBus -> I2cSerialBusV2
3270 SpiSerialBus -> SpiSerialBusV2
3271 UartSerialBus -> UartSerialBusV2
3272
3273 ACPI 6.0: Added support for a new integer field that was appended to the
3274 package object returned by the _BIX method. This adds iASL compile-time
3275 and AML runtime error checking. ACPICA BZ 1273.
3276
3277 ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
3278 Subspace Type2" (Headers, Disassembler, and data table compiler).
3279
3280 Example Code and Data Size: These are the sizes for the OS-independent
3281 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3282 debug version of the code includes the debug output trace mechanism and
3283 has 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
3293 2) iASL Compiler/Disassembler and Tools:
3294
3295 iASL: Implemented an ASL grammar extension to allow/enable executable
3296 "module-level code" to be created and executed under the various
3297 operators that create new scopes. This type of AML code is already
3298 supported in all known AML interpreters, and the grammar change will
3299 appear in the next version of the ACPI specification. Simplifies the
3300 conditional runtime creation of named objects under these object types:
3301
3302 Device
3303 PowerResource
3304 Processor
3305 Scope
3306 ThermalZone
3307
3308 iASL: Implemented a new ASL extension, a "For" loop macro to add greater
3309 ease-of-use to the ASL language. The syntax is similar to the
3310 corresponding C operator, and is implemented with the existing AML While
3311 opcode -- thus requiring no changes to existing AML interpreters.
3312
3313 For (Initialize, Predicate, Update) {TermList}
3314
3315 Grammar:
3316 ForTerm :=
3317 For (
3318 Initializer // Nothing | TermArg => ComputationalData
3319 Predicate // Nothing | TermArg => ComputationalData
3320 Update // Nothing | TermArg => ComputationalData
3321 ) {TermList}
3322
3323
3324 iASL: The _HID/_ADR detection and validation has been enhanced to search
3325 under conditionals in order to allow these objects to be conditionally
3326 created at runtime.
3327
3328 iASL: Fixed several issues with the constant folding feature. The
3329 improvement allows better detection and resolution of statements that can
3330 be folded at compile time. ACPICA BZ 1266.
3331
3332 iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
3333 conversion to the ASL ElseIf operator where incorrect ASL code could be
3334 generated.
3335
3336 iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
3337 sometimes an extra (and extraneous) set of parentheses were emitted for
3338 some combinations of operators. Although this did not cause any problems
3339 with recompilation of the disassembled code, it made the code more
3340 difficult to read. David Box. ACPICA BZ 1231.
3341
3342 iASL: Changed to ignore the unreferenced detection for predefined names
3343 of resource descriptor elements, when the resource descriptor is
3344 created/defined within a control method.
3345
3346 iASL: Disassembler: Fix a possible fault with externally declared Buffer
3347 objects.
3348
3349 ----------------------------------------
3350 18 March 2016. Summary of changes for version 20160318:
3351
3352 1) ACPICA kernel-resident subsystem:
3353
3354 Added support for arbitrary bit lengths and bit offsets for registers
3355 defined by the Generic Address Structure. Previously, only aligned bit
3356 lengths of 8/16/32/64 were supported. This was sufficient for many years,
3357 but recently some machines have been seen that require arbitrary bit-
3358 level support. ACPICA BZ 1240. Lv Zheng.
3359
3360 Fixed an issue where the \_SB._INI method sometimes must be evaluated
3361 before any _REG methods are evaluated. Lv Zheng.
3362
3363 Implemented several changes related to ACPI table support
3364 (Headers/Disassembler/TableCompiler):
3365 NFIT: For ACPI 6.1, updated to add some additional new fields and
3366 constants.
3367 FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
3368 6).
3369 DMAR: Added new constants per the 10/2014 DMAR spec.
3370 IORT: Added new subtable per the 10/2015 IORT spec.
3371 HEST: For ACPI 6.1, added new constants and new subtable.
3372 DBG2: Added new constants per the 12/2015 DBG2 spec.
3373 FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
3374 ACPICA BZ 1249.
3375 ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
3376
3377 Updated header support for the DMAR table to match the current version of
3378 the related spec.
3379
3380 Added extensions to the ASL Concatenate operator to allow any ACPI object
3381 to be passed as an operand. Any object other than Integer/String/Buffer
3382 simply returns a string containing the object type. This extends the
3383 usefulness of the Printf macros. Previously, Concatenate would abort the
3384 control method if a non-data object was encountered.
3385
3386 ACPICA source code: Deployed the C "const" keyword across the source code
3387 where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
3388
3389 Example Code and Data Size: These are the sizes for the OS-independent
3390 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3391 debug version of the code includes the debug output trace mechanism and
3392 has 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
3402 2) iASL Compiler/Disassembler and Tools:
3403
3404 iASL/Disassembler: Improved the heuristic used to determine the number of
3405 arguments for an externally defined control method (a method in another
3406 table). 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
3408 will completely solve this problem as it is deployed (automatically) in
3409 newer BIOS code.
3410
3411 iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
3412 statements that could cause errors when the disassembled file is
3413 compiled. ACPICA BZ 1243. David Box.
3414
3415 iASL: Fixed a regression caused by the merger of the two versions of the
3416 local strtoul64. Because of a dependency on a global variable, strtoul64
3417 could return an error for integers greater than a 32-bit value. ACPICA BZ
3418 1260.
3419
3420 iASL: Fixed a regression where a fault could occur for an ASL Return
3421 statement if it invokes a control method that is not resolved. ACPICA BZ
3422 1264.
3423
3424 AcpiXtract: Improved input file validation: detection of binary files and
3425 non-acpidump text files.
3426
3427 ----------------------------------------
3428 12 February 2016. Summary of changes for version 20160212:
3429
3430 1) ACPICA kernel-resident subsystem:
3431
3432 Implemented full support for the ACPI 6.1 specification (released in
3433 January). This version of the specification is available at:
3434 http://www.uefi.org/specifications
3435
3436 Only a relatively small number of changes were required in ACPICA to
3437 support 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
3443 Ensure \_SB_._INI is executed before any _REG methods are executed. There
3444 appears to be existing BIOS code that relies on this behavior. Lv Zheng.
3445
3446 Reverted a change made in version 20151218 which enabled method
3447 invocations to be targets of various ASL operators (SuperName and Target
3448 grammar elements). While the new behavior is supported by the ACPI
3449 specification, other AML interpreters do not support this behavior and
3450 never will. The ACPI specification will be updated for ACPI 6.2 to remove
3451 this support. Therefore, the change was reverted to the original ACPICA
3452 behavior.
3453
3454 ACPICA now supports the GCC 6 compiler.
3455
3456 Current 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
3459 Previous 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
3464 2) iASL Compiler/Disassembler and Tools:
3465
3466 Completed full support for the ACPI 6.0 External() AML opcode. The
3467 compiler emits an external AML opcode for each ASL External statement.
3468 This opcode is used by the disassembler to assist with the disassembly of
3469 external control methods by specifying the required number of arguments
3470 for the method. AML interpreters do not use this opcode. To ensure that
3471 interpreters do not even see the opcode, a block of one or more external
3472 opcodes is surrounded by an "If(0)" construct. As this feature becomes
3473 commonly deployed in BIOS code, the ability of disassemblers to correctly
3474 disassemble AML code will be greatly improved. David Box.
3475
3476 iASL: Implemented support for an optional cross-reference output file.
3477 The -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
3483 iASL: Method invocations as ASL Target operands are now disallowed and
3484 flagged as errors in preparation for ACPI 6.2 (see the description of the
3485 problem above).
3486
3487 ----------------------------------------
3488 8 January 2016. Summary of changes for version 20160108:
3489
3490 1) ACPICA kernel-resident subsystem:
3491
3492 Updated all ACPICA copyrights and signons to 2016: Added the 2016
3493 copyright to all source code module headers and utility/tool signons.
3494 This includes the standard Linux dual-license header. This affects
3495 virtually every file in the ACPICA core subsystem, iASL compiler, all
3496 ACPICA utilities, and the ACPICA test suite.
3497
3498 Fixed a regression introduced in version 20151218 concerning the
3499 execution of so-called module-level ASL/AML code. Namespace objects
3500 created under a module-level If() construct were not properly/fully
3501 entered into the namespace and could cause an interpreter fault when
3502 accessed.
3503
3504 Example Code and Data Size: These are the sizes for the OS-independent
3505 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3506 debug version of the code includes the debug output trace mechanism and
3507 has a much larger code and data size.
3508
3509 Current 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
3517 2) iASL Compiler/Disassembler and Tools:
3518
3519 Fixed a problem with the compilation of the GpioIo and GpioInt resource
3520 descriptors. The _PIN field name was incorrectly defined to be an array
3521 of 32-bit values, but the _PIN values are in fact 16 bits each. This
3522 would cause incorrect bit width warnings when using Word (16-bit) fields
3523 to access the descriptors.
3524
3525
3526 ----------------------------------------
3527 18 December 2015. Summary of changes for version 20151218:
3528
3529 1) ACPICA kernel-resident subsystem:
3530
3531 Implemented per-AML-table execution of "module-level code" as individual
3532 ACPI tables are loaded into the namespace during ACPICA initialization.
3533 In other words, any module-level code within an AML table is executed
3534 immediately after the table is loaded, instead of batched and executed
3535 after all of the tables have been loaded. This provides compatibility
3536 with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
3537 David Box.
3538
3539 To fully support the feature above, the default operation region handlers
3540 for the SystemMemory, SystemIO, and PCI_Config address spaces are now
3541 installed before any ACPI tables are loaded. This enables module-level
3542 code to access these address spaces during the table load and module-
3543 level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
3544 Box.
3545
3546 Implemented several changes to the internal _REG support in conjunction
3547 with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
3548 utilities for the changes above. Although these tools were changed, host
3549 operating systems that simply use the default handlers for SystemMemory,
3550 SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
3551
3552 For example, in the code below, DEV1 is conditionally added to the
3553 namespace by the DSDT via module-level code that accesses an operation
3554 region. The SSDT references DEV1 via the Scope operator. DEV1 must be
3555 created immediately after the DSDT is loaded in order for the SSDT to
3556 successfully reference DEV1. Previously, this code would cause an
3557 AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
3558 fully 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
3582 Fixed an AML interpreter problem where control method invocations were
3583 not handled correctly when the invocation was itself a SuperName argument
3584 to another ASL operator. In these cases, the method was not invoked.
3585 ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
3586 argument:
3587 Store
3588 Acquire, Wait
3589 CondRefOf, RefOf
3590 Decrement, Increment
3591 Load, Unload
3592 Notify
3593 Signal, Release, Reset
3594 SizeOf
3595
3596 Implemented automatic String-to-ObjectReference conversion support for
3597 packages returned by predefined names (such as _DEP). A common BIOS error
3598 is to add double quotes around an ObjectReference namepath, which turns
3599 the reference into an unexpected string object. This support detects the
3600 problem and corrects it before the package is returned to the caller that
3601 invoked the method. Lv Zheng.
3602
3603 Implemented extensions to the Concatenate operator. Concatenate now
3604 accepts any type of object, it is not restricted to simply
3605 Integer/String/Buffer. For objects other than these 3 basic data types,
3606 the argument is treated as a string containing the name of the object
3607 type. This expands the utility of Concatenate and the Printf/Fprintf
3608 macros. ACPICA BZ 1222.
3609
3610 Cleaned up the output of the ASL Debug object. The timer() value is now
3611 optional and no longer emitted by default. Also, the basic data types of
3612 Integer/String/Buffer are simply emitted as their values, without a data
3613 type string -- since the data type is obvious from the output. ACPICA BZ
3614 1221.
3615
3616 Example Code and Data Size: These are the sizes for the OS-independent
3617 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3618 debug version of the code includes the debug output trace mechanism and
3619 has 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
3629 2) iASL Compiler/Disassembler and Tools:
3630
3631 iASL: Fixed some issues with the ASL Include() operator. This operator
3632 was incorrectly defined in the iASL parser rules, causing a new scope to
3633 be opened for the code within the include file. This could lead to
3634 several issues, including allowing ASL code that is technically illegal
3635 and not supported by AML interpreters. Note, this does not affect the
3636 related #include preprocessor operator. ACPICA BZ 1212.
3637
3638 iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
3639 operator is essentially an ASL macro since there is no AML opcode
3640 associated with it. The code emitted by the iASL compiler for ElseIf is
3641 an Else opcode followed immediately by an If opcode. The disassembler
3642 will now emit an ElseIf if it finds an Else immediately followed by an
3643 If. This simplifies the decoded ASL, especially for deeply nested
3644 If..Else and large Switch constructs. Thus, the disassembled code more
3645 closely 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
3662 AcpiExec: Added support for the new module level code behavior and the
3663 early region installation. This required a small change to the
3664 initialization, since AcpiExec must install its own operation region
3665 handlers.
3666
3667 AcpiExec: Added support to make the debug object timer optional. Default
3668 is timer disabled. This cleans up the debug object output -- the timer
3669 data is rarely used.
3670
3671 AcpiExec: Multiple ACPI tables are now loaded in the order that they
3672 appear on the command line. This can be important when there are
3673 interdependencies/references between the tables.
3674
3675 iASL/Templates. Add support to generate template files with multiple
3676 SSDTs within a single output file. Also added ommand line support to
3677 specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
3678 1223, 1225.
3679
3680
3681 ----------------------------------------
3682 24 November 2015. Summary of changes for version 20151124:
3683
3684 1) ACPICA kernel-resident subsystem:
3685
3686 Fixed a possible regression for a previous update to FADT handling. The
3687 FADT no longer has a fixed table ID, causing some issues with code that
3688 was hardwired to a specific ID. Lv Zheng.
3689
3690 Fixed a problem where the method auto-serialization could interfere with
3691 the current SyncLevel. This change makes the auto-serialization support
3692 transparent to the SyncLevel support and management.
3693
3694 Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
3695 interface is intended for early access to the namespace during the
3696 initial namespace device discovery walk. The _SUB method has been seen to
3697 access operation regions in some cases, causing errors because the
3698 operation regions are not fully initialized.
3699
3700 AML Debugger: Fixed some issues with the terminate/quit/exit commands
3701 that can cause faults. Lv Zheng.
3702
3703 AML Debugger: Add thread ID support so that single-step mode only applies
3704 to the AML Debugger thread. This prevents runtime errors within some
3705 kernels. Lv Zheng.
3706
3707 Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
3708 methods that are invoked by this interface are optional, removed warnings
3709 emitted for the case where one or more of these methods do not exist.
3710 ACPICA BZ 1208, original change by Prarit Bhargava.
3711
3712 Made a major pass through the entire ACPICA source code base to
3713 standardize formatting that has diverged a bit over time. There are no
3714 functional changes, but this will of course cause quite a few code
3715 differences from the previous ACPICA release.
3716
3717 Example Code and Data Size: These are the sizes for the OS-independent
3718 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3719 debug version of the code includes the debug output trace mechanism and
3720 has 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
3730 2) iASL Compiler/Disassembler and Tools:
3731
3732 iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
3733 definition blocks within a single ASL file and the resulting AML file.
3734 Support for this type of file was also added to the various tools that
3735 use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
3736 example code below shows two definition blocks within the same file:
3737
3738 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
3739 0x12345678)
3740 {
3741 }
3742 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
3743 {
3744 }
3745
3746 iASL: Enhanced typechecking for the Name() operator. All expressions for
3747 the value of the named object must be reduced/folded to a single constant
3748 at compile time, as per the ACPI specification (the AML definition of
3749 Name()).
3750
3751 iASL: Fixed some code indentation issues for the -ic and -ia options (C
3752 and assembly headers). Now all emitted code correctly begins in column 1.
3753
3754 iASL: Added an error message for an attempt to open a Scope() on an
3755 object defined in an SSDT. The DSDT is always loaded into the namespace
3756 first, so any attempt to open a Scope on an SSDT object will fail at
3757 runtime.
3758
3759
3760 ----------------------------------------
3761 30 September 2015. Summary of changes for version 20150930:
3762
3763 1) ACPICA kernel-resident subsystem:
3764
3765 Debugger: Implemented several changes and bug fixes to assist support for
3766 the 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
3771 Interpreter: Updated runtime typechecking for all operators that have
3772 target operands. The operand is resolved and validated that it is legal.
3773 For example, the target cannot be a non-data object such as a Device,
3774 Mutex, ThermalZone, etc., as per the ACPI specification.
3775
3776 Debugger: Fixed the double-mutex user I/O handshake to work when local
3777 deadlock detection is enabled.
3778
3779 Debugger: limited display of method locals and arguments (LocalX and
3780 ArgX) to only those that have actually been initialized. This prevents
3781 lines of extraneous output.
3782
3783 Updated the definition of the NFIT table to correct the bit polarity of
3784 one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
3785
3786 Example Code and Data Size: These are the sizes for the OS-independent
3787 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3788 debug version of the code includes the debug output trace mechanism and
3789 has 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
3799 2) iASL Compiler/Disassembler and Tools:
3800
3801 iASL: Improved the compile-time typechecking for operands of many of the
3802 ASL operators:
3803
3804 -- Added an option to disable compiler operand/operator typechecking (-
3805 ot).
3806
3807 -- For the following operators, the TermArg operands are now validated
3808 when possible to be Integer data objects: BankField, OperationRegion,
3809 DataTableRegion, Buffer, and Package.
3810
3811 -- Store (Source, Target): Both the source and target operands are
3812 resolved and checked that the operands are both legal. For example,
3813 neither operand can be a non-data object such as a Device, Mutex,
3814 ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
3815 operator 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
3818 must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
3819 is a Package, the source must also be a Package.
3820
3821 -- Store (Source, Target): A warning is issued if the source and target
3822 resolve to the identical named object.
3823
3824 -- Store (Source, <method invocation>): An error is generated for the
3825 target method invocation, as this construct is not supported by the AML
3826 interpreter.
3827
3828 -- For all ASL math and logic operators, the target operand must be a
3829 data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
3830 includes the function return value also.
3831
3832 -- External declarations are also included in the typechecking where
3833 possible. External objects defined using the UnknownObj keyword cannot be
3834 typechecked, however.
3835
3836 iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
3837 operator:
3838 - Legacy code: Index(PKG1, 3)
3839 - New ASL+ code: PKG1[3]
3840 This completes the ACPI 6.0 ASL+ support as it was the only operator not
3841 supported.
3842
3843 iASL: Fixed the file suffix for the preprocessor output file (.i). Two
3844 spaces were inadvertently appended to the filename, causing file access
3845 and deletion problems on some systems.
3846
3847 ASL Test Suite (ASLTS): Updated the master makefile to generate all
3848 possible compiler output files when building the test suite -- thus
3849 exercising these features of the compiler. These files are automatically
3850 deleted when the test suite exits.
3851
3852
3853 ----------------------------------------
3854 18 August 2015. Summary of changes for version 20150818:
3855
3856 1) ACPICA kernel-resident subsystem:
3857
3858 Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
3859 Zheng. ACPICA BZ 1186.
3860
3861 Completed development to ensure that the ACPICA Disassembler and Debugger
3862 are fully standalone components of ACPICA. Removed cross-component
3863 dependences. Lv Zheng.
3864
3865 The max-number-of-AML-loops is now runtime configurable (previously was
3866 compile-time only). This is essentially a loop timeout to force-abort
3867 infinite AML loops. ACPCIA BZ 1192.
3868
3869 Debugger: Cleanup output to dump ACPI names and namepaths without any
3870 trailing underscores. Lv Zheng. ACPICA BZ 1135.
3871
3872 Removed unnecessary conditional compilations across the Debugger and
3873 Disassembler components where entire modules could be left uncompiled.
3874
3875 The aapits test is deprecated and has been removed from the ACPICA git
3876 tree. The test has never been completed and has not been maintained, thus
3877 becoming rather useless. ACPICA BZ 1015, 794.
3878
3879 A 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
3884 Moore.
3885 - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
3886 ACPICA BZ 1184.
3887 - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
3888 operators.
3889 - Debugger: Split debugger initialization/termination interfaces. Lv
3890 Zheng.
3891 - AcpiExec: Emit OemTableId for SSDTs during the load phase for table
3892 identification.
3893 - AcpiExec: Add debug message during _REG method phase during table
3894 load/init.
3895 - AcpiNames: Fix a regression where some output was missing and no longer
3896 emitted.
3897 - Debugger: General cleanup and simplification. Lv Zheng.
3898 - Disassembler: Cleanup use of several global option variables. Lv Zheng.
3899
3900 Example Code and Data Size: These are the sizes for the OS-independent
3901 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3902 debug version of the code includes the debug output trace mechanism and
3903 has 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
3913 2) iASL Compiler/Disassembler and Tools:
3914
3915 AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
3916 were not handled properly and caused load errors. Now, properly invoke
3917 and use the ACPICA auto-reallocate mechanism for ACPI table data
3918 structures. ACPICA BZ 1188
3919
3920 AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
3921 BZ 1190.
3922
3923 AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
3924 AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
3925 executed during initialization. ACPICA BZ 1187, 1189.
3926
3927 iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
3928 that corresponds to each disassembled ASL statement, to simplify
3929 debugging. ACPICA BZ 1191.
3930
3931 Debugger: Add option to the "objects" command to display a summary of the
3932 current namespace objects (Object type and count). This is displayed if
3933 the command is entered with no arguments.
3934
3935 AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
3936
3937
3938 ----------------------------------------
3939 17 July 2015. Summary of changes for version 20150717:
3940
3941 1) ACPICA kernel-resident subsystem:
3942
3943 Improved the partitioning between the Debugger and Disassembler
3944 components. This allows the Debugger to be used standalone within kernel
3945 code without the Disassembler (which is used for single stepping also).
3946 This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
3947
3948 Debugger: Implemented a new command to trace the execution of control
3949 methods (Trace). This is especially useful for the in-kernel version of
3950 the debugger when file I/O may not be available for method trace output.
3951 See the ACPICA reference for more information. Lv Zheng.
3952
3953 Moved all C library prototypes (used for the local versions of these
3954 functions when requested) to a new header, acclib.h
3955 Cleaned up the use of non-ANSI C library functions. These functions are
3956 implemented locally in ACPICA. Moved all such functions to a common
3957 source file, utnonansi.c
3958
3959 Debugger: Fixed a problem with the "!!" command (get last command
3960 executed) where the debugger could enter an infinite loop and eventually
3961 crash.
3962
3963 Removed the use of local macros that were used for some of the standard C
3964 library functions to automatically cast input parameters. This mostly
3965 affected the is* functions where the input parameter is defined to be an
3966 int. This required a few modifications to the main ACPICA source code to
3967 provide casting for these functions and eliminate possible compiler
3968 warnings for these parameters.
3969
3970 Across the source code, added additional status/error checking to resolve
3971 issues discovered by static source code analysis tools such as Coverity.
3972
3973 Example Code and Data Size: These are the sizes for the OS-independent
3974 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3975 debug version of the code includes the debug output trace mechanism and
3976 has 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
3986 2) iASL Compiler/Disassembler and Tools:
3987
3988 iASL: Fixed a regression where the device map file feature no longer
3989 worked properly when used in conjunction with the disassembler. It only
3990 worked properly with the compiler itself.
3991
3992 iASL: Implemented a new warning for method LocalX variables that are set
3993 but never used (similar to a C compiler such as gcc). This also applies
3994 to ArgX variables that are not defined by the parent method, and are
3995 instead (legally) used as local variables.
3996
3997 iASL/Preprocessor: Finished the pass-through of line numbers from the
3998 preprocessor to the compiler. This ensures that compiler errors/warnings
3999 have the correct original line numbers and filenames, regardless of any
4000 #include files.
4001
4002 iASL/Preprocessor: Fixed a couple of issues with comment handling and the
4003 pass-through of comments to the preprocessor output file (which becomes
4004 the compiler input file). Also fixed a problem with // comments that
4005 appear after a math expression.
4006
4007 iASL: Added support for the TCPA server table to the table compiler and
4008 template generator. (The client table was already previously supported)
4009
4010 iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
4011 identify the iASL compiler.
4012
4013 Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
4014 multiple times. The new names are ACPI_SIGN_NEGATIVE and
4015 ACPI_SIGN_POSITIVE.
4016
4017 AcpiHelp: Update to expand help messages for the iASL preprocessor
4018 directives.
4019
4020
4021 ----------------------------------------
4022 19 June 2015. Summary of changes for version 20150619:
4023
4024 Two regressions in version 20150616 have been addressed:
4025
4026 Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
4027 etc.) This update changes ACPICA to only use the standard headers for
4028 functions, or the prototypes for the local versions of the C library
4029 functions. Across the source code, this required some additional casts
4030 for some Clib invocations for portability. Moved all local prototypes to
4031 a new file, acclib.h
4032
4033 Fixes several problems with recent changes to the handling of the FACS
4034 table that could cause some systems not to boot.
4035
4036
4037 ----------------------------------------
4038 16 June 2015. Summary of changes for version 20150616:
4039
4040
4041 1) ACPICA kernel-resident subsystem:
4042
4043 Across the entire ACPICA source code base, the various macros for the C
4044 library functions (such as ACPI_STRLEN, etc.) have been removed and
4045 replaced by the standard C library names (strlen, etc.) The original
4046 purpose for these macros is no longer applicable. This simplification
4047 reduces the number of macros used in the ACPICA source code
4048 significantly, improving readability and maintainability.
4049
4050 Implemented 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
4052 enables the replacement of existing namespace objects that were installed
4053 via the DSDT and/or SSDTs. The primary purpose for this is to replace
4054 buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
4055 for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
4056 Moore.
4057
4058 Added support for systems with (improperly) two FACS tables -- a "32-bit"
4059 table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
4060 X field). This change will support both automatically. There continues to
4061 be systems found with this issue. This support requires a change to the
4062 AcpiSetFirmwareWakingVector interface. Also, a public global variable has
4063 been added to allow the host to select which FACS is desired
4064 (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
4065 details Lv Zheng.
4066
4067 Added a new feature to allow for systems that do not contain an FACS.
4068 Although this is already supported on hardware-reduced platforms, the
4069 feature has been extended for all platforms. The reasoning is that we do
4070 not want to abort the entire ACPICA initialization just because the
4071 system is seriously buggy and has no FACS.
4072
4073 Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
4074 not correctly transcribed from the ACPI specification in ACPICA version
4075 20150515.
4076
4077 Implemented support for the _CLS object in the AcpiGetObjectInfo external
4078 interface.
4079
4080 Updated the definitions of the TCPA and TPM2 ACPI tables to the more
4081 recent TCG ACPI Specification, December 14, 2014. Table disassembler and
4082 compiler also updated. Note: The TCPA "server" table is not supported by
4083 the disassembler/table-compiler at this time.
4084
4085 ACPI 6.0: Added definitions for the new GIC version field in the MADT.
4086
4087 Example Code and Data Size: These are the sizes for the OS-independent
4088 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4089 debug version of the code includes the debug output trace mechanism and
4090 has 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
4100 2) iASL Compiler/Disassembler and Tools:
4101
4102 Disassembler: Fixed a problem with the new symbolic operator disassembler
4103 where incorrect ASL code could be emitted in some cases for the "non-
4104 commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
4105 ShiftRight. The actual problem cases seem to be rather unusual in common
4106 ASL code, however. David Box.
4107
4108 Modified the linux version of acpidump to obtain ACPI tables from not
4109 just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
4110 Zheng.
4111
4112 iASL: Fixed a problem where the user preprocessor output file (.i)
4113 contained extra data that was not expected. The compiler was using this
4114 file as a temporary file and passed through #line directives in order to
4115 keep compiler error messages in sync with the input file and line number
4116 across multiple include files. The (.i) is no longer a temporary file as
4117 the compiler uses a new, different file for the original purpose.
4118
4119 iASL: Fixed a problem where comments within the original ASL source code
4120 file were not passed through to the preprocessor output file, nor any
4121 listing files.
4122
4123 iASL: Fixed some issues for the handling of the "#include" preprocessor
4124 directive and the similar (but not the same) "Include" ASL operator.
4125
4126 iASL: Add support for the new OSDT in both the disassembler and compiler.
4127
4128 iASL: Fixed a problem with the constant folding support where a Buffer
4129 object could be incorrectly generated (incorrectly formed) during a
4130 conversion to a Store() operator.
4131
4132 AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
4133 description text for the _REV predefined name. _REV now permanently
4134 returns 2, as per the ACPI 6.0 specification.
4135
4136 Debugger: Enhanced the output of the Debug ASL object for references
4137 produced by the Index operator. For Buffers and strings, only output the
4138 actual byte pointed to by the index. For packages, only print the single
4139 package element decoded by the index. Previously, the entire
4140 buffer/string/package was emitted.
4141
4142 iASL/Table-compiler: Fixed a regression where the "generic" data types
4143 were no longer recognized, causing errors.
4144
4145
4146 ----------------------------------------
4147 15 May 2015. Summary of changes for version 20150515:
4148
4149 This release implements most of ACPI 6.0 as described below.
4150
4151 1) ACPICA kernel-resident subsystem:
4152
4153 Implemented runtime argument checking and return value checking for all
4154 new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
4155 _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
4156
4157 Example Code and Data Size: These are the sizes for the OS-independent
4158 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4159 debug version of the code includes the debug output trace mechanism and
4160 has 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
4170 2) iASL Compiler/Disassembler and Tools:
4171
4172 iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
4173 names (argument count validation and return value typechecking.)
4174
4175 iASL disassembler and table compiler: implemented support for all new
4176 ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
4177
4178 iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
4179 tables: FADT, MADT.
4180
4181 iASL preprocessor: Added a new directive to enable inclusion of binary
4182 blobs into ASL code. The new directive is #includebuffer. It takes a
4183 binary file as input and emits a named ascii buffer object into the ASL
4184 code.
4185
4186 AcpiHelp: Added support for all new ACPI 6.0 predefined names.
4187
4188 AcpiHelp: Added a new option, -d, to display all iASL preprocessor
4189 directives.
4190
4191 AcpiHelp: Added a new option, -t, to display all known/supported ACPI
4192 tables.
4193
4194
4195 ----------------------------------------
4196 10 April 2015. Summary of changes for version 20150410:
4197
4198 Reverted a change introduced in version 20150408 that caused
4199 a regression in the disassembler where incorrect operator
4200 symbols could be emitted.
4201
4202
4203 ----------------------------------------
4204 08 April 2015. Summary of changes for version 20150408:
4205
4206
4207 1) ACPICA kernel-resident subsystem:
4208
4209 Permanently set the return value for the _REV predefined name. It now
4210 returns 2 (was 5). This matches other ACPI implementations. _REV will be
4211 deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
4212 for ACPI 2.0 and later. It should never be used to differentiate or
4213 identify operating systems.
4214
4215 Added the "Windows 2015" string to the _OSI support. ACPICA will now
4216 return TRUE to a query with this string.
4217
4218 Fixed several issues with the local version of the printf function.
4219
4220 Added 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
4230 2) iASL Compiler/Disassembler and Tools:
4231
4232 iASL: Implemented an enhancement to the constant folding feature to
4233 transform 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
4237 Updated support for the SLIC table (Software Licensing Description Table)
4238 in both the Data Table compiler and the disassembler. The SLIC table
4239 support now conforms to "Microsoft Software Licensing Tables (SLIC and
4240 MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
4241 following the ACPI header is now defined to be "Proprietary Data", and as
4242 such, can only be entered or displayed as a hex data block.
4243
4244 Implemented full support for the MSDM table as described in the document
4245 above. Note: The format of MSDM is similar to SLIC. Any MSDM data
4246 following the ACPI header is defined to be "Proprietary Data", and can
4247 only be entered or displayed as a hex data block.
4248
4249 Implemented the -Pn option for the iASL Table Compiler (was only
4250 implemented for the ASL compiler). This option disables the iASL
4251 preprocessor.
4252
4253 Disassembler: For disassembly of Data Tables, added a comment field
4254 around the Ascii equivalent data that is emitted as part of the "Raw
4255 Table Data" block. This prevents the iASL Preprocessor from possible
4256 confusion if/when the table is compiled.
4257
4258 Disassembler: Added an option (-df) to force the disassembler to assume
4259 that the table being disassembled contains valid AML. This feature is
4260 useful for disassembling AML files that contain ACPI signatures other
4261 than DSDT or SSDT (such as OEMx or other signatures).
4262
4263 Changes for the EFI version of the tools:
4264 1) Fixed a build error/issue
4265 2) Fixed a cast warning
4266
4267 iASL: Fixed a path issue with the __FILE__ operator by making the
4268 directory prefix optional within the internal SplitInputFilename
4269 function.
4270
4271 Debugger: Removed some unused global variables.
4272
4273 Tests: Updated the makefile for proper generation of the AAPITS suite.
4274
4275
4276 ----------------------------------------
4277 04 February 2015. Summary of changes for version 20150204:
4278
4279 ACPICA kernel-resident subsystem:
4280
4281 Updated all ACPICA copyrights and signons to 2014. Added the 2014
4282 copyright to all module headers and signons, including the standard Linux
4283 header. This affects virtually every file in the ACPICA core subsystem,
4284 iASL compiler, all ACPICA utilities, and the test suites.
4285
4286 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
4287 A raw gpe handling mechanism was created to allow better handling of GPE
4288 storms that aren't easily managed by the normal handler. The raw handler
4289 allows disabling/renabling of the GPE so that interrupt storms can be
4290 avoided in cases where events cannot be timely serviced. In this
4291 scenario, handlers should use the AcpiSetGpe() API to disable/enable the
4292 GPE. This API will leave the reference counts undisturbed, thereby
4293 preventing unintentional clearing of the GPE when the intent in only to
4294 temporarily disable it. Raw handlers allow enabling and disabling of a
4295 GPE by removing GPE register locking. As such, raw handlers much provide
4296 their own locks while using GPE API's to protect access to GPE data
4297 structures.
4298 Lv Zheng
4299
4300 Events: Always modify GPE registers under the GPE lock.
4301 Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
4302 values. Reported as bug by joe.liu (a] apple.com.
4303
4304 Unix makefiles: Separate option to disable optimizations and
4305 _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
4306 NOOPT disable option and creates a separate flag (NOFORTIFY) for this
4307 purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
4308 errors when building ACPICA. This allows disabling the option without
4309 also having to disable optimazations.
4310 David 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 --------------------------------------
4318 07 November 2014. Summary of changes for version 20141107:
4319
4320 This release is available at https://acpica.org/downloads
4321
4322 This release introduces and implements language extensions to ASL that
4323 provide support for symbolic ("C-style") operators and expressions. These
4324 language extensions are known collectively as ASL+.
4325
4326
4327 1) iASL Compiler/Disassembler and Tools:
4328
4329 Disassembler: Fixed a problem with disassembly of the UartSerialBus
4330 macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
4331 Box.
4332
4333 Disassembler: Fixed the Unicode macro support to add escape sequences.
4334 All non-printable ASCII values are emitted as escape sequences, as well
4335 as the standard escapes for quote and backslash. Ensures that the
4336 disassembled macro can be correctly recompiled.
4337
4338 iASL: Added Printf/Fprintf macros for formatted output. These macros are
4339 translated to existing AML Concatenate and Store operations. Printf
4340 writes to the ASL Debug object. Fprintf allows the specification of an
4341 ASL name as the target. Only a single format specifier is required, %o,
4342 since the AML interpreter dynamically converts objects to the required
4343 type. 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
4358 iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
4359 ASL parse tree before the AML code is generated. This allows blocks of
4360 ASL code to be removed in order to help locate and identify problem
4361 devices and/or code. David E. Box.
4362
4363 AcpiExec: Added support (-fi) for an optional namespace object
4364 initialization file. This file specifies initial values for namespace
4365 objects as necessary for debugging and testing different ASL code paths
4366 that may be taken as a result of BIOS options.
4367
4368
4369 2) Overview of symbolic operator support for ASL (ASL+)
4370 -------------------------------------------------------
4371
4372 As an extension to the ASL language, iASL implements support for symbolic
4373 (C-style) operators for math and logical expressions. This can greatly
4374 simplify ASL code as well as improve both readability and
4375 maintainability. These language extensions can exist concurrently with
4376 all legacy ASL code and expressions.
4377
4378 The symbolic extensions are 100% compatible with existing AML
4379 interpreters, since no new AML opcodes are created. To implement the
4380 extensions, the iASL compiler transforms the symbolic expressions into
4381 the legacy ASL/AML equivalents at compile time.
4382
4383 Full symbolic expressions are supported, along with the standard C
4384 precedence and associativity rules.
4385
4386 Full disassembler support for the symbolic expressions is provided, and
4387 creates an automatic migration path for existing ASL code to ASL+ code
4388 via the disassembly process. By default, the disassembler now emits ASL+
4389 code with symbolic expressions. An option (-dl) is provided to force the
4390 disassembler to emit legacy ASL code if desired.
4391
4392 Below is the complete list of the currently supported symbolic operators
4393 with examples. See the iASL User Guide for additional information.
4394
4395
4396 ASL+ Syntax Legacy ASL Equivalent
4397 ----------- ---------------------
4398
4399 // Math operators
4400
4401 Z = X + Y Add (X, Y, Z)
4402 Z = X - Y Subtract (X, Y, Z)
4403 Z = X * Y Multiply (X, Y, Z)
4404 Z = X / Y Divide (X, Y, , Z)
4405 Z = X % Y Mod (X, Y, Z)
4406 Z = X << Y ShiftLeft (X, Y, Z)
4407 Z = X >> Y ShiftRight (X, Y, Z)
4408 Z = X & Y And (X, Y, Z)
4409 Z = X | Y Or (X, Y, Z)
4410 Z = X ^ Y Xor (X, Y, Z)
4411 Z = ~X Not (X, Z)
4412 X++ Increment (X)
4413 X-- 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
4429 X = Y Store (Y, X)
4430 X += Y Add (X, Y, X)
4431 X -= Y Subtract (X, Y, X)
4432 X *= Y Multiply (X, Y, X)
4433 X /= Y Divide (X, Y, , X)
4434 X %= Y Mod (X, Y, X)
4435 X <<= Y ShiftLeft (X, Y, X)
4436 X >>= Y ShiftRight (X, Y, X)
4437 X &= Y And (X, Y, X)
4438 X |= Y Or (X, Y, X)
4439 X ^= Y Xor (X, Y, X)
4440
4441
4442 3) ASL+ Examples:
4443 -----------------
4444
4445 Legacy ASL:
4446 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
4447 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
4448 0x03FB),
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
4459 ASL+ 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
4473 Legacy 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
4484 ASL+ 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 ----------------------------------------
4497 26 September 2014. Summary of changes for version 20140926:
4498
4499 1) ACPICA kernel-resident subsystem:
4500
4501 Updated the GPIO operation region handler interface (GeneralPurposeIo).
4502 In order to support GPIO Connection objects with multiple pins, along
4503 with the related Field objects, the following changes to the interface
4504 have been made: The Address is now defined to be the offset in bits of
4505 the field unit from the previous invocation of a Connection. It can be
4506 viewed as a "Pin Number Index" into the connection resource descriptor.
4507 The BitWidth is the exact bit width of the field. It is usually one bit,
4508 but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
4509 additional information and examples.
4510
4511 GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
4512 corresponding _Lxx/_Exx methods are disabled (they may have been enabled
4513 by the firmware), so that they cannot fire until they are enabled via
4514 AcpiUpdateAllGpes. Rafael J. Wysocki.
4515
4516 Added a new return flag for the Event/GPE status interfaces --
4517 AcpiGetEventStatus and AcpiGetGpeStatus. The new
4518 ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
4519 GPE currently has a handler associated with it, and can thus actually
4520 affect the system. Lv Zheng.
4521
4522 Example Code and Data Size: These are the sizes for the OS-independent
4523 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4524 debug version of the code includes the debug output trace mechanism and
4525 has 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
4534 2) iASL Compiler/Disassembler and Tools:
4535
4536 iASL: Fixed a memory allocation/free regression introduced in 20140828
4537 that could cause the compiler to crash. This was introduced inadvertently
4538 during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
4539 1113.
4540
4541 iASL: Removed two error messages that have been found to create false
4542 positives, until they can be fixed and fully validated (ACPICA BZ 1112):
4543 1) Illegal forward reference within a method
4544 2) Illegal reference across two methods
4545
4546 iASL: Implemented a new option (-lm) to create a hardware mapping file
4547 that summarizes all GPIO, I2C, SPI, and UART connections. This option
4548 works for both the compiler and disassembler. See the iASL compiler user
4549 guide for additional information and examples (section 6.4.6).
4550
4551 AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
4552 version 2. This corrects the AE_BAD_HEADER exception seen on systems with
4553 a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
4554
4555 AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
4556 unless STDIN is actually a terminal. Assists with batch-mode processing.
4557 ACPICA BZ 1114.
4558
4559 Disassembler/AcpiHelp: Added another large group of recognized _HID
4560 values.
4561
4562
4563 ----------------------------------------
4564 28 August 2014. Summary of changes for version 20140828:
4565
4566 1) ACPICA kernel-resident subsystem:
4567
4568 Fixed a problem related to the internal use of the Timer() operator where
4569 a 64-bit divide could cause an attempted link to a double-precision math
4570 library. This divide is not actually necessary, so the code was
4571 restructured to eliminate it. Lv Zheng.
4572
4573 ACPI 5.1: Added support for the runtime validation of the _DSD package
4574 (similar to the iASL support).
4575
4576 ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
4577 SRAT table. Hanjun Guo <hanjun.guo (a] linaro.org>.
4578
4579 Example Code and Data Size: These are the sizes for the OS-independent
4580 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4581 debug version of the code includes the debug output trace mechanism and
4582 has 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
4591 2) iASL Compiler/Disassembler and Tools:
4592
4593 AcpiExec: Fixed a problem on unix systems where the original terminal
4594 state was not always properly restored upon exit. Seen when using the -v
4595 option. ACPICA BZ 1104.
4596
4597 iASL: Fixed a problem with the validation of the ranges/length within the
4598 Memory24 resource descriptor. There was a boundary condition when the
4599 range was equal to the (length -1) caused by the fact that these values
4600 are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
4601
4602 Disassembler: Fixed a problem with the GpioInt descriptor interrupt
4603 polarity
4604 flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
4605 is
4606 now supported properly.
4607
4608 ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
4609 in the disassembler, data table compiler, and table template generator.
4610
4611 iASL: Added a requirement for Device() objects that one of either a _HID
4612 or _ADR must exist within the scope of a Device, as per the ACPI
4613 specification. Remove a similar requirement that was incorrectly in place
4614 for the _DSD object.
4615
4616 iASL: Added error detection for illegal named references within control
4617 methods that would cause runtime failures. Now trapped as errors are: 1)
4618 References to objects within a non-parent control method. 2) Forward
4619 references (within a method) -- for control methods, AML interpreters use
4620 a one-pass parse of control methods. ACPICA BZ 1008.
4621
4622 iASL: Added error checking for dependencies related to the _PSx power
4623 methods. ACPICA BZ 1029.
4624 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
4625 _PS3.
4626 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
4627 scope.
4628
4629 iASL and table compiler: Cleanup miscellaneous memory leaks by fully
4630 deploying the existing object and string caches and adding new caches for
4631 the table compiler.
4632
4633 iASL: Split the huge parser source file into multiple subfiles to improve
4634 manageability. Generation now requires the M4 macro preprocessor, which
4635 is part of the Bison distribution on both unix and windows platforms.
4636
4637 AcpiSrc: Fixed and removed all extraneous warnings generated during
4638 entire ACPICA source code scan and/or conversion.
4639
4640
4641 ----------------------------------------
4642
4643 24 July 2014. Summary of changes for version 20140724:
4644
4645 The ACPI 5.1 specification has been released and is available at:
4646 http://uefi.org/specs/access
4647
4648
4649 0) ACPI 5.1 support in ACPICA:
4650
4651 ACPI 5.1 is fully supported in ACPICA as of this release.
4652
4653 New predefined names. Support includes iASL and runtime ACPICA
4654 validation.
4655 _CCA (Cache Coherency Attribute).
4656 _DSD (Device-Specific Data). David Box.
4657
4658 Modifications to existing ACPI tables. Support includes headers, iASL
4659 Data 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
4665 Miscellaneous.
4666 New notification type for System Resource Affinity change events.
4667
4668
4669 1) ACPICA kernel-resident subsystem:
4670
4671 Fixed a regression introduced in 20140627 where a fault can happen during
4672 the deletion of Alias AML namespace objects. The problem affected both
4673 the core ACPICA and the ACPICA tools including iASL and AcpiExec.
4674
4675 Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
4676 simple mechanism to enable wake GPEs that have no associated handler or
4677 control method. Rafael Wysocki.
4678
4679 Updated the AcpiEnableGpe interface to disallow the enable if there is no
4680 handler or control method associated with the particular GPE. This will
4681 help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
4682
4683 Updated GPE handling and dispatch by disabling the GPE before clearing
4684 the status bit for edge-triggered GPEs. Lv Zheng.
4685
4686 Added Timer() support to the AML Debug object. The current timer value is
4687 now displayed with each invocation of (Store to) the debug object to
4688 enable simple generation of execution times for AML code (method
4689 execution for example.) ACPICA BZ 1093.
4690
4691 Example Code and Data Size: These are the sizes for the OS-independent
4692 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4693 debug version of the code includes the debug output trace mechanism and
4694 has 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
4704 2) iASL Compiler/Disassembler and Tools:
4705
4706 Fixed an issue with the recently added local printf implementation,
4707 concerning width/precision specifiers that could cause incorrect output.
4708 Lv Zheng. ACPICA BZ 1094.
4709
4710 Disassembler: Added support to detect buffers that contain UUIDs and
4711 disassemble them to an invocation of the ToUUID operator. Also emit
4712 commented descriptions of known ACPI-related UUIDs.
4713
4714 AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
4715 -u. Adds three new files.
4716
4717 iASL: Update table compiler and disassembler for DMAR table changes that
4718 were introduced in September 2013. With assistance by David Woodhouse.
4719
4720 ----------------------------------------
4721 27 June 2014. Summary of changes for version 20140627:
4722
4723 1) ACPICA kernel-resident subsystem:
4724
4725 Formatted Output: Implemented local versions of standard formatted output
4726 utilities such as printf, etc. Over time, it has been discovered that
4727 there are in fact many portability issues with printf, and the addition
4728 of this feature will fix/prevent these issues once and for all. Some
4729 known issues are summarized below:
4730
4731 1) Output of 64-bit values is not portable. For example, UINT64 is %ull
4732 for the Linux kernel and is %uI64 for some MSVC versions.
4733 2) Invoking printf consistently in a manner that is portable across both
4734 32-bit and 64-bit platforms is difficult at best in many situations.
4735 3) The output format for pointers varies from system to system (leading
4736 zeros especially), and leads to inconsistent output from ACPICA across
4737 platforms.
4738 4) Certain platform-specific printf formats may conflict with ACPICA use.
4739 5) If there is no local C library available, ACPICA now has local support
4740 for printf.
4741
4742 -- To address these printf issues in a complete manner, ACPICA now
4743 directly implements a small subset of printf format specifiers, only
4744 those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
4745
4746 Implemented support for ACPICA generation within the EFI environment.
4747 Initially, the AcpiDump utility is supported in the UEFI shell
4748 environment. Lv Zheng.
4749
4750 Added a new external interface, AcpiLogError, to improve ACPICA
4751 portability. This allows the host to redirect error messages from the
4752 ACPICA utilities. Lv Zheng.
4753
4754 Added and deployed new OSL file I/O interfaces to improve ACPICA
4755 portability:
4756 AcpiOsOpenFile
4757 AcpiOsCloseFile
4758 AcpiOsReadFile
4759 AcpiOsWriteFile
4760 AcpiOsGetFileOffset
4761 AcpiOsSetFileOffset
4762 There are C library implementations of these functions in the new file
4763 service_layers/oslibcfs.c -- however, the functions can be implemented by
4764 the local host in any way necessary. Lv Zheng.
4765
4766 Implemented a mechanism to disable/enable ACPI table checksum validation
4767 at runtime. This can be useful when loading tables very early during OS
4768 initialization when it may not be possible to map the entire table in
4769 order to compute the checksum. Lv Zheng.
4770
4771 Fixed a buffer allocation issue for the Generic Serial Bus support.
4772 Originally, a fixed buffer length was used. This change allows for
4773 variable-length buffers based upon the protocol indicated by the field
4774 access attributes. Reported by Lan Tianyu. Lv Zheng.
4775
4776 Fixed a problem where an object detached from a namespace node was not
4777 properly terminated/cleared and could cause a circular list problem if
4778 reattached. ACPICA BZ 1063. David Box.
4779
4780 Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
4781
4782 Fixed a possible memory leak in an error return path within the function
4783 AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
4784
4785 Example Code and Data Size: These are the sizes for the OS-independent
4786 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4787 debug version of the code includes the debug output trace mechanism and
4788 has 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
4798 2) iASL Compiler/Disassembler and Tools:
4799
4800 Disassembler: Add dump of ASCII equivalent text within a comment at the
4801 end of each line of the output for the Buffer() ASL operator.
4802
4803 AcpiDump: 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
4806 the ACPI 2.0 GUID fails.
4807
4808 iASL: Fixed a problem where the compiler could fault if incorrectly given
4809 an acpidump output file as input. ACPICA BZ 1088. David Box.
4810
4811 AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
4812 they are invoked without any arguments.
4813
4814 Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
4815 1086. Colin Ian King.
4816
4817 Disassembler: Cleaned up a block of code that extracts a parent Op
4818 object. Added a comment that explains that the parent is guaranteed to be
4819 valid in this case. ACPICA BZ 1069.
4820
4821
4822 ----------------------------------------
4823 24 April 2014. Summary of changes for version 20140424:
4824
4825 1) ACPICA kernel-resident subsystem:
4826
4827 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
4828 Some of these tables are known to contain a trailing NULL entry. Lv
4829 Zheng.
4830
4831 Removed an extraneous error message for the case where there are a large
4832 number of system GPEs (> 124). This was the "32-bit FADT register is too
4833 long to convert to GAS struct" message, which is irrelevant for GPEs
4834 since 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
4836 support for GPE numbers > 255, where some "GPE number" fields were 8-bits
4837 internally.
4838
4839 Implemented and deployed additional configuration support for the public
4840 ACPICA external interfaces. Entire classes of interfaces can now be
4841 easily modified or configured out, replaced by stubbed inline functions
4842 by default. Lv Zheng.
4843
4844 Moved all public ACPICA runtime configuration globals to the public
4845 ACPICA external interface file for convenience. Also, removed some
4846 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
4847
4848 Documentation: Added a new section to the ACPICA reference describing the
4849 maximum number of GPEs that can be supported by the FADT-defined GPEs in
4850 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
4851 reference.
4852
4853 Example Code and Data Size: These are the sizes for the OS-independent
4854 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4855 debug version of the code includes the debug output trace mechanism and
4856 has 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
4866 2) iASL Compiler/Disassembler and Tools:
4867
4868 iASL and disassembler: Add full support for the LPIT table (Low Power
4869 Idle Table). Includes support in the disassembler, data table compiler,
4870 and template generator.
4871
4872 AcpiDump utility:
4873 1) Add option to force the use of the RSDT (over the XSDT).
4874 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
4875
4876 iASL: Add check for predefined packages that are too large. For
4877 predefined names that contain subpackages, check if each subpackage is
4878 too large. (Check for too small already exists.)
4879
4880 Debugger: Updated the GPE command (which simulates a GPE by executing the
4881 GPE code paths in ACPICA). The GPE device is now optional, and defaults
4882 to the GPE 0/1 FADT-defined blocks.
4883
4884 Unix application OSL: Update line-editing support. Add additional error
4885 checking and take care not to reset terminal attributes on exit if they
4886 were never set. This should help guarantee that the terminal is always
4887 left in the previous state on program exit.
4888
4889
4890 ----------------------------------------
4891 25 March 2014. Summary of changes for version 20140325:
4892
4893 1) ACPICA kernel-resident subsystem:
4894
4895 Updated the auto-serialize feature for control methods. This feature
4896 automatically serializes all methods that create named objects in order
4897 to prevent runtime errors. The update adds support to ignore the
4898 currently executing AML SyncLevel when invoking such a method, in order
4899 to prevent disruption of any existing SyncLevel priorities that may exist
4900 in the AML code. Although the use of SyncLevels is relatively rare, this
4901 change fixes a regression where an AE_AML_MUTEX_ORDER exception can
4902 appear on some machines starting with the 20140214 release.
4903
4904 Added a new external interface to allow the host to install ACPI tables
4905 very early, before the namespace is even created. AcpiInstallTable gives
4906 the host additional flexibility for ACPI table management. Tables can be
4907 installed directly by the host as if they had originally appeared in the
4908 XSDT/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
4910 with additional internal restructuring and cleanup. See the ACPICA
4911 Reference for interface details. Lv Zheng.
4912
4913 Added validation of the checksum for all incoming dynamically loaded
4914 tables (via external interfaces or via AML Load/LoadTable operators). Lv
4915 Zheng.
4916
4917 Updated the use of the AcpiOsWaitEventsComplete interface during Notify
4918 and GPE handler removal. Restructured calls to eliminate possible race
4919 conditions. Lv Zheng.
4920
4921 Added a warning for the use/execution of the ASL/AML Unload (table)
4922 operator. This will help detect and identify machines that use this
4923 operator if and when it is ever used. This operator has never been seen
4924 in the field and the usage model and possible side-effects of the drastic
4925 runtime action of a full table removal are unknown.
4926
4927 Reverted the use of #pragma push/pop which was introduced in the 20140214
4928 release. It appears that push and pop are not implemented by enough
4929 compilers to make the use of this feature feasible for ACPICA at this
4930 time. However, these operators may be deployed in a future ACPICA
4931 release.
4932
4933 Added the missing EXPORT_SYMBOL macros for the install and remove SCI
4934 handler interfaces.
4935
4936 Source code generation:
4937 1) Disabled the use of the "strchr" macro for the gcc-specific
4938 generation. For some versions of gcc, this macro can periodically expose
4939 a compiler bug which in turn causes compile-time error(s).
4940 2) Added support for PPC64 compilation. Colin Ian King.
4941
4942 Example Code and Data Size: These are the sizes for the OS-independent
4943 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4944 debug version of the code includes the debug output trace mechanism and
4945 has 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
4955 2) iASL Compiler/Disassembler and Tools:
4956
4957 Disassembler: Added several new features to improve the readability of
4958 the resulting ASL code. Extra information is emitted within comment
4959 fields in the ASL code:
4960 1) Known _HID/_CID values are decoded to descriptive text.
4961 2) Standard values for the Notify() operator are decoded to descriptive
4962 text.
4963 3) Target operands are expanded to full pathnames (in a comment) when
4964 possible.
4965
4966 Disassembler: Miscellaneous updates for extern() handling:
4967 1) Abort compiler if file specified by -fe option does not exist.
4968 2) Silence unnecessary warnings about argument count mismatches.
4969 3) Update warning messages concerning unresolved method externals.
4970 4) Emit "UnknownObj" keyword for externals whose type cannot be
4971 determined.
4972
4973 AcpiHelp utility:
4974 1) Added the -a option to display both the ASL syntax and the AML
4975 encoding for an input ASL operator. This effectively displays all known
4976 information about an ASL operator with one AcpiHelp invocation.
4977 2) Added substring match support (similar to a wildcard) for the -i
4978 (_HID/PNP IDs) option.
4979
4980 iASL/Disassembler: Since this tool does not yet support execution on big-
4981 endian machines, added detection of endianness and an error message if
4982 execution is attempted on big-endian. Support for big-endian within iASL
4983 is a feature that is on the ACPICA to-be-done list.
4984
4985 AcpiBin utility:
4986 1) Remove option to extract binary files from an acpidump; this function
4987 is made obsolete by the AcpiXtract utility.
4988 2) General cleanup of open files and allocated buffers.
4989
4990
4991 ----------------------------------------
4992 14 February 2014. Summary of changes for version 20140214:
4993
4994 1) ACPICA kernel-resident subsystem:
4995
4996 Implemented a new mechanism to proactively prevent problems with ill-
4997 behaved reentrant control methods that create named ACPI objects. This
4998 behavior is illegal as per the ACPI specification, but is nonetheless
4999 frequently seen in the field. Previously, this could lead to an
5000 AE_ALREADY_EXISTS exception if the method was actually entered by more
5001 than one thread. This new mechanism detects such methods at table load
5002 time and marks them "serialized" to prevent reentrancy. A new global
5003 option, AcpiGbl_AutoSerializeMethods, has been added to disable this
5004 feature if desired. This mechanism and global option obsoletes and
5005 supersedes the previous AcpiGbl_SerializeAllMethods option.
5006
5007 Added the "Windows 2013" string to the _OSI support. ACPICA will now
5008 respond TRUE to _OSI queries with this string. It is the stated policy of
5009 ACPICA to add new strings to the _OSI support as soon as possible after
5010 they are defined. See the full ACPICA _OSI policy which has been added to
5011 the utilities/utosi.c file.
5012
5013 Hardened/updated the _PRT return value auto-repair code:
5014 1) Do not abort the repair on a single subpackage failure, continue to
5015 check all subpackages.
5016 2) Add check for the minimum subpackage length (4).
5017 3) Properly handle extraneous NULL package elements.
5018
5019 Added support to avoid the possibility of infinite loops when traversing
5020 object linked lists. Never allow an infinite loop, even in the face of
5021 corrupted object lists.
5022
5023 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
5024 pack(pop) directives to ensure that the ACPICA headers are independent of
5025 compiler settings or other host headers.
5026
5027 Example Code and Data Size: These are the sizes for the OS-independent
5028 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5029 debug version of the code includes the debug output trace mechanism and
5030 has 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
5040 2) iASL Compiler/Disassembler and Tools:
5041
5042 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
5043 first reserved field was incorrectly forced to have a value of zero. This
5044 change correctly forces the field to have a value of one. ACPICA BZ 1081.
5045
5046 Debugger: Added missing support for the "Extra" and "Data" subobjects
5047 when displaying object data.
5048
5049 Debugger: Added support to display entire object linked lists when
5050 displaying object data.
5051
5052 iASL: Removed the obsolete -g option to obtain ACPI tables from the
5053 Windows registry. This feature has been superseded by the acpidump
5054 utility.
5055
5056
5057 ----------------------------------------
5058 14 January 2014. Summary of changes for version 20140114:
5059
5060 1) ACPICA kernel-resident subsystem:
5061
5062 Updated all ACPICA copyrights and signons to 2014. Added the 2014
5063 copyright to all module headers and signons, including the standard Linux
5064 header. This affects virtually every file in the ACPICA core subsystem,
5065 iASL compiler, all ACPICA utilities, and the test suites.
5066
5067 Improved parameter validation for AcpiInstallGpeBlock. Added the
5068 following checks:
5069 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
5070 2) There is not already a GPE block attached to the device.
5071 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
5072 device.
5073
5074 Correctly support "references" in the ACPI_OBJECT. This change fixes the
5075 support to allow references (namespace nodes) to be passed as arguments
5076 to control methods via the evaluate object interface. This is probably
5077 most useful for testing purposes, however.
5078
5079 Improved support for 32/64 bit physical addresses in printf()-like
5080 output. This change improves the support for physical addresses in printf
5081 debug statements and other output on both 32-bit and 64-bit hosts. It
5082 consistently outputs the appropriate number of bytes for each host. The
5083 %p specifier is unsatisfactory since it does not emit uniform output on
5084 all hosts/clib implementations (on some, leading zeros are not supported,
5085 leading to difficult-to-read output).
5086
5087 Example Code and Data Size: These are the sizes for the OS-independent
5088 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5089 debug version of the code includes the debug output trace mechanism and
5090 has 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
5100 2) iASL Compiler/Disassembler and Tools:
5101
5102 iASL: Fix a possible fault when using the Connection() operator. Fixes a
5103 problem if the parent Field definition for the Connection operator refers
5104 to an operation region that does not exist. ACPICA BZ 1064.
5105
5106 AcpiExec: Load of local test tables is now optional. The utility has the
5107 capability to load some various tables to test features of ACPICA.
5108 However, there are enough of them that the output of the utility became
5109 confusing. With this change, only the required local tables are displayed
5110 (RSDP, XSDT, etc.) along with the actual tables loaded via the command
5111 line specification. This makes the default output simler and easier to
5112 understand. The -el command line option restores the original behavior
5113 for testing purposes.
5114
5115 AcpiExec: Added support for overlapping operation regions. This change
5116 expands the simulation of operation regions by supporting regions that
5117 overlap within the given address space. Supports SystemMemory and
5118 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
5119
5120 AcpiExec: Added region handler support for PCI_Config and EC spaces. This
5121 allows AcpiExec to simulate these address spaces, similar to the current
5122 support for SystemMemory and SystemIO.
5123
5124 Debugger: Added new command to read/write/compare all namespace objects.
5125 The command "test objects" will exercise the entire namespace by writing
5126 new values to each data object, and ensuring that the write was
5127 successful. The original value is then restored and verified.
5128
5129 Debugger: Added the "test predefined" command. This change makes this
5130 test public and puts it under the new "test" command. The test executes
5131 each and every predefined name within the current namespace.
5132
5133
5134 ----------------------------------------
5135 18 December 2013. Summary of changes for version 20131218:
5136
5137 Global note: The ACPI 5.0A specification was released this month. There
5138 are no changes needed for ACPICA since this release of ACPI is an
5139 errata/clarification release. The specification is available at
5140 acpi.info.
5141
5142
5143 1) ACPICA kernel-resident subsystem:
5144
5145 Added validation of the XSDT root table if it is present. Some older
5146 platforms contain an XSDT that is ill-formed or otherwise invalid (such
5147 as containing some or all entries that are NULL pointers). This change
5148 adds a new function to validate the XSDT before actually using it. If the
5149 XSDT is found to be invalid, ACPICA will now automatically fall back to
5150 using the RSDT instead. Original implementation by Zhao Yakui. Ported to
5151 ACPICA and enhanced by Lv Zheng and Bob Moore.
5152
5153 Added a runtime option to ignore the XSDT and force the use of the RSDT.
5154 This change adds a runtime option that will force ACPICA to use the RSDT
5155 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
5156 requires that an XSDT be used instead of the RSDT, the XSDT has been
5157 found to be corrupt or ill-formed on some machines. Lv Zheng.
5158
5159 Added a runtime option to favor 32-bit FADT register addresses over the
5160 64-bit addresses. This change adds an option to favor 32-bit FADT
5161 addresses when there is a conflict between the 32-bit and 64-bit versions
5162 of the same register. The default behavior is to use the 64-bit version
5163 in accordance with the ACPI specification. This can now be overridden via
5164 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
5165
5166 During the change above, the internal "Convert FADT" and "Verify FADT"
5167 functions have been merged to simplify the code, making it easier to
5168 understand and maintain. ACPICA BZ 933.
5169
5170 Improve exception reporting and handling for GPE block installation.
5171 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
5172 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
5173
5174 Added helper macros to extract bus/segment numbers from the HEST table.
5175 This change adds two macros to extract the encoded bus and segment
5176 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
5177 Betty Dall <betty.dall (a] hp.com>
5178
5179 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
5180 by ACPICA. It is not a public macro, so it should have no effect on
5181 existing OSV code. Lv Zheng.
5182
5183 Example Code and Data Size: These are the sizes for the OS-independent
5184 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5185 debug version of the code includes the debug output trace mechanism and
5186 has 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
5196 2) iASL Compiler/Disassembler and Tools:
5197
5198 Disassembler: Improved pathname support for emitted External()
5199 statements. This change adds full pathname support for external names
5200 that have been resolved internally by the inclusion of additional ACPI
5201 tables (via the iASL -e option). Without this change, the disassembler
5202 can emit multiple externals for the same object, or it become confused
5203 when the Scope() operator is used on an external object. Overall, greatly
5204 improves the ability to actually recompile the emitted ASL code when
5205 objects a referenced across multiple ACPI tables. Reported by Michael
5206 Tsirkin (mst (a] redhat.com).
5207
5208 Tests/ASLTS: Updated functional control suite to execute with no errors.
5209 David Box. Fixed several errors related to the testing of the interpreter
5210 slack mode. Lv Zheng.
5211
5212 iASL: Added support to detect names that are declared within a control
5213 method, but are unused (these are temporary names that are only valid
5214 during the time the method is executing). A remark is issued for these
5215 cases. ACPICA BZ 1022.
5216
5217 iASL: Added full support for the DBG2 table. Adds full disassembler,
5218 table compiler, and template generator support for the DBG2 table (Debug
5219 Port 2 table).
5220
5221 iASL: Added full support for the PCCT table, update the table definition.
5222 Updates the PCCT table definition in the actbl3.h header and adds table
5223 compiler and template generator support.
5224
5225 iASL: Added an option to emit only error messages (no warnings/remarks).
5226 The -ve option will enable only error messages, warnings and remarks are
5227 suppressed. This can simplify debugging when only the errors are
5228 important, such as when an ACPI table is disassembled and there are many
5229 warnings and remarks -- but only the actual errors are of real interest.
5230
5231 Example ACPICA code (source/tools/examples): Updated the example code so
5232 that it builds to an actual working program, not just example code. Added
5233 ACPI tables and execution of an example control method in the DSDT. Added
5234 makefile support for Unix generation.
5235
5236
5237 ----------------------------------------
5238 15 November 2013. Summary of changes for version 20131115:
5239
5240 This release is available at https://acpica.org/downloads
5241
5242
5243 1) ACPICA kernel-resident subsystem:
5244
5245 Resource Manager: Fixed loop termination for the "get AML length"
5246 function. The loop previously had an error termination on a NULL resource
5247 pointer, which can never happen since the loop simply increments a valid
5248 resource pointer. This fix changes the loop to terminate with an error on
5249 an invalid end-of-buffer condition. The problem can be seen as an
5250 infinite loop by callers to AcpiSetCurrentResources with an invalid or
5251 corrupted resource descriptor, or a resource descriptor that is missing
5252 an END_TAG descriptor. Reported by Dan Carpenter
5253 <dan.carpenter (a] oracle.com>. Lv Zheng, Bob Moore.
5254
5255 Table unload and ACPICA termination: Delete all attached data objects
5256 during namespace node deletion. This fix updates namespace node deletion
5257 to delete the entire list of attached objects (attached via
5258 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
5259 1024. Tomasz Nowicki (tomasz.nowicki (a] linaro.org).
5260
5261 ACPICA termination: Added support to delete all objects attached to the
5262 root namespace node. This fix deletes any and all objects that have been
5263 attached to the root node via AcpiAttachData. Previously, none of these
5264 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
5265
5266 Debug output: Do not emit the function nesting level for the in-kernel
5267 build. The nesting level is really only useful during a single-thread
5268 execution. Therefore, only enable this output for the AcpiExec utility.
5269 Also, only emit the thread ID when executing under AcpiExec (Context
5270 switches are still always detected and a message is emitted). ACPICA BZ
5271 972.
5272
5273 Example Code and Data Size: These are the sizes for the OS-independent
5274 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5275 debug version of the code includes the debug output trace mechanism and
5276 has 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
5286 2) iASL Compiler/Disassembler and Tools:
5287
5288 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
5289 correct portable POSIX header for terminal control functions.
5290
5291 Disassembler: Fixed control method invocation issues related to the use
5292 of the CondRefOf() operator. The problem is seen in the disassembly where
5293 control method invocations may not be disassembled properly if the
5294 control method name has been used previously as an argument to CondRefOf.
5295 The solution is to not attempt to emit an external declaration for the
5296 CondRefOf target (it is not necessary in the first place). This prevents
5297 disassembler object type confusion. ACPICA BZ 988.
5298
5299 Unix Makefiles: Added an option to disable compiler optimizations and the
5300 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
5301 with optimizations (reportedly, gcc 4.4 for example). This change adds a
5302 command line option for make (NOOPT) that disables all compiler
5303 optimizations and the _FORTIFY_SOURCE compiler flag. The default
5304 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
5305 1034. Lv Zheng, Bob Moore.
5306
5307 Tests/ASLTS: Added options to specify individual test cases and modes.
5308 This allows testers running aslts.sh to optionally specify individual
5309 test modes and test cases. Also added an option to disable the forced
5310 generation of the ACPICA tools from source if desired. Lv Zheng.
5311
5312 ----------------------------------------
5313 27 September 2013. Summary of changes for version 20130927:
5314
5315 This release is available at https://acpica.org/downloads
5316
5317
5318 1) ACPICA kernel-resident subsystem:
5319
5320 Fixed a problem with store operations to reference objects. This change
5321 fixes a problem where a Store operation to an ArgX object that contained
5322 a
5323 reference to a field object did not complete the automatic dereference
5324 and
5325 then write to the actual field object. Instead, the object type of the
5326 field object was inadvertently changed to match the type of the source
5327 operand. The new behavior will actually write to the field object (buffer
5328 field or field unit), thus matching the correct ACPI-defined behavior.
5329
5330 Implemented support to allow the host to redefine individual OSL
5331 prototypes. This change enables the host to redefine OSL prototypes found
5332 in the acpiosxf.h file. This allows the host to implement OSL interfaces
5333 with a macro or inlined function. Further, it allows the host to add any
5334 additional required modifiers such as __iomem, __init, __exit, etc., as
5335 necessary on a per-interface basis. Enables maximum flexibility for the
5336 OSL interfaces. Lv Zheng.
5337
5338 Hardcoded the access width for the FADT-defined reset register. The ACPI
5339 specification requires the reset register width to be 8 bits. ACPICA now
5340 hardcodes the width to 8 and ignores the FADT width value. This provides
5341 compatibility with other ACPI implementations that have allowed BIOS code
5342 with bad register width values to go unnoticed. Matthew Garett, Bob
5343 Moore,
5344 Lv Zheng.
5345
5346 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
5347 used
5348 in the OSL header (acpiosxf). The change modifies the position of this
5349 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
5350 build issues if the OSL defines the implementation of the interface to be
5351 an inline stub function. Lv Zheng.
5352
5353 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
5354 initialization interfaces. This change adds a new macro for the main init
5355 and terminate external interfaces in order to support hosts that require
5356 additional or different processing for these functions. Changed from
5357 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
5358 Zheng, Bob Moore.
5359
5360 Cleaned up the memory allocation macros for configurability. In the
5361 common
5362 case, the ACPI_ALLOCATE and related macros now resolve directly to their
5363 respective AcpiOs* OSL interfaces. Two options:
5364 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
5365 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
5366 2) For AcpiExec (and for debugging), the macros can optionally be
5367 resolved
5368 to the local ACPICA interfaces that track each allocation (local tracking
5369 is used to immediately detect memory leaks).
5370 Lv Zheng.
5371
5372 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
5373 to predefine this macro to either TRUE or FALSE during the system build.
5374
5375 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
5376
5377 Example Code and Data Size: These are the sizes for the OS-independent
5378 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5379 debug version of the code includes the debug output trace mechanism and
5380 has 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
5390 2) iASL Compiler/Disassembler and Tools:
5391
5392 iASL: Implemented wildcard support for the -e option. This simplifies use
5393 when there are many SSDTs that must be included to resolve external
5394 method
5395 declarations. ACPICA BZ 1041. Example:
5396 iasl -e ssdt*.dat -d dsdt.dat
5397
5398 AcpiExec: Add history/line-editing for Unix/Linux systems. This change
5399 adds a portable module that implements full history and limited line
5400 editing for Unix and Linux systems. It does not use readline() due to
5401 portability issues. Instead it uses the POSIX termio interface to put the
5402 terminal in raw input mode so that the various special keys can be
5403 trapped
5404 (such as up/down-arrow for history support and left/right-arrow for line
5405 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
5406
5407 AcpiXtract: Add support to handle (ignore) "empty" lines containing only
5408 one or more spaces. This provides compatible with early or different
5409 versions of the AcpiDump utility. ACPICA BZ 1044.
5410
5411 AcpiDump: Do not ignore tables that contain only an ACPI table header.
5412 Apparently, some BIOSs create SSDTs that contain an ACPI table header but
5413 no other data. This change adds support to dump these tables. Any tables
5414 shorter than the length of an ACPI table header remain in error (an error
5415 message is emitted). Reported by Yi Li.
5416
5417 Debugger: Echo actual command along with the "unknown command" message.
5418
5419 ----------------------------------------
5420 23 August 2013. Summary of changes for version 20130823:
5421
5422 1) ACPICA kernel-resident subsystem:
5423
5424 Implemented support for host-installed System Control Interrupt (SCI)
5425 handlers. Certain ACPI functionality requires the host to handle raw
5426 SCIs. For example, the "SCI Doorbell" that is defined for memory power
5427 state support requires the host device driver to handle SCIs to examine
5428 if the doorbell has been activated. Multiple SCI handlers can be
5429 installed to allow for future expansion. New external interfaces are
5430 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
5431 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
5432
5433 Operation region support: Never locally free the handler "context"
5434 pointer. This change removes some dangerous code that attempts to free
5435 the handler context pointer in some (rare) circumstances. The owner of
5436 the handler owns this pointer and the ACPICA code should never touch it.
5437 Although not seen to be an issue in any kernel, it did show up as a
5438 problem (fault) under AcpiExec. Also, set the internal storage field for
5439 the context pointer to zero when the region is deactivated, simply for
5440 sanity. David Box. ACPICA BZ 1039.
5441
5442 AcpiRead: On error, do not modify the return value target location. If an
5443 error happens in the middle of a split 32/32 64-bit I/O operation, do not
5444 modify the target of the return value pointer. Makes the code consistent
5445 with the rest of ACPICA. Bjorn Helgaas.
5446
5447 Example Code and Data Size: These are the sizes for the OS-independent
5448 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5449 debug version of the code includes the debug output trace mechanism and
5450 has 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
5460 2) iASL Compiler/Disassembler and Tools:
5461
5462 AcpiDump: Implemented several new features and fixed some problems:
5463 1) Added support to dump the RSDP, RSDT, and XSDT tables.
5464 2) Added support for multiple table instances (SSDT, UEFI).
5465 3) Added option to dump "customized" (overridden) tables (-c).
5466 4) Fixed a problem where some table filenames were improperly
5467 constructed.
5468 5) Improved some error messages, removed some unnecessary messages.
5469
5470 iASL: Implemented additional support for disassembly of ACPI tables that
5471 contain invocations of external control methods. The -fe<file> option
5472 allows the import of a file that specifies the external methods along
5473 with the required number of arguments for each -- allowing for the
5474 correct disassembly of the table. This is a workaround for a limitation
5475 of AML code where the disassembler often cannot determine the number of
5476 arguments required for an external control method and generates incorrect
5477 ASL code. See the iASL reference for details. ACPICA BZ 1030.
5478
5479 Debugger: Implemented a new command (paths) that displays the full
5480 pathnames (namepaths) and object types of all objects in the namespace.
5481 This is an alternative to the namespace command.
5482
5483 Debugger: Implemented a new command (sci) that invokes the SCI dispatch
5484 mechanism and any installed handlers.
5485
5486 iASL: Fixed a possible segfault for "too many parent prefixes" condition.
5487 This can occur if there are too many parent prefixes in a namepath (for
5488 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
5489
5490 Application OSLs: Set the return value for the PCI read functions. These
5491 functions simply return AE_OK, but should set the return value to zero
5492 also. This change implements this. ACPICA BZ 1038.
5493
5494 Debugger: Prevent possible command line buffer overflow. Increase the
5495 size of a couple of the debugger line buffers, and ensure that overflow
5496 cannot happen. ACPICA BZ 1037.
5497
5498 iASL: Changed to abort immediately on serious errors during the parsing
5499 phase. Due to the nature of ASL, there is no point in attempting to
5500 compile these types of errors, and they typically end up causing a
5501 cascade of hundreds of errors which obscure the original problem.
5502
5503 ----------------------------------------
5504 25 July 2013. Summary of changes for version 20130725:
5505
5506 1) ACPICA kernel-resident subsystem:
5507
5508 Fixed a problem with the DerefOf operator where references to FieldUnits
5509 and BufferFields incorrectly returned the parent object, not the actual
5510 value of the object. After this change, a dereference of a FieldUnit
5511 reference results in a read operation on the field to get the value, and
5512 likewise, the appropriate BufferField value is extracted from the target
5513 buffer.
5514
5515 Fixed a problem where the _WAK method could cause a fault under these
5516 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
5517 method returned no value. The problem is rarely seen because most kernels
5518 run ACPICA in slack mode.
5519
5520 For the DerefOf operator, a fatal error now results if an attempt is made
5521 to dereference a reference (created by the Index operator) to a NULL
5522 package element. Provides compatibility with other ACPI implementations,
5523 and this behavior will be added to a future version of the ACPI
5524 specification.
5525
5526 The ACPI Power Management Timer (defined in the FADT) is now optional.
5527 This provides compatibility with other ACPI implementations and will
5528 appear in the next version of the ACPI specification. If there is no PM
5529 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
5530 zero in the FADT indicates no PM timer.
5531
5532 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
5533 allows the host to globally enable/disable all vendor strings, all
5534 feature strings, or both. Intended to be primarily used for debugging
5535 purposes only. Lv Zheng.
5536
5537 Expose the collected _OSI data to the host via a global variable. This
5538 data tracks the highest level vendor ID that has been invoked by the BIOS
5539 so that the host (and potentially ACPICA itself) can change behaviors
5540 based upon the age of the BIOS.
5541
5542 Example Code and Data Size: These are the sizes for the OS-independent
5543 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5544 debug version of the code includes the debug output trace mechanism and
5545 has 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
5555 2) iASL Compiler/Disassembler and Tools:
5556
5557 iASL: Created the following enhancements for the -so option (create
5558 offset table):
5559 1)Add offsets for the last nameseg in each namepath for every supported
5560 object type
5561 2)Add support for Processor, Device, Thermal Zone, and Scope objects
5562 3)Add the actual AML opcode for the parent object of every supported
5563 object type
5564 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
5565
5566 Disassembler: Emit all unresolved external symbols in a single block.
5567 These are external references to control methods that could not be
5568 resolved, and thus, the disassembler had to make a guess at the number of
5569 arguments to parse.
5570
5571 iASL: The argument to the -T option (create table template) is now
5572 optional. If not specified, the default table is a DSDT, typically the
5573 most common case.
5574
5575 ----------------------------------------
5576 26 June 2013. Summary of changes for version 20130626:
5577
5578 1) ACPICA kernel-resident subsystem:
5579
5580 Fixed an issue with runtime repair of the _CST object. Null or invalid
5581 elements were not always removed properly. Lv Zheng.
5582
5583 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
5584 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
5585 the maximum number of GPEs is 1016. Use of multiple GPE block devices
5586 makes the system-wide number of GPEs essentially unlimited.
5587
5588 Example Code and Data Size: These are the sizes for the OS-independent
5589 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5590 debug version of the code includes the debug output trace mechanism and
5591 has 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
5601 2) iASL Compiler/Disassembler and Tools:
5602
5603 Portable AcpiDump: Implemented full support for the Linux and FreeBSD
5604 hosts. Now supports Linux, FreeBSD, and Windows.
5605
5606 Disassembler: Added some missing types for the HEST and EINJ tables: "Set
5607 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
5608
5609 iASL/Preprocessor: Implemented full support for nested
5610 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
5611
5612 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
5613 max. The original purpose of this constraint was to limit the amount of
5614 debug output. However, the string function in question (UtPrintString) is
5615 now used for the disassembler also, where 256 bytes is insufficient.
5616 Reported by RehabMan@GitHub.
5617
5618 iASL/DataTables: Fixed some problems and issues with compilation of DMAR
5619 tables. ACPICA BZ 999. Lv Zheng.
5620
5621 iASL: Fixed a couple of error exit issues that could result in a "Could
5622 not delete <file>" message during ASL compilation.
5623
5624 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
5625 the actual signatures for these tables are "FACP" and "APIC",
5626 respectively.
5627
5628 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
5629 tables are allowed to have multiple instances.
5630
5631 ----------------------------------------
5632 17 May 2013. Summary of changes for version 20130517:
5633
5634 1) ACPICA kernel-resident subsystem:
5635
5636 Fixed a regression introduced in version 20130328 for _INI methods. This
5637 change fixes a problem introduced in 20130328 where _INI methods are no
5638 longer executed properly because of a memory block that was not
5639 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
5640 <tomasz.nowicki (a] linaro.org>.
5641
5642 Fixed a possible problem with the new extended sleep registers in the
5643 ACPI
5644 5.0 FADT. Do not use these registers (even if populated) unless the HW-
5645 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
5646 1020. Lv Zheng.
5647
5648 Implemented return value repair code for _CST predefined objects: Sort
5649 the
5650 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
5651
5652 Implemented a debug-only option to disable loading of SSDTs from the
5653 RSDT/XSDT during ACPICA initialization. This can be useful for debugging
5654 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
5655 acglobal.h - ACPICA BZ 1005. Lv Zheng.
5656
5657 Fixed some issues in the ACPICA initialization and termination code:
5658 Tomasz Nowicki <tomasz.nowicki (a] linaro.org>
5659 1) Clear events initialized flag upon event component termination. ACPICA
5660 BZ 1013.
5661 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
5662 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
5663 4) Clear debug buffer global on termination to prevent possible multiple
5664 delete. ACPICA BZ 1010.
5665
5666 Standardized all switch() blocks across the entire source base. After
5667 many
5668 years, different formatting for switch() had crept in. This change makes
5669 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
5670
5671 Split some files to enhance ACPICA modularity and configurability:
5672 1) Split buffer dump routines into utilities/utbuffer.c
5673 2) Split internal error message routines into utilities/uterror.c
5674 3) Split table print utilities into tables/tbprint.c
5675 4) Split iASL command-line option processing into asloptions.c
5676
5677 Makefile enhancements:
5678 1) Support for all new files above.
5679 2) Abort make on errors from any subcomponent. Chao Guan.
5680 3) Add build support for Apple Mac OS X. Liang Qi.
5681
5682 Example Code and Data Size: These are the sizes for the OS-independent
5683 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5684 debug version of the code includes the debug output trace mechanism and
5685 has 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
5695 2) iASL Compiler/Disassembler and Tools:
5696
5697 New utility: Implemented an easily portable version of the acpidump
5698 utility to extract ACPI tables from the system (or a file) in an ASCII
5699 hex
5700 dump format. The top-level code implements the various command line
5701 options, file I/O, and table dump routines. To port to a new host, only
5702 three functions need to be implemented to get tables -- since this
5703 functionality is OS-dependent. See the tools/acpidump/apmain.c module and
5704 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
5705 1) The Windows version obtains the ACPI tables from the Registry.
5706 2) The Linux version is under development.
5707 3) Other hosts - If an OS-dependent module is submitted, it will be
5708 distributed with ACPICA.
5709
5710 iASL: Fixed a regression for -D preprocessor option (define symbol). A
5711 restructuring/change to the initialization sequence caused this option to
5712 no longer work properly.
5713
5714 iASL: Implemented a mechanism to disable specific warnings and remarks.
5715 Adds a new command line option, "-vw <messageid> as well as "#pragma
5716 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
5717
5718 iASL: Fix for too-strict package object validation. The package object
5719 validation for return values from the predefined names is a bit too
5720 strict, it does not allow names references within the package (which will
5721 be resolved at runtime.) These types of references cannot be validated at
5722 compile time. This change ignores named references within package objects
5723 for names that return or define static packages.
5724
5725 Debugger: Fixed the 80-character command line limitation for the History
5726 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
5727
5728 iASL: Added control method and package support for the -so option
5729 (generates AML offset table for BIOS support.)
5730
5731 iASL: issue a remark if a non-serialized method creates named objects. If
5732 a thread blocks within the method for any reason, and another thread
5733 enters the method, the method will fail because an attempt will be made
5734 to
5735 create the same (named) object twice. In this case, issue a remark that
5736 the method should be marked serialized. NOTE: may become a warning later.
5737 ACPICA BZ 909.
5738
5739 ----------------------------------------
5740 18 April 2013. Summary of changes for version 20130418:
5741
5742 1) ACPICA kernel-resident subsystem:
5743
5744 Fixed a possible buffer overrun during some rare but specific field unit
5745 read operations. This overrun can only happen if the DSDT version is 1 --
5746 meaning that all AML integers are 32 bits -- and the field length is
5747 between 33 and 55 bits long. During the read, an internal buffer object
5748 is
5749 created for the field unit because the field is larger than an integer
5750 (32
5751 bits). However, in this case, the buffer will be incorrectly written
5752 beyond the end because the buffer length is less than the internal
5753 minimum
5754 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
5755 long, but a full 8 bytes will be written.
5756
5757 Updated the Embedded Controller "orphan" _REG method support. This refers
5758 to _REG methods under the EC device that have no corresponding operation
5759 region. This is allowed by the ACPI specification. This update removes a
5760 dependency on the existence an ECDT table. It will execute an orphan _REG
5761 method as long as the operation region handler for the EC is installed at
5762 the EC device node and not the namespace root. Rui Zhang (original
5763 update), Bob Moore (update/integrate).
5764
5765 Implemented run-time argument typechecking for all predefined ACPI names
5766 (_STA, _BIF, etc.) This change performs object typechecking on all
5767 incoming arguments for all predefined names executed via
5768 AcpiEvaluateObject. This ensures that ACPI-related device drivers are
5769 passing correct object types as well as the correct number of arguments
5770 (therefore identifying any issues immediately). Also, the ASL/namespace
5771 definition of the predefined name is checked against the ACPI
5772 specification for the proper argument count. Adds one new file,
5773 nsarguments.c
5774
5775 Changed an exception code for the ASL UnLoad() operator. Changed the
5776 exception code for the case where the input DdbHandle is invalid, from
5777 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
5778
5779 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
5780 global makefile. The use of this flag causes compiler errors on earlier
5781 versions of GCC, so it has been removed for compatibility.
5782
5783 Miscellaneous cleanup:
5784 1) Removed some unused/obsolete macros
5785 2) Fixed a possible memory leak in the _OSI support
5786 3) Removed an unused variable in the predefined name support
5787 4) Windows OSL: remove obsolete reference to a memory list field
5788
5789 Example Code and Data Size: These are the sizes for the OS-independent
5790 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5791 debug version of the code includes the debug output trace mechanism and
5792 has 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
5802 2) iASL Compiler/Disassembler and Tools:
5803
5804 AcpiExec: Added installation of a handler for the SystemCMOS address
5805 space. This prevents control method abort if a method accesses this
5806 space.
5807
5808 AcpiExec: Added support for multiple EC devices, and now install EC
5809 operation region handler(s) at the actual EC device instead of the
5810 namespace root. This reflects the typical behavior of host operating
5811 systems.
5812
5813 AcpiExec: Updated to ensure that all operation region handlers are
5814 installed before the _REG methods are executed. This prevents a _REG
5815 method from aborting if it accesses an address space has no handler.
5816 AcpiExec installs a handler for every possible address space.
5817
5818 Debugger: Enhanced the "handlers" command to display non-root handlers.
5819 This change enhances the handlers command to display handlers associated
5820 with individual devices throughout the namespace, in addition to the
5821 currently supported display of handlers associated with the root
5822 namespace
5823 node.
5824
5825 ASL Test Suite: Several test suite errors have been identified and
5826 resolved, reducing the total error count during execution. Chao Guan.
5827
5828 ----------------------------------------
5829 28 March 2013. Summary of changes for version 20130328:
5830
5831 1) ACPICA kernel-resident subsystem:
5832
5833 Fixed several possible race conditions with the internal object reference
5834 counting mechanism. Some of the external ACPICA interfaces update object
5835 reference counts without holding the interpreter or namespace lock. This
5836 change adds a spinlock to protect reference count updates on the internal
5837 ACPICA objects. Reported by and with assistance from Andriy Gapon
5838 (avg (a] FreeBSD.org).
5839
5840 FADT support: Removed an extraneous warning for very large GPE register
5841 sets. This change removes a size mismatch warning if the legacy length
5842 field for a GPE register set is larger than the 64-bit GAS structure can
5843 accommodate. GPE register sets can be larger than the 255-bit width
5844 limitation of the GAS structure. Linn Crosetto (linn (a] hp.com).
5845
5846 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
5847 return from this interface. Handles a possible timeout case if
5848 ACPI_WAIT_FOREVER is modified by the host to be a value less than
5849 "forever". Jung-uk Kim.
5850
5851 Predefined name support: Add allowed/required argument type information
5852 to
5853 the master predefined info table. This change adds the infrastructure to
5854 enable typechecking on incoming arguments for all predefined
5855 methods/objects. It does not actually contain the code that will fully
5856 utilize this information, this is still under development. Also condenses
5857 some duplicate code for the predefined names into a new module,
5858 utilities/utpredef.c
5859
5860 Example Code and Data Size: These are the sizes for the OS-independent
5861 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5862 debug version of the code includes the debug output trace mechanism and
5863 has 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
5873 2) iASL Compiler/Disassembler and Tools:
5874
5875 iASL: Implemented a new option to simplify the development of ACPI-
5876 related
5877 BIOS code. Adds support for a new "offset table" output file. The -so
5878 option will create a C table containing the AML table offsets of various
5879 named objects in the namespace so that BIOS code can modify them easily
5880 at
5881 boot time. This can simplify BIOS runtime code by eliminating expensive
5882 searches for "magic values", enhancing boot times and adding greater
5883 reliability. With assistance from Lee Hamel.
5884
5885 iASL: Allow additional predefined names to return zero-length packages.
5886 Now, all predefined names that are defined by the ACPI specification to
5887 return a "variable-length package of packages" are allowed to return a
5888 zero length top-level package. This allows the BIOS to tell the host that
5889 the requested feature is not supported, and supports existing BIOS/ASL
5890 code and practices.
5891
5892 iASL: Changed the "result not used" warning to an error. This is the case
5893 where an ASL operator is effectively a NOOP because the result of the
5894 operation is not stored anywhere. For example:
5895 Add (4, Local0)
5896 There is no target (missing 3rd argument), nor is the function return
5897 value used. This is potentially a very serious problem -- since the code
5898 was probably intended to do something, but for whatever reason, the value
5899 was not stored. Therefore, this issue has been upgraded from a warning to
5900 an error.
5901
5902 AcpiHelp: Added allowable/required argument types to the predefined names
5903 info display. This feature utilizes the recent update to the predefined
5904 names table (above).
5905
5906 ----------------------------------------
5907 14 February 2013. Summary of changes for version 20130214:
5908
5909 1) ACPICA Kernel-resident Subsystem:
5910
5911 Fixed a possible regression on some hosts: Reinstated the safe return
5912 macros (return_ACPI_STATUS, etc.) that ensure that the argument is
5913 evaluated only once. Although these macros are not needed for the ACPICA
5914 code itself, they are often used by ACPI-related host device drivers
5915 where
5916 the safe feature may be necessary.
5917
5918 Fixed several issues related to the ACPI 5.0 reduced hardware support
5919 (SOC): Now ensure that if the platform declares itself as hardware-
5920 reduced
5921 via the FADT, the following functions become NOOPs (and always return
5922 AE_OK) because ACPI is always enabled by definition on these machines:
5923 AcpiEnable
5924 AcpiDisable
5925 AcpiHwGetMode
5926 AcpiHwSetMode
5927
5928 Dynamic Object Repair: Implemented additional runtime repairs for
5929 predefined name return values. Both of these repairs can simplify code in
5930 the related device drivers that invoke these methods:
5931 1) For the _STR and _MLS names, automatically repair/convert an ASCII
5932 string to a Unicode buffer.
5933 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
5934 a
5935 lone end tag descriptor in the following cases: A Return(0) was executed,
5936 a null buffer was returned, or no object at all was returned (non-slack
5937 mode only). Adds a new file, nsconvert.c
5938 ACPICA BZ 998. Bob Moore, Lv Zheng.
5939
5940 Resource Manager: Added additional code to prevent possible infinite
5941 loops
5942 while traversing corrupted or ill-formed resource template buffers. Check
5943 for zero-length resource descriptors in all code that loops through
5944 resource templates (the length field is used to index through the
5945 template). This change also hardens the external AcpiWalkResources and
5946 AcpiWalkResourceBuffer interfaces.
5947
5948 Local Cache Manager: Enhanced the main data structure to eliminate an
5949 unnecessary mechanism to access the next object in the list. Actually
5950 provides a small performance enhancement for hosts that use the local
5951 ACPICA cache manager. Jung-uk Kim.
5952
5953 Example Code and Data Size: These are the sizes for the OS-independent
5954 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5955 debug version of the code includes the debug output trace mechanism and
5956 has 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
5966 2) iASL Compiler/Disassembler and Tools:
5967
5968 iASL/Disassembler: Fixed several issues with the definition of the ACPI
5969 5.0 RASF table (RAS Feature Table). This change incorporates late changes
5970 that were made to the ACPI 5.0 specification.
5971
5972 iASL/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).
5975 Includes header file, disassembler, table compiler, and template support
5976 for both tables.
5977
5978 iASL: Implemented compile-time validation of package objects returned by
5979 predefined names. This new feature validates static package objects
5980 returned by the various predefined names defined to return packages. Both
5981 object types and package lengths are validated, for both parent packages
5982 and sub-packages, if any. The code is similar in structure and behavior
5983 to
5984 the runtime repair mechanism within the AML interpreter and uses the
5985 existing predefined name information table. Adds a new file, aslprepkg.c.
5986 ACPICA BZ 938.
5987
5988 iASL: Implemented auto-detection of binary ACPI tables for disassembly.
5989 This feature detects a binary file with a valid ACPI table header and
5990 invokes the disassembler automatically. Eliminates the need to
5991 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
5992
5993 iASL/Disassembler: Added several warnings for the case where there are
5994 unresolved control methods during the disassembly. This can potentially
5995 cause errors when the output file is compiled, because the disassembler
5996 assumes zero method arguments in these cases (it cannot determine the
5997 actual number of arguments without resolution/definition of the method).
5998
5999 Debugger: Added support to display all resources with a single command.
6000 Invocation of the resources command with no arguments will now display
6001 all
6002 resources within the current namespace.
6003
6004 AcpiHelp: Added descriptive text for each ACPICA exception code displayed
6005 via the -e option.
6006
6007 ----------------------------------------
6008 17 January 2013. Summary of changes for version 20130117:
6009
6010 1) ACPICA Kernel-resident Subsystem:
6011
6012 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
6013 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
6014 objects to return a package containing one integer, most BIOS code
6015 returns
6016 two integers and the previous code reflects that. However, we also need
6017 to
6018 support BIOS code that actually implements to the ACPI spec, and this
6019 change reflects this.
6020
6021 Fixed two issues with the ACPI_DEBUG_PRINT macros:
6022 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
6023 C compilers that require this support.
6024 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
6025 ACPI_DEBUG is already used by many of the various hosts.
6026
6027 Updated all ACPICA copyrights and signons to 2013. Added the 2013
6028 copyright to all module headers and signons, including the standard Linux
6029 header. This affects virtually every file in the ACPICA core subsystem,
6030 iASL compiler, all ACPICA utilities, and the test suites.
6031
6032 Example Code and Data Size: These are the sizes for the OS-independent
6033 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6034 debug version of the code includes the debug output trace mechanism and
6035 has 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
6045 2) iASL Compiler/Disassembler and Tools:
6046
6047 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
6048 prevent a possible fault on some hosts. Some C libraries modify the arg
6049 pointer parameter to vfprintf making it difficult to call it twice in the
6050 AcpiOsVprintf function. Use a local buffer to workaround this issue. This
6051 does not affect the Windows OSL since the Win C library does not modify
6052 the arg pointer. Chao Guan, Bob Moore.
6053
6054 iASL: Fixed a possible infinite loop when the maximum error count is
6055 reached. If an output file other than the .AML file is specified (such as
6056 a listing file), and the maximum number of errors is reached, do not
6057 attempt to flush data to the output file(s) as the compiler is aborting.
6058 This can cause an infinite loop as the max error count code essentially
6059 keeps calling itself.
6060
6061 iASL/Disassembler: Added an option (-in) to ignore NOOP
6062 opcodes/operators.
6063 Implemented for both the compiler and the disassembler. Often, the NOOP
6064 opcode is used as padding for packages that are changed dynamically by
6065 the
6066 BIOS. When disassembled and recompiled, these NOOPs will cause syntax
6067 errors. This option causes the disassembler to ignore all NOOP opcodes
6068 (0xA3), and it also causes the compiler to ignore all ASL source code
6069 NOOP
6070 statements as well.
6071
6072 Debugger: Enhanced the Sleep command to execute all sleep states. This
6073 change allows Sleep to be invoked with no arguments and causes the
6074 debugger to execute all of the sleep states, 0-5, automatically.
6075
6076 ----------------------------------------
6077 20 December 2012. Summary of changes for version 20121220:
6078
6079 1) ACPICA Kernel-resident Subsystem:
6080
6081 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
6082 alternate entry point for AcpiWalkResources and improves the usability of
6083 the resource manager by accepting as input a buffer containing the output
6084 of either a _CRS, _PRS, or _AEI method. The key functionality is that the
6085 input buffer is not deleted by this interface so that it can be used by
6086 the host later. See the ACPICA reference for details.
6087
6088 Interpreter: 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
6090 reflects that behavior.
6091
6092 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
6093 ExtendedInterrupt, and GpioInt descriptors. This change adds support to
6094 both get and set the new wake bit in these descriptors, separately from
6095 the existing share bit. Reported by Aaron Lu.
6096
6097 Interpreter: Fix Store() when an implicit conversion is not possible. For
6098 example, in the cases such as a store of a string to an existing package
6099 object, implement the store as a CopyObject(). This is a small departure
6100 from the ACPI specification which states that the control method should
6101 be
6102 aborted in this case. However, the ASLTS suite depends on this behavior.
6103
6104 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
6105 macros: check if debug output is currently enabled as soon as possible to
6106 minimize performance impact if debug is in fact not enabled.
6107
6108 Source code restructuring: Cleanup to improve modularity. The following
6109 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
6110 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
6111 Associated makefiles and project files have been updated.
6112
6113 Changed an exception code for LoadTable operator. For the case where one
6114 of the input strings is too long, change the returned exception code from
6115 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
6116
6117 Fixed a possible memory leak in dispatcher error path. On error, delete
6118 the mutex object created during method mutex creation. Reported by
6119 tim.gardner (a] canonical.com.
6120
6121 Example Code and Data Size: These are the sizes for the OS-independent
6122 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6123 debug version of the code includes the debug output trace mechanism and
6124 has 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
6134 2) iASL Compiler/Disassembler and Tools:
6135
6136 iASL: Disallow a method call as argument to the ObjectType ASL operator.
6137 This change tracks an errata to the ACPI 5.0 document. The AML grammar
6138 will not allow the interpreter to differentiate between a method and a
6139 method invocation when these are used as an argument to the ObjectType
6140 operator. The ACPI specification change is to disallow a method
6141 invocation
6142 (UserTerm) for the ObjectType operator.
6143
6144 Finish support for the TPM2 and CSRT tables in the headers, table
6145 compiler, and disassembler.
6146
6147 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
6148 always expires immediately if the semaphore is not available. The
6149 original
6150 code was using a relative-time timeout, but sem_timedwait requires the
6151 use
6152 of an absolute time.
6153
6154 iASL: Added a remark if the Timer() operator is used within a 32-bit
6155 table. This operator returns a 64-bit time value that will be truncated
6156 within a 32-bit table.
6157
6158 iASL Source code restructuring: Cleanup to improve modularity. The
6159 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
6160 aslmethod.c, and aslfileio.c. Associated makefiles and project files have
6161 been updated.
6162
6163
6164 ----------------------------------------
6165 14 November 2012. Summary of changes for version 20121114:
6166
6167 1) ACPICA Kernel-resident Subsystem:
6168
6169 Implemented a performance enhancement for ACPI/AML Package objects. This
6170 change greatly increases the performance of Package objects within the
6171 interpreter. It changes the processing of reference counts for packages
6172 by
6173 optimizing for the most common case where the package sub-objects are
6174 either Integers, Strings, or Buffers. Increases the overall performance
6175 of
6176 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
6177 2X.)
6178 Chao Guan. ACPICA BZ 943.
6179
6180 Implemented and deployed common macros to extract flag bits from resource
6181 descriptors. Improves readability and maintainability of the code. Fixes
6182 a
6183 problem with the UART serial bus descriptor for the number of data bits
6184 flags (was incorrectly 2 bits, should be 3).
6185
6186 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
6187 of the macros and changed the SETx macros to the style of (destination,
6188 source). Also added ACPI_CASTx companion macros. Lv Zheng.
6189
6190 Example Code and Data Size: These are the sizes for the OS-independent
6191 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6192 debug version of the code includes the debug output trace mechanism and
6193 has 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
6203 2) iASL Compiler/Disassembler and Tools:
6204
6205 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
6206 adds the ShareAndWake and ExclusiveAndWake flags which were added to the
6207 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
6208
6209 Disassembler: Fixed a problem with external declaration generation. Fixes
6210 a problem where an incorrect pathname could be generated for an external
6211 declaration if the original reference to the object includes leading
6212 carats (^). ACPICA BZ 984.
6213
6214 Debugger: Completed a major update for the Disassemble<method> command.
6215 This command was out-of-date and did not properly disassemble control
6216 methods that had any reasonable complexity. This fix brings the command
6217 up
6218 to the same level as the rest of the disassembler. Adds one new file,
6219 dmdeferred.c, which is existing code that is now common with the main
6220 disassembler and the debugger disassemble command. ACPICA MZ 978.
6221
6222 iASL: Moved the parser entry prototype to avoid a duplicate declaration.
6223 Newer versions of Bison emit this prototype, so moved the prototype out
6224 of
6225 the iASL header to where it is actually used in order to avoid a
6226 duplicate
6227 declaration.
6228
6229 iASL/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
6234 Improves reliability and maintainability of the code. Bob Moore, Lv
6235 Zheng.
6236 ACPICA BZ 981.
6237
6238 Disassembler: Prevent duplicate External() statements. During generation
6239 of external statements, detect similar pathnames that are actually
6240 duplicates such as these:
6241 External (\ABCD)
6242 External (ABCD)
6243 Remove all leading '\' characters from pathnames during the external
6244 statement generation so that duplicates will be detected and tossed.
6245 ACPICA BZ 985.
6246
6247 Tools: Replace low-level I/O with stream I/O functions. Replace
6248 open/read/write/close with the stream I/O equivalents
6249 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
6250 Moore.
6251
6252 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
6253 name header so that AcpiXtract recognizes the output file/table.
6254
6255 iASL: Remove obsolete -2 option flag. Originally intended to force the
6256 compiler/disassembler into an ACPI 2.0 mode, this was never implemented
6257 and the entire concept is now obsolete.
6258
6259 ----------------------------------------
6260 18 October 2012. Summary of changes for version 20121018:
6261
6262
6263 1) ACPICA Kernel-resident Subsystem:
6264
6265 Updated support for the ACPI 5.0 MPST table. Fixes some problems
6266 introduced by late changes to the table as it was added to the ACPI 5.0
6267 specification. Includes header, disassembler, and data table compiler
6268 support as well as a new version of the MPST template.
6269
6270 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
6271 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
6272 methods: _HID, _CID, and _UID.
6273
6274 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
6275 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
6276 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
6277 names for their various drivers. Affects the AcpiGetObjectInfo external
6278 interface, and other internal interfaces as well.
6279
6280 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
6281 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
6282 on machines that support non-aligned transfers. Optimizes for this case
6283 rather than using a strncpy. With assistance from Zheng Lv.
6284
6285 Resource Manager: Small fix for buffer size calculation. Fixed a one byte
6286 error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
6287
6288 Added a new debug print message for AML mutex objects that are force-
6289 released. At control method termination, any currently acquired mutex
6290 objects are force-released. Adds a new debug-only message for each one
6291 that is released.
6292
6293 Audited/updated all ACPICA return macros and the function debug depth
6294 counter: 1) Ensure that all functions that use the various TRACE macros
6295 also use the appropriate ACPICA return macros. 2) Ensure that all normal
6296 return statements surround the return expression (value) with parens to
6297 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
6298 Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
6299
6300 Global source code changes/maintenance: All extra lines at the start and
6301 end of each source file have been removed for consistency. Also, within
6302 comments, all new sentences start with a single space instead of a double
6303 space, again for consistency across the code base.
6304
6305 Example Code and Data Size: These are the sizes for the OS-independent
6306 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6307 debug version of the code includes the debug output trace mechanism and
6308 has 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
6318 2) iASL Compiler/Disassembler and Tools:
6319
6320 AcpiExec: Improved the algorithm used for memory leak/corruption
6321 detection. Added some intelligence to the code that maintains the global
6322 list of allocated memory. The list is now ordered by allocated memory
6323 address, significantly improving performance. When running AcpiExec on
6324 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
6325 on the platform and/or the environment. Note, this performance
6326 enhancement affects the AcpiExec utility only, not the kernel-resident
6327 ACPICA code.
6328
6329 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
6330 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
6331 incorrect table offset reported for invalid opcodes. Report the original
6332 32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
6333
6334 Disassembler: Enhanced the -vt option to emit the binary table data in
6335 hex format to assist with debugging.
6336
6337 Fixed a potential filename buffer overflow in osunixdir.c. Increased the
6338 size of file structure. Colin Ian King.
6339
6340 ----------------------------------------
6341 13 September 2012. Summary of changes for version 20120913:
6342
6343
6344 1) ACPICA Kernel-resident Subsystem:
6345
6346 ACPI 5.0: Added two new notify types for the Hardware Error Notification
6347 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
6348 and
6349 MCE(6).
6350
6351 Table Manager: Merged/removed duplicate code in the root table resize
6352 functions. One function is external, the other is internal. Lv Zheng,
6353 ACPICA
6354 BZ 846.
6355
6356 Makefiles: Completely removed the obsolete "Linux" makefiles under
6357 acpica/generate/linux. These makefiles are obsolete and have been
6358 replaced
6359 by
6360 the generic unix makefiles under acpica/generate/unix.
6361
6362 Makefiles: Ensure that binary files always copied properly. Minor rule
6363 change
6364 to ensure that the final binary output files are always copied up to the
6365 appropriate binary directory (bin32 or bin64.)
6366
6367 Example Code and Data Size: These are the sizes for the OS-independent
6368 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6369 debug
6370 version of the code includes the debug output trace mechanism and has a
6371 much
6372 larger 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
6382 2) iASL Compiler/Disassembler and Tools:
6383
6384 Disassembler: Fixed a possible fault during the disassembly of resource
6385 descriptors when a second parse is required because of the invocation of
6386 external control methods within the table. With assistance from
6387 adq (a] lidskialf.net. ACPICA BZ 976.
6388
6389 iASL: Fixed a namepath optimization problem. An error can occur if the
6390 parse
6391 node that contains the namepath to be optimized does not have a parent
6392 node
6393 that is a named object. This change fixes the problem.
6394
6395 iASL: Fixed a regression where the AML file is not deleted on errors. The
6396 AML
6397 output file should be deleted if there are any errors during the
6398 compiler.
6399 The
6400 only exception is if the -f (force output) option is used. ACPICA BZ 974.
6401
6402 iASL: Added a feature to automatically increase internal line buffer
6403 sizes.
6404 Via realloc(), automatically increase the internal line buffer sizes as
6405 necessary to support very long source code lines. The current version of
6406 the
6407 preprocessor requires a buffer long enough to contain full source code
6408 lines.
6409 This change increases the line buffer(s) if the input lines go beyond the
6410 current buffer size. This eliminates errors that occurred when a source
6411 code
6412 line was longer than the buffer.
6413
6414 iASL: Fixed a problem with constant folding in method declarations. The
6415 SyncLevel term is a ByteConstExpr, and incorrect code would be generated
6416 if a
6417 Type3 opcode was used.
6418
6419 Debugger: Improved command help support. For incorrect argument count,
6420 display
6421 full help for the command. For help command itself, allow an argument to
6422 specify a command.
6423
6424 Test Suites: Several bug fixes for the ASLTS suite reduces the number of
6425 errors during execution of the suite. Guan Chao.
6426
6427 ----------------------------------------
6428 16 August 2012. Summary of changes for version 20120816:
6429
6430
6431 1) ACPICA Kernel-resident Subsystem:
6432
6433 Removed 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
6436 deprecated and will probably be removed from the ACPI specification.
6437 Windows
6438 does not invoke them, and reportedly never will. The final nail in the
6439 coffin
6440 is that the ACPI specification states that these methods must be run with
6441 interrupts off, which is not going to happen in a kernel interpreter.
6442 Note:
6443 Linux has removed all use of the methods also. It was discovered that
6444 invoking these functions caused failures on some machines, probably
6445 because
6446 they were never tested since Windows does not call them. Affects two
6447 external
6448 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
6449 ACPICA BZ 969.
6450
6451 Implemented support for complex bit-packed buffers returned from the _PLD
6452 (Physical Location of Device) predefined method. Adds a new external
6453 interface, AcpiDecodePldBuffer that parses the buffer into a more usable
6454 C
6455 structure. Note: C Bitfields cannot be used for this type of predefined
6456 structure since the memory layout of individual bitfields is not defined
6457 by
6458 the C language. In addition, there are endian concerns where a compiler
6459 will
6460 change the bitfield ordering based on the machine type. The new ACPICA
6461 interface eliminates these issues, and should be called after _PLD is
6462 executed. ACPICA BZ 954.
6463
6464 Implemented a change to allow a scope change to root (via "Scope (\)")
6465 during
6466 execution of module-level ASL code (code that is executed at table load
6467 time.) Lin Ming.
6468
6469 Added the Windows8/Server2012 string for the _OSI method. This change
6470 adds
6471 a
6472 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
6473 2012.
6474
6475 Added header support for the new ACPI tables DBG2 (Debug Port Table Type
6476 2)
6477 and CSRT (Core System Resource Table).
6478
6479 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
6480 names. This simplifies access to the buffers returned by these predefined
6481 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
6482
6483 GPE support: Removed an extraneous parameter from the various low-level
6484 internal GPE functions. Tang Feng.
6485
6486 Removed the linux makefiles from the unix packages. The generate/linux
6487 makefiles are obsolete and have been removed from the unix tarball
6488 release
6489 packages. The replacement makefiles are under generate/unix, and there is
6490 a
6491 top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
6492
6493 Updates for Unix makefiles:
6494 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
6495 2) Update linker flags (move to end of command line) for AcpiExec
6496 utility.
6497 Guan Chao.
6498
6499 Split ACPICA initialization functions to new file, utxfinit.c. Split from
6500 utxface.c to improve modularity and reduce file size.
6501
6502 Example Code and Data Size: These are the sizes for the OS-independent
6503 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6504 debug version of the code includes the debug output trace mechanism and
6505 has a
6506 much 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
6516 2) iASL Compiler/Disassembler and Tools:
6517
6518 iASL: Fixed a problem with constant folding for fixed-length constant
6519 expressions. The constant-folding code was not being invoked for constant
6520 expressions that allow the use of type 3/4/5 opcodes to generate
6521 constants
6522 for expressions such as ByteConstExpr, WordConstExpr, etc. This could
6523 result
6524 in the generation of invalid AML bytecode. ACPICA BZ 970.
6525
6526 iASL: Fixed a generation issue on newer versions of Bison. Newer versions
6527 apparently automatically emit some of the necessary externals. This
6528 change
6529 handles these versions in order to eliminate generation warnings.
6530
6531 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
6532
6533 Disassembler: Add support to decode _PLD buffers. The decoded buffer
6534 appears
6535 within comments in the output file.
6536
6537 Debugger: Fixed a regression with the "Threads" command where
6538 AE_BAD_PARAMETER was always returned.
6539
6540 ----------------------------------------
6541 11 July 2012. Summary of changes for version 20120711:
6542
6543 1) ACPICA Kernel-resident Subsystem:
6544
6545 Fixed a possible fault in the return package object repair code. Fixes a
6546 problem that can occur when a lone package object is wrapped with an
6547 outer
6548 package object in order to force conformance to the ACPI specification.
6549 Can
6550 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
6551 _DLM,
6552 _CSD, _PSD, _TSD.
6553
6554 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
6555 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
6556 ARB_DIS bit must be implemented in the host-dependent C3 processor power
6557 state
6558 support. Note, ARB_DIS is obsolete and only applies to older chipsets,
6559 both
6560 Intel and other vendors. (for Intel: ICH4-M and earlier)
6561
6562 This change removes the code to disable/enable bus master arbitration
6563 during
6564 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
6565 causes
6566 resume problems on some machines. The change has been in use for over
6567 seven
6568 years within Linux.
6569
6570 Implemented two new external interfaces to support host-directed dynamic
6571 ACPI
6572 table load and unload. They are intended to simplify the host
6573 implementation
6574 of 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
6577 table.
6578 See the ACPICA reference for additional details. Adds one new file,
6579 components/tables/tbxfload.c
6580
6581 Implemented and deployed two new interfaces for errors and warnings that
6582 are
6583 known to be caused by BIOS/firmware issues:
6584 AcpiBiosError: Prints "ACPI Firmware Error" message.
6585 AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
6586 Deployed these new interfaces in the ACPICA Table Manager code for ACPI
6587 table
6588 and FADT errors. Additional deployment to be completed as appropriate in
6589 the
6590 future. The associated conditional macros are ACPI_BIOS_ERROR and
6591 ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
6592 ACPICA
6593 BZ
6594 843.
6595
6596 Implicit notify support: ensure that no memory allocation occurs within a
6597 critical region. This fix moves a memory allocation outside of the time
6598 that a
6599 spinlock is held. Fixes issues on systems that do not allow this
6600 behavior.
6601 Jung-uk Kim.
6602
6603 Split exception code utilities and tables into a new file,
6604 utilities/utexcep.c
6605
6606 Example Code and Data Size: These are the sizes for the OS-independent
6607 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6608 debug
6609 version of the code includes the debug output trace mechanism and has a
6610 much
6611 larger 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
6621 2) iASL Compiler/Disassembler and Tools:
6622
6623 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
6624 of
6625 0. Jung-uk Kim.
6626
6627 Debugger: Enhanced the "tables" command to emit additional information
6628 about
6629 the current set of ACPI tables, including the owner ID and flags decode.
6630
6631 Debugger: Reimplemented the "unload" command to use the new
6632 AcpiUnloadParentTable external interface. This command was disable
6633 previously
6634 due to need for an unload interface.
6635
6636 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
6637 option
6638 will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
6639
6640 ----------------------------------------
6641 20 June 2012. Summary of changes for version 20120620:
6642
6643
6644 1) ACPICA Kernel-resident Subsystem:
6645
6646 Implemented support to expand the "implicit notify" feature to allow
6647 multiple
6648 devices to be notified by a single GPE. This feature automatically
6649 generates a
6650 runtime device notification in the absence of a BIOS-provided GPE control
6651 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
6652 notify is
6653 provided by ACPICA for Windows compatibility, and is a workaround for
6654 BIOS
6655 AML
6656 code errors. See the description of the AcpiSetupGpeForWake interface in
6657 the
6658 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
6659
6660 Changed some comments and internal function names to simplify and ensure
6661 correctness of the Linux code translation. No functional changes.
6662
6663 Example Code and Data Size: These are the sizes for the OS-independent
6664 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6665 debug
6666 version of the code includes the debug output trace mechanism and has a
6667 much
6668 larger 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
6678 2) iASL Compiler/Disassembler and Tools:
6679
6680 Disassembler: Added support to emit short, commented descriptions for the
6681 ACPI
6682 predefined names in order to improve the readability of the disassembled
6683 output. ACPICA BZ 959. Changes include:
6684 1) Emit descriptions for all standard predefined names (_INI, _STA,
6685 _PRW,
6686 etc.)
6687 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
6688 3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
6689 etc.)
6690
6691 AcpiSrc: Fixed several long-standing Linux code translation issues.
6692 Argument
6693 descriptions in function headers are now translated properly to lower
6694 case
6695 and
6696 underscores. ACPICA BZ 961. Also fixes translation problems such as
6697 these:
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
6705 iASL: Fixed a problem where null bytes were inadvertently emitted into
6706 some
6707 listing files.
6708
6709 iASL: Added the existing debug options to the standard help screen. There
6710 are
6711 no longer two different help screens. ACPICA BZ 957.
6712
6713 AcpiHelp: Fixed some typos in the various predefined name descriptions.
6714 Also
6715 expand some of the descriptions where appropriate.
6716
6717 iASL: Fixed the -ot option (display compile times/statistics). Was not
6718 working
6719 properly for standard output; only worked for the debug file case.
6720
6721 ----------------------------------------
6722 18 May 2012. Summary of changes for version 20120518:
6723
6724
6725 1) ACPICA Core Subsystem:
6726
6727 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
6728 defined
6729 to block until asynchronous events such as notifies and GPEs have
6730 completed.
6731 Within ACPICA, it is only called before a notify or GPE handler is
6732 removed/uninstalled. It also may be useful for the host OS within related
6733 drivers such as the Embedded Controller driver. See the ACPICA reference
6734 for
6735 additional information. ACPICA BZ 868.
6736
6737 ACPI Tables: Added a new error message for a possible overflow failure
6738 during
6739 the conversion of FADT 32-bit legacy register addresses to internal
6740 common
6741 64-
6742 bit GAS structure representation. The GAS has a one-byte "bit length"
6743 field,
6744 thus limiting the register length to 255 bits. ACPICA BZ 953.
6745
6746 Example Code and Data Size: These are the sizes for the OS-independent
6747 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6748 debug
6749 version of the code includes the debug output trace mechanism and has a
6750 much
6751 larger 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
6761 2) iASL Compiler/Disassembler and Tools:
6762
6763 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
6764 macro.
6765 This keyword was added late in the ACPI 5.0 release cycle and was not
6766 implemented until now.
6767
6768 Disassembler: Added support for Operation Region externals. Adds missing
6769 support for operation regions that are defined in another table, and
6770 referenced locally via a Field or BankField ASL operator. Now generates
6771 the
6772 correct External statement.
6773
6774 Disassembler: Several additional fixes for the External() statement
6775 generation
6776 related to some ASL operators. Also, order the External() statements
6777 alphabetically in the disassembler output. Fixes the External()
6778 generation
6779 for
6780 the Create* field, Alias, and Scope operators:
6781 1) Create* buffer field operators - fix type mismatch warning on
6782 disassembly
6783 2) Alias - implement missing External support
6784 3) Scope - fix to make sure all necessary externals are emitted.
6785
6786 iASL: Improved pathname support. For include files, merge the prefix
6787 pathname
6788 with the file pathname and eliminate unnecessary components. Convert
6789 backslashes in all pathnames to forward slashes, for readability. Include
6790 file
6791 pathname changes affect both #include and Include() type operators.
6792
6793 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
6794 end
6795 of a valid line by inserting a newline and then returning the EOF during
6796 the
6797 next call to GetNextLine. Prevents the line from being ignored due to EOF
6798 condition.
6799
6800 iASL: Implemented some changes to enhance the IDE support (-vi option.)
6801 Error
6802 and Warning messages are now correctly recognized for both the source
6803 code
6804 browser and the global error and warning counts.
6805
6806 ----------------------------------------
6807 20 April 2012. Summary of changes for version 20120420:
6808
6809
6810 1) ACPICA Core Subsystem:
6811
6812 Implemented support for multiple notify handlers. This change adds
6813 support
6814 to
6815 allow multiple system and device notify handlers on Device, Thermal Zone,
6816 and
6817 Processor objects. This can simplify the host OS notification
6818 implementation.
6819 Also re-worked and restructured the entire notify support code to
6820 simplify
6821 handler installation, handler removal, notify event queuing, and notify
6822 dispatch to handler(s). Note: there can still only be two global notify
6823 handlers - one for system notifies and one for device notifies. There are
6824 no
6825 changes to the existing handler install/remove interfaces. Lin Ming, Bob
6826 Moore, Rafael Wysocki.
6827
6828 Fixed a regression in the package repair code where the object reference
6829 count was calculated incorrectly. Regression was introduced in the commit
6830 "Support to add Package wrappers".
6831
6832 Fixed a couple possible memory leaks in the AML parser, in the error
6833 recovery
6834 path. Jesper Juhl, Lin Ming.
6835
6836 Example Code and Data Size: These are the sizes for the OS-independent
6837 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6838 debug version of the code includes the debug output trace mechanism and
6839 has a
6840 much 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
6850 2) iASL Compiler/Disassembler and Tools:
6851
6852 iASL: Fixed a problem with the resource descriptor support where the
6853 length
6854 of the StartDependentFn and StartDependentFnNoPrio descriptors were not
6855 included in cumulative descriptor offset, resulting in incorrect values
6856 for
6857 resource tags within resource descriptors appearing after a
6858 StartDependent*
6859 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
6860
6861 iASL and Preprocessor: Implemented full support for the #line directive
6862 to
6863 correctly track original source file line numbers through the .i
6864 preprocessor
6865 output file - for error and warning messages.
6866
6867 iASL: Expand the allowable byte constants for address space IDs.
6868 Previously,
6869 the allowable range was 0x80-0xFF (user-defined spaces), now the range is
6870 0x0A-0xFF to allow for custom and new IDs without changing the compiler.
6871
6872 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
6873
6874 iASL: Add option to completely disable the preprocessor (-Pn).
6875
6876 iASL: Now emit all error/warning messages to standard error (stderr) by
6877 default (instead of the previous stdout).
6878
6879 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
6880 Update
6881 for resource descriptor offset fix above. Update/cleanup error output
6882 routines. Enable and send iASL errors/warnings to an error logfile
6883 (error.txt). Send all other iASL output to a logfile (compiler.txt).
6884 Fixed
6885 several extraneous "unrecognized operator" messages.
6886
6887 ----------------------------------------
6888 20 March 2012. Summary of changes for version 20120320:
6889
6890
6891 1) ACPICA Core Subsystem:
6892
6893 Enhanced the sleep/wake interfaces to optionally execute the _GTS method
6894 (Going To Sleep) and the _BFS method (Back From Sleep). Windows
6895 apparently
6896 does not execute these methods, and therefore these methods are often
6897 untested. It has been seen on some systems where the execution of these
6898 methods causes errors and also prevents the machine from entering S5. It
6899 is
6900 therefore suggested that host operating systems do not execute these
6901 methods
6902 by default. In the future, perhaps these methods can be optionally
6903 executed
6904 based on the age of the system and/or what is the newest version of
6905 Windows
6906 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
6907 and
6908 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
6909 Ming.
6910
6911 Fixed a problem where the length of the local/common FADT was set too
6912 early.
6913 The local FADT table length cannot be set to the common length until the
6914 original length has been examined. There is code that checks the table
6915 length
6916 and sets various fields appropriately. This can affect older machines
6917 with
6918 early FADT versions. For example, this can cause inadvertent writes to
6919 the
6920 CST_CNT register. Julian Anastasov.
6921
6922 Fixed a mapping issue related to a physical table override. Use the
6923 deferred
6924 mapping mechanism for tables loaded via the physical override OSL
6925 interface.
6926 This allows for early mapping before the virtual memory manager is
6927 available.
6928 Thomas Renninger, Bob Moore.
6929
6930 Enhanced the automatic return-object repair code: Repair a common problem
6931 with
6932 predefined methods that are defined to return a variable-length Package
6933 of
6934 sub-objects. If there is only one sub-object, some BIOS ASL code
6935 mistakenly
6936 simply returns the single object instead of a Package with one sub-
6937 object.
6938 This new support will repair this error by wrapping a Package object
6939 around
6940 the original object, creating the correct and expected Package with one
6941 sub-
6942 object. 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
6945 939.
6946
6947 Changed the exception code returned for invalid ACPI paths passed as
6948 parameters to external interfaces such as AcpiEvaluateObject. Was
6949 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
6950
6951 Example Code and Data Size: These are the sizes for the OS-independent
6952 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6953 debug
6954 version of the code includes the debug output trace mechanism and has a
6955 much
6956 larger 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
6966 2) iASL Compiler/Disassembler and Tools:
6967
6968 iASL: Added the infrastructure and initial implementation of a integrated
6969 C-
6970 like preprocessor. This will simplify BIOS development process by
6971 eliminating
6972 the need for a separate preprocessing step during builds. On Windows, it
6973 also
6974 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
6975 features including full #define() macro support are still under
6976 development.
6977 These 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
6990 In 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
6995 Table Compiler: Fixed a problem where the equals operator within an
6996 expression
6997 did not work properly.
6998
6999 Updated iASL to use the current versions of Bison/Flex. Updated the
7000 Windows
7001 project file to invoke these tools from the standard location. ACPICA BZ
7002 904.
7003 Versions supported:
7004 Flex for Windows: V2.5.4
7005 Bison for Windows: V2.4.1
7006
7007 ----------------------------------------
7008 15 February 2012. Summary of changes for version 20120215:
7009
7010
7011 1) ACPICA Core Subsystem:
7012
7013 There have been some major changes to the sleep/wake support code, as
7014 described below (a - e).
7015
7016 a) The AcpiLeaveSleepState has been split into two interfaces, similar to
7017 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
7018 AcpiLeaveSleepStatePrep. This allows the host to perform actions between
7019 the
7020 time the _BFS method is called and the _WAK method is called. NOTE: all
7021 hosts
7022 must update their wake/resume code or else sleep/wake will not work
7023 properly.
7024 Rafael Wysocki.
7025
7026 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
7027 _WAK
7028 method. Some machines require that the GPEs are enabled before the _WAK
7029 method
7030 is executed. Thomas Renninger.
7031
7032 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
7033 bit.
7034 Some BIOS code assumes that WAK_STS will be cleared on resume and use it
7035 to
7036 determine whether the system is rebooting or resuming. Matthew Garrett.
7037
7038 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
7039 Sleep) to
7040 match the ACPI specification requirement. Rafael Wysocki.
7041
7042 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
7043 registers within the V5 FADT. This support adds two new files:
7044 hardware/hwesleep.c implements the support for the new registers. Moved
7045 all
7046 sleep/wake external interfaces to hardware/hwxfsleep.c.
7047
7048
7049 Added a new OSL interface for ACPI table overrides,
7050 AcpiOsPhysicalTableOverride. This interface allows the host to override a
7051 table via a physical address, instead of the logical address required by
7052 AcpiOsTableOverride. This simplifies the host implementation. Initial
7053 implementation by Thomas Renninger. The ACPICA implementation creates a
7054 single
7055 shared function for table overrides that attempts both a logical and a
7056 physical override.
7057
7058 Expanded the OSL memory read/write interfaces to 64-bit data
7059 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
7060 transfer support for GAS register structures passed to AcpiRead and
7061 AcpiWrite.
7062
7063 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
7064 custom
7065 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
7066 model.
7067 See the ACPICA reference for details. ACPICA BZ 942. This option removes
7068 about
7069 10% of the code and 5% of the static data, and the following hardware
7070 ACPI
7071 features 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
7080 Updated the unix tarball directory structure to match the ACPICA git
7081 source
7082 tree. This ensures that the generic unix makefiles work properly (in
7083 generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
7084 867.
7085
7086 Updated the return value of the _REV predefined method to integer value 5
7087 to
7088 reflect ACPI 5.0 support.
7089
7090 Moved the external ACPI PM timer interface prototypes to the public
7091 acpixf.h
7092 file where they belong.
7093
7094 Example Code and Data Size: These are the sizes for the OS-independent
7095 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7096 debug
7097 version of the code includes the debug output trace mechanism and has a
7098 much
7099 larger 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
7109 2) iASL Compiler/Disassembler and Tools:
7110
7111 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
7112 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
7113 incorrectly displayed.
7114
7115 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
7116 specification.
7117
7118 ----------------------------------------
7119 11 January 2012. Summary of changes for version 20120111:
7120
7121
7122 1) ACPICA Core Subsystem:
7123
7124 Implemented a new mechanism to allow host device drivers to check for
7125 address
7126 range conflicts with ACPI Operation Regions. Both SystemMemory and
7127 SystemIO
7128 address spaces are supported. A new external interface,
7129 AcpiCheckAddressRange,
7130 allows drivers to check an address range against the ACPI namespace. See
7131 the
7132 ACPICA reference for additional details. Adds one new file,
7133 utilities/utaddress.c. Lin Ming, Bob Moore.
7134
7135 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
7136 Control
7137 and
7138 Status registers, update the ACPI 5.0 flags, and update internal data
7139 structures to handle an FADT larger than 256 bytes. The size of the ACPI
7140 5.0
7141 FADT is 268 bytes.
7142
7143 Updated all ACPICA copyrights and signons to 2012. Added the 2012
7144 copyright to
7145 all module headers and signons, including the standard Linux header. This
7146 affects virtually every file in the ACPICA core subsystem, iASL compiler,
7147 and
7148 all ACPICA utilities.
7149
7150 Example Code and Data Size: These are the sizes for the OS-independent
7151 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7152 debug
7153 version of the code includes the debug output trace mechanism and has a
7154 much
7155 larger 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
7165 2) iASL Compiler/Disassembler and Tools:
7166
7167 Disassembler: fixed a problem with the automatic resource tag generation
7168 support. Fixes a problem where the resource tags are inadvertently not
7169 constructed if the table being disassembled contains external references
7170 to
7171 control methods. Moved the actual construction of the tags to after the
7172 final
7173 namespace is constructed (after 2nd parse is invoked due to external
7174 control
7175 method references.) ACPICA BZ 941.
7176
7177 Table Compiler: Make all "generic" operators caseless. These are the
7178 operators
7179 like UINT8, String, etc. Making these caseless improves ease-of-use.
7180 ACPICA BZ
7181 934.
7182
7183 ----------------------------------------
7184 23 November 2011. Summary of changes for version 20111123:
7185
7186 0) ACPI 5.0 Support:
7187
7188 This release contains full support for the ACPI 5.0 specification, as
7189 summarized below.
7190
7191 Reduced Hardware Support:
7192 -------------------------
7193
7194 This support allows for ACPI systems without the usual ACPI hardware.
7195 This
7196 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
7197 will
7198 not attempt to initialize or use any of the usual ACPI hardware. Note,
7199 when
7200 this flag is set, all of the following ACPI hardware is assumed to be not
7201 present 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
7211 ACPI Tables:
7212 ------------
7213
7214 All new tables and updates to existing tables are fully supported in the
7215 ACPICA headers (for use by device drivers), the disassembler, and the
7216 iASL
7217 Data 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
7228 Operation Regions/SpaceIDs:
7229 ---------------------------
7230
7231 All new operation regions are fully supported by the iASL compiler, the
7232 disassembler, and the ACPICA runtime code (for dispatch to region
7233 handlers.)
7234 The new operation region Space IDs are:
7235
7236 GeneralPurposeIo
7237 GenericSerialBus
7238
7239 Resource Descriptors:
7240 ---------------------
7241
7242 All new ASL resource descriptors are fully supported by the iASL
7243 compiler,
7244 the
7245 ASL/AML disassembler, and the ACPICA runtime Resource Manager code
7246 (including
7247 all new predefined resource tags). New descriptors are:
7248
7249 FixedDma
7250 GpioIo
7251 GpioInt
7252 I2cSerialBus
7253 SpiSerialBus
7254 UartSerialBus
7255
7256 ASL/AML Operators, New and Modified:
7257 ------------------------------------
7258
7259 One new operator is added, the Connection operator, which is used to
7260 associate
7261 a GeneralPurposeIo or GenericSerialBus resource descriptor with
7262 individual
7263 field objects within an operation region. Several new protocols are
7264 associated
7265 with the AccessAs operator. All are fully supported by the iASL compiler,
7266 disassembler, and runtime ACPICA AML interpreter:
7267
7268 Connection // Declare Field Connection
7269 attributes
7270 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
7271 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
7272 Protocol
7273 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
7274 RawDataBuffer // Data type for Vendor Data
7275 fields
7276
7277 Predefined ASL/AML Objects:
7278 ---------------------------
7279
7280 All new predefined objects/control-methods are supported by the iASL
7281 compiler
7282 and the ACPICA runtime validation/repair (arguments and return values.)
7283 New
7284 predefined names include the following:
7285
7286 Standard 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
7291 Resource Tags (Names used to access individual fields within resource
7292 descriptors):
7293 _DBT, _DPL, _DRS, _END, _FLC,
7294 _IOR, _LIN, _MOD, _PAR, _PHA,
7295 _PIN, _PPI, _POL, _RXL, _SLV,
7296 _SPE, _STB, _TXL, _VEN.
7297
7298 ACPICA External Interfaces:
7299 ---------------------------
7300
7301 Several new interfaces have been defined for use by ACPI-related device
7302 drivers and other host OS services:
7303
7304 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
7305 to
7306 acquire and release AML mutexes that are defined in the DSDT/SSDT tables
7307 provided by the BIOS. They are intended to be used in conjunction with
7308 the
7309 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
7310 mutual exclusion with the AML code/interpreter.
7311
7312 AcpiGetEventResources: Returns the (formatted) resource descriptors as
7313 defined
7314 by the ACPI 5.0 _AEI object (ACPI Event Information). This object
7315 provides
7316 resource descriptors associated with hardware-reduced platform events,
7317 similar
7318 to the AcpiGetCurrentResources interface.
7319
7320 Operation Region Handlers: For General Purpose IO and Generic Serial Bus
7321 operation regions, information about the Connection() object and any
7322 optional
7323 length information is passed to the region handler within the Context
7324 parameter.
7325
7326 AcpiBufferToResource: This interface converts a raw AML buffer containing
7327 a
7328 resource template or resource descriptor to the ACPI_RESOURCE internal
7329 format
7330 suitable for use by device drivers. Can be used by an operation region
7331 handler
7332 to convert the Connection() buffer object into a ACPI_RESOURCE.
7333
7334 Miscellaneous/Tools/TestSuites:
7335 -------------------------------
7336
7337 Support for extended _HID names (Four alpha characters instead of three).
7338 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
7339 Support for ACPI 5.0 features in the ASLTS test suite.
7340 Fully updated documentation (ACPICA and iASL reference documents.)
7341
7342 ACPI Table Definition Language:
7343 -------------------------------
7344
7345 Support for this language was implemented and released as a subsystem of
7346 the
7347 iASL compiler in 2010. (See the iASL compiler User Guide.)
7348
7349
7350 Non-ACPI 5.0 changes for this release:
7351 --------------------------------------
7352
7353 1) ACPICA Core Subsystem:
7354
7355 Fix a problem with operation region declarations where a failure can
7356 occur
7357 if
7358 the region name and an argument that evaluates to an object (such as the
7359 region address) are in different namespace scopes. Lin Ming, ACPICA BZ
7360 937.
7361
7362 Do not abort an ACPI table load if an invalid space ID is found within.
7363 This
7364 will be caught later if the offending method is executed. ACPICA BZ 925.
7365
7366 Fixed an issue with the FFixedHW space ID where the ID was not always
7367 recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
7368
7369 Fixed a problem with the 32-bit generation of the unix-specific OSL
7370 (osunixxf.c). Lin Ming, ACPICA BZ 936.
7371
7372 Several changes made to enable generation with the GCC 4.6 compiler.
7373 ACPICA BZ
7374 935.
7375
7376 New error messages: Unsupported I/O requests (not 8/16/32 bit), and
7377 Index/Bank
7378 field registers out-of-range.
7379
7380 2) iASL Compiler/Disassembler and Tools:
7381
7382 iASL: Implemented the __PATH__ operator, which returns the full pathname
7383 of
7384 the current source file.
7385
7386 AcpiHelp: Automatically display expanded keyword information for all ASL
7387 operators.
7388
7389 Debugger: Add "Template" command to disassemble/dump resource template
7390 buffers.
7391
7392 Added a new master script to generate and execute the ASLTS test suite.
7393 Automatically handles 32- and 64-bit generation. See tests/aslts.sh
7394
7395 iASL: Fix problem with listing generation during processing of the
7396 Switch()
7397 operator where AML listing was disabled until the entire Switch block was
7398 completed.
7399
7400 iASL: Improve support for semicolon statement terminators. Fix "invalid
7401 character" message for some cases when the semicolon is used. Semicolons
7402 are
7403 now allowed after every <Term> grammar element. ACPICA BZ 927.
7404
7405 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
7406 923.
7407
7408 Disassembler: Fix problem with disassembly of the DataTableRegion
7409 operator
7410 where an inadvertent "Unhandled deferred opcode" message could be
7411 generated.
7412
7413 3) Example Code and Data Size
7414
7415 These are the sizes for the OS-independent acpica.lib produced by the
7416 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7417 includes the debug output trace mechanism and has a much larger code and
7418 data
7419 size.
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 ----------------------------------------
7429 22 September 2011. Summary of changes for version 20110922:
7430
7431 0) ACPI 5.0 News:
7432
7433 Support for ACPI 5.0 in ACPICA has been underway for several months and
7434 will
7435 be released at the same time that ACPI 5.0 is officially released.
7436
7437 The ACPI 5.0 specification is on track for release in the next few
7438 months.
7439
7440 1) ACPICA Core Subsystem:
7441
7442 Fixed a problem where the maximum sleep time for the Sleep() operator was
7443 intended to be limited to two seconds, but was inadvertently limited to
7444 20
7445 seconds instead.
7446
7447 Linux and Unix makefiles: Added header file dependencies to ensure
7448 correct
7449 generation of ACPICA core code and utilities. Also simplified the
7450 makefiles
7451 considerably through the use of the vpath variable to specify search
7452 paths.
7453 ACPICA BZ 924.
7454
7455 2) iASL Compiler/Disassembler and Tools:
7456
7457 iASL: Implemented support to check the access length for all fields
7458 created to
7459 access named Resource Descriptor fields. For example, if a resource field
7460 is
7461 defined to be two bits, a warning is issued if a CreateXxxxField() is
7462 used
7463 with an incorrect bit length. This is implemented for all current
7464 resource
7465 descriptor names. ACPICA BZ 930.
7466
7467 Disassembler: Fixed a byte ordering problem with the output of 24-bit and
7468 56-
7469 bit integers.
7470
7471 iASL: Fixed a couple of issues associated with variable-length package
7472 objects. 1) properly handle constants like One, Ones, Zero -- do not make
7473 a
7474 VAR_PACKAGE when these are used as a package length. 2) Allow the
7475 VAR_PACKAGE
7476 opcode (in addition to PACKAGE) when validating object types for
7477 predefined
7478 names.
7479
7480 iASL: Emit statistics for all output files (instead of just the ASL input
7481 and
7482 AML output). Includes listings, hex files, etc.
7483
7484 iASL: Added -G option to the table compiler to allow the compilation of
7485 custom
7486 ACPI tables. The only part of a table that is required is the standard
7487 36-
7488 byte
7489 ACPI header.
7490
7491 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
7492 headers),
7493 which also adds correct 64-bit support. Also, now all output filenames
7494 are
7495 completely lower case.
7496
7497 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
7498 loading table files. A warning is issued for any such tables. The only
7499 exception is an FADT. This also fixes a possible fault when attempting to
7500 load
7501 non-AML tables. ACPICA BZ 932.
7502
7503 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
7504 a
7505 missing table terminator could cause a fault when using the -p option.
7506
7507 AcpiSrc: Fixed a possible divide-by-zero fault when generating file
7508 statistics.
7509
7510 3) Example Code and Data Size
7511
7512 These are the sizes for the OS-independent acpica.lib produced by the
7513 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
7514 includes the debug output trace mechanism and has a much larger code and
7515 data
7516 size.
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 ----------------------------------------
7527 23 June 2011. Summary of changes for version 20110623:
7528
7529 1) ACPI CA Core Subsystem:
7530
7531 Updated the predefined name repair mechanism to not attempt repair of a
7532 _TSS
7533 return object if a _PSS object is present. We can only sort the _TSS
7534 return
7535 package if there is no _PSS within the same scope. This is because if
7536 _PSS
7537 is
7538 present, the ACPI specification dictates that the _TSS Power Dissipation
7539 field
7540 is to be ignored, and therefore some BIOSs leave garbage values in the
7541 _TSS
7542 Power field(s). In this case, it is best to just return the _TSS package
7543 as-
7544 is. Reported by, and fixed with assistance from Fenghua Yu.
7545
7546 Added an option to globally disable the control method return value
7547 validation
7548 and repair. This runtime option can be used to disable return value
7549 repair
7550 if
7551 this is causing a problem on a particular machine. Also added an option
7552 to
7553 AcpiExec (-dr) to set this disable flag.
7554
7555 All makefiles and project files: Major changes to improve generation of
7556 ACPICA
7557 tools. 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
7564 Linux-specific header: update handling of THREAD_ID and pthread. For the
7565 32-
7566 bit case, improve casting to eliminate possible warnings, especially with
7567 the
7568 acpica tools.
7569
7570 Example Code and Data Size: These are the sizes for the OS-independent
7571 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7572 debug
7573 version of the code includes the debug output trace mechanism and has a
7574 much
7575 larger 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
7584 2) iASL Compiler/Disassembler and Tools:
7585
7586 With this release, a new utility named "acpihelp" has been added to the
7587 ACPICA
7588 package. This utility summarizes the ACPI specification chapters for the
7589 ASL
7590 and AML languages. It generates under Linux/Unix as well as Windows, and
7591 provides 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
7597 grammar.
7598 Decode/display AML opcode -- with opcode name, arguments, and
7599 grammar.
7600
7601 Service Layers: Make multi-thread support configurable. Conditionally
7602 compile
7603 the multi-thread support so that threading libraries will not be linked
7604 if
7605 not
7606 necessary. The only tool that requires multi-thread support is AcpiExec.
7607
7608 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
7609 of
7610 Bison appear to want the interface to yyerror to be a const char * (or at
7611 least this is a problem when generating iASL on some systems.) ACPICA BZ
7612 923
7613 Pierre Lejeune.
7614
7615 Tools: Fix for systems where O_BINARY is not defined. Only used for
7616 Windows
7617 versions of the tools.
7618
7619 ----------------------------------------
7620 27 May 2011. Summary of changes for version 20110527:
7621
7622 1) ACPI CA Core Subsystem:
7623
7624 ASL Load() operator: Reinstate most restrictions on the incoming ACPI
7625 table
7626 signature. 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
7637 Added the missing _TDL predefined name to the global name list in order
7638 to
7639 enable validation. Affects both the core ACPICA code and the iASL
7640 compiler.
7641
7642 Example Code and Data Size: These are the sizes for the OS-independent
7643 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7644 debug
7645 version of the code includes the debug output trace mechanism and has a
7646 much
7647 larger 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
7656 2) iASL Compiler/Disassembler and Tools:
7657
7658 Debugger/AcpiExec: Implemented support for "complex" method arguments on
7659 the
7660 debugger command line. This adds support beyond simple integers --
7661 including
7662 Strings, Buffers, and Packages. Includes support for nested packages.
7663 Increased the default command line buffer size to accommodate these
7664 arguments.
7665 See the ACPICA reference for details and syntax. ACPICA BZ 917.
7666
7667 Debugger/AcpiExec: Implemented support for "default" method arguments for
7668 the
7669 Execute/Debug command. Now, the debugger will always invoke a control
7670 method
7671 with the required number of arguments -- even if the command line
7672 specifies
7673 none or insufficient arguments. It uses default integer values for any
7674 missing
7675 arguments. Also fixes a bug where only six method arguments maximum were
7676 supported instead of the required seven.
7677
7678 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
7679 and
7680 also return status in order to prevent buffer overruns. See the ACPICA
7681 reference for details and syntax. ACPICA BZ 921
7682
7683 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
7684 makefiles to simplify support for the two different but similar parser
7685 generators, bison and yacc.
7686
7687 Updated the generic unix makefile for gcc 4. The default gcc version is
7688 now
7689 expected to be 4 or greater, since options specific to gcc 4 are used.
7690
7691 ----------------------------------------
7692 13 April 2011. Summary of changes for version 20110413:
7693
7694 1) ACPI CA Core Subsystem:
7695
7696 Implemented support to execute a so-called "orphan" _REG method under the
7697 EC
7698 device. This change will force the execution of a _REG method underneath
7699 the
7700 EC
7701 device even if there is no corresponding operation region of type
7702 EmbeddedControl. Fixes a problem seen on some machines and apparently is
7703 compatible with Windows behavior. ACPICA BZ 875.
7704
7705 Added more predefined methods that are eligible for automatic NULL
7706 package
7707 element removal. This change adds another group of predefined names to
7708 the
7709 list
7710 of names that can be repaired by having NULL package elements dynamically
7711 removed. This group are those methods that return a single variable-
7712 length
7713 package containing simple data types such as integers, buffers, strings.
7714 This
7715 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
7716 _PSL,
7717 _Sx,
7718 and _TZD. ACPICA BZ 914.
7719
7720 Split and segregated all internal global lock functions to a new file,
7721 evglock.c.
7722
7723 Updated internal address SpaceID for DataTable regions. Moved this
7724 internal
7725 space
7726 id in preparation for ACPI 5.0 changes that will include some new space
7727 IDs.
7728 This
7729 change should not affect user/host code.
7730
7731 Example Code and Data Size: These are the sizes for the OS-independent
7732 acpica.lib
7733 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7734 version of
7735 the code includes the debug output trace mechanism and has a much larger
7736 code
7737 and
7738 data 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
7747 2) iASL Compiler/Disassembler and Tools:
7748
7749 iASL/DTC: Major update for new grammar features. Allow generic data types
7750 in
7751 custom ACPI tables. Field names are now optional. Any line can be split
7752 to
7753 multiple lines using the continuation char (\). Large buffers now use
7754 line-
7755 continuation character(s) and no colon on the continuation lines. See the
7756 grammar
7757 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
7758 Moore.
7759
7760 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
7761 statements.
7762 Since the parser stuffs a "zero" as the return value for these statements
7763 (due
7764 to
7765 the underlying AML grammar), they were seen as "return with value" by the
7766 iASL
7767 semantic checking. They are now seen correctly as "null" return
7768 statements.
7769
7770 iASL: Check if a_REG declaration has a corresponding Operation Region.
7771 Adds a
7772 check for each _REG to ensure that there is in fact a corresponding
7773 operation
7774 region declaration in the same scope. If not, the _REG method is not very
7775 useful
7776 since it probably won't be executed. ACPICA BZ 915.
7777
7778 iASL/DTC: Finish support for expression evaluation. Added a new
7779 expression
7780 parser
7781 that implements c-style operator precedence and parenthesization. ACPICA
7782 bugzilla
7783 908.
7784
7785 Disassembler/DTC: Remove support for () and <> style comments in data
7786 tables.
7787 Now
7788 that DTC has full expression support, we don't want to have comment
7789 strings
7790 that
7791 start with a parentheses or a less-than symbol. Now, only the standard /*
7792 and
7793 //
7794 comments are supported, as well as the bracket [] comments.
7795
7796 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
7797 "unusual"
7798 headers in the acpidump file. Update the header validation to support
7799 these
7800 tables. Problem introduced in previous AcpiXtract version in the change
7801 to
7802 support "wrong checksum" error messages emitted by acpidump utility.
7803
7804 iASL: Add a * option to generate all template files (as a synonym for
7805 ALL)
7806 as
7807 in
7808 "iasl -T *" or "iasl -T ALL".
7809
7810 iASL/DTC: Do not abort compiler on fatal errors. We do not want to
7811 completely
7812 abort the compiler on "fatal" errors, simply should abort the current
7813 compile.
7814 This allows multiple compiles with a single (possibly wildcard) compiler
7815 invocation.
7816
7817 ----------------------------------------
7818 16 March 2011. Summary of changes for version 20110316:
7819
7820 1) ACPI CA Core Subsystem:
7821
7822 Fixed a problem caused by a _PRW method appearing at the namespace root
7823 scope
7824 during the setup of wake GPEs. A fault could occur if a _PRW directly
7825 under
7826 the
7827 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
7828
7829 Implemented support for "spurious" Global Lock interrupts. On some
7830 systems, a
7831 global lock interrupt can occur without the pending flag being set. Upon
7832 a
7833 GL
7834 interrupt, we now ensure that a thread is actually waiting for the lock
7835 before
7836 signaling GL availability. Rafael Wysocki, Bob Moore.
7837
7838 Example Code and Data Size: These are the sizes for the OS-independent
7839 acpica.lib
7840 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
7841 version of
7842 the code includes the debug output trace mechanism and has a much larger
7843 code
7844 and
7845 data 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
7854 2) iASL Compiler/Disassembler and Tools:
7855
7856 Implemented full support for the "SLIC" ACPI table. Includes support in
7857 the
7858 header files, disassembler, table compiler, and template generator. Bob
7859 Moore,
7860 Lin Ming.
7861
7862 AcpiXtract: Correctly handle embedded comments and messages from
7863 AcpiDump.
7864 Apparently some or all versions of acpidump will occasionally emit a
7865 comment
7866 like
7867 "Wrong checksum", etc., into the dump file. This was causing problems for
7868 AcpiXtract. ACPICA BZ 905.
7869
7870 iASL: Fix the Linux makefile by removing an inadvertent double file
7871 inclusion.
7872 ACPICA BZ 913.
7873
7874 AcpiExec: Update installation of operation region handlers. Install one
7875 handler
7876 for a user-defined address space. This is used by the ASL test suite
7877 (ASLTS).
7878
7879 ----------------------------------------
7880 11 February 2011. Summary of changes for version 20110211:
7881
7882 1) ACPI CA Core Subsystem:
7883
7884 Added a mechanism to defer _REG methods for some early-installed
7885 handlers.
7886 Most user handlers should be installed before call to
7887 AcpiEnableSubsystem.
7888 However, Event handlers and region handlers should be installed after
7889 AcpiInitializeObjects. Override handlers for the "default" regions should
7890 be
7891 installed early, however. This change executes all _REG methods for the
7892 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
7893 chicken/egg issues between them. ACPICA BZ 848.
7894
7895 Implemented an optimization for GPE detection. This optimization will
7896 simply
7897 ignore GPE registers that contain no enabled GPEs -- there is no need to
7898 read the register since this information is available internally. This
7899 becomes more important on machines with a large GPE space. ACPICA
7900 bugzilla
7901 884. Lin Ming. Suggestion from Joe Liu.
7902
7903 Removed all use of the highly unreliable FADT revision field. The
7904 revision
7905 number in the FADT has been found to be completely unreliable and cannot
7906 be
7907 trusted. Only the actual table length can be used to infer the version.
7908 This
7909 change updates the ACPICA core and the disassembler so that both no
7910 longer
7911 even look at the FADT version and instead depend solely upon the FADT
7912 length.
7913
7914 Fix an unresolved name issue for the no-debug and no-error-message source
7915 generation cases. The _AcpiModuleName was left undefined in these cases,
7916 but
7917 it is actually needed as a parameter to some interfaces. Define
7918 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
7919
7920 Split 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
7927 Example Code and Data Size: These are the sizes for the OS-independent
7928 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7929 debug version of the code includes the debug output trace mechanism and
7930 has
7931 a 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
7940 2) iASL Compiler/Disassembler and Tools:
7941
7942 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
7943 These are useful C-style macros with the standard definitions. ACPICA
7944 bugzilla 898.
7945
7946 iASL/DTC: Added support for integer expressions and labels. Support for
7947 full
7948 expressions for all integer fields in all ACPI tables. Support for labels
7949 in
7950 "generic" portions of tables such as UEFI. See the iASL reference manual.
7951
7952 Debugger: Added a command to display the status of global handlers. The
7953 "handlers" command will display op region, fixed event, and miscellaneous
7954 global handlers. installation status -- and for op regions, whether
7955 default
7956 or user-installed handler will be used.
7957
7958 iASL: Warn if reserved method incorrectly returns a value. Many
7959 predefined
7960 names are defined such that they do not return a value. If implemented as
7961 a
7962 method, issue a warning if such a name explicitly returns a value. ACPICA
7963 Bugzilla 855.
7964
7965 iASL: Added detection of GPE method name conflicts. Detects a conflict
7966 where
7967 there are two GPE methods of the form _Lxy and _Exy in the same scope.
7968 (For
7969 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
7970
7971 iASL/DTC: Fixed a couple input scanner issues with comments and line
7972 numbers. Comment remover could get confused and miss a comment ending.
7973 Fixed
7974 a problem with line counter maintenance.
7975
7976 iASL/DTC: Reduced the severity of some errors from fatal to error. There
7977 is
7978 no need to abort on simple errors within a field definition.
7979
7980 Debugger: Simplified the output of the help command. All help output now
7981 in
7982 a single screen, instead of help subcommands. ACPICA Bugzilla 897.
7983
7984 ----------------------------------------
7985 12 January 2011. Summary of changes for version 20110112:
7986
7987 1) ACPI CA Core Subsystem:
7988
7989 Fixed a race condition between method execution and namespace walks that
7990 can
7991 possibly cause a fault. The problem was apparently introduced in version
7992 20100528 as a result of a performance optimization that reduces the
7993 number
7994 of
7995 namespace walks upon method exit by using the delete_namespace_subtree
7996 function instead of the delete_namespace_by_owner function used
7997 previously.
7998 Bug is a missing namespace lock in the delete_namespace_subtree function.
7999 dana.myers (a] oracle.com
8000
8001 Fixed several issues and a possible fault with the automatic "serialized"
8002 method support. History: This support changes a method to "serialized" on
8003 the
8004 fly if the method generates an AE_ALREADY_EXISTS error, indicating the
8005 possibility that it cannot handle reentrancy. This fix repairs a couple
8006 of
8007 issues 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 (a] oracle.com.
8019
8020 Debugger: Now lock the namespace for duration of a namespace dump.
8021 Prevents
8022 issues if the namespace is changing dynamically underneath the debugger.
8023 Especially affects temporary namespace nodes, since the debugger displays
8024 these also.
8025
8026 Updated the ordering of include files. The ACPICA headers should appear
8027 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
8028 set
8029 any necessary compiler-specific defines, etc. Affects the ACPI-related
8030 tools
8031 and utilities.
8032
8033 Updated all ACPICA copyrights and signons to 2011. Added the 2011
8034 copyright
8035 to all module headers and signons, including the Linux header. This
8036 affects
8037 virtually every file in the ACPICA core subsystem, iASL compiler, and all
8038 utilities.
8039
8040 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
8041 project files for VC++ 6.0 are now obsolete. New project files can be
8042 found
8043 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
8044 details.
8045
8046 Example Code and Data Size: These are the sizes for the OS-independent
8047 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
8048 debug version of the code includes the debug output trace mechanism and
8049 has a
8050 much 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
8059 2) iASL Compiler/Disassembler and Tools:
8060
8061 iASL: Added generic data types to the Data Table compiler. Add "generic"
8062 data
8063 types such as UINT32, String, Unicode, etc., to simplify the generation
8064 of
8065 platform-defined tables such as UEFI. Lin Ming.
8066
8067 iASL: Added listing support for the Data Table Compiler. Adds listing
8068 support
8069 (-l) to display actual binary output for each line of input code.
8070
8071 ----------------------------------------
8072 09 December 2010. Summary of changes for version 20101209:
8073
8074 1) ACPI CA Core Subsystem:
8075
8076 Completed the major overhaul of the GPE support code that was begun in
8077 July
8078 2010. Major features include: removal of _PRW execution in ACPICA (host
8079 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
8080 changes to existing interfaces, simplification of GPE handler operation,
8081 and
8082 a 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
8090 See the ACPICA Programmer Reference for full details and programming
8091 information. See the new section 4.4 "General Purpose Event (GPE)
8092 Support"
8093 for a full overview, and section 8.7 "ACPI General Purpose Event
8094 Management"
8095 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
8096 Ming,
8097 Bob Moore, Rafael Wysocki.
8098
8099 Implemented a new GPE feature for Windows compatibility, the "Implicit
8100 Wake
8101 GPE Notify". This feature will automatically issue a Notify(2) on a
8102 device
8103 when a Wake GPE is received if there is no corresponding GPE method or
8104 handler. ACPICA BZ 870.
8105
8106 Fixed a problem with the Scope() operator during table parse and load
8107 phase.
8108 During load phase (table load or method execution), the scope operator
8109 should
8110 not enter the target into the namespace. Instead, it should open a new
8111 scope
8112 at the target location. Linux BZ 19462, ACPICA BZ 882.
8113
8114 Example Code and Data Size: These are the sizes for the OS-independent
8115 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8116 debug version of the code includes the debug output trace mechanism and
8117 has a
8118 much 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
8127 2) iASL Compiler/Disassembler and Tools:
8128
8129 iASL: Relax the alphanumeric restriction on _CID strings. These strings
8130 are
8131 "bus-specific" per the ACPI specification, and therefore any characters
8132 are
8133 acceptable. The only checks that can be performed are for a null string
8134 and
8135 perhaps for a leading asterisk. ACPICA BZ 886.
8136
8137 iASL: Fixed a problem where a syntax error that caused a premature EOF
8138 condition on the source file emitted a very confusing error message. The
8139 premature EOF is now detected correctly. ACPICA BZ 891.
8140
8141 Disassembler: Decode the AccessSize within a Generic Address Structure
8142 (byte
8143 access, word access, etc.) Note, this field does not allow arbitrary bit
8144 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
8145
8146 New: AcpiNames utility - Example namespace dump utility. Shows an example
8147 of
8148 ACPICA configuration for a minimal namespace dump utility. Uses table and
8149 namespace managers, but no AML interpreter. Does not add any
8150 functionality
8151 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
8152 partition and configure ACPICA. ACPICA BZ 883.
8153
8154 AML Debugger: Increased the debugger buffer size for method return
8155 objects.
8156 Was 4K, increased to 16K. Also enhanced error messages for debugger
8157 method
8158 execution, including the buffer overflow case.
8159
8160 ----------------------------------------
8161 13 October 2010. Summary of changes for version 20101013:
8162
8163 1) ACPI CA Core Subsystem:
8164
8165 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
8166 now
8167 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
8168 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
8169
8170 Changed the type of the predefined namespace object _TZ from ThermalZone
8171 to
8172 Device. This was found to be confusing to the host software that
8173 processes
8174 the various thermal zones, since _TZ is not really a ThermalZone.
8175 However,
8176 a
8177 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
8178 Zhang.
8179
8180 Added Windows Vista SP2 to the list of supported _OSI strings. The actual
8181 string is "Windows 2006 SP2".
8182
8183 Eliminated duplicate code in AcpiUtExecute* functions. Now that the
8184 nsrepair
8185 code automatically repairs _HID-related strings, this type of code is no
8186 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
8187 878.
8188
8189 Example Code and Data Size: These are the sizes for the OS-independent
8190 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8191 debug version of the code includes the debug output trace mechanism and
8192 has a
8193 much 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
8202 2) iASL Compiler/Disassembler and Tools:
8203
8204 iASL: Implemented additional compile-time validation for _HID strings.
8205 The
8206 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
8207 length
8208 of
8209 the string must be exactly seven or eight characters. For both _HID and
8210 _CID
8211 strings, all characters must be alphanumeric. ACPICA BZ 874.
8212
8213 iASL: Allow certain "null" resource descriptors. Some BIOS code creates
8214 descriptors that are mostly or all zeros, with the expectation that they
8215 will
8216 be filled in at runtime. iASL now allows this as long as there is a
8217 "resource
8218 tag" (name) associated with the descriptor, which gives the ASL a handle
8219 needed to modify the descriptor. ACPICA BZ 873.
8220
8221 Added single-thread support to the generic Unix application OSL.
8222 Primarily
8223 for iASL support, this change removes the use of semaphores in the
8224 single-
8225 threaded ACPICA tools/applications - increasing performance. The
8226 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
8227 option. ACPICA BZ 879.
8228
8229 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
8230 support
8231 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
8232
8233 iASL: Moved all compiler messages to a new file, aslmessages.h.
8234
8235 ----------------------------------------
8236 15 September 2010. Summary of changes for version 20100915:
8237
8238 1) ACPI CA Core Subsystem:
8239
8240 Removed the AcpiOsDerivePciId OSL interface. The various host
8241 implementations
8242 of this function were not OS-dependent and are now obsolete and can be
8243 removed from all host OSLs. This function has been replaced by
8244 AcpiHwDerivePciId, which is now part of the ACPICA core code.
8245 AcpiHwDerivePciId has been implemented without recursion. Adds one new
8246 module, hwpci.c. ACPICA BZ 857.
8247
8248 Implemented a dynamic repair for _HID and _CID strings. The following
8249 problems are now repaired at runtime: 1) Remove a leading asterisk in the
8250 string, and 2) the entire string is uppercased. Both repairs are in
8251 accordance with the ACPI specification and will simplify host driver
8252 code.
8253 ACPICA BZ 871.
8254
8255 The ACPI_THREAD_ID type is no longer configurable, internally it is now
8256 always UINT64. This simplifies the ACPICA code, especially any printf
8257 output.
8258 UINT64 is the only common data type for all thread_id types across all
8259 operating systems. It is now up to the host OSL to cast the native
8260 thread_id
8261 type to UINT64 before returning the value to ACPICA (via
8262 AcpiOsGetThreadId).
8263 Lin Ming, Bob Moore.
8264
8265 Added the ACPI_INLINE type to enhance the ACPICA configuration. The
8266 "inline"
8267 keyword is not standard across compilers, and this type allows inline to
8268 be
8269 configured on a per-compiler basis. Lin Ming.
8270
8271 Made the system global AcpiGbl_SystemAwakeAndRunning publicly
8272 available.
8273 Added an extern for this boolean in acpixf.h. Some hosts utilize this
8274 value
8275 during suspend/restore operations. ACPICA BZ 869.
8276
8277 All code that implements error/warning messages with the "ACPI:" prefix
8278 has
8279 been moved to a new module, utxferror.c.
8280
8281 The UINT64_OVERLAY was moved to utmath.c, which is the only module where
8282 it
8283 is used. ACPICA BZ 829. Lin Ming, Bob Moore.
8284
8285 Example Code and Data Size: These are the sizes for the OS-independent
8286 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8287 debug version of the code includes the debug output trace mechanism and
8288 has a
8289 much 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
8298 2) iASL Compiler/Disassembler and Tools:
8299
8300 iASL/Disassembler: Write ACPI errors to stderr instead of the output
8301 file.
8302 This keeps the output files free of random error messages that may
8303 originate
8304 from within the namespace/interpreter code. Used this opportunity to
8305 merge
8306 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
8307 866. Lin Ming, Bob Moore.
8308
8309 Tools: update some printfs for ansi warnings on size_t. Handle width
8310 change
8311 of size_t on 32-bit versus 64-bit generations. Lin Ming.
8312
8313 ----------------------------------------
8314 06 August 2010. Summary of changes for version 20100806:
8315
8316 1) ACPI CA Core Subsystem:
8317
8318 Designed and implemented a new host interface to the _OSI support code.
8319 This
8320 will allow the host to dynamically add or remove multiple _OSI strings,
8321 as
8322 well as install an optional handler that is called for each _OSI
8323 invocation.
8324 Also added a new AML debugger command, 'osi' to display and modify the
8325 global
8326 _OSI string table, and test support in the AcpiExec utility. See the
8327 ACPICA
8328 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
8329 New Functions:
8330 AcpiInstallInterface - Add an _OSI string.
8331 AcpiRemoveInterface - Delete an _OSI string.
8332 AcpiInstallInterfaceHandler - Install optional _OSI handler.
8333 Obsolete Functions:
8334 AcpiOsValidateInterface - no longer used.
8335 New Files:
8336 source/components/utilities/utosi.c
8337
8338 Re-introduced the support to enable multi-byte transfers for Embedded
8339 Controller (EC) operation regions. A reported problem was found to be a
8340 bug
8341 in the host OS, not in the multi-byte support. Previously, the maximum
8342 data
8343 size passed to the EC operation region handler was a single byte. There
8344 are
8345 often EC Fields larger than one byte that need to be transferred, and it
8346 is
8347 useful for the EC driver to lock these as a single transaction. This
8348 change
8349 enables single transfers larger than 8 bits. This effectively changes the
8350 access to the EC space from ByteAcc to AnyAcc, and will probably require
8351 changes to the host OS Embedded Controller driver to enable 16/32/64/256-
8352 bit
8353 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
8354
8355 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
8356 prototype in acpiosxf.h had the output value pointer as a (void *).
8357 It should be a (UINT64 *). This may affect some host OSL code.
8358
8359 Fixed a couple problems with the recently modified Linux makefiles for
8360 iASL
8361 and AcpiExec. These new makefiles place the generated object files in the
8362 local directory so that there can be no collisions between the files that
8363 are
8364 shared between them that are compiled with different options.
8365
8366 Example Code and Data Size: These are the sizes for the OS-independent
8367 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8368 debug version of the code includes the debug output trace mechanism and
8369 has a
8370 much 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
8379 2) iASL Compiler/Disassembler and Tools:
8380
8381 iASL/Disassembler: Added a new option (-da, "disassemble all") to load
8382 the
8383 namespace from and disassemble an entire group of AML files. Useful for
8384 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
8385 and
8386 disassembling with one simple command. ACPICA BZ 865. Lin Ming.
8387
8388 iASL: Allow multiple invocations of -e option. This change allows
8389 multiple
8390 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
8391 834.
8392 Lin Ming.
8393
8394 ----------------------------------------
8395 02 July 2010. Summary of changes for version 20100702:
8396
8397 1) ACPI CA Core Subsystem:
8398
8399 Implemented several updates to the recently added GPE reference count
8400 support. The model for "wake" GPEs is changing to give the host OS
8401 complete
8402 control of these GPEs. Eventually, the ACPICA core will not execute any
8403 _PRW
8404 methods, since the host already must execute them. Also, additional
8405 changes
8406 were made to help ensure that the reference counts are kept in proper
8407 synchronization with reality. Rafael J. Wysocki.
8408
8409 1) Ensure that GPEs are not enabled twice during initialization.
8410 2) Ensure that GPE enable masks stay in sync with the reference count.
8411 3) Do not inadvertently enable GPEs when writing GPE registers.
8412 4) Remove the internal wake reference counter and add new AcpiGpeWakeup
8413 interface. This interface will set or clear individual GPEs for wakeup.
8414 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These
8415 interfaces
8416 are now used for "runtime" GPEs only.
8417
8418 Changed the behavior of the GPE install/remove handler interfaces. The
8419 GPE
8420 is
8421 no longer disabled during this process, as it was found to cause problems
8422 on
8423 some machines. Rafael J. Wysocki.
8424
8425 Reverted a change introduced in version 20100528 to enable Embedded
8426 Controller multi-byte transfers. This change was found to cause problems
8427 with
8428 Index Fields and possibly Bank Fields. It will be reintroduced when these
8429 problems have been resolved.
8430
8431 Fixed a problem with references to Alias objects within Package Objects.
8432 A
8433 reference to an Alias within the definition of a Package was not always
8434 resolved properly. Aliases to objects like Processors, Thermal zones,
8435 etc.
8436 were resolved to the actual object instead of a reference to the object
8437 as
8438 it
8439 should be. Package objects are only allowed to contain integer, string,
8440 buffer, package, and reference objects. Redhat bugzilla 608648.
8441
8442 Example Code and Data Size: These are the sizes for the OS-independent
8443 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8444 debug version of the code includes the debug output trace mechanism and
8445 has a
8446 much 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
8455 2) iASL Compiler/Disassembler and Tools:
8456
8457 iASL: Implemented a new compiler subsystem to allow definition and
8458 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
8459 These
8460 are called "ACPI Data Tables", and the new compiler is the "Data Table
8461 Compiler". This compiler is intended to simplify the existing error-prone
8462 process of creating these tables for the BIOS, as well as allowing the
8463 disassembly, modification, recompilation, and override of existing ACPI
8464 data
8465 tables. See the iASL User Guide for detailed information.
8466
8467 iASL: Implemented a new Template Generator option in support of the new
8468 Data
8469 Table Compiler. This option will create examples of all known ACPI tables
8470 that can be used as the basis for table development. See the iASL
8471 documentation and the -T option.
8472
8473 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
8474 Descriptor Table).
8475
8476 Updated the Linux makefiles for iASL and AcpiExec to place the generated
8477 object files in the local directory so that there can be no collisions
8478 between the shared files between them that are generated with different
8479 options.
8480
8481 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
8482 Use
8483 the #define __APPLE__ to enable this support.
8484
8485 ----------------------------------------
8486 28 May 2010. Summary of changes for version 20100528:
8487
8488 Note: The ACPI 4.0a specification was released on April 5, 2010 and is
8489 available at www.acpi.info. This is primarily an errata release.
8490
8491 1) ACPI CA Core Subsystem:
8492
8493 Undefined ACPI tables: We are looking for the definitions for the
8494 following
8495 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
8496
8497 Implemented support to enable multi-byte transfers for Embedded
8498 Controller
8499 (EC) operation regions. Previously, the maximum data size passed to the
8500 EC
8501 operation region handler was a single byte. There are often EC Fields
8502 larger
8503 than one byte that need to be transferred, and it is useful for the EC
8504 driver
8505 to lock these as a single transaction. This change enables single
8506 transfers
8507 larger than 8 bits. This effectively changes the access to the EC space
8508 from
8509 ByteAcc to AnyAcc, and will probably require changes to the host OS
8510 Embedded
8511 Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
8512 bit
8513 transfers. Alexey Starikovskiy, Lin Ming
8514
8515 Implemented a performance enhancement for namespace search and access.
8516 This
8517 change enhances the performance of namespace searches and walks by adding
8518 a
8519 backpointer to the parent in each namespace node. On large namespaces,
8520 this
8521 change can improve overall ACPI performance by up to 9X. Adding a pointer
8522 to
8523 each namespace node increases the overall size of the internal namespace
8524 by
8525 about 5%, since each namespace entry usually consists of both a namespace
8526 node and an ACPI operand object. However, this is the first growth of the
8527 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
8528
8529 Implemented a performance optimization that reduces the number of
8530 namespace
8531 walks. On control method exit, only walk the namespace if the method is
8532 known
8533 to have created namespace objects outside of its local scope. Previously,
8534 the
8535 entire namespace was traversed on each control method exit. This change
8536 can
8537 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
8538 Moore.
8539
8540 Added support to truncate I/O addresses to 16 bits for Windows
8541 compatibility.
8542 Some ASL code has been seen in the field that inadvertently has bits set
8543 above bit 15. This feature is optional and is enabled if the BIOS
8544 requests
8545 any Windows OSI strings. It can also be enabled by the host OS. Matthew
8546 Garrett, Bob Moore.
8547
8548 Added support to limit the maximum time for the ASL Sleep() operator. To
8549 prevent accidental deep sleeps, limit the maximum time that Sleep() will
8550 actually sleep. Configurable, the default maximum is two seconds. ACPICA
8551 bugzilla 854.
8552
8553 Added run-time validation support for the _WDG and_WED Microsoft
8554 predefined
8555 methods. These objects are defined by "Windows Instrumentation", and are
8556 not
8557 part of the ACPI spec. ACPICA BZ 860.
8558
8559 Expanded all statistic counters used during namespace and device
8560 initialization from 16 to 32 bits in order to support very large
8561 namespaces.
8562
8563 Replaced all instances of %d in printf format specifiers with %u since
8564 nearly
8565 all integers in ACPICA are unsigned.
8566
8567 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
8568 returned
8569 as AE_NO_HANDLER.
8570
8571 Example Code and Data Size: These are the sizes for the OS-independent
8572 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8573 debug version of the code includes the debug output trace mechanism and
8574 has a
8575 much 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
8584 2) iASL Compiler/Disassembler and Tools:
8585
8586 iASL: Added compiler support for the _WDG and_WED Microsoft predefined
8587 methods. These objects are defined by "Windows Instrumentation", and are
8588 not
8589 part of the ACPI spec. ACPICA BZ 860.
8590
8591 AcpiExec: added option to disable the memory tracking mechanism. The -dt
8592 option will disable the tracking mechanism, which improves performance
8593 considerably.
8594
8595 AcpiExec: Restructured the command line options into -d (disable) and -e
8596 (enable) options.
8597
8598 ----------------------------------------
8599 28 April 2010. Summary of changes for version 20100428:
8600
8601 1) ACPI CA Core Subsystem:
8602
8603 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
8604 including FADT-based and GPE Block Devices, execute any _PRW methods in
8605 the
8606 new table, and process any _Lxx/_Exx GPE methods in the new table. Any
8607 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
8608 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
8609 Devices. Provides compatibility with other ACPI implementations. Two new
8610 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
8611 Moore.
8612
8613 Fixed a regression introduced in version 20100331 within the table
8614 manager
8615 where initial table loading could fail. This was introduced in the fix
8616 for
8617 AcpiReallocateRootTable. Also, renamed some of fields in the table
8618 manager
8619 data structures to clarify their meaning and use.
8620
8621 Fixed a possible allocation overrun during internal object copy in
8622 AcpiUtCopySimpleObject. The original code did not correctly handle the
8623 case
8624 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
8625 847.
8626
8627 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
8628 possible access beyond end-of-allocation. Also, now fully validate
8629 descriptor
8630 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
8631
8632 Example Code and Data Size: These are the sizes for the OS-independent
8633 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8634 debug version of the code includes the debug output trace mechanism and
8635 has a
8636 much 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
8645 2) iASL Compiler/Disassembler and Tools:
8646
8647 iASL: Implemented Min/Max/Len/Gran validation for address resource
8648 descriptors. This change implements validation for the address fields
8649 that
8650 are common to all address-type resource descriptors. These checks are
8651 implemented: Checks for valid Min/Max, length within the Min/Max window,
8652 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
8653 per
8654 table 6-40 in the ACPI 4.0a specification. Also split the large
8655 aslrestype1.c
8656 and aslrestype2.c files into five new files. ACPICA BZ 840.
8657
8658 iASL: Added support for the _Wxx predefined names. This support was
8659 missing
8660 and these names were not recognized by the compiler as valid predefined
8661 names. ACPICA BZ 851.
8662
8663 iASL: Added an error for all predefined names that are defined to return
8664 no
8665 value and thus must be implemented as Control Methods. These include all
8666 of
8667 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
8668 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
8669
8670 iASL: Implemented the -ts option to emit hex AML data in ASL format, as
8671 an
8672 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
8673 be
8674 dynamically loaded via the Load() operator. Also cleaned up output for
8675 the
8676 -
8677 ta and -tc options. ACPICA BZ 853.
8678
8679 Tests: Added a new file with examples of extended iASL error checking.
8680 Demonstrates the advanced error checking ability of the iASL compiler.
8681 Available at tests/misc/badcode.asl.
8682
8683 ----------------------------------------
8684 31 March 2010. Summary of changes for version 20100331:
8685
8686 1) ACPI CA Core Subsystem:
8687
8688 Completed a major update for the GPE support in order to improve support
8689 for
8690 shared GPEs and to simplify both host OS and ACPICA code. Added a
8691 reference
8692 count mechanism to support shared GPEs that require multiple device
8693 drivers.
8694 Several external interfaces have changed. One external interface has been
8695 removed. One new external interface was added. Most of the GPE external
8696 interfaces now use the GPE spinlock instead of the events mutex (and the
8697 Flags parameter for many GPE interfaces has been removed.) See the
8698 updated
8699 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
8700 Rafael
8701 Wysocki. ACPICA BZ 831.
8702
8703 Changed:
8704 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
8705 Removed:
8706 AcpiSetGpeType
8707 New:
8708 AcpiSetGpe
8709
8710 Implemented write support for DataTable operation regions. These regions
8711 are
8712 defined via the DataTableRegion() operator. Previously, only read support
8713 was
8714 implemented. The ACPI specification allows DataTableRegions to be
8715 read/write,
8716 however.
8717
8718 Implemented a new subsystem option to force a copy of the DSDT to local
8719 memory. Optionally copy the entire DSDT to local memory (instead of
8720 simply
8721 mapping it.) There are some (albeit very rare) BIOSs that corrupt or
8722 replace
8723 the original DSDT, creating the need for this option. Default is FALSE,
8724 do
8725 not copy the DSDT.
8726
8727 Implemented detection of a corrupted or replaced DSDT. This change adds
8728 support to detect a DSDT that has been corrupted and/or replaced from
8729 outside
8730 the OS (by firmware). This is typically catastrophic for the system, but
8731 has
8732 been seen on some machines. Once this problem has been detected, the DSDT
8733 copy option can be enabled via system configuration. Lin Ming, Bob Moore.
8734
8735 Fixed two problems with AcpiReallocateRootTable during the root table
8736 copy.
8737 When copying the root table to the new allocation, the length used was
8738 incorrect. The new size was used instead of the current table size,
8739 meaning
8740 too much data was copied. Also, the count of available slots for ACPI
8741 tables
8742 was not set correctly. Alexey Starikovskiy, Bob Moore.
8743
8744 Example Code and Data Size: These are the sizes for the OS-independent
8745 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8746 debug version of the code includes the debug output trace mechanism and
8747 has a
8748 much 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
8757 2) iASL Compiler/Disassembler and Tools:
8758
8759 iASL: Implement limited typechecking for values returned from predefined
8760 control methods. The type of any returned static (unnamed) object is now
8761 validated. For example, Return(1). ACPICA BZ 786.
8762
8763 iASL: Fixed a predefined name object verification regression. Fixes a
8764 problem
8765 introduced in version 20100304. An error is incorrectly generated if a
8766 predefined name is declared as a static named object with a value defined
8767 using the keywords "Zero", "One", or "Ones". Lin Ming.
8768
8769 iASL: Added Windows 7 support for the -g option (get local ACPI tables)
8770 by
8771 reducing the requested registry access rights. ACPICA BZ 842.
8772
8773 Disassembler: fixed a possible fault when generating External()
8774 statements.
8775 Introduced in commit ae7d6fd: Properly handle externals with parent-
8776 prefix
8777 (carat). Fixes a string length allocation calculation. Lin Ming.
8778
8779 ----------------------------------------
8780 04 March 2010. Summary of changes for version 20100304:
8781
8782 1) ACPI CA Core Subsystem:
8783
8784 Fixed a possible problem with the AML Mutex handling function
8785 AcpiExReleaseMutex where the function could fault under the very rare
8786 condition when the interpreter has blocked, the interpreter lock is
8787 released,
8788 the interpreter is then reentered via the same thread, and attempts to
8789 acquire an AML mutex that was previously acquired. FreeBSD report 140979.
8790 Lin
8791 Ming.
8792
8793 Implemented additional configuration support for the AML "Debug Object".
8794 Output from the debug object can now be enabled via a global variable,
8795 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
8796 debugging.
8797 This debug output is now available in the release version of ACPICA
8798 instead
8799 of just the debug version. Also, the entire debug output module can now
8800 be
8801 configured out of the ACPICA build if desired. One new file added,
8802 executer/exdebug.c. Lin Ming, Bob Moore.
8803
8804 Added header support for the ACPI MCHI table (Management Controller Host
8805 Interface Table). This table was added in ACPI 4.0, but the defining
8806 document
8807 has only recently become available.
8808
8809 Standardized output of integer values for ACPICA warnings/errors. Always
8810 use
8811 0x prefix for hex output, always use %u for unsigned integer decimal
8812 output.
8813 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
8814 400
8815 invocations.) These invocations were converted from the original
8816 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
8817
8818 Example Code and Data Size: These are the sizes for the OS-independent
8819 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8820 debug version of the code includes the debug output trace mechanism and
8821 has a
8822 much 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
8831 2) iASL Compiler/Disassembler and Tools:
8832
8833 iASL: Implemented typechecking support for static (non-control method)
8834 predefined named objects that are declared with the Name() operator. For
8835 example, the type of this object is now validated to be of type Integer:
8836 Name(_BBN, 1). This change migrates the compiler to using the core
8837 predefined
8838 name table instead of maintaining a local version. Added a new file,
8839 aslpredef.c. ACPICA BZ 832.
8840
8841 Disassembler: Added support for the ACPI 4.0 MCHI table.
8842
8843 ----------------------------------------
8844 21 January 2010. Summary of changes for version 20100121:
8845
8846 1) ACPI CA Core Subsystem:
8847
8848 Added the 2010 copyright to all module headers and signons. This affects
8849 virtually every file in the ACPICA core subsystem, the iASL compiler, the
8850 tools/utilities, and the test suites.
8851
8852 Implemented a change to the AcpiGetDevices interface to eliminate
8853 unnecessary
8854 invocations of the _STA method. In the case where a specific _HID is
8855 requested, do not run _STA until a _HID match is found. This eliminates
8856 potentially dozens of _STA calls during a search for a particular
8857 device/HID,
8858 which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
8859
8860 Implemented an additional repair for predefined method return values.
8861 Attempt
8862 to repair unexpected NULL elements within returned Package objects.
8863 Create
8864 an
8865 Integer of value zero, a NULL String, or a zero-length Buffer as
8866 appropriate.
8867 ACPICA BZ 818. Lin Ming, Bob Moore.
8868
8869 Removed the obsolete ACPI_INTEGER data type. This type was introduced as
8870 the
8871 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
8872 (with
8873 64-bit AML integers). It is now obsolete and this change removes it from
8874 the
8875 ACPICA code base, replaced by UINT64. The original typedef has been
8876 retained
8877 for now for compatibility with existing device driver code. ACPICA BZ
8878 824.
8879
8880 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
8881 in
8882 the parse tree object.
8883
8884 Added additional warning options for the gcc-4 generation. Updated the
8885 source
8886 accordingly. This includes some code restructuring to eliminate
8887 unreachable
8888 code, elimination of some gotos, elimination of unused return values,
8889 some
8890 additional casting, and removal of redundant declarations.
8891
8892 Example Code and Data Size: These are the sizes for the OS-independent
8893 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8894 debug version of the code includes the debug output trace mechanism and
8895 has a
8896 much 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
8905 2) iASL Compiler/Disassembler and Tools:
8906
8907 No functional changes for this release.
8908
8909 ----------------------------------------
8910 14 December 2009. Summary of changes for version 20091214:
8911
8912 1) ACPI CA Core Subsystem:
8913
8914 Enhanced automatic data type conversions for predefined name repairs.
8915 This
8916 change expands the automatic repairs/conversions for predefined name
8917 return
8918 values to make Integers, Strings, and Buffers fully interchangeable.
8919 Also,
8920 a
8921 Buffer can be converted to a Package of Integers if necessary. The
8922 nsrepair.c
8923 module was completely restructured. Lin Ming, Bob Moore.
8924
8925 Implemented automatic removal of null package elements during predefined
8926 name
8927 repairs. This change will automatically remove embedded and trailing NULL
8928 package elements from returned package objects that are defined to
8929 contain
8930 a
8931 variable number of sub-packages. The driver is then presented with a
8932 package
8933 with no null elements to deal with. ACPICA BZ 819.
8934
8935 Implemented a repair for the predefined _FDE and _GTM names. The expected
8936 return value for both names is a Buffer of 5 DWORDs. This repair fixes
8937 two
8938 possible problems (both seen in the field), where a package of integers
8939 is
8940 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
8941 Kim.
8942
8943 Implemented additional module-level code support. This change will
8944 properly
8945 execute module-level code that is not at the root of the namespace (under
8946 a
8947 Device object, etc.). Now executes the code within the current scope
8948 instead
8949 of the root. ACPICA BZ 762. Lin Ming.
8950
8951 Fixed possible mutex acquisition errors when running _REG methods. Fixes
8952 a
8953 problem where mutex errors can occur when running a _REG method that is
8954 in
8955 the same scope as a method-defined operation region or an operation
8956 region
8957 under a module-level IF block. This type of code is rare, so the problem
8958 has
8959 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
8960
8961 Fixed a possible memory leak during module-level code execution. An
8962 object
8963 could be leaked for each block of executed module-level code if the
8964 interpreter slack mode is enabled This change deletes any implicitly
8965 returned
8966 object from the module-level code block. Lin Ming.
8967
8968 Removed messages for successful predefined repair(s). The repair
8969 mechanism
8970 was considered too wordy. Now, messages are only unconditionally emitted
8971 if
8972 the return object cannot be repaired. Existing messages for successful
8973 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
8974 827.
8975
8976 Example Code and Data Size: These are the sizes for the OS-independent
8977 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8978 debug version of the code includes the debug output trace mechanism and
8979 has a
8980 much 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
8989 2) iASL Compiler/Disassembler and Tools:
8990
8991 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
8992 files
8993 were no longer automatically removed at the termination of the compile.
8994
8995 acpiexec: Implemented the -f option to specify default region fill value.
8996 This option specifies the value used to initialize buffers that simulate
8997 operation regions. Default value is zero. Useful for debugging problems
8998 that
8999 depend on a specific initial value for a region or field.
9000
9001 ----------------------------------------
9002 12 November 2009. Summary of changes for version 20091112:
9003
9004 1) ACPI CA Core Subsystem:
9005
9006 Implemented a post-order callback to AcpiWalkNamespace. The existing
9007 interface only has a pre-order callback. This change adds an additional
9008 parameter for a post-order callback which will be more useful for bus
9009 scans.
9010 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
9011
9012 Modified the behavior of the operation region memory mapping cache for
9013 SystemMemory. Ensure that the memory mappings created for operation
9014 regions
9015 do not cross 4K page boundaries. Crossing a page boundary while mapping
9016 regions can cause kernel warnings on some hosts if the pages have
9017 different
9018 attributes. Such regions are probably BIOS bugs, and this is the
9019 workaround.
9020 Linux BZ 14445. Lin Ming.
9021
9022 Implemented an automatic repair for predefined methods that must return
9023 sorted 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
9026 sorted
9027 and do not contain NULL package elements. Adds one new file,
9028 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
9029
9030 Fixed a possible fault during predefined name validation if a return
9031 Package
9032 object contains NULL elements. Also adds a warning if a NULL element is
9033 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
9034 may
9035 include repair or removal of all such NULL elements where possible.
9036
9037 Implemented additional module-level executable AML code support. This
9038 change
9039 will 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
9041 AML
9042 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
9043
9044 Implemented a new internal function to create Integer objects. This
9045 function
9046 simplifies miscellaneous object creation code. ACPICA BZ 823.
9047
9048 Reduced the severity of predefined repair messages, Warning to Info.
9049 Since
9050 the object was successfully repaired, a warning is too severe. Reduced to
9051 an
9052 info message for now. These messages may eventually be changed to debug-
9053 only.
9054 ACPICA BZ 812.
9055
9056 Example Code and Data Size: These are the sizes for the OS-independent
9057 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9058 debug version of the code includes the debug output trace mechanism and
9059 has a
9060 much 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
9069 2) iASL Compiler/Disassembler and Tools:
9070
9071 iASL: Implemented Switch() with While(1) so that Break works correctly.
9072 This
9073 change correctly implements the Switch operator with a surrounding
9074 While(1)
9075 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
9076
9077 iASL: Added a message if a package initializer list is shorter than
9078 package
9079 length. Adds a new remark for a Package() declaration if an initializer
9080 list
9081 exists, but is shorter than the declared length of the package. Although
9082 technically legal, this is probably a coding error and it is seen in the
9083 field. ACPICA BZ 815. Lin Ming, Bob Moore.
9084
9085 iASL: Fixed a problem where the compiler could fault after the maximum
9086 number
9087 of errors was reached (200).
9088
9089 acpixtract: Fixed a possible warning for pointer cast if the compiler
9090 warning
9091 level set very high.
9092
9093 ----------------------------------------
9094 13 October 2009. Summary of changes for version 20091013:
9095
9096 1) ACPI CA Core Subsystem:
9097
9098 Fixed a problem where an Operation Region _REG method could be executed
9099 more
9100 than once. If a custom address space handler is installed by the host
9101 before
9102 the "initialize operation regions" phase of the ACPICA initialization,
9103 any
9104 _REG methods for that address space could be executed twice. This change
9105 fixes the problem. ACPICA BZ 427. Lin Ming.
9106
9107 Fixed a possible memory leak for the Scope() ASL operator. When the exact
9108 invocation of "Scope(\)" is executed (change scope to root), one internal
9109 operand object was leaked. Lin Ming.
9110
9111 Implemented a run-time repair for the _MAT predefined method. If the _MAT
9112 return value is defined as a Field object in the AML, and the field
9113 size is less than or equal to the default width of an integer (32 or
9114 64),_MAT
9115 can incorrectly return an Integer instead of a Buffer. ACPICA now
9116 automatically repairs this problem. ACPICA BZ 810.
9117
9118 Implemented a run-time repair for the _BIF and _BIX predefined methods.
9119 The
9120 "OEM Information" field is often incorrectly returned as an Integer with
9121 value zero if the field is not supported by the platform. This is due to
9122 an
9123 ambiguity in the ACPI specification. The field should always be a string.
9124 ACPICA now automatically repairs this problem by returning a NULL string
9125 within the returned Package. ACPICA BZ 807.
9126
9127 Example Code and Data Size: These are the sizes for the OS-independent
9128 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9129 debug version of the code includes the debug output trace mechanism and
9130 has a
9131 much 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
9140 2) iASL Compiler/Disassembler and Tools:
9141
9142 Disassembler: Fixed a problem where references to external symbols that
9143 contained one or more parent-prefixes (carats) were not handled
9144 correctly,
9145 possibly causing a fault. ACPICA BZ 806. Lin Ming.
9146
9147 Disassembler: Restructured the code so that all functions that handle
9148 external symbols are in a single module. One new file is added,
9149 common/dmextern.c.
9150
9151 AML Debugger: Added a max count argument for the Batch command (which
9152 executes multiple predefined methods within the namespace.)
9153
9154 iASL: Updated the compiler documentation (User Reference.) Available at
9155 http://www.acpica.org/documentation/. ACPICA BZ 750.
9156
9157 AcpiXtract: Updated for Lint and other formatting changes. Close all open
9158 files.
9159
9160 ----------------------------------------
9161 03 September 2009. Summary of changes for version 20090903:
9162
9163 1) ACPI CA Core Subsystem:
9164
9165 For Windows Vista compatibility, added the automatic execution of an _INI
9166 method located at the namespace root (\_INI). This method is executed at
9167 table load time. This support is in addition to the automatic execution
9168 of
9169 \_SB._INI. Lin Ming.
9170
9171 Fixed a possible memory leak in the interpreter for AML package objects
9172 if
9173 the package initializer list is longer than the defined size of the
9174 package.
9175 This apparently can only happen if the BIOS changes the package size on
9176 the
9177 fly (seen in a _PSS object), as ASL compilers do not allow this. The
9178 interpreter will truncate the package to the defined size (and issue an
9179 error
9180 message), but previously could leave the extra objects undeleted if they
9181 were
9182 pre-created during the argument processing (such is the case if the
9183 package
9184 consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
9185
9186 Fixed a problem seen when a Buffer or String is stored to itself via ASL.
9187 This has been reported in the field. Previously, ACPICA would zero out
9188 the
9189 buffer/string. Now, the operation is treated as a noop. Provides Windows
9190 compatibility. ACPICA BZ 803. Lin Ming.
9191
9192 Removed an extraneous error message for ASL constructs of the form
9193 Store(LocalX,LocalX) when LocalX is uninitialized. These curious
9194 statements
9195 are seen in many BIOSs and are once again treated as NOOPs and no error
9196 is
9197 emitted when they are encountered. ACPICA BZ 785.
9198
9199 Fixed an extraneous warning message if a _DSM reserved method returns a
9200 Package object. _DSM can return any type of object, so validation on the
9201 return type cannot be performed. ACPICA BZ 802.
9202
9203 Example Code and Data Size: These are the sizes for the OS-independent
9204 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9205 debug version of the code includes the debug output trace mechanism and
9206 has a
9207 much 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
9216 2) iASL Compiler/Disassembler and Tools:
9217
9218 iASL: Fixed a problem with the use of the Alias operator and Resource
9219 Templates. The correct alias is now constructed and no error is emitted.
9220 ACPICA BZ 738.
9221
9222 iASL: Implemented the -I option to specify additional search directories
9223 for
9224 include files. Allows multiple additional search paths for include files.
9225 Directories are searched in the order specified on the command line
9226 (after
9227 the local directory is searched.) ACPICA BZ 800.
9228
9229 iASL: Fixed a problem where the full pathname for include files was not
9230 emitted for warnings/errors. This caused the IDE support to not work
9231 properly. ACPICA BZ 765.
9232
9233 iASL: Implemented the -@ option to specify a Windows-style response file
9234 containing additional command line options. ACPICA BZ 801.
9235
9236 AcpiExec: Added support to load multiple AML files simultaneously (such
9237 as
9238 a
9239 DSDT and multiple SSDTs). Also added support for wildcards within the AML
9240 pathname. These features allow all machine tables to be easily loaded and
9241 debugged together. ACPICA BZ 804.
9242
9243 Disassembler: Added missing support for disassembly of HEST table Error
9244 Bank
9245 subtables.
9246
9247 ----------------------------------------
9248 30 July 2009. Summary of changes for version 20090730:
9249
9250 The ACPI 4.0 implementation for ACPICA is complete with this release.
9251
9252 1) ACPI CA Core Subsystem:
9253
9254 ACPI 4.0: Added header file support for all new and changed ACPI tables.
9255 Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
9256 new
9257 for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
9258 BERT,
9259 EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
9260 There
9261 have been some ACPI 4.0 changes to other existing tables. Split the large
9262 actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
9263
9264 ACPI 4.0: Implemented predefined name validation for all new names. There
9265 are
9266 31 new names in ACPI 4.0. The predefined validation module was split into
9267 two
9268 files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
9269
9270 Implemented support for so-called "module-level executable code". This is
9271 executable AML code that exists outside of any control method and is
9272 intended
9273 to be executed at table load time. Although illegal since ACPI 2.0, this
9274 type
9275 of code still exists and is apparently still being created. Blocks of
9276 this
9277 code are now detected and executed as intended. Currently, the code
9278 blocks
9279 must exist under either an If, Else, or While construct; these are the
9280 typical cases seen in the field. ACPICA BZ 762. Lin Ming.
9281
9282 Implemented an automatic dynamic repair for predefined names that return
9283 nested Package objects. This applies to predefined names that are defined
9284 to
9285 return a variable-length Package of sub-packages. If the number of sub-
9286 packages is one, BIOS code is occasionally seen that creates a simple
9287 single
9288 package with no sub-packages. This code attempts to fix the problem by
9289 wrapping a new package object around the existing package. These methods
9290 can
9291 be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
9292 BZ
9293 790.
9294
9295 Fixed a regression introduced in 20090625 for the AcpiGetDevices
9296 interface.
9297 The _HID/_CID matching was broken and no longer matched IDs correctly.
9298 ACPICA
9299 BZ 793.
9300
9301 Fixed a problem with AcpiReset where the reset would silently fail if the
9302 register was one of the protected I/O ports. AcpiReset now bypasses the
9303 port
9304 validation mechanism. This may eventually be driven into the
9305 AcpiRead/Write
9306 interfaces.
9307
9308 Fixed a regression related to the recent update of the AcpiRead/Write
9309 interfaces. A sleep/suspend could fail if the optional PM2 Control
9310 register
9311 does 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
9313 the
9314 code may in fact be obsolete at this date.) ACPICA BZ 799.
9315
9316 Fixed a problem where AcpiTerminate could fault if inadvertently called
9317 twice
9318 in succession. ACPICA BZ 795.
9319
9320 Example Code and Data Size: These are the sizes for the OS-independent
9321 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9322 debug version of the code includes the debug output trace mechanism and
9323 has a
9324 much 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
9333 2) iASL Compiler/Disassembler and Tools:
9334
9335 ACPI 4.0: Implemented disassembler support for all new ACPI tables and
9336 changes to existing tables. ACPICA BZ 775.
9337
9338 ----------------------------------------
9339 25 June 2009. Summary of changes for version 20090625:
9340
9341 The ACPI 4.0 Specification was released on June 16 and is available at
9342 www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
9343 continue for the next few releases.
9344
9345 1) ACPI CA Core Subsystem:
9346
9347 ACPI 4.0: Implemented interpreter support for the IPMI operation region
9348 address space. Includes support for bi-directional data buffers and an
9349 IPMI
9350 address space handler (to be installed by an IPMI device driver.) ACPICA
9351 BZ
9352 773. Lin Ming.
9353
9354 ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
9355 Includes
9356 support in both the header files and the disassembler.
9357
9358 Completed a major update for the AcpiGetObjectInfo external interface.
9359 Changes 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,
9362 etc.)
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.
9366 These changes will require an update to all callers of this interface.
9367 See
9368 the updated ACPICA Programmer Reference for details. One new source file
9369 has
9370 been added - utilities/utids.c. ACPICA BZ 368, 780.
9371
9372 Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
9373 transfers. The Value parameter has been extended from 32 bits to 64 bits
9374 in
9375 order to support new ACPI 4.0 tables. These changes will require an
9376 update
9377 to
9378 all callers of these interfaces. See the ACPICA Programmer Reference for
9379 details. ACPICA BZ 768.
9380
9381 Fixed several problems with AcpiAttachData. The handler was not invoked
9382 when
9383 the host node was deleted. The data sub-object was not automatically
9384 deleted
9385 when the host node was deleted. The interface to the handler had an
9386 unused
9387 parameter, this was removed. ACPICA BZ 778.
9388
9389 Enhanced the function that dumps ACPI table headers. All non-printable
9390 characters in the string fields are now replaced with '?' (Signature,
9391 OemId,
9392 OemTableId, and CompilerId.) ACPI tables with non-printable characters in
9393 these fields are occasionally seen in the field. ACPICA BZ 788.
9394
9395 Fixed a problem with predefined method repair code where the code that
9396 attempts to repair/convert an object of incorrect type is only executed
9397 on
9398 the first time the predefined method is called. The mechanism that
9399 disables
9400 warnings on subsequent calls was interfering with the repair mechanism.
9401 ACPICA BZ 781.
9402
9403 Fixed a possible memory leak in the predefined validation/repair code
9404 when
9405 a
9406 buffer is automatically converted to an expected string object.
9407
9408 Removed obsolete 16-bit files from the distribution and from the current
9409 git
9410 tree head. ACPICA BZ 776.
9411
9412 Example Code and Data Size: These are the sizes for the OS-independent
9413 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9414 debug version of the code includes the debug output trace mechanism and
9415 has a
9416 much 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
9425 2) iASL Compiler/Disassembler and Tools:
9426
9427 ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
9428 operation region keyword. ACPICA BZ 771, 772. Lin Ming.
9429
9430 ACPI 4.0: iASL - implemented compile-time validation support for all new
9431 predefined names and control methods (31 total). ACPICA BZ 769.
9432
9433 ----------------------------------------
9434 21 May 2009. Summary of changes for version 20090521:
9435
9436 1) ACPI CA Core Subsystem:
9437
9438 Disabled the preservation of the SCI enable bit in the PM1 control
9439 register.
9440 The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
9441 to
9442 be
9443 a "preserved" bit - "OSPM always preserves this bit position", section
9444 4.7.3.2.1. However, some machines fail if this bit is in fact preserved
9445 because the bit needs to be explicitly set by the OS as a workaround. No
9446 machines fail if the bit is not preserved. Therefore, ACPICA no longer
9447 attempts to preserve this bit.
9448
9449 Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
9450 incorrectly formed _PRT package could cause a fault. Added validation to
9451 ensure that each package element is actually a sub-package.
9452
9453 Implemented a new interface to install or override a single control
9454 method,
9455 AcpiInstallMethod. This interface is useful when debugging in order to
9456 repair
9457 an existing method or to install a missing method without having to
9458 override
9459 the entire ACPI table. See the ACPICA Programmer Reference for use and
9460 examples. Lin Ming, Bob Moore.
9461
9462 Fixed several reference count issues with the DdbHandle object that is
9463 created from a Load or LoadTable operator. Prevent premature deletion of
9464 the
9465 object. Also, mark the object as invalid once the table has been
9466 unloaded.
9467 This is needed because the handle itself may not be deleted after the
9468 table
9469 unload, depending on whether it has been stored in a named object by the
9470 caller. Lin Ming.
9471
9472 Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
9473 mutexes of the same sync level are acquired but then not released in
9474 strict
9475 opposite order, the internally maintained Current Sync Level becomes
9476 confused
9477 and can cause subsequent execution errors. ACPICA BZ 471.
9478
9479 Changed the allowable release order for ASL mutex objects. The ACPI 4.0
9480 specification has been changed to make the SyncLevel for mutex objects
9481 more
9482 useful. When releasing a mutex, the SyncLevel of the mutex must now be
9483 the
9484 same as the current sync level. This makes more sense than the previous
9485 rule
9486 (SyncLevel less than or equal). This change updates the code to match the
9487 specification.
9488
9489 Fixed a problem with the local version of the AcpiOsPurgeCache function.
9490 The
9491 (local) cache must be locked during all cache object deletions. Andrew
9492 Baumann.
9493
9494 Updated the Load operator to use operation region interfaces. This
9495 replaces
9496 direct memory mapping with region access calls. Now, all region accesses
9497 go
9498 through the installed region handler as they should.
9499
9500 Simplified and optimized the NsGetNextNode function. Reduced parameter
9501 count
9502 and reduced code for this frequently used function.
9503
9504 Example Code and Data Size: These are the sizes for the OS-independent
9505 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9506 debug version of the code includes the debug output trace mechanism and
9507 has a
9508 much 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
9517 2) iASL Compiler/Disassembler and Tools:
9518
9519 Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
9520 problems
9521 with sub-table disassembly and handling invalid sub-tables. Attempt
9522 recovery
9523 after an invalid sub-table ID.
9524
9525 ----------------------------------------
9526 22 April 2009. Summary of changes for version 20090422:
9527
9528 1) ACPI CA Core Subsystem:
9529
9530 Fixed a compatibility issue with the recently released I/O port
9531 protection
9532 mechanism. For windows compatibility, 1) On a port protection violation,
9533 simply ignore the request and do not return an exception (allow the
9534 control
9535 method to continue execution.) 2) If only part of the request overlaps a
9536 protected port, read/write the individual ports that are not protected.
9537 Linux
9538 BZ 13036. Lin Ming
9539
9540 Enhanced the execution of the ASL/AML BreakPoint operator so that it
9541 actually
9542 breaks into the AML debugger if the debugger is present. This matches the
9543 ACPI-defined behavior.
9544
9545 Fixed several possible warnings related to the use of the configurable
9546 ACPI_THREAD_ID. This type can now be configured as either an integer or a
9547 pointer with no warnings. Also fixes several warnings in printf-like
9548 statements for the 64-bit build when the type is configured as a pointer.
9549 ACPICA BZ 766, 767.
9550
9551 Fixed a number of possible warnings when compiling with gcc 4+ (depending
9552 on
9553 warning options.) Examples include printf formats, aliasing, unused
9554 globals,
9555 missing prototypes, missing switch default statements, use of non-ANSI
9556 library functions, use of non-ANSI constructs. See generate/unix/Makefile
9557 for
9558 a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
9559
9560 Example Code and Data Size: These are the sizes for the OS-independent
9561 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9562 debug version of the code includes the debug output trace mechanism and
9563 has a
9564 much 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
9573 2) iASL Compiler/Disassembler and Tools:
9574
9575 iASL: Fixed a generation warning from Bison 2.3 and fixed several
9576 warnings
9577 on
9578 the 64-bit build.
9579
9580 iASL: Fixed a problem where the Unix/Linux versions of the compiler could
9581 not
9582 correctly digest Windows/DOS formatted files (with CR/LF).
9583
9584 iASL: Added a new option for "quiet mode" (-va) that produces only the
9585 compilation summary, not individual errors and warnings. Useful for large
9586 batch compilations.
9587
9588 AcpiExec: Implemented a new option (-z) to enable a forced
9589 semaphore/mutex
9590 timeout that can be used to detect hang conditions during execution of
9591 AML
9592 code (includes both internal semaphores and AML-defined mutexes and
9593 events.)
9594
9595 Added new makefiles for the generation of acpica in a generic unix-like
9596 environment. These makefiles are intended to generate the acpica tools
9597 and
9598 utilities from the original acpica git source tree structure.
9599
9600 Test Suites: Updated and cleaned up the documentation files. Updated the
9601 copyrights to 2009, affecting all source files. Use the new version of
9602 iASL
9603 with quiet mode. Increased the number of available semaphores in the
9604 Windows
9605 OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
9606 added
9607 an alternate implementation of the semaphore timeout to allow aslts to
9608 execute fully on Cygwin.
9609
9610 ----------------------------------------
9611 20 March 2009. Summary of changes for version 20090320:
9612
9613 1) ACPI CA Core Subsystem:
9614
9615 Fixed a possible race condition between AcpiWalkNamespace and dynamic
9616 table
9617 unloads. Added a reader/writer locking mechanism to allow multiple
9618 concurrent
9619 namespace walks (readers), but block a dynamic table unload until it can
9620 gain
9621 exclusive write access to the namespace. This fixes a problem where a
9622 table
9623 unload could (possibly catastrophically) delete the portion of the
9624 namespace
9625 that is currently being examined by a walk. Adds a new file, utlock.c,
9626 that
9627 implements the reader/writer lock mechanism. ACPICA BZ 749.
9628
9629 Fixed a regression introduced in version 20090220 where a change to the
9630 FADT
9631 handling could cause the ACPICA subsystem to access non-existent I/O
9632 ports.
9633
9634 Modified the handling of FADT register and table (FACS/DSDT) addresses.
9635 The
9636 FADT can contain both 32-bit and 64-bit versions of these addresses.
9637 Previously, the 64-bit versions were favored, meaning that if both 32 and
9638 64
9639 versions were valid, but not equal, the 64-bit version was used. This was
9640 found to cause some machines to fail. Now, in this case, the 32-bit
9641 version
9642 is used instead. This now matches the Windows behavior.
9643
9644 Implemented a new mechanism to protect certain I/O ports. Provides
9645 Microsoft
9646 compatibility and protects the standard PC I/O ports from access via AML
9647 code. Adds a new file, hwvalid.c
9648
9649 Fixed a possible extraneous warning message from the FADT support. The
9650 message warns of a 32/64 length mismatch between the legacy and GAS
9651 definitions for a register.
9652
9653 Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
9654 is
9655 made obsolete by the port protection mechanism above. It was previously
9656 used
9657 to validate the entire address range of an operation region, which could
9658 be
9659 incorrect if the range included illegal ports, but fields within the
9660 operation region did not actually access those ports. Validation is now
9661 performed on a per-field basis instead of the entire region.
9662
9663 Modified the handling of the PM1 Status Register ignored bit (bit 11.)
9664 Ignored bits must be "preserved" according to the ACPI spec. Usually,
9665 this
9666 means a read/modify/write when writing to the register. However, for
9667 status
9668 registers, writing a one means clear the event. Writing a zero means
9669 preserve
9670 the event (do not clear.) This behavior is clarified in the ACPI 4.0
9671 spec,
9672 and the ACPICA code now simply always writes a zero to the ignored bit.
9673
9674 Modified the handling of ignored bits for the PM1 A/B Control Registers.
9675 As
9676 per the ACPI specification, for the control registers, preserve
9677 (read/modify/write) all bits that are defined as either reserved or
9678 ignored.
9679
9680 Updated the handling of write-only bits in the PM1 A/B Control Registers.
9681 When reading the register, zero the write-only bits as per the ACPI spec.
9682 ACPICA BZ 443. Lin Ming.
9683
9684 Removed "Linux" from the list of supported _OSI strings. Linux no longer
9685 wants to reply true to this request. The Windows strings are the only
9686 paths
9687 through 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
9696 2) iASL Compiler/Disassembler and Tools:
9697
9698 Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
9699 and
9700 aetables.c
9701
9702 ----------------------------------------
9703 20 February 2009. Summary of changes for version 20090220:
9704
9705 1) ACPI CA Core Subsystem:
9706
9707 Optimized the ACPI register locking. Removed locking for reads from the
9708 ACPI
9709 bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
9710 is
9711 not required when reading the single-bit registers. The
9712 AcpiGetRegisterUnlocked function is no longer needed and has been
9713 removed.
9714 This will improve performance for reads on these registers. ACPICA BZ
9715 760.
9716
9717 Fixed the parameter validation for AcpiRead/Write. Now return
9718 AE_BAD_PARAMETER if the input register pointer is null, and
9719 AE_BAD_ADDRESS
9720 if
9721 the register has an address of zero. Previously, these cases simply
9722 returned
9723 AE_OK. For optional registers such as PM1B status/enable/control, the
9724 caller
9725 should check for a valid register address before calling. ACPICA BZ 748.
9726
9727 Renamed the external ACPI bit register access functions. Renamed
9728 AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
9729 functions. The new names are AcpiReadBitRegister and
9730 AcpiWriteBitRegister.
9731 Also, restructured the code for these functions by simplifying the code
9732 path
9733 and condensing duplicate code to reduce code size.
9734
9735 Added new functions to transparently handle the possibly split PM1 A/B
9736 registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
9737 functions
9738 now handle the split registers for PM1 Status, Enable, and Control.
9739 ACPICA
9740 BZ
9741 746.
9742
9743 Added a function to handle the PM1 control registers,
9744 AcpiHwWritePm1Control.
9745 This function writes both of the PM1 control registers (A/B). These
9746 registers
9747 are different than the PM1 A/B status and enable registers in that
9748 different
9749 values can be written to the A/B registers. Most notably, the SLP_TYP
9750 bits
9751 can be different, as per the values returned from the _Sx predefined
9752 methods.
9753
9754 Removed an extra register write within AcpiHwClearAcpiStatus. This
9755 function
9756 was writing an optional PM1B status register twice. The existing call to
9757 the
9758 low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
9759 A/B
9760 register. ACPICA BZ 751.
9761
9762 Split out the PM1 Status registers from the FADT. Added new globals for
9763 these
9764 registers (A/B), similar to the way the PM1 Enable registers are handled.
9765 Instead of overloading the FADT Event Register blocks. This makes the
9766 code
9767 clearer and less prone to error.
9768
9769 Fixed the warning message for when the platform contains too many ACPI
9770 tables
9771 for the default size of the global root table data structure. The
9772 calculation
9773 for the truncation value was incorrect.
9774
9775 Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
9776 obsolete macro, since it is now a simple reference to ->common.type.
9777 There
9778 were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
9779
9780 Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
9781 TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
9782 simply SLEEP_TYPE. ACPICA BZ 754.
9783
9784 Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
9785 function is only needed on 64-bit host operating systems and is thus not
9786 included for 32-bit hosts.
9787
9788 Debug output: print the input and result for invocations of the _OSI
9789 reserved
9790 control method via the ACPI_LV_INFO debug level. Also, reduced some of
9791 the
9792 verbosity of this debug level. Len Brown.
9793
9794 Example Code and Data Size: These are the sizes for the OS-independent
9795 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9796 debug version of the code includes the debug output trace mechanism and
9797 has a
9798 much 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
9807 2) iASL Compiler/Disassembler and Tools:
9808
9809 Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
9810 various legal performance profiles.
9811
9812 ----------------------------------------
9813 23 January 2009. Summary of changes for version 20090123:
9814
9815 1) ACPI CA Core Subsystem:
9816
9817 Added the 2009 copyright to all module headers and signons. This affects
9818 virtually every file in the ACPICA core subsystem, the iASL compiler, and
9819 the tools/utilities.
9820
9821 Implemented a change to allow the host to override any ACPI table,
9822 including
9823 dynamically loaded tables. Previously, only the DSDT could be replaced by
9824 the
9825 host. With this change, the AcpiOsTableOverride interface is called for
9826 each
9827 table found in the RSDT/XSDT during ACPICA initialization, and also
9828 whenever
9829 a table is dynamically loaded via the AML Load operator.
9830
9831 Updated FADT flag definitions, especially the Boot Architecture flags.
9832
9833 Debugger: For the Find command, automatically pad the input ACPI name
9834 with
9835 underscores if the name is shorter than 4 characters. This enables a
9836 match
9837 with the actual namespace entry which is itself padded with underscores.
9838
9839 Example Code and Data Size: These are the sizes for the OS-independent
9840 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9841 debug version of the code includes the debug output trace mechanism and
9842 has a
9843 much 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
9852 2) iASL Compiler/Disassembler and Tools:
9853
9854 Fix build error under Bison-2.4.
9855
9856 Disassembler: Enhanced FADT support. Added decoding of the Boot
9857 Architecture
9858 flags. Now decode all flags, regardless of the FADT version. Flag output
9859 includes the FADT version which first defined each flag.
9860
9861 The iASL -g option now dumps the RSDT to a file (in addition to the FADT
9862 and
9863 DSDT). Windows only.
9864
9865 ----------------------------------------
9866 04 December 2008. Summary of changes for version 20081204:
9867
9868 1) ACPI CA Core Subsystem:
9869
9870 The ACPICA Programmer Reference has been completely updated and revamped
9871 for
9872 this release. This includes updates to the external interfaces, OSL
9873 interfaces, the overview sections, and the debugger reference.
9874
9875 Several new ACPICA interfaces have been implemented and documented in the
9876 programmer reference:
9877 AcpiReset - Writes the reset value to the FADT-defined reset register.
9878 AcpiDisableAllGpes - Disable all available GPEs.
9879 AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
9880 AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
9881 AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
9882 AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
9883 AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
9884
9885 Most of the public ACPI hardware-related interfaces have been moved to a
9886 new
9887 file, components/hardware/hwxface.c
9888
9889 Enhanced the FADT parsing and low-level ACPI register access: The ACPI
9890 register lengths within the FADT are now used, and the low level ACPI
9891 register access no longer hardcodes the ACPI register lengths. Given that
9892 there may be some risk in actually trusting the FADT register lengths, a
9893 run-
9894 time option was added to fall back to the default hardcoded lengths if
9895 the
9896 FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
9897 option is set to true for now, and a warning is issued if a suspicious
9898 FADT
9899 register length is overridden with the default value.
9900
9901 Fixed a reference count issue in NsRepairObject. This problem was
9902 introduced
9903 in version 20081031 as part of a fix to repair Buffer objects within
9904 Packages. Lin Ming.
9905
9906 Added semaphore support to the Linux/Unix application OS-services layer
9907 (OSL). ACPICA BZ 448. Lin Ming.
9908
9909 Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
9910 will
9911 be implemented in the OSL, or will binary semaphores be used instead.
9912
9913 Example Code and Data Size: These are the sizes for the OS-independent
9914 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9915 debug version of the code includes the debug output trace mechanism and
9916 has a
9917 much 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
9926 2) iASL Compiler/Disassembler and Tools:
9927
9928 iASL: Completed the '-e' option to include additional ACPI tables in
9929 order
9930 to
9931 aid with disassembly and External statement generation. ACPICA BZ 742.
9932 Lin
9933 Ming.
9934
9935 iASL: Removed the "named object in while loop" error. The compiler cannot
9936 determine how many times a loop will execute. ACPICA BZ 730.
9937
9938 Disassembler: Implemented support for FADT revision 2 (MS extension).
9939 ACPICA
9940 BZ 743.
9941
9942 Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
9943 MCFG).
9944
9945 ----------------------------------------
9946 31 October 2008. Summary of changes for version 20081031:
9947
9948 1) ACPI CA Core Subsystem:
9949
9950 Restructured the ACPICA header files into public/private. acpi.h now
9951 includes
9952 only the "public" acpica headers. All other acpica headers are "private"
9953 and
9954 should not be included by acpica users. One new file, accommon.h is used
9955 to
9956 include the commonly used private headers for acpica code generation.
9957 Future
9958 plans include moving all private headers to a new subdirectory.
9959
9960 Implemented an automatic Buffer->String return value conversion for
9961 predefined ACPI methods. For these methods (such as _BIF), added
9962 automatic
9963 conversion for return objects that are required to be a String, but a
9964 Buffer
9965 was found instead. This can happen when reading string battery data from
9966 an
9967 operation region, because it used to be difficult to convert the data
9968 from
9969 buffer to string from within the ASL. Ensures that the host OS is
9970 provided
9971 with a valid null-terminated string. Linux BZ 11822.
9972
9973 Updated the FACS waking vector interfaces. Split
9974 AcpiSetFirmwareWakingVector
9975 into two: one for the 32-bit vector, another for the 64-bit vector. This
9976 is
9977 required because the host OS must setup the wake much differently for
9978 each
9979 vector (real vs. protected mode, etc.) and the interface itself should
9980 not
9981 be
9982 deciding which vector to use. Also, eliminated the
9983 GetFirmwareWakingVector
9984 interface, as it served no purpose (only the firmware reads the vector,
9985 OS
9986 only writes the vector.) ACPICA BZ 731.
9987
9988 Implemented a mechanism to escape infinite AML While() loops. Added a
9989 loop
9990 counter to force exit from AML While loops if the count becomes too
9991 large.
9992 This can occur in poorly written AML when the hardware does not respond
9993 within a while loop and the loop does not implement a timeout. The
9994 maximum
9995 loop count is configurable. A new exception code is returned when a loop
9996 is
9997 broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
9998
9999 Optimized the execution of AML While loops. Previously, a control state
10000 object was allocated and freed for each execution of the loop. The
10001 optimization is to simply reuse the control state for each iteration.
10002 This
10003 speeds up the raw loop execution time by about 5%.
10004
10005 Enhanced the implicit return mechanism. For Windows compatibility, return
10006 an
10007 implicit integer of value zero for methods that contain no executable
10008 code.
10009 Such methods are seen in the field as stubs (presumably), and can cause
10010 drivers to fail if they expect a return value. Lin Ming.
10011
10012 Allow multiple backslashes as root prefixes in namepaths. In a fully
10013 qualified namepath, allow multiple backslash prefixes. This can happen
10014 (and
10015 is 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
10017 739
10018 Lin Ming.
10019
10020 Emit a warning if two different FACS or DSDT tables are discovered in the
10021 FADT. Checks if there are two valid but different addresses for the FACS
10022 and
10023 DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
10024
10025 Consolidated the method argument count validation code. Merged the code
10026 that
10027 validates control method argument counts into the predefined validation
10028 module. Eliminates possible multiple warnings for incorrect argument
10029 counts.
10030
10031 Implemented ACPICA example code. Includes code for ACPICA initialization,
10032 handler installation, and calling a control method. Available at
10033 source/tools/examples.
10034
10035 Added a global pointer for FACS table to simplify internal FACS access.
10036 Use
10037 the global pointer instead of using AcpiGetTableByIndex for each FACS
10038 access.
10039 This simplifies the code for the Global Lock and the Firmware Waking
10040 Vector(s).
10041
10042 Example Code and Data Size: These are the sizes for the OS-independent
10043 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10044 debug version of the code includes the debug output trace mechanism and
10045 has a
10046 much 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
10055 2) iASL Compiler/Disassembler and Tools:
10056
10057 iASL: Improved disassembly of external method calls. Added the -e option
10058 to
10059 allow the inclusion of additional ACPI tables to help with the
10060 disassembly
10061 of
10062 method invocations and the generation of external declarations during the
10063 disassembly. Certain external method invocations cannot be disassembled
10064 properly without the actual declaration of the method. Use the -e option
10065 to
10066 include the table where the external method(s) are actually declared.
10067 Most
10068 useful for disassembling SSDTs that make method calls back to the master
10069 DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl
10070 -d
10071 -e dsdt.aml ssdt1.aml
10072
10073 iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
10074 problem where the use of an alias within a namepath would result in a not
10075 found error or cause the compiler to fault. Also now allows forward
10076 references from the Alias operator itself. ACPICA BZ 738.
10077
10078 ----------------------------------------
10079 26 September 2008. Summary of changes for version 20080926:
10080
10081 1) ACPI CA Core Subsystem:
10082
10083 Designed and implemented a mechanism to validate predefined ACPI methods
10084 and
10085 objects. This code validates the predefined ACPI objects (objects whose
10086 names
10087 start with underscore) that appear in the namespace, at the time they are
10088 evaluated. The argument count and the type of the returned object are
10089 validated against the ACPI specification. The purpose of this validation
10090 is
10091 to detect problems with the BIOS-implemented predefined ACPI objects
10092 before
10093 the results are returned to the ACPI-related drivers. Future enhancements
10094 may
10095 include actual repair of incorrect return objects where possible. Two new
10096 files are nspredef.c and acpredef.h.
10097
10098 Fixed a fault in the AML parser if a memory allocation fails during the
10099 Op
10100 completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
10101
10102 Fixed an issue with implicit return compatibility. This change improves
10103 the
10104 implicit return mechanism to be more compatible with the MS interpreter.
10105 Lin
10106 Ming, ACPICA BZ 349.
10107
10108 Implemented support for zero-length buffer-to-string conversions. Allow
10109 zero
10110 length strings during interpreter buffer-to-string conversions. For
10111 example,
10112 during the ToDecimalString and ToHexString operators, as well as implicit
10113 conversions. Fiodor Suietov, ACPICA BZ 585.
10114
10115 Fixed two possible memory leaks in the error exit paths of
10116 AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
10117 are
10118 similar in that they use a stack of state objects in order to eliminate
10119 recursion. The stack must be fully unwound and deallocated if an error
10120 occurs. Lin Ming. ACPICA BZ 383.
10121
10122 Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
10123 global
10124 ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
10125 Moore ACPICA BZ 442.
10126
10127 Removed the obsolete version number in module headers. Removed the
10128 "$Revision" number that appeared in each module header. This version
10129 number
10130 was useful under SourceSafe and CVS, but has no meaning under git. It is
10131 not
10132 only incorrect, it could also be misleading.
10133
10134 Example Code and Data Size: These are the sizes for the OS-independent
10135 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10136 debug version of the code includes the debug output trace mechanism and
10137 has a
10138 much 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 ----------------------------------------
10148 29 August 2008. Summary of changes for version 20080829:
10149
10150 1) ACPI CA Core Subsystem:
10151
10152 Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
10153 Reference. Changes include the elimination of cheating on the Object
10154 field
10155 for the DdbHandle subtype, addition of a reference class field to
10156 differentiate the various reference types (instead of an AML opcode), and
10157 the
10158 cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
10159
10160 Reduce an error to a warning for an incorrect method argument count.
10161 Previously aborted with an error if too few arguments were passed to a
10162 control method via the external ACPICA interface. Now issue a warning
10163 instead
10164 and continue. Handles the case where the method inadvertently declares
10165 too
10166 many arguments, but does not actually use the extra ones. Applies mainly
10167 to
10168 the predefined methods. Lin Ming. Linux BZ 11032.
10169
10170 Disallow the evaluation of named object types with no intrinsic value.
10171 Return
10172 AE_TYPE for objects that have no value and therefore evaluation is
10173 undefined:
10174 Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
10175 of
10176 these types were allowed, but an exception would be generated at some
10177 point
10178 during the evaluation. Now, the error is generated up front.
10179
10180 Fixed a possible memory leak in the AcpiNsGetExternalPathname function
10181 (nsnames.c). Fixes a leak in the error exit path.
10182
10183 Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
10184 debug
10185 levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
10186 ACPI_EXCEPTION
10187 interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
10188 ACPI_LV_EVENTS.
10189
10190 Removed obsolete and/or unused exception codes from the acexcep.h header.
10191 There is the possibility that certain device drivers may be affected if
10192 they
10193 use any of these exceptions.
10194
10195 The ACPICA documentation has been added to the public git source tree,
10196 under
10197 acpica/documents. Included are the ACPICA programmer reference, the iASL
10198 compiler reference, and the changes.txt release logfile.
10199
10200 Example Code and Data Size: These are the sizes for the OS-independent
10201 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10202 debug version of the code includes the debug output trace mechanism and
10203 has a
10204 much 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
10213 2) iASL Compiler/Disassembler and Tools:
10214
10215 Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
10216 defines _SCP with 3 arguments. Previous versions defined it with only 1
10217 argument. iASL now allows both definitions.
10218
10219 iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
10220 zero-
10221 length subtables when disassembling ACPI tables. Also fixed a couple of
10222 errors where a full 16-bit table type field was not extracted from the
10223 input
10224 properly.
10225
10226 acpisrc: Improve comment counting mechanism for generating source code
10227 statistics. Count first and last lines of multi-line comments as
10228 whitespace,
10229 not comment lines. Handle Linux legal header in addition to standard
10230 acpica
10231 header.
10232
10233 ----------------------------------------
10234
10235 29 July 2008. Summary of changes for version 20080729:
10236
10237 1) ACPI CA Core Subsystem:
10238
10239 Fix a possible deadlock in the GPE dispatch. Remove call to
10240 AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
10241 attempt
10242 to acquire the GPE lock but can deadlock since the GPE lock is already
10243 held
10244 at dispatch time. This code was introduced in version 20060831 as a
10245 response
10246 to Linux BZ 6881 and has since been removed from Linux.
10247
10248 Add a function to dereference returned reference objects. Examines the
10249 return
10250 object from a call to AcpiEvaluateObject. Any Index or RefOf references
10251 are
10252 automatically dereferenced in an attempt to return something useful
10253 (these
10254 reference types cannot be converted into an external ACPI_OBJECT.)
10255 Provides
10256 MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
10257
10258 x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
10259 subtables for the MADT and one new subtable for the SRAT. Includes
10260 disassembler and AcpiSrc support. Data from the Intel 64 Architecture
10261 x2APIC
10262 Specification, June 2008.
10263
10264 Additional error checking for pathname utilities. Add error check after
10265 all
10266 calls to AcpiNsGetPathnameLength. Add status return from
10267 AcpiNsBuildExternalPath and check after all calls. Add parameter
10268 validation
10269 to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
10270
10271 Return status from the global init function AcpiUtGlobalInitialize. This
10272 is
10273 used by both the kernel subsystem and the utilities such as iASL
10274 compiler.
10275 The function could possibly fail when the caches are initialized. Yang
10276 Yi.
10277
10278 Add a function to decode reference object types to strings. Created for
10279 improved error messages.
10280
10281 Improve object conversion error messages. Better error messages during
10282 object
10283 conversion from internal to the external ACPI_OBJECT. Used for external
10284 calls
10285 to AcpiEvaluateObject.
10286
10287 Example Code and Data Size: These are the sizes for the OS-independent
10288 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10289 debug version of the code includes the debug output trace mechanism and
10290 has a
10291 much 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
10300 2) iASL Compiler/Disassembler and Tools:
10301
10302 Debugger: fix a possible hang when evaluating non-methods. Fixes a
10303 problem
10304 introduced in version 20080701. If the object being evaluated (via
10305 execute
10306 command) is not a method, the debugger can hang while trying to obtain
10307 non-
10308 existent parameters.
10309
10310 iASL: relax error for using reserved "_T_x" identifiers. These names can
10311 appear in a disassembled ASL file if they were emitted by the original
10312 compiler. Instead of issuing an error or warning and forcing the user to
10313 manually change these names, issue a remark instead.
10314
10315 iASL: error if named object created in while loop. Emit an error if any
10316 named
10317 object is created within a While loop. If allowed, this code will
10318 generate
10319 a
10320 run-time error on the second iteration of the loop when an attempt is
10321 made
10322 to
10323 create the same named object twice. ACPICA bugzilla 730.
10324
10325 iASL: Support absolute pathnames for include files. Add support for
10326 absolute
10327 pathnames within the Include operator. previously, only relative
10328 pathnames
10329 were supported.
10330
10331 iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
10332 Descriptor.
10333 The ACPI spec requires one interrupt minimum. BZ 423
10334
10335 iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
10336 Handles the case for the Interrupt Resource Descriptor where
10337 the ResourceSource argument is omitted but ResourceSourceIndex
10338 is present. Now leave room for the Index. BZ 426
10339
10340 iASL: Prevent error message if CondRefOf target does not exist. Fixes
10341 cases
10342 where an error message is emitted if the target does not exist. BZ 516
10343
10344 iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
10345 (get ACPI tables on Windows). This was apparently broken in version
10346 20070919.
10347
10348 AcpiXtract: Handle EOF while extracting data. Correctly handle the case
10349 where
10350 the EOF happens immediately after the last table in the input file. Print
10351 completion message. Previously, no message was displayed in this case.
10352
10353 ----------------------------------------
10354 01 July 2008. Summary of changes for version 20080701:
10355
10356 0) Git source tree / acpica.org
10357
10358 Fixed a problem where a git-clone from http would not transfer the entire
10359 source tree.
10360
10361 1) ACPI CA Core Subsystem:
10362
10363 Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
10364 enable bit. Now performs a read-change-write of the enable register
10365 instead
10366 of simply writing out the cached enable mask. This will prevent
10367 inadvertent
10368 enabling of GPEs if a rogue GPE is received during initialization (before
10369 GPE
10370 handlers are installed.)
10371
10372 Implemented a copy for dynamically loaded tables. Previously, dynamically
10373 loaded tables were simply mapped - but on some machines this memory is
10374 corrupted after suspend. Now copy the table to a local buffer. For the
10375 OpRegion case, added checksum verify. Use the table length from the table
10376 header, not the region length. For the Buffer case, use the table length
10377 also. Dennis Noordsij, Bob Moore. BZ 10734
10378
10379 Fixed a problem where the same ACPI table could not be dynamically loaded
10380 and
10381 unloaded more than once. Without this change, a table cannot be loaded
10382 again
10383 once it has been loaded/unloaded one time. The current mechanism does not
10384 unregister a table upon an unload. During a load, if the same table is
10385 found,
10386 this no longer returns an exception. BZ 722
10387
10388 Fixed a problem where the wrong descriptor length was calculated for the
10389 EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
10390 EndTag
10391 are calculated as 12 bytes long, but the actual length in the internal
10392 descriptor is 16 because of the round-up to 8 on the 64-bit build.
10393 Reported
10394 by Linn Crosetto. BZ 728
10395
10396 Fixed a possible memory leak in the Unload operator. The DdbHandle
10397 returned
10398 by Load() did not have its reference count decremented during unload,
10399 leading
10400 to a memory leak. Lin Ming. BZ 727
10401
10402 Fixed a possible memory leak when deleting thermal/processor objects. Any
10403 associated notify handlers (and objects) were not being deleted. Fiodor
10404 Suietov. BZ 506
10405
10406 Fixed the ordering of the ASCII names in the global mutex table to match
10407 the
10408 actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
10409 only.
10410 Vegard Nossum. BZ 726
10411
10412 Enhanced the AcpiGetObjectInfo interface to return the number of required
10413 arguments if the object is a control method. Added this call to the
10414 debugger
10415 so the proper number of default arguments are passed to a method. This
10416 prevents a warning when executing methods from AcpiExec.
10417
10418 Added a check for an invalid handle in AcpiGetObjectInfo. Return
10419 AE_BAD_PARAMETER if input handle is invalid. BZ 474
10420
10421 Fixed an extraneous warning from exconfig.c on the 64-bit build.
10422
10423 Example Code and Data Size: These are the sizes for the OS-independent
10424 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10425 debug version of the code includes the debug output trace mechanism and
10426 has a
10427 much 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
10436 2) iASL Compiler/Disassembler and Tools:
10437
10438 iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
10439 resource descriptor names.
10440
10441 iASL: Detect invalid ASCII characters in input (windows version). Removed
10442 the
10443 "-CF" flag from the flex compile, enables correct detection of non-ASCII
10444 characters in the input. BZ 441
10445
10446 iASL: Eliminate warning when result of LoadTable is not used. Eliminate
10447 the
10448 "result of operation not used" warning when the DDB handle returned from
10449 LoadTable is not used. The warning is not needed. BZ 590
10450
10451 AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
10452 method
10453 to
10454 pass address of table to the AML. Added option to disable OpRegion
10455 simulation
10456 to allow creation of an OpRegion with a real address that was passed to
10457 _CFG.
10458 All of this allows testing of the Load and Unload operators from
10459 AcpiExec.
10460
10461 Debugger: update tables command for unloaded tables. Handle unloaded
10462 tables
10463 and use the standard table header output routine.
10464
10465 ----------------------------------------
10466 09 June 2008. Summary of changes for version 20080609:
10467
10468 1) ACPI CA Core Subsystem:
10469
10470 Implemented a workaround for reversed _PRT entries. A significant number
10471 of
10472 BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
10473 change dynamically detects and repairs this problem. Provides
10474 compatibility
10475 with MS ACPI. BZ 6859
10476
10477 Simplified the internal ACPI hardware interfaces to eliminate the locking
10478 flag parameter from Register Read/Write. Added a new external interface,
10479 AcpiGetRegisterUnlocked.
10480
10481 Fixed a problem where the invocation of a GPE control method could hang.
10482 This
10483 was a regression introduced in 20080514. The new method argument count
10484 validation mechanism can enter an infinite loop when a GPE method is
10485 dispatched. Problem fixed by removing the obsolete code that passed GPE
10486 block
10487 information to the notify handler via the control method parameter
10488 pointer.
10489
10490 Fixed a problem where the _SST execution status was incorrectly returned
10491 to
10492 the caller of AcpiEnterSleepStatePrep. This was a regression introduced
10493 in
10494 20080514. _SST is optional and a NOT_FOUND exception should never be
10495 returned. BZ 716
10496
10497 Fixed a problem where a deleted object could be accessed from within the
10498 AML
10499 parser. This was a regression introduced in version 20080123 as a fix for
10500 the
10501 Unload operator. Lin Ming. BZ 10669
10502
10503 Cleaned up the debug operand dump mechanism. Eliminated unnecessary
10504 operands
10505 and eliminated the use of a negative index in a loop. Operands are now
10506 displayed in the correct order, not backwards. This also fixes a
10507 regression
10508 introduced in 20080514 on 64-bit systems where the elimination of
10509 ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
10510 715
10511
10512 Fixed a possible memory leak in EvPciConfigRegionSetup where the error
10513 exit
10514 path did not delete a locally allocated structure.
10515
10516 Updated definitions for the DMAR and SRAT tables to synchronize with the
10517 current specifications. Includes disassembler support.
10518
10519 Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
10520 loop termination value was used. Loop terminated on iteration early,
10521 missing
10522 one mutex. Linn Crosetto
10523
10524 Example Code and Data Size: These are the sizes for the OS-independent
10525 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10526 debug version of the code includes the debug output trace mechanism and
10527 has a
10528 much 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
10537 2) iASL Compiler/Disassembler and Tools:
10538
10539 Disassembler: Implemented support for EisaId() within _CID objects. Now
10540 disassemble integer _CID objects back to EisaId invocations, including
10541 multiple integers within _CID packages. Includes single-step support for
10542 debugger also.
10543
10544 Disassembler: Added support for DMAR and SRAT table definition changes.
10545
10546 ----------------------------------------
10547 14 May 2008. Summary of changes for version 20080514:
10548
10549 1) ACPI CA Core Subsystem:
10550
10551 Fixed a problem where GPEs were enabled too early during the ACPICA
10552 initialization. This could lead to "handler not installed" errors on some
10553 machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
10554 This
10555 ensures that all operation regions and devices throughout the namespace
10556 have
10557 been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
10558
10559 Implemented a change to the enter sleep code. Moved execution of the _GTS
10560 method to just before setting sleep enable bit. The execution was moved
10561 from
10562 AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
10563 immediately before the SLP_EN bit is set, as per the ACPI specification.
10564 Luming Yu, BZ 1653.
10565
10566 Implemented a fix to disable unknown GPEs (2nd version). Now always
10567 disable
10568 the GPE, even if ACPICA thinks that that it is already disabled. It is
10569 possible that the AML or some other code has enabled the GPE unbeknownst
10570 to
10571 the ACPICA code.
10572
10573 Fixed a problem with the Field operator where zero-length fields would
10574 return
10575 an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
10576 ASL
10577 field declarations in Field(), BankField(), and IndexField(). BZ 10606.
10578
10579 Implemented a fix for the Load operator, now load the table at the
10580 namespace
10581 root. This reverts a change introduced in version 20071019. The table is
10582 now
10583 loaded at the namespace root even though this goes against the ACPI
10584 specification. This provides compatibility with other ACPI
10585 implementations.
10586 The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
10587 Ming.
10588
10589 Fixed a problem where ACPICA would not Load() tables with unusual
10590 signatures.
10591 Now ignore ACPI table signature for Load() operator. Only "SSDT" is
10592 acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
10593 Therefore, signature validation is worthless. Apparently MS ACPI accepts
10594 such
10595 signatures, ACPICA must be compatible. BZ 10454.
10596
10597 Fixed a possible negative array index in AcpiUtValidateException. Added
10598 NULL
10599 fields to the exception string arrays to eliminate a -1 subtraction on
10600 the
10601 SubStatus field.
10602
10603 Updated the debug tracking macros to reduce overall code and data size.
10604 Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
10605 instead of pointers to static strings. Jan Beulich and Bob Moore.
10606
10607 Implemented argument count checking in control method invocation via
10608 AcpiEvaluateObject. Now emit an error if too few arguments, warning if
10609 too
10610 many. This applies only to extern programmatic control method execution,
10611 not
10612 method-to-method calls within the AML. Lin Ming.
10613
10614 Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
10615 no
10616 longer needed, especially with the removal of 16-bit support. It was
10617 replaced
10618 mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
10619 bit
10620 on
10621 32/64-bit platforms is required.
10622
10623 Added the C const qualifier for appropriate string constants -- mostly
10624 MODULE_NAME and printf format strings. Jan Beulich.
10625
10626 Example Code and Data Size: These are the sizes for the OS-independent
10627 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10628 debug version of the code includes the debug output trace mechanism and
10629 has a
10630 much 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
10639 2) iASL Compiler/Disassembler and Tools:
10640
10641 Implemented ACPI table revision ID validation in the disassembler. Zero
10642 is
10643 always invalid. For DSDTs, the ID controls the interpreter integer width.
10644 1
10645 means 32-bit and this is unusual. 2 or greater is 64-bit.
10646
10647 ----------------------------------------
10648 21 March 2008. Summary of changes for version 20080321:
10649
10650 1) ACPI CA Core Subsystem:
10651
10652 Implemented an additional change to the GPE support in order to suppress
10653 spurious or stray GPEs. The AcpiEvDisableGpe function will now
10654 permanently
10655 disable incoming GPEs that are neither enabled nor disabled -- meaning
10656 that
10657 the GPE is unknown to the system. This should prevent future interrupt
10658 floods
10659 from that GPE. BZ 6217 (Zhang Rui)
10660
10661 Fixed a problem where NULL package elements were not returned to the
10662 AcpiEvaluateObject interface correctly. The element was simply ignored
10663 instead of returning a NULL ACPI_OBJECT package element, potentially
10664 causing
10665 a buffer overflow and/or confusing the caller who expected a fixed number
10666 of
10667 elements. BZ 10132 (Lin Ming, Bob Moore)
10668
10669 Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
10670 Dword,
10671 Qword), Field, BankField, and IndexField operators when invoked from
10672 inside
10673 an executing control method. In this case, these operators created
10674 namespace
10675 nodes that were incorrectly left marked as permanent nodes instead of
10676 temporary nodes. This could cause a problem if there is race condition
10677 between an exiting control method and a running namespace walk. (Reported
10678 by
10679 Linn Crosetto)
10680
10681 Fixed a problem where the CreateField and CreateXXXField operators would
10682 incorrectly allow duplicate names (the name of the field) with no
10683 exception
10684 generated.
10685
10686 Implemented several changes for Notify handling. Added support for new
10687 Notify
10688 values (ACPI 2.0+) and improved the Notify debug output. Notify on
10689 PowerResource objects is no longer allowed, as per the ACPI
10690 specification.
10691 (Bob Moore, Zhang Rui)
10692
10693 All Reference Objects returned via the AcpiEvaluateObject interface are
10694 now
10695 marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
10696 for
10697 NULL objects - either NULL package elements or unresolved named
10698 references.
10699
10700 Fixed a problem where an extraneous debug message was produced for
10701 package
10702 objects (when debugging enabled). The message "Package List length larger
10703 than NumElements count" is now produced in the correct case, and is now
10704 an
10705 error message rather than a debug message. Added a debug message for the
10706 opposite case, where NumElements is larger than the Package List (the
10707 package
10708 will be padded out with NULL elements as per the ACPI spec.)
10709
10710 Implemented several improvements for the output of the ASL "Debug" object
10711 to
10712 clarify and keep all data for a given object on one output line.
10713
10714 Fixed two size calculation issues with the variable-length Start
10715 Dependent
10716 resource descriptor.
10717
10718 Example Code and Data Size: These are the sizes for the OS-independent
10719 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10720 debug version of the code includes the debug output trace mechanism and
10721 has
10722 a 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
10731 2) iASL Compiler/Disassembler and Tools:
10732
10733 Fixed a problem with the use of the Switch operator where execution of
10734 the
10735 containing method by multiple concurrent threads could cause an
10736 AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
10737 actual Switch opcode, it must be simulated with local named temporary
10738 variables and if/else pairs. The solution chosen was to mark any method
10739 that
10740 uses Switch as Serialized, thus preventing multiple thread entries. BZ
10741 469.
10742
10743 ----------------------------------------
10744 13 February 2008. Summary of changes for version 20080213:
10745
10746 1) ACPI CA Core Subsystem:
10747
10748 Implemented another MS compatibility design change for GPE/Notify
10749 handling.
10750 GPEs are now cleared/enabled asynchronously to allow all pending notifies
10751 to
10752 complete first. It is expected that the OSL will queue the enable request
10753 behind all pending notify requests (may require changes to the local host
10754 OSL
10755 in AcpiOsExecute). Alexey Starikovskiy.
10756
10757 Fixed a problem where buffer and package objects passed as arguments to a
10758 control method via the external AcpiEvaluateObject interface could cause
10759 an
10760 AE_AML_INTERNAL exception depending on the order and type of operators
10761 executed by the target control method.
10762
10763 Fixed a problem where resource descriptor size optimization could cause a
10764 problem when a _CRS resource template is passed to a _SRS method. The
10765 _SRS
10766 resource template must use the same descriptors (with the same size) as
10767 returned from _CRS. This change affects the following resource
10768 descriptors:
10769 IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
10770 9487)
10771
10772 Fixed a problem where a CopyObject to RegionField, BankField, and
10773 IndexField
10774 objects did not perform an implicit conversion as it should. These types
10775 must
10776 retain their initial type permanently as per the ACPI specification.
10777 However,
10778 a CopyObject to all other object types should not perform an implicit
10779 conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
10780
10781 Fixed a problem with the AcpiGetDevices interface where the mechanism to
10782 match device CIDs did not examine the entire list of available CIDs, but
10783 instead aborted on the first non-matching CID. Andrew Patterson.
10784
10785 Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
10786 was
10787 inadvertently changed to return a 16-bit value instead of a 32-bit value,
10788 truncating the upper dword of a 64-bit value. This macro is only used to
10789 display debug output, so no incorrect calculations were made. Also,
10790 reimplemented the macro so that a 64-bit shift is not performed by
10791 inefficient compilers.
10792
10793 Added missing va_end statements that should correspond with each va_start
10794 statement.
10795
10796 Example Code and Data Size: These are the sizes for the OS-independent
10797 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10798 debug version of the code includes the debug output trace mechanism and
10799 has
10800 a 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
10809 2) iASL Compiler/Disassembler and Tools:
10810
10811 Implemented full disassembler support for the following new ACPI tables:
10812 BERT, EINJ, and ERST. Implemented partial disassembler support for the
10813 complicated HEST table. These tables support the Windows Hardware Error
10814 Architecture (WHEA).
10815
10816 ----------------------------------------
10817 23 January 2008. Summary of changes for version 20080123:
10818
10819 1) ACPI CA Core Subsystem:
10820
10821 Added the 2008 copyright to all module headers and signons. This affects
10822 virtually every file in the ACPICA core subsystem, the iASL compiler, and
10823 the tools/utilities.
10824
10825 Fixed a problem with the SizeOf operator when used with Package and
10826 Buffer
10827 objects. These objects have deferred execution for some arguments, and
10828 the
10829 execution is now completed before the SizeOf is executed. This problem
10830 caused
10831 unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
10832 BZ
10833 9558
10834
10835 Implemented an enhancement to the interpreter "slack mode". In the
10836 absence
10837 of
10838 an explicit return or an implicitly returned object from the last
10839 executed
10840 opcode, a control method will now implicitly return an integer of value 0
10841 for
10842 Microsoft compatibility. (Lin Ming) BZ 392
10843
10844 Fixed a problem with the Load operator where an exception was not
10845 returned
10846 in
10847 the case where the table is already loaded. (Lin Ming) BZ 463
10848
10849 Implemented support for the use of DDBHandles as an Indexed Reference, as
10850 per
10851 the ACPI spec. (Lin Ming) BZ 486
10852
10853 Implemented support for UserTerm (Method invocation) for the Unload
10854 operator
10855 as per the ACPI spec. (Lin Ming) BZ 580
10856
10857 Fixed a problem with the LoadTable operator where the OemId and
10858 OemTableId
10859 input strings could cause unexpected failures if they were shorter than
10860 the
10861 maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
10862
10863 Implemented support for UserTerm (Method invocation) for the Unload
10864 operator
10865 as per the ACPI spec. (Lin Ming) BZ 580
10866
10867 Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
10868 HEST,
10869 IBFT, UEFI, WDAT. Disassembler support is forthcoming.
10870
10871 Example Code and Data Size: These are the sizes for the OS-independent
10872 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10873 debug version of the code includes the debug output trace mechanism and
10874 has
10875 a 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
10884 2) iASL Compiler/Disassembler and Tools:
10885
10886 Implemented support in the disassembler for checksum validation on
10887 incoming
10888 binary DSDTs and SSDTs. If incorrect, a message is displayed within the
10889 table
10890 header dump at the start of the disassembly.
10891
10892 Implemented additional debugging information in the namespace listing
10893 file
10894 created during compilation. In addition to the namespace hierarchy, the
10895 full
10896 pathname to each namespace object is displayed.
10897
10898 Fixed a problem with the disassembler where invalid ACPI tables could
10899 cause
10900 faults or infinite loops.
10901
10902 Fixed an unexpected parse error when using the optional "parameter types"
10903 list in a control method declaration. (Lin Ming) BZ 397
10904
10905 Fixed a problem where two External declarations with the same name did
10906 not
10907 cause an error (Lin Ming) BZ 509
10908
10909 Implemented support for full TermArgs (adding Argx, Localx and method
10910 invocation) for the ParameterData parameter to the LoadTable operator.
10911 (Lin
10912 Ming) BZ 583,587
10913
10914 ----------------------------------------
10915 19 December 2007. Summary of changes for version 20071219:
10916
10917 1) ACPI CA Core Subsystem:
10918
10919 Implemented full support for deferred execution for the TermArg string
10920 arguments for DataTableRegion. This enables forward references and full
10921 operand resolution for the three string arguments. Similar to
10922 OperationRegion
10923 deferred argument execution.) Lin Ming. BZ 430
10924
10925 Implemented full argument resolution support for the BankValue argument
10926 to
10927 BankField. Previously, only constants were supported, now any TermArg may
10928 be
10929 used. Lin Ming BZ 387, 393
10930
10931 Fixed a problem with AcpiGetDevices where the search of a branch of the
10932 device tree could be terminated prematurely. In accordance with the ACPI
10933 specification, the search down the current branch is terminated if a
10934 device
10935 is both not present and not functional (instead of just not present.)
10936 Yakui
10937 Zhao.
10938
10939 Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
10940 if
10941 the underlying AML code changed the GPE enable registers. Now, any
10942 unknown
10943 incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
10944 disabled
10945 instead of simply ignored. Rui Zhang.
10946
10947 Fixed a problem with Index Fields where the Index register was
10948 incorrectly
10949 limited to a maximum of 32 bits. Now any size may be used.
10950
10951 Fixed a couple memory leaks associated with "implicit return" objects
10952 when
10953 the AML Interpreter slack mode is enabled. Lin Ming BZ 349
10954
10955 Example Code and Data Size: These are the sizes for the OS-independent
10956 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10957 debug version of the code includes the debug output trace mechanism and
10958 has
10959 a 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 ----------------------------------------
10969 14 November 2007. Summary of changes for version 20071114:
10970
10971 1) ACPI CA Core Subsystem:
10972
10973 Implemented event counters for each of the Fixed Events, the ACPI SCI
10974 (interrupt) itself, and control methods executed. Named
10975 AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
10976 These
10977 should be useful for debugging and statistics.
10978
10979 Implemented a new external interface, AcpiGetStatistics, to retrieve the
10980 contents of the various event counters. Returns the current values for
10981 AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
10982 AcpiMethodCount. The interface can be expanded in the future if new
10983 counters
10984 are added. Device drivers should use this interface rather than access
10985 the
10986 counters directly.
10987
10988 Fixed a problem with the FromBCD and ToBCD operators. With some
10989 compilers,
10990 the ShortDivide function worked incorrectly, causing problems with the
10991 BCD
10992 functions with large input values. A truncation from 64-bit to 32-bit
10993 inadvertently occurred. Internal BZ 435. Lin Ming
10994
10995 Fixed a problem with Index references passed as method arguments.
10996 References
10997 passed as arguments to control methods were dereferenced immediately
10998 (before
10999 control was passed to the called method). The references are now
11000 correctly
11001 passed directly to the called method. BZ 5389. Lin Ming
11002
11003 Fixed a problem with CopyObject used in conjunction with the Index
11004 operator.
11005 The reference was incorrectly dereferenced before the copy. The reference
11006 is
11007 now correctly copied. BZ 5391. Lin Ming
11008
11009 Fixed a problem with Control Method references within Package objects.
11010 These
11011 references are now correctly generated. This completes the package
11012 construction overhaul that began in version 20071019.
11013
11014 Example Code and Data Size: These are the sizes for the OS-independent
11015 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11016 debug version of the code includes the debug output trace mechanism and
11017 has
11018 a 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
11028 2) iASL Compiler/Disassembler and Tools:
11029
11030 The AcpiExec utility now installs handlers for all of the predefined
11031 Operation Region types. New types supported are: PCI_Config, CMOS, and
11032 PCIBARTarget.
11033
11034 Fixed a problem with the 64-bit version of AcpiExec where the extended
11035 (64-
11036 bit) address fields for the DSDT and FACS within the FADT were not being
11037 used, causing truncation of the upper 32-bits of these addresses. Lin
11038 Ming
11039 and Bob Moore
11040
11041 ----------------------------------------
11042 19 October 2007. Summary of changes for version 20071019:
11043
11044 1) ACPI CA Core Subsystem:
11045
11046 Fixed a problem with the Alias operator when the target of the alias is a
11047 named ASL operator that opens a new scope -- Scope, Device,
11048 PowerResource,
11049 Processor, and ThermalZone. In these cases, any children of the original
11050 operator could not be accessed via the alias, potentially causing
11051 unexpected
11052 AE_NOT_FOUND exceptions. (BZ 9067)
11053
11054 Fixed a problem with the Package operator where all named references were
11055 created as object references and left otherwise unresolved. According to
11056 the
11057 ACPI specification, a Package can only contain Data Objects or references
11058 to
11059 control methods. The implication is that named references to Data Objects
11060 (Integer, Buffer, String, Package, BufferField, Field) should be resolved
11061 immediately upon package creation. This is the approach taken with this
11062 change. References to all other named objects (Methods, Devices, Scopes,
11063 etc.) are all now properly created as reference objects. (BZ 5328)
11064
11065 Reverted a change to Notify handling that was introduced in version
11066 20070508. This version changed the Notify handling from asynchronous to
11067 fully synchronous (Device driver Notify handling with respect to the
11068 Notify
11069 ASL operator). It was found that this change caused more problems than it
11070 solved and was removed by most users.
11071
11072 Fixed a problem with the Increment and Decrement operators where the type
11073 of
11074 the target object could be unexpectedly and incorrectly changed. (BZ 353)
11075 Lin Ming.
11076
11077 Fixed a problem with the Load and LoadTable operators where the table
11078 location within the namespace was ignored. Instead, the table was always
11079 loaded into the root or current scope. Lin Ming.
11080
11081 Fixed a problem with the Load operator when loading a table from a buffer
11082 object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
11083
11084 Fixed a problem with the Debug object where a store of a DdbHandle
11085 reference
11086 object to the Debug object could cause a fault.
11087
11088 Added a table checksum verification for the Load operator, in the case
11089 where
11090 the load is from a buffer. (BZ 578).
11091
11092 Implemented additional parameter validation for the LoadTable operator.
11093 The
11094 length of the input strings SignatureString, OemIdString, and OemTableId
11095 are
11096 now checked for maximum lengths. (BZ 582) Lin Ming.
11097
11098 Example Code and Data Size: These are the sizes for the OS-independent
11099 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11100 debug version of the code includes the debug output trace mechanism and
11101 has
11102 a 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
11112 2) iASL Compiler/Disassembler:
11113
11114 Fixed a problem where if a single file was specified and the file did not
11115 exist, no error message was emitted. (Introduced with wildcard support in
11116 version 20070917.)
11117
11118 ----------------------------------------
11119 19 September 2007. Summary of changes for version 20070919:
11120
11121 1) ACPI CA Core Subsystem:
11122
11123 Designed and implemented new external interfaces to install and remove
11124 handlers for ACPI table-related events. Current events that are defined
11125 are
11126 LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
11127 they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
11128 AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
11129
11130 Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
11131 (acpi_serialized option on Linux) could cause some systems to hang during
11132 initialization. (Bob Moore) BZ 8171
11133
11134 Fixed a problem where objects of certain types (Device, ThermalZone,
11135 Processor, PowerResource) can be not found if they are declared and
11136 referenced from within the same control method (Lin Ming) BZ 341
11137
11138 Example Code and Data Size: These are the sizes for the OS-independent
11139 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11140 debug version of the code includes the debug output trace mechanism and
11141 has
11142 a 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
11152 2) iASL Compiler/Disassembler:
11153
11154 Implemented support to allow multiple files to be compiled/disassembled
11155 in
11156 a
11157 single invocation. This includes command line wildcard support for both
11158 the
11159 Windows and Unix versions of the compiler. This feature simplifies the
11160 disassembly and compilation of multiple ACPI tables in a single
11161 directory.
11162
11163 ----------------------------------------
11164 08 May 2007. Summary of changes for version 20070508:
11165
11166 1) ACPI CA Core Subsystem:
11167
11168 Implemented a Microsoft compatibility design change for the handling of
11169 the
11170 Notify AML operator. Previously, notify handlers were dispatched and
11171 executed completely asynchronously in a deferred thread. The new design
11172 still executes the notify handlers in a different thread, but the
11173 original
11174 thread that executed the Notify() now waits at a synchronization point
11175 for
11176 the notify handler to complete. Some machines depend on a synchronous
11177 Notify
11178 operator in order to operate correctly.
11179
11180 Implemented support to allow Package objects to be passed as method
11181 arguments to the external AcpiEvaluateObject interface. Previously, this
11182 would return the AE_NOT_IMPLEMENTED exception. This feature had not been
11183 implemented since there were no reserved control methods that required it
11184 until recently.
11185
11186 Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
11187 that
11188 contained invalid non-zero values in reserved fields could cause later
11189 failures because these fields have meaning in later revisions of the
11190 FADT.
11191 For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
11192 fields
11193 are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
11194
11195 Fixed a problem where the Global Lock handle was not properly updated if
11196 a
11197 thread that acquired the Global Lock via executing AML code then
11198 attempted
11199 to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
11200 Joe
11201 Liu.
11202
11203 Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
11204 could be corrupted if the interrupt being removed was at the head of the
11205 list. Reported by Linn Crosetto.
11206
11207 Example Code and Data Size: These are the sizes for the OS-independent
11208 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11209 debug version of the code includes the debug output trace mechanism and
11210 has
11211 a 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 ----------------------------------------
11221 20 March 2007. Summary of changes for version 20070320:
11222
11223 1) ACPI CA Core Subsystem:
11224
11225 Implemented a change to the order of interpretation and evaluation of AML
11226 operand objects within the AML interpreter. The interpreter now evaluates
11227 operands in the order that they appear in the AML stream (and the
11228 corresponding ASL code), instead of in the reverse order (after the
11229 entire
11230 operand list has been parsed). The previous behavior caused several
11231 subtle
11232 incompatibilities with the Microsoft AML interpreter as well as being
11233 somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
11234
11235 Implemented a change to the ACPI Global Lock support. All interfaces to
11236 the
11237 global lock now allow the same thread to acquire the lock multiple times.
11238 This affects the AcpiAcquireGlobalLock external interface to the global
11239 lock
11240 as well as the internal use of the global lock to support AML fields -- a
11241 control method that is holding the global lock can now simultaneously
11242 access
11243 AML fields that require global lock protection. Previously, in both
11244 cases,
11245 this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
11246 to
11247 AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
11248 Controller. There is no change to the behavior of the AML Acquire
11249 operator,
11250 as this can already be used to acquire a mutex multiple times by the same
11251 thread. BZ 8066. With assistance from Alexey Starikovskiy.
11252
11253 Fixed a problem where invalid objects could be referenced in the AML
11254 Interpreter after error conditions. During operand evaluation, ensure
11255 that
11256 the internal "Return Object" field is cleared on error and only valid
11257 pointers are stored there. Caused occasional access to deleted objects
11258 that
11259 resulted in "large reference count" warning messages. Valery Podrezov.
11260
11261 Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
11262 on
11263 deeply nested control method invocations. BZ 7873, local BZ 487. Valery
11264 Podrezov.
11265
11266 Fixed an internal problem with the handling of result objects on the
11267 interpreter result stack. BZ 7872. Valery Podrezov.
11268
11269 Removed obsolete code that handled the case where AML_NAME_OP is the
11270 target
11271 of a reference (Reference.Opcode). This code was no longer necessary. BZ
11272 7874. Valery Podrezov.
11273
11274 Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
11275 was
11276 a
11277 remnant from the previously discontinued 16-bit support.
11278
11279 Example Code and Data Size: These are the sizes for the OS-independent
11280 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11281 debug version of the code includes the debug output trace mechanism and
11282 has
11283 a 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 ----------------------------------------
11293 26 January 2007. Summary of changes for version 20070126:
11294
11295 1) ACPI CA Core Subsystem:
11296
11297 Added the 2007 copyright to all module headers and signons. This affects
11298 virtually every file in the ACPICA core subsystem, the iASL compiler, and
11299 the utilities.
11300
11301 Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
11302 during a table load. A bad pointer was passed in the case where the DSDT
11303 is
11304 overridden, causing a fault in this case.
11305
11306 Example Code and Data Size: These are the sizes for the OS-independent
11307 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11308 debug version of the code includes the debug output trace mechanism and
11309 has
11310 a 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 ----------------------------------------
11320 15 December 2006. Summary of changes for version 20061215:
11321
11322 1) ACPI CA Core Subsystem:
11323
11324 Support for 16-bit ACPICA has been completely removed since it is no
11325 longer
11326 necessary and it clutters the code. All 16-bit macros, types, and
11327 conditional compiles have been removed, cleaning up and simplifying the
11328 code
11329 across the entire subsystem. DOS support is no longer needed since the
11330 bootable Linux firmware kit is now available.
11331
11332 The handler for the Global Lock is now removed during AcpiTerminate to
11333 enable a clean subsystem restart, via the implementation of the
11334 AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
11335 HP)
11336
11337 Implemented enhancements to the multithreading support within the
11338 debugger
11339 to enable improved multithreading debugging and evaluation of the
11340 subsystem.
11341 (Valery Podrezov)
11342
11343 Debugger: Enhanced the Statistics/Memory command to emit the total
11344 (maximum)
11345 memory used during the execution, as well as the maximum memory consumed
11346 by
11347 each of the various object types. (Valery Podrezov)
11348
11349 Example Code and Data Size: These are the sizes for the OS-independent
11350 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11351 debug version of the code includes the debug output trace mechanism and
11352 has
11353 a 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
11363 2) iASL Compiler/Disassembler and Tools:
11364
11365 AcpiExec: Implemented a new option (-m) to display full memory use
11366 statistics upon subsystem/program termination. (Valery Podrezov)
11367
11368 ----------------------------------------
11369 09 November 2006. Summary of changes for version 20061109:
11370
11371 1) ACPI CA Core Subsystem:
11372
11373 Optimized the Load ASL operator in the case where the source operand is
11374 an
11375 operation region. Simply map the operation region memory, instead of
11376 performing a bytewise read. (Region must be of type SystemMemory, see
11377 below.)
11378
11379 Fixed the Load ASL operator for the case where the source operand is a
11380 region field. A buffer object is also allowed as the source operand. BZ
11381 480
11382
11383 Fixed a problem where the Load ASL operator allowed the source operand to
11384 be
11385 an operation region of any type. It is now restricted to regions of type
11386 SystemMemory, as per the ACPI specification. BZ 481
11387
11388 Additional cleanup and optimizations for the new Table Manager code.
11389
11390 AcpiEnable will now fail if all of the required ACPI tables are not
11391 loaded
11392 (FADT, FACS, DSDT). BZ 477
11393
11394 Added #pragma pack(8/4) to acobject.h to ensure that the structures in
11395 this
11396 header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
11397 manually optimized to be aligned and will not work if it is byte-packed.
11398
11399 Example Code and Data Size: These are the sizes for the OS-independent
11400 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11401 debug version of the code includes the debug output trace mechanism and
11402 has
11403 a 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
11413 2) iASL Compiler/Disassembler and Tools:
11414
11415 Fixed a problem where the presence of the _OSI predefined control method
11416 within complex expressions could cause an internal compiler error.
11417
11418 AcpiExec: Implemented full region support for multiple address spaces.
11419 SpaceId is now part of the REGION object. BZ 429
11420
11421 ----------------------------------------
11422 11 October 2006. Summary of changes for version 20061011:
11423
11424 1) ACPI CA Core Subsystem:
11425
11426 Completed an AML interpreter performance enhancement for control method
11427 execution. Previously a 2-pass parse/execution, control methods are now
11428 completely parsed and executed in a single pass. This improves overall
11429 interpreter performance by ~25%, reduces code size, and reduces CPU stack
11430 use. (Valery Podrezov + interpreter changes in version 20051202 that
11431 eliminated namespace loading during the pass one parse.)
11432
11433 Implemented _CID support for PCI Root Bridge detection. If the _HID does
11434 not
11435 match the predefined PCI Root Bridge IDs, the _CID list (if present) is
11436 now
11437 obtained and also checked for an ID match.
11438
11439 Implemented additional support for the PCI _ADR execution: upsearch until
11440 a
11441 device scope is found before executing _ADR. This allows PCI_Config
11442 operation regions to be declared locally within control methods
11443 underneath
11444 PCI device objects.
11445
11446 Fixed a problem with a possible race condition between threads executing
11447 AcpiWalkNamespace and the AML interpreter. This condition was removed by
11448 modifying AcpiWalkNamespace to (by default) ignore all temporary
11449 namespace
11450 entries created during any concurrent control method execution. An
11451 additional namespace race condition is known to exist between
11452 AcpiWalkNamespace and the Load/Unload ASL operators and is still under
11453 investigation.
11454
11455 Restructured the AML ParseLoop function, breaking it into several
11456 subfunctions in order to reduce CPU stack use and improve
11457 maintainability.
11458 (Mikhail Kouzmich)
11459
11460 AcpiGetHandle: Fix for parameter validation to detect invalid
11461 combinations
11462 of prefix handle and pathname. BZ 478
11463
11464 Example Code and Data Size: These are the sizes for the OS-independent
11465 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11466 debug version of the code includes the debug output trace mechanism and
11467 has
11468 a 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
11477 2) iASL Compiler/Disassembler and Tools:
11478
11479 Ported the -g option (get local ACPI tables) to the new ACPICA Table
11480 Manager
11481 to restore original behavior.
11482
11483 ----------------------------------------
11484 27 September 2006. Summary of changes for version 20060927:
11485
11486 1) ACPI CA Core Subsystem:
11487
11488 Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
11489 These functions now use a spinlock for mutual exclusion and the interrupt
11490 level indication flag is not needed.
11491
11492 Fixed a problem with the Global Lock where the lock could appear to be
11493 obtained before it is actually obtained. The global lock semaphore was
11494 inadvertently created with one unit instead of zero units. (BZ 464)
11495 Fiodor
11496 Suietov.
11497
11498 Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
11499 during
11500 a read from a buffer or region field. (BZ 458) Fiodor Suietov.
11501
11502 Example Code and Data Size: These are the sizes for the OS-independent
11503 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11504 debug version of the code includes the debug output trace mechanism and
11505 has
11506 a 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
11516 2) iASL Compiler/Disassembler and Tools:
11517
11518 Fixed a compilation problem with the pre-defined Resource Descriptor
11519 field
11520 names where an "object does not exist" error could be incorrectly
11521 generated
11522 if the parent ResourceTemplate pathname places the template within a
11523 different namespace scope than the current scope. (BZ 7212)
11524
11525 Fixed a problem where the compiler could hang after syntax errors
11526 detected
11527 in an ElseIf construct. (BZ 453)
11528
11529 Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
11530 operator. An incorrect output filename was produced when this parameter
11531 was
11532 a null string (""). Now, the original input filename is used as the AML
11533 output filename, with an ".aml" extension.
11534
11535 Implemented a generic batch command mode for the AcpiExec utility
11536 (execute
11537 any AML debugger command) (Valery Podrezov).
11538
11539 ----------------------------------------
11540 12 September 2006. Summary of changes for version 20060912:
11541
11542 1) ACPI CA Core Subsystem:
11543
11544 Enhanced the implementation of the "serialized mode" of the interpreter
11545 (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
11546 specified, instead of creating a serialization semaphore per control
11547 method,
11548 the interpreter lock is simply no longer released before a blocking
11549 operation during control method execution. This effectively makes the AML
11550 Interpreter single-threaded. The overhead of a semaphore per-method is
11551 eliminated.
11552
11553 Fixed a regression where an error was no longer emitted if a control
11554 method
11555 attempts to create 2 objects of the same name. This once again returns
11556 AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
11557 that
11558 will dynamically serialize the control method to possible prevent future
11559 errors. (BZ 440)
11560
11561 Integrated a fix for a problem with PCI Express HID detection in the PCI
11562 Config Space setup procedure. (BZ 7145)
11563
11564 Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
11565 AcpiHwInitialize function - the FADT registers are now validated when the
11566 table is loaded.
11567
11568 Added two new warnings during FADT verification - 1) if the FADT is
11569 larger
11570 than the largest known FADT version, and 2) if there is a mismatch
11571 between
11572 a
11573 32-bit block address and the 64-bit X counterpart (when both are non-
11574 zero.)
11575
11576 Example Code and Data Size: These are the sizes for the OS-independent
11577 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11578 debug version of the code includes the debug output trace mechanism and
11579 has
11580 a 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
11590 2) iASL Compiler/Disassembler and Tools:
11591
11592 Fixed a problem with the implementation of the Switch() operator where
11593 the
11594 temporary variable was declared too close to the actual Switch, instead
11595 of
11596 at method level. This could cause a problem if the Switch() operator is
11597 within a while loop, causing an error on the second iteration. (BZ 460)
11598
11599 Disassembler - fix for error emitted for unknown type for target of scope
11600 operator. Now, ignore it and continue.
11601
11602 Disassembly of an FADT now verifies the input FADT and reports any errors
11603 found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
11604
11605 Disassembly of raw data buffers with byte initialization data now
11606 prefixes
11607 each output line with the current buffer offset.
11608
11609 Disassembly of ASF! table now includes all variable-length data fields at
11610 the end of some of the subtables.
11611
11612 The disassembler now emits a comment if a buffer appears to be a
11613 ResourceTemplate, but cannot be disassembled as such because the EndTag
11614 does
11615 not appear at the very end of the buffer.
11616
11617 AcpiExec - Added the "-t" command line option to enable the serialized
11618 mode
11619 of the AML interpreter.
11620
11621 ----------------------------------------
11622 31 August 2006. Summary of changes for version 20060831:
11623
11624 1) ACPI CA Core Subsystem:
11625
11626 Miscellaneous 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,
11632 AcpiGetTableByIndex
11633
11634 Change for GPE support: when a "wake" GPE is received, all wake GPEs are
11635 now
11636 immediately disabled to prevent the waking GPE from firing again and to
11637 prevent other wake GPEs from interrupting the wake process.
11638
11639 Added the AcpiGpeCount global that tracks the number of processed GPEs,
11640 to
11641 be used for debugging systems with a large number of ACPI interrupts.
11642
11643 Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
11644 both the ACPICA headers and the disassembler.
11645
11646 Example Code and Data Size: These are the sizes for the OS-independent
11647 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11648 debug version of the code includes the debug output trace mechanism and
11649 has
11650 a 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
11660 2) iASL Compiler/Disassembler and Tools:
11661
11662 Disassembler support for the DMAR ACPI table.
11663
11664 ----------------------------------------
11665 23 August 2006. Summary of changes for version 20060823:
11666
11667 1) ACPI CA Core Subsystem:
11668
11669 The Table Manager component has been completely redesigned and
11670 reimplemented. The new design is much simpler, and reduces the overall
11671 code
11672 and data size of the kernel-resident ACPICA by approximately 5%. Also, it
11673 is
11674 now possible to obtain the ACPI tables very early during kernel
11675 initialization, even before dynamic memory management is initialized.
11676 (Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
11677
11678 Obsolete ACPICA interfaces:
11679
11680 - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
11681 init
11682 time).
11683 - AcpiLoadTable: Not needed.
11684 - AcpiUnloadTable: Not needed.
11685
11686 New ACPICA interfaces:
11687
11688 - AcpiInitializeTables: Must be called before the table manager can be
11689 used.
11690 - AcpiReallocateRootTable: Used to transfer the root table to dynamically
11691 allocated memory after it becomes available.
11692 - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
11693 tables
11694 in the RSDT/XSDT.
11695
11696 Other ACPICA changes:
11697
11698 - AcpiGetTableHeader returns the actual mapped table header, not a copy.
11699 Use
11700 AcpiOsUnmapMemory to free this mapping.
11701 - AcpiGetTable returns the actual mapped table. The mapping is managed
11702 internally and must not be deleted by the caller. Use of this interface
11703 causes no additional dynamic memory allocation.
11704 - AcpiFindRootPointer: Support for physical addressing has been
11705 eliminated,
11706 it appeared to be unused.
11707 - The interface to AcpiOsMapMemory has changed to be consistent with the
11708 other allocation interfaces.
11709 - The interface to AcpiOsGetRootPointer has changed to eliminate
11710 unnecessary
11711 parameters.
11712 - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
11713 64-
11714 bit platforms. Was previously 64 bits on all platforms.
11715 - The interface to the ACPI Global Lock acquire/release macros have
11716 changed
11717 slightly since ACPICA no longer keeps a local copy of the FACS with a
11718 constructed pointer to the actual global lock.
11719
11720 Porting to the new table manager:
11721
11722 - AcpiInitializeTables: Must be called once, and can be called anytime
11723 during the OS initialization process. It allows the host to specify an
11724 area
11725 of memory to be used to store the internal version of the RSDT/XSDT (root
11726 table). This allows the host to access ACPI tables before memory
11727 management
11728 is initialized and running.
11729 - AcpiReallocateRootTable: Can be called after memory management is
11730 running
11731 to copy the root table to a dynamically allocated array, freeing up the
11732 scratch memory specified in the call to AcpiInitializeTables.
11733 - AcpiSubsystemInitialize: This existing interface is independent of the
11734 Table Manager, and does not have to be called before the Table Manager
11735 can
11736 be 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
11738 the
11739 actbl.h and actbl1.h header files and may require changes to existing
11740 code.
11741 For example, bitfields have been completely removed because of their lack
11742 of
11743 portability across C compilers.
11744 - Update interfaces to the Global Lock acquire/release macros if local
11745 versions are used. (see acwin.h)
11746
11747 Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
11748
11749 New files: tbfind.c
11750
11751 Example Code and Data Size: These are the sizes for the OS-independent
11752 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11753 debug version of the code includes the debug output trace mechanism and
11754 has
11755 a 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
11765 2) iASL Compiler/Disassembler and Tools:
11766
11767 No changes for this release.
11768
11769 ----------------------------------------
11770 21 July 2006. Summary of changes for version 20060721:
11771
11772 1) ACPI CA Core Subsystem:
11773
11774 The full source code for the ASL test suite used to validate the iASL
11775 compiler and the ACPICA core subsystem is being released with the ACPICA
11776 source for the first time. The source is contained in a separate package
11777 and
11778 consists of over 1100 files that exercise all ASL/AML operators. The
11779 package
11780 should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
11781 Fiodor
11782 Suietov)
11783
11784 Completed a new design and implementation for support of the ACPI Global
11785 Lock. On the OS side, the global lock is now treated as a standard AML
11786 mutex. Previously, multiple OS threads could "acquire" the global lock
11787 simultaneously. However, this could cause the BIOS to be starved out of
11788 the
11789 lock - especially in cases such as the Embedded Controller driver where
11790 there is a tight coupling between the OS and the BIOS.
11791
11792 Implemented an optimization for the ACPI Global Lock interrupt mechanism.
11793 The Global Lock interrupt handler no longer queues the execution of a
11794 separate thread to signal the global lock semaphore. Instead, the
11795 semaphore
11796 is signaled directly from the interrupt handler.
11797
11798 Implemented support within the AML interpreter for package objects that
11799 contain a larger AML length (package list length) than the package
11800 element
11801 count. In this case, the length of the package is truncated to match the
11802 package element count. Some BIOS code apparently modifies the package
11803 length
11804 on the fly, and this change supports this behavior. Provides
11805 compatibility
11806 with the MS AML interpreter. (With assistance from Fiodor Suietov)
11807
11808 Implemented a temporary fix for the BankValue parameter of a Bank Field
11809 to
11810 support all constant values, now including the Zero and One opcodes.
11811 Evaluation of this parameter must eventually be converted to a full
11812 TermArg
11813 evaluation. A not-implemented error is now returned (temporarily) for
11814 non-
11815 constant values for this parameter.
11816
11817 Fixed problem reports (Fiodor Suietov) integrated:
11818 - Fix for premature object deletion after CopyObject on Operation Region
11819 (BZ
11820 350)
11821
11822 Example Code and Data Size: These are the sizes for the OS-independent
11823 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11824 debug version of the code includes the debug output trace mechanism and
11825 has
11826 a 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
11836 2) iASL Compiler/Disassembler and Tools:
11837
11838 No changes for this release.
11839
11840 ----------------------------------------
11841 07 July 2006. Summary of changes for version 20060707:
11842
11843 1) ACPI CA Core Subsystem:
11844
11845 Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
11846 that do not allow the initialization of address pointers within packed
11847 structures - even though the hardware itself may support misaligned
11848 transfers. Some of the debug data structures are packed by default to
11849 minimize size.
11850
11851 Added an error message for the case where AcpiOsGetThreadId() returns
11852 zero.
11853 A non-zero value is required by the core ACPICA code to ensure the proper
11854 operation of AML mutexes and recursive control methods.
11855
11856 The DSDT is now the only ACPI table that determines whether the AML
11857 interpreter is in 32-bit or 64-bit mode. Not really a functional change,
11858 but
11859 the hooks for per-table 32/64 switching have been removed from the code.
11860 A
11861 clarification to the ACPI specification is forthcoming in ACPI 3.0B.
11862
11863 Fixed a possible leak of an OwnerID in the error path of
11864 AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
11865 deletion to a single place in AcpiTbUninstallTable to correct possible
11866 leaks
11867 when using the AcpiTbDeleteTablesByType interface (with assistance from
11868 Lance Ortiz.)
11869
11870 Fixed a problem with Serialized control methods where the semaphore
11871 associated with the method could be over-signaled after multiple method
11872 invocations.
11873
11874 Fixed two issues with the locking of the internal namespace data
11875 structure.
11876 Both the Unload() operator and AcpiUnloadTable interface now lock the
11877 namespace during the namespace deletion associated with the table unload
11878 (with assistance from Linn Crosetto.)
11879
11880 Fixed problem reports (Valery Podrezov) integrated:
11881 - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
11882
11883 Fixed 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
11887 375)
11888 - Possible memory leak, Notify sub-objects of Processor, Power,
11889 ThermalZone
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
11894 Handler (BZ (380)
11895 - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
11896 loaded
11897 (BZ 381)
11898
11899 Example Code and Data Size: These are the sizes for the OS-independent
11900 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11901 debug version of the code includes the debug output trace mechanism and
11902 has
11903 a 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
11913 2) iASL Compiler/Disassembler and Tools:
11914
11915 Fixed problem reports:
11916 Compiler segfault when ASL contains a long (>1024) String declaration (BZ
11917 436)
11918
11919 ----------------------------------------
11920 23 June 2006. Summary of changes for version 20060623:
11921
11922 1) ACPI CA Core Subsystem:
11923
11924 Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
11925 allows the type to be customized to the host OS for improved efficiency
11926 (since a spinlock is usually a very small object.)
11927
11928 Implemented support for "ignored" bits in the ACPI registers. According
11929 to
11930 the ACPI specification, these bits should be preserved when writing the
11931 registers via a read/modify/write cycle. There are 3 bits preserved in
11932 this
11933 manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
11934
11935 Implemented the initial deployment of new OSL mutex interfaces. Since
11936 some
11937 host operating systems have separate mutex and semaphore objects, this
11938 feature was requested. The base code now uses mutexes (and the new mutex
11939 interfaces) wherever a binary semaphore was used previously. However, for
11940 the current release, the mutex interfaces are defined as macros to map
11941 them
11942 to the existing semaphore interfaces. Therefore, no OSL changes are
11943 required
11944 at this time. (See acpiosxf.h)
11945
11946 Fixed several problems with the support for the control method SyncLevel
11947 parameter. The SyncLevel now works according to the ACPI specification
11948 and
11949 in concert with the Mutex SyncLevel parameter, since the current
11950 SyncLevel
11951 is a property of the executing thread. Mutual exclusion for control
11952 methods
11953 is now implemented with a mutex instead of a semaphore.
11954
11955 Fixed three instances of the use of the C shift operator in the bitfield
11956 support code (exfldio.c) to avoid the use of a shift value larger than
11957 the
11958 target data width. The behavior of C compilers is undefined in this case
11959 and
11960 can cause unpredictable results, and therefore the case must be detected
11961 and
11962 avoided. (Fiodor Suietov)
11963
11964 Added an info message whenever an SSDT or OEM table is loaded dynamically
11965 via the Load() or LoadTable() ASL operators. This should improve
11966 debugging
11967 capability since it will show exactly what tables have been loaded
11968 (beyond
11969 the tables present in the RSDT/XSDT.)
11970
11971 Example Code and Data Size: These are the sizes for the OS-independent
11972 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11973 debug version of the code includes the debug output trace mechanism and
11974 has
11975 a 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
11985 2) iASL Compiler/Disassembler and Tools:
11986
11987 No changes for this release.
11988
11989 ----------------------------------------
11990 08 June 2006. Summary of changes for version 20060608:
11991
11992 1) ACPI CA Core Subsystem:
11993
11994 Converted the locking mutex used for the ACPI hardware to a spinlock.
11995 This
11996 change should eliminate all problems caused by attempting to acquire a
11997 semaphore at interrupt level, and it means that all ACPICA external
11998 interfaces that directly access the ACPI hardware can be safely called
11999 from
12000 interrupt level. OSL code that implements the semaphore interfaces should
12001 be
12002 able to eliminate any workarounds for being called at interrupt level.
12003
12004 Fixed a regression introduced in 20060526 where the ACPI device
12005 initialization could be prematurely aborted with an AE_NOT_FOUND if a
12006 device
12007 did not have an optional _INI method.
12008
12009 Fixed an IndexField issue where a write to the Data Register should be
12010 limited in size to the AccessSize (width) of the IndexField itself. (BZ
12011 433,
12012 Fiodor Suietov)
12013
12014 Fixed problem reports (Valery Podrezov) integrated:
12015 - Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
12016
12017 Fixed problem reports (Fiodor Suietov) integrated:
12018 - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
12019
12020 Removed four global mutexes that were obsolete and were no longer being
12021 used.
12022
12023 Example Code and Data Size: These are the sizes for the OS-independent
12024 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12025 debug version of the code includes the debug output trace mechanism and
12026 has
12027 a 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
12037 2) iASL Compiler/Disassembler and Tools:
12038
12039 Fixed a fault when using -g option (get tables from registry) on Windows
12040 machines.
12041
12042 Fixed 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
12045 Suietov)
12046 - Global table revision override (-r) is ignored (BZ 413)
12047
12048 ----------------------------------------
12049 26 May 2006. Summary of changes for version 20060526:
12050
12051 1) ACPI CA Core Subsystem:
12052
12053 Restructured, flattened, and simplified the internal interfaces for
12054 namespace object evaluation - resulting in smaller code, less CPU stack
12055 use,
12056 and fewer interfaces. (With assistance from Mikhail Kouzmich)
12057
12058 Fixed a problem with the CopyObject operator where the first parameter
12059 was
12060 not typed correctly for the parser, interpreter, compiler, and
12061 disassembler.
12062 Caused various errors and unexpected behavior.
12063
12064 Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
12065 produced incorrect results with some C compilers. Since the behavior of C
12066 compilers when the shift value is larger than the datatype width is
12067 apparently not well defined, the interpreter now detects this condition
12068 and
12069 simply returns zero as expected in all such cases. (BZ 395)
12070
12071 Fixed 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
12075 Fixed problem reports (Fiodor Suietov) integrated:
12076 - AcpiTerminate doesn't free debug memory allocation list objects (BZ
12077 355)
12078 - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
12079 356)
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
12087 365)
12088 - Status of the Global Initialization Handler call not used (BZ 366)
12089 - Incorrect object parameter to Global Initialization Handler (BZ 367)
12090
12091 Example Code and Data Size: These are the sizes for the OS-independent
12092 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12093 debug version of the code includes the debug output trace mechanism and
12094 has
12095 a 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
12105 2) iASL Compiler/Disassembler and Tools:
12106
12107 Modified the parser to allow the names IO, DMA, and IRQ to be used as
12108 namespace identifiers with no collision with existing resource descriptor
12109 macro names. This provides compatibility with other ASL compilers and is
12110 most useful for disassembly/recompilation of existing tables without
12111 parse
12112 errors. (With assistance from Thomas Renninger)
12113
12114 Disassembler: fixed an incorrect disassembly problem with the
12115 DataTableRegion and CopyObject operators. Fixed a possible fault during
12116 disassembly of some Alias operators.
12117
12118 ----------------------------------------
12119 12 May 2006. Summary of changes for version 20060512:
12120
12121 1) ACPI CA Core Subsystem:
12122
12123 Replaced the AcpiOsQueueForExecution interface with a new interface named
12124 AcpiOsExecute. The major difference is that the new interface does not
12125 have
12126 a Priority parameter, this appeared to be useless and has been replaced
12127 by
12128 a
12129 Type parameter. The Type tells the host what type of execution is being
12130 requested, such as global lock handler, notify handler, GPE handler, etc.
12131 This allows the host to queue and execute the request as appropriate for
12132 the
12133 request type, possibly using different work queues and different
12134 priorities
12135 for the various request types. This enables fixes for multithreading
12136 deadlock problems such as BZ #5534, and will require changes to all
12137 existing
12138 OS interface layers. (Alexey Starikovskiy and Bob Moore)
12139
12140 Fixed a possible memory leak associated with the support for the so-
12141 called
12142 "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
12143 Suietov)
12144
12145 Fixed a problem with the Load() operator where a table load from an
12146 operation region could overwrite an internal table buffer by up to 7
12147 bytes
12148 and cause alignment faults on IPF systems. (With assistance from Luming
12149 Yu)
12150
12151 Example Code and Data Size: These are the sizes for the OS-independent
12152 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12153 debug version of the code includes the debug output trace mechanism and
12154 has
12155 a 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
12166 2) iASL Compiler/Disassembler and Tools:
12167
12168 Disassembler: Implemented support to cross reference the internal
12169 namespace
12170 and automatically generate ASL External() statements for symbols not
12171 defined
12172 within the current table being disassembled. This will simplify the
12173 disassembly and recompilation of interdependent tables such as SSDTs
12174 since
12175 these statements will no longer have to be added manually.
12176
12177 Disassembler: Implemented experimental support to automatically detect
12178 invocations of external control methods and generate appropriate
12179 External()
12180 statements. This is problematic because the AML cannot be correctly
12181 parsed
12182 until the number of arguments for each control method is known.
12183 Currently,
12184 standalone method invocations and invocations as the source operand of a
12185 Store() statement are supported.
12186
12187 Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
12188 LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
12189 LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
12190 more readable and likely closer to the original ASL source.
12191
12192 ----------------------------------------
12193 21 April 2006. Summary of changes for version 20060421:
12194
12195 1) ACPI CA Core Subsystem:
12196
12197 Removed a device initialization optimization introduced in 20051216 where
12198 the _STA method was not run unless an _INI was also present for the same
12199 device. This optimization could cause problems because it could allow
12200 _INI
12201 methods to be run within a not-present device subtree. (If a not-present
12202 device had no _INI, _STA would not be run, the not-present status would
12203 not
12204 be discovered, and the children of the device would be incorrectly
12205 traversed.)
12206
12207 Implemented a new _STA optimization where namespace subtrees that do not
12208 contain _INI are identified and ignored during device initialization.
12209 Selectively running _STA can significantly improve boot time on large
12210 machines (with assistance from Len Brown.)
12211
12212 Implemented support for the device initialization case where the returned
12213 _STA flags indicate a device not-present but functioning. In this case,
12214 _INI
12215 is not run, but the device children are examined for presence, as per the
12216 ACPI specification.
12217
12218 Implemented an additional change to the IndexField support in order to
12219 conform to MS behavior. The value written to the Index Register is not
12220 simply a byte offset, it is a byte offset in units of the access width of
12221 the parent Index Field. (Fiodor Suietov)
12222
12223 Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
12224 interface is called during the creation of all AML operation regions, and
12225 allows the host OS to exert control over what addresses it will allow the
12226 AML code to access. Operation Regions whose addresses are disallowed will
12227 cause a runtime exception when they are actually accessed (will not
12228 affect
12229 or abort table loading.) See oswinxf or osunixxf for an example
12230 implementation.
12231
12232 Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
12233 interface allows the host OS to match the various "optional"
12234 interface/behavior strings for the _OSI predefined control method as
12235 appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
12236 for an example implementation.
12237
12238 Restructured and corrected various problems in the exception handling
12239 code
12240 paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
12241 (with assistance from Takayoshi Kochi.)
12242
12243 Modified the Linux source converter to ignore quoted string literals
12244 while
12245 converting identifiers from mixed to lower case. This will correct
12246 problems
12247 with the disassembler and other areas where such strings must not be
12248 modified.
12249
12250 The ACPI_FUNCTION_* macros no longer require quotes around the function
12251 name. This allows the Linux source converter to convert the names, now
12252 that
12253 the converter ignores quoted strings.
12254
12255 Example Code and Data Size: These are the sizes for the OS-independent
12256 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12257 debug version of the code includes the debug output trace mechanism and
12258 has
12259 a 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
12270 2) iASL Compiler/Disassembler and Tools:
12271
12272 Implemented 3 new warnings for iASL, and implemented multiple warning
12273 levels
12274 (w2 flag).
12275
12276 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
12277 not
12278 WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
12279 check for the possible timeout, a warning is issued.
12280
12281 2) Useless operators: If an ASL operator does not specify an optional
12282 target
12283 operand and it also does not use the function return value from the
12284 operator, a warning is issued since the operator effectively does
12285 nothing.
12286
12287 3) Unreferenced objects: If a namespace object is created, but never
12288 referenced, a warning is issued. This is a warning level 2 since there
12289 are
12290 cases where this is ok, such as when a secondary table is loaded that
12291 uses
12292 the unreferenced objects. Even so, care is taken to only flag objects
12293 that
12294 don'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
12296 expected that the OS will invoke them.
12297
12298 ----------------------------------------
12299 31 March 2006. Summary of changes for version 20060331:
12300
12301 1) ACPI CA Core Subsystem:
12302
12303 Implemented header file support for the following additional ACPI tables:
12304 ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
12305 support,
12306 all current and known ACPI tables are now defined in the ACPICA headers
12307 and
12308 are available for use by device drivers and other software.
12309
12310 Implemented support to allow tables that contain ACPI names with invalid
12311 characters to be loaded. Previously, this would cause the table load to
12312 fail, but since there are several known cases of such tables on existing
12313 machines, this change was made to enable ACPI support for them. Also,
12314 this
12315 matches the behavior of the Microsoft ACPI implementation.
12316
12317 Fixed a couple regressions introduced during the memory optimization in
12318 the
12319 20060317 release. The namespace node definition required additional
12320 reorganization and an internal datatype that had been changed to 8-bit
12321 was
12322 restored to 32-bit. (Valery Podrezov)
12323
12324 Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
12325 could be passed through to AcpiOsReleaseObject which is unexpected. Such
12326 null pointers are now trapped and ignored, matching the behavior of the
12327 previous implementation before the deployment of AcpiOsReleaseObject.
12328 (Valery Podrezov, Fiodor Suietov)
12329
12330 Fixed a memory mapping leak during the deletion of a SystemMemory
12331 operation
12332 region where a cached memory mapping was not deleted. This became a
12333 noticeable problem for operation regions that are defined within
12334 frequently
12335 used control methods. (Dana Meyers)
12336
12337 Reorganized the ACPI table header files into two main files: one for the
12338 ACPI tables consumed by the ACPICA core, and another for the
12339 miscellaneous
12340 ACPI tables that are consumed by the drivers and other software. The
12341 various
12342 FADT definitions were merged into one common section and three different
12343 tables (ACPI 1.0, 1.0+, and 2.0)
12344
12345 Example Code and Data Size: These are the sizes for the OS-independent
12346 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
12347 debug version of the code includes the debug output trace mechanism and
12348 has
12349 a 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
12359 2) iASL Compiler/Disassembler and Tools:
12360
12361 Disassembler: Implemented support to decode and format all non-AML ACPI
12362 tables (tables other than DSDTs and SSDTs.) This includes the new tables
12363 added to the ACPICA headers, therefore all current and known ACPI tables
12364 are
12365 supported.
12366
12367 Disassembler: The change to allow ACPI names with invalid characters also
12368 enables the disassembly of such tables. Invalid characters within names
12369 are
12370 changed to '*' to make the name printable; the iASL compiler will still
12371 generate an error for such names, however, since this is an invalid ACPI
12372 character.
12373
12374 Implemented an option for AcpiXtract (-a) to extract all tables found in
12375 the
12376 input file. The default invocation extracts only the DSDTs and SSDTs.
12377
12378 Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
12379 makefile for the AcpiXtract utility.
12380
12381 ----------------------------------------
12382 17 March 2006. Summary of changes for version 20060317:
12383
12384 1) ACPI CA Core Subsystem:
12385
12386 Implemented the use of a cache object for all internal namespace nodes.
12387 Since there are about 1000 static nodes in a typical system, this will
12388 decrease memory use for cache implementations that minimize per-
12389 allocation
12390 overhead (such as a slab allocator.)
12391
12392 Removed the reference count mechanism for internal namespace nodes, since
12393 it
12394 was deemed unnecessary. This reduces the size of each namespace node by
12395 about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
12396 case,
12397 and 32 bytes for the 64-bit case.
12398
12399 Optimized several internal data structures to reduce object size on 64-
12400 bit
12401 platforms by packing data within the 64-bit alignment. This includes the
12402 frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
12403 instances corresponding to the namespace objects.
12404
12405 Added two new strings for the predefined _OSI method: "Windows 2001.1
12406 SP1"
12407 and "Windows 2006".
12408
12409 Split the allocation tracking mechanism out to a separate file, from
12410 utalloc.c to uttrack.c. This mechanism appears to be only useful for
12411 application-level code. Kernels may wish to not include uttrack.c in
12412 distributions.
12413
12414 Removed all remnants of the obsolete ACPI_REPORT_* macros and the
12415 associated
12416 code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
12417 macros.)
12418
12419 Code and Data Size: These are the sizes for the acpica.lib produced by
12420 the
12421 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12422 ACPI
12423 driver or OSPM code. The debug version of the code includes the debug
12424 output
12425 trace mechanism and has a much larger code and data size. Note that these
12426 values will vary depending on the efficiency of the compiler and the
12427 compiler 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
12437 2) iASL Compiler/Disassembler and Tools:
12438
12439 Implemented an ANSI C version of the acpixtract utility. This version
12440 will
12441 automatically extract the DSDT and all SSDTs from the input acpidump text
12442 file and dump the binary output to separate files. It can also display a
12443 summary of the input file including the headers for each table found and
12444 will extract any single ACPI table, with any signature. (See
12445 source/tools/acpixtract)
12446
12447 ----------------------------------------
12448 10 March 2006. Summary of changes for version 20060310:
12449
12450 1) ACPI CA Core Subsystem:
12451
12452 Tagged all external interfaces to the subsystem with the new
12453 ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
12454 assist
12455 kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
12456 macro. The default definition is NULL.
12457
12458 Added the ACPI_THREAD_ID type for the return value from
12459 AcpiOsGetThreadId.
12460 This allows the host to define this as necessary to simplify kernel
12461 integration. The default definition is ACPI_NATIVE_UINT.
12462
12463 Fixed two interpreter problems related to error processing, the deletion
12464 of
12465 objects, and placing invalid pointers onto the internal operator result
12466 stack. BZ 6028, 6151 (Valery Podrezov)
12467
12468 Increased the reference count threshold where a warning is emitted for
12469 large
12470 reference counts in order to eliminate unnecessary warnings on systems
12471 with
12472 large namespaces (especially 64-bit.) Increased the value from 0x400 to
12473 0x800.
12474
12475 Due to universal disagreement as to the meaning of the 'c' in the
12476 calloc()
12477 function, the ACPI_MEM_CALLOCATE macro has been renamed to
12478 ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
12479 ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
12480 ACPI_FREE.
12481
12482 Code and Data Size: These are the sizes for the acpica.lib produced by
12483 the
12484 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12485 ACPI
12486 driver or OSPM code. The debug version of the code includes the debug
12487 output
12488 trace mechanism and has a much larger code and data size. Note that these
12489 values will vary depending on the efficiency of the compiler and the
12490 compiler 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
12500 2) iASL Compiler/Disassembler:
12501
12502 Disassembler: implemented support for symbolic resource descriptor
12503 references. If a CreateXxxxField operator references a fixed offset
12504 within
12505 a
12506 resource descriptor, a name is assigned to the descriptor and the offset
12507 is
12508 translated to the appropriate resource tag and pathname. The addition of
12509 this support brings the disassembled code very close to the original ASL
12510 source code and helps eliminate run-time errors when the disassembled
12511 code
12512 is modified (and recompiled) in such a way as to invalidate the original
12513 fixed offsets.
12514
12515 Implemented support for a Descriptor Name as the last parameter to the
12516 ASL
12517 Register() macro. This parameter was inadvertently left out of the ACPI
12518 specification, and will be added for ACPI 3.0b.
12519
12520 Fixed 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
12523 Fixed a problem with the error message that occurs when an invalid string
12524 is
12525 used for a _HID object (such as one with an embedded asterisk:
12526 "*PNP010A".)
12527 The correct message is now displayed.
12528
12529 ----------------------------------------
12530 17 February 2006. Summary of changes for version 20060217:
12531
12532 1) ACPI CA Core Subsystem:
12533
12534 Implemented a change to the IndexField support to match the behavior of
12535 the
12536 Microsoft AML interpreter. The value written to the Index register is now
12537 a
12538 byte offset, no longer an index based upon the width of the Data
12539 register.
12540 This should fix IndexField problems seen on some machines where the Data
12541 register is not exactly one byte wide. The ACPI specification will be
12542 clarified on this point.
12543
12544 Fixed a problem where several resource descriptor types could overrun the
12545 internal descriptor buffer due to size miscalculation: VendorShort,
12546 VendorLong, and Interrupt. This was noticed on IA64 machines, but could
12547 affect all platforms.
12548
12549 Fixed a problem where individual resource descriptors were misaligned
12550 within
12551 the internal buffer, causing alignment faults on IA64 platforms.
12552
12553 Code and Data Size: These are the sizes for the acpica.lib produced by
12554 the
12555 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
12556 ACPI
12557 driver or OSPM code. The debug version of the code includes the debug
12558 output
12559 trace mechanism and has a much larger code and data size. Note that these
12560 values will vary depending on the efficiency of the compiler and the
12561 compiler 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
12571 2) iASL Compiler/Disassembler:
12572
12573 Implemented support for new reserved names: _WDG and _WED are Microsoft
12574 extensions for Windows Instrumentation Management, _TDL is a new ACPI-
12575 defined method (Throttling Depth Limit.)
12576
12577 Fixed a problem where a zero-length VendorShort or VendorLong resource
12578 descriptor was incorrectly emitted as a descriptor of length one.
12579
12580 ----------------------------------------
12581 10 February 2006. Summary of changes for version 20060210:
12582
12583 1) ACPI CA Core Subsystem:
12584
12585 Removed a couple of extraneous ACPI_ERROR messages that appeared during
12586 normal execution. These became apparent after the conversion from
12587 ACPI_DEBUG_PRINT.
12588
12589 Fixed a problem where the CreateField operator could hang if the BitIndex
12590 or
12591 NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
12592
12593 Fixed a problem where a DeRefOf operation on a buffer object incorrectly
12594 failed with an exception. This also fixes a couple of related RefOf and
12595 DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
12596
12597 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
12598 of
12599 AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
12600 BZ
12601 5480)
12602
12603 Implemented a memory cleanup at the end of the execution of each
12604 iteration
12605 of an AML While() loop, preventing the accumulation of outstanding
12606 objects.
12607 (Valery Podrezov, BZ 5427)
12608
12609 Eliminated a chunk of duplicate code in the object resolution code.
12610 (Valery
12611 Podrezov, BZ 5336)
12612
12613 Fixed several warnings during the 64-bit code generation.
12614
12615 The AcpiSrc source code conversion tool now inserts one line of
12616 whitespace
12617 after an if() statement that is followed immediately by a comment,
12618 improving
12619 readability of the Linux code.
12620
12621 Code and Data Size: The current and previous library sizes for the core
12622 subsystem are shown below. These are the code and data sizes for the
12623 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12624 These
12625 values do not include any ACPI driver or OSPM code. The debug version of
12626 the
12627 code includes the debug output trace mechanism and has a much larger code
12628 and data size. Note that these values will vary depending on the
12629 efficiency
12630 of 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
12640 2) iASL Compiler/Disassembler:
12641
12642 Fixed a problem with the disassembly of a BankField operator with a
12643 complex
12644 expression for the BankValue parameter.
12645
12646 ----------------------------------------
12647 27 January 2006. Summary of changes for version 20060127:
12648
12649 1) ACPI CA Core Subsystem:
12650
12651 Implemented support in the Resource Manager to allow unresolved
12652 namestring
12653 references within resource package objects for the _PRT method. This
12654 support
12655 is in addition to the previously implemented unresolved reference support
12656 within the AML parser. If the interpreter slack mode is enabled, these
12657 unresolved references will be passed through to the caller as a NULL
12658 package
12659 entry.
12660
12661 Implemented and deployed new macros and functions for error and warning
12662 messages across the subsystem. These macros are simpler and generate less
12663 code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
12664 ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
12665 macros remain defined to allow ACPI drivers time to migrate to the new
12666 macros.
12667
12668 Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
12669 the
12670 Acquire/Release Lock OSL interfaces.
12671
12672 Fixed a problem where Alias ASL operators are sometimes not correctly
12673 resolved, in both the interpreter and the iASL compiler.
12674
12675 Fixed several problems with the implementation of the
12676 ConcatenateResTemplate
12677 ASL operator. As per the ACPI specification, zero length buffers are now
12678 treated as a single EndTag. One-length buffers always cause a fatal
12679 exception. Non-zero length buffers that do not end with a full 2-byte
12680 EndTag
12681 cause a fatal exception.
12682
12683 Fixed a possible structure overwrite in the AcpiGetObjectInfo external
12684 interface. (With assistance from Thomas Renninger)
12685
12686 Code and Data Size: The current and previous library sizes for the core
12687 subsystem are shown below. These are the code and data sizes for the
12688 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12689 These
12690 values do not include any ACPI driver or OSPM code. The debug version of
12691 the
12692 code includes the debug output trace mechanism and has a much larger code
12693 and data size. Note that these values will vary depending on the
12694 efficiency
12695 of 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
12705 2) iASL Compiler/Disassembler:
12706
12707 Fixed an internal error that was generated for any forward references to
12708 ASL
12709 Alias objects.
12710
12711 ----------------------------------------
12712 13 January 2006. Summary of changes for version 20060113:
12713
12714 1) ACPI CA Core Subsystem:
12715
12716 Added 2006 copyright to all module headers and signons. This affects
12717 virtually every file in the ACPICA core subsystem, iASL compiler, and the
12718 utilities.
12719
12720 Enhanced the ACPICA error reporting in order to simplify user migration
12721 to
12722 the non-debug version of ACPICA. Replaced all instances of the
12723 ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
12724 debug
12725 levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
12726 respectively. This preserves all error and warning messages in the non-
12727 debug
12728 version of the ACPICA code (this has been referred to as the "debug lite"
12729 option.) Over 200 cases were converted to create a total of over 380
12730 error/warning messages across the ACPICA code. This increases the code
12731 and
12732 data size of the default non-debug version of the code somewhat (about
12733 13K),
12734 but all error/warning reporting may be disabled if desired (and code
12735 eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
12736 configuration option. The size of the debug version of ACPICA remains
12737 about
12738 the same.
12739
12740 Fixed a memory leak within the AML Debugger "Set" command. One object was
12741 not properly deleted for every successful invocation of the command.
12742
12743 Code and Data Size: The current and previous library sizes for the core
12744 subsystem are shown below. These are the code and data sizes for the
12745 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12746 These
12747 values do not include any ACPI driver or OSPM code. The debug version of
12748 the
12749 code includes the debug output trace mechanism and has a much larger code
12750 and data size. Note that these values will vary depending on the
12751 efficiency
12752 of 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
12762 2) iASL Compiler/Disassembler:
12763
12764 The compiler now officially supports the ACPI 3.0a specification that was
12765 released on December 30, 2005. (Specification is available at
12766 www.acpi.info)
12767
12768 ----------------------------------------
12769 16 December 2005. Summary of changes for version 20051216:
12770
12771 1) ACPI CA Core Subsystem:
12772
12773 Implemented optional support to allow unresolved names within ASL Package
12774 objects. A null object is inserted in the package when a named reference
12775 cannot be located in the current namespace. Enabled via the interpreter
12776 slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
12777 machines
12778 that contain such code.
12779
12780 Implemented an optimization to the initialization sequence that can
12781 improve
12782 boot time. During ACPI device initialization, the _STA method is now run
12783 if
12784 and only if the _INI method exists. The _STA method is used to determine
12785 if
12786 the device is present; An _INI can only be run if _STA returns present,
12787 but
12788 it is a waste of time to run the _STA method if the _INI does not exist.
12789 (Prototype and assistance from Dong Wei)
12790
12791 Implemented use of the C99 uintptr_t for the pointer casting macros if it
12792 is
12793 available in the current compiler. Otherwise, the default (void *) cast
12794 is
12795 used as before.
12796
12797 Fixed some possible memory leaks found within the execution path of the
12798 Break, Continue, If, and CreateField operators. (Valery Podrezov)
12799
12800 Fixed a problem introduced in the 20051202 release where an exception is
12801 generated during method execution if a control method attempts to declare
12802 another method.
12803
12804 Moved resource descriptor string constants that are used by both the AML
12805 disassembler and AML debugger to the common utilities directory so that
12806 these components are independent.
12807
12808 Implemented support in the AcpiExec utility (-e switch) to globally
12809 ignore
12810 exceptions during control method execution (method is not aborted.)
12811
12812 Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
12813 generation.
12814
12815 Code and Data Size: The current and previous library sizes for the core
12816 subsystem are shown below. These are the code and data sizes for the
12817 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12818 These
12819 values do not include any ACPI driver or OSPM code. The debug version of
12820 the
12821 code includes the debug output trace mechanism and has a much larger code
12822 and data size. Note that these values will vary depending on the
12823 efficiency
12824 of 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
12834 2) iASL Compiler/Disassembler:
12835
12836 Fixed a problem where a CPU stack overflow fault could occur if a
12837 recursive
12838 method call was made from within a Return statement.
12839
12840 ----------------------------------------
12841 02 December 2005. Summary of changes for version 20051202:
12842
12843 1) ACPI CA Core Subsystem:
12844
12845 Modified the parsing of control methods to no longer create namespace
12846 objects during the first pass of the parse. Objects are now created only
12847 during the execute phase, at the moment the namespace creation operator
12848 is
12849 encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
12850 This
12851 should eliminate ALREADY_EXISTS exceptions seen on some machines where
12852 reentrant control methods are protected by an AML mutex. The mutex will
12853 now
12854 correctly block multiple threads from attempting to create the same
12855 object
12856 more than once.
12857
12858 Increased the number of available Owner Ids for namespace object tracking
12859 from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
12860 on
12861 some machines with a large number of ACPI tables (either static or
12862 dynamic).
12863
12864 Fixed a problem with the AcpiExec utility where a fault could occur when
12865 the
12866 -b switch (batch mode) is used.
12867
12868 Enhanced the namespace dump routine to output the owner ID for each
12869 namespace object.
12870
12871 Code and Data Size: The current and previous library sizes for the core
12872 subsystem are shown below. These are the code and data sizes for the
12873 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12874 These
12875 values do not include any ACPI driver or OSPM code. The debug version of
12876 the
12877 code includes the debug output trace mechanism and has a much larger code
12878 and data size. Note that these values will vary depending on the
12879 efficiency
12880 of 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
12890 2) iASL Compiler/Disassembler:
12891
12892 Fixed a parse error during compilation of certain Switch/Case constructs.
12893 To
12894 simplify the parse, the grammar now allows for multiple Default
12895 statements
12896 and this error is now detected and flagged during the analysis phase.
12897
12898 Disassembler: The disassembly now includes the contents of the original
12899 table header within a comment at the start of the file. This includes the
12900 name and version of the original ASL compiler.
12901
12902 ----------------------------------------
12903 17 November 2005. Summary of changes for version 20051117:
12904
12905 1) ACPI CA Core Subsystem:
12906
12907 Fixed a problem in the AML parser where the method thread count could be
12908 decremented below zero if any errors occurred during the method parse
12909 phase.
12910 This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
12911 machines.
12912 This also fixed a related regression with the mechanism that detects and
12913 corrects methods that cannot properly handle reentrancy (related to the
12914 deployment of the new OwnerId mechanism.)
12915
12916 Eliminated the pre-parsing of control methods (to detect errors) during
12917 table load. Related to the problem above, this was causing unwind issues
12918 if
12919 any errors occurred during the parse, and it seemed to be overkill. A
12920 table
12921 load should not be aborted if there are problems with any single control
12922 method, thus rendering this feature rather pointless.
12923
12924 Fixed a problem with the new table-driven resource manager where an
12925 internal
12926 buffer overflow could occur for small resource templates.
12927
12928 Implemented a new external interface, AcpiGetVendorResource. This
12929 interface
12930 will find and return a vendor-defined resource descriptor within a _CRS
12931 or
12932 _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
12933 Helgaas.
12934
12935 Removed the length limit (200) on string objects as per the upcoming ACPI
12936 3.0A specification. This affects the following areas of the interpreter:
12937 1)
12938 any implicit conversion of a Buffer to a String, 2) a String object
12939 result
12940 of the ASL Concatenate operator, 3) the String object result of the ASL
12941 ToString operator.
12942
12943 Fixed a problem in the Windows OS interface layer (OSL) where a
12944 WAIT_FOREVER
12945 on a semaphore object would incorrectly timeout. This allows the
12946 multithreading features of the AcpiExec utility to work properly under
12947 Windows.
12948
12949 Updated the Linux makefiles for the iASL compiler and AcpiExec to include
12950 the recently added file named "utresrc.c".
12951
12952 Code and Data Size: The current and previous library sizes for the core
12953 subsystem are shown below. These are the code and data sizes for the
12954 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12955 These
12956 values do not include any ACPI driver or OSPM code. The debug version of
12957 the
12958 code includes the debug output trace mechanism and has a much larger code
12959 and data size. Note that these values will vary depending on the
12960 efficiency
12961 of 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
12971 2) iASL Compiler/Disassembler:
12972
12973 Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
12974 specification. For the iASL compiler, this means that string literals
12975 within
12976 the source ASL can be of any length.
12977
12978 Enhanced the listing output to dump the AML code for resource descriptors
12979 immediately after the ASL code for each descriptor, instead of in a block
12980 at
12981 the end of the entire resource template.
12982
12983 Enhanced the compiler debug output to dump the entire original parse tree
12984 constructed during the parse phase, before any transforms are applied to
12985 the
12986 tree. The transformed tree is dumped also.
12987
12988 ----------------------------------------
12989 02 November 2005. Summary of changes for version 20051102:
12990
12991 1) ACPI CA Core Subsystem:
12992
12993 Modified the subsystem initialization sequence to improve GPE support.
12994 The
12995 GPE initialization has been split into two parts in order to defer
12996 execution
12997 of the _PRW methods (Power Resources for Wake) until after the hardware
12998 is
12999 fully initialized and the SCI handler is installed. This allows the _PRW
13000 methods to access fields protected by the Global Lock. This will fix
13001 systems
13002 where a NO_GLOBAL_LOCK exception has been seen during initialization.
13003
13004 Converted the ACPI internal object disassemble and display code within
13005 the
13006 AML debugger to fully table-driven operation, reducing code size and
13007 increasing maintainability.
13008
13009 Fixed a regression with the ConcatenateResTemplate() ASL operator
13010 introduced
13011 in the 20051021 release.
13012
13013 Implemented support for "local" internal ACPI object types within the
13014 debugger "Object" command and the AcpiWalkNamespace external interfaces.
13015 These local types include RegionFields, BankFields, IndexFields, Alias,
13016 and
13017 reference objects.
13018
13019 Moved common AML resource handling code into a new file, "utresrc.c".
13020 This
13021 code is shared by both the Resource Manager and the AML Debugger.
13022
13023 Code and Data Size: The current and previous library sizes for the core
13024 subsystem are shown below. These are the code and data sizes for the
13025 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13026 These
13027 values do not include any ACPI driver or OSPM code. The debug version of
13028 the
13029 code includes the debug output trace mechanism and has a much larger code
13030 and data size. Note that these values will vary depending on the
13031 efficiency
13032 of 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
13042 2) iASL Compiler/Disassembler:
13043
13044 Fixed a problem with very large initializer lists (more than 4000
13045 elements)
13046 for both Buffer and Package objects where the parse stack could overflow.
13047
13048 Enhanced the pre-compile source code scan for non-ASCII characters to
13049 ignore
13050 characters within comment fields. The scan is now always performed and is
13051 no
13052 longer optional, detecting invalid characters within a source file
13053 immediately rather than during the parse phase or later.
13054
13055 Enhanced the ASL grammar definition to force early reductions on all
13056 list-
13057 style grammar elements so that the overall parse stack usage is greatly
13058 reduced. This should improve performance and reduce the possibility of
13059 parse
13060 stack overflow.
13061
13062 Eliminated all reduce/reduce conflicts in the iASL parser generation.
13063 Also,
13064 with the addition of a %expected statement, the compiler generates from
13065 source with no warnings.
13066
13067 Fixed a possible segment fault in the disassembler if the input filename
13068 does not contain a "dot" extension (Thomas Renninger).
13069
13070 ----------------------------------------
13071 21 October 2005. Summary of changes for version 20051021:
13072
13073 1) ACPI CA Core Subsystem:
13074
13075 Implemented support for the EM64T and other x86-64 processors. This
13076 essentially entails recognizing that these processors support non-aligned
13077 memory transfers. Previously, all 64-bit processors were assumed to lack
13078 hardware support for non-aligned transfers.
13079
13080 Completed conversion of the Resource Manager to nearly full table-driven
13081 operation. Specifically, the resource conversion code (convert AML to
13082 internal format and the reverse) and the debug code to dump internal
13083 resource descriptors are fully table-driven, reducing code and data size
13084 and
13085 improving maintainability.
13086
13087 The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
13088 word
13089 on 64-bit processors instead of a fixed 32-bit word. (With assistance
13090 from
13091 Alexey Starikovskiy)
13092
13093 Implemented support within the resource conversion code for the Type-
13094 Specific byte within the various ACPI 3.0 *WordSpace macros.
13095
13096 Fixed some issues within the resource conversion code for the type-
13097 specific
13098 flags for both Memory and I/O address resource descriptors. For Memory,
13099 implemented support for the MTP and TTP flags. For I/O, split the TRS and
13100 TTP flags into two separate fields.
13101
13102 Code and Data Size: The current and previous library sizes for the core
13103 subsystem are shown below. These are the code and data sizes for the
13104 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13105 These
13106 values do not include any ACPI driver or OSPM code. The debug version of
13107 the
13108 code includes the debug output trace mechanism and has a much larger code
13109 and data size. Note that these values will vary depending on the
13110 efficiency
13111 of 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
13122 2) iASL Compiler/Disassembler:
13123
13124 Relaxed a compiler restriction that disallowed a ResourceIndex byte if
13125 the
13126 corresponding ResourceSource string was not also present in a resource
13127 descriptor declaration. This restriction caused problems with existing
13128 AML/ASL code that includes the Index byte without the string. When such
13129 AML
13130 was disassembled, it could not be compiled without modification. Further,
13131 the modified code created a resource template with a different size than
13132 the
13133 original, breaking code that used fixed offsets into the resource
13134 template
13135 buffer.
13136
13137 Removed a recent feature of the disassembler to ignore a lone
13138 ResourceIndex
13139 byte. This byte is now emitted if present so that the exact AML can be
13140 reproduced when the disassembled code is recompiled.
13141
13142 Improved comments and text alignment for the resource descriptor code
13143 emitted by the disassembler.
13144
13145 Implemented disassembler support for the ACPI 3.0 AccessSize field within
13146 a
13147 Register() resource descriptor.
13148
13149 ----------------------------------------
13150 30 September 2005. Summary of changes for version 20050930:
13151
13152 1) ACPI CA Core Subsystem:
13153
13154 Completed a major overhaul of the Resource Manager code - specifically,
13155 optimizations in the area of the AML/internal resource conversion code.
13156 The
13157 code has been optimized to simplify and eliminate duplicated code, CPU
13158 stack
13159 use has been decreased by optimizing function parameters and local
13160 variables, and naming conventions across the manager have been
13161 standardized
13162 for clarity and ease of maintenance (this includes function, parameter,
13163 variable, and struct/typedef names.) The update may force changes in some
13164 driver code, depending on how resources are handled by the host OS.
13165
13166 All Resource Manager dispatch and information tables have been moved to a
13167 single location for clarity and ease of maintenance. One new file was
13168 created, named "rsinfo.c".
13169
13170 The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
13171 guarantee that the argument is not evaluated twice, making them less
13172 prone
13173 to macro side-effects. However, since there exists the possibility of
13174 additional stack use if a particular compiler cannot optimize them (such
13175 as
13176 in the debug generation case), the original macros are optionally
13177 available.
13178 Note that some invocations of the return_VALUE macro may now cause size
13179 mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
13180 to
13181 eliminate these. (From Randy Dunlap)
13182
13183 Implemented a new mechanism to enable debug tracing for individual
13184 control
13185 methods. A new external interface, AcpiDebugTrace, is provided to enable
13186 this mechanism. The intent is to allow the host OS to easily enable and
13187 disable tracing for problematic control methods. This interface can be
13188 easily exposed to a user or debugger interface if desired. See the file
13189 psxface.c for details.
13190
13191 AcpiUtCallocate will now return a valid pointer if a length of zero is
13192 specified - a length of one is used and a warning is issued. This matches
13193 the behavior of AcpiUtAllocate.
13194
13195 Code and Data Size: The current and previous library sizes for the core
13196 subsystem are shown below. These are the code and data sizes for the
13197 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13198 These
13199 values do not include any ACPI driver or OSPM code. The debug version of
13200 the
13201 code includes the debug output trace mechanism and has a much larger code
13202 and data size. Note that these values will vary depending on the
13203 efficiency
13204 of 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
13214 2) iASL Compiler/Disassembler:
13215
13216 A remark is issued if the effective compile-time length of a package or
13217 buffer is zero. Previously, this was a warning.
13218
13219 ----------------------------------------
13220 16 September 2005. Summary of changes for version 20050916:
13221
13222 1) ACPI CA Core Subsystem:
13223
13224 Fixed a problem within the Resource Manager where support for the Generic
13225 Register descriptor was not fully implemented. This descriptor is now
13226 fully
13227 recognized, parsed, disassembled, and displayed.
13228
13229 Completely restructured the Resource Manager code to utilize table-driven
13230 dispatch and lookup, eliminating many of the large switch() statements.
13231 This
13232 reduces overall subsystem code size and code complexity. Affects the
13233 resource parsing and construction, disassembly, and debug dump output.
13234
13235 Cleaned up and restructured the debug dump output for all resource
13236 descriptors. Improved readability of the output and reduced code size.
13237
13238 Fixed a problem where changes to internal data structures caused the
13239 optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
13240
13241 Code and Data Size: The current and previous library sizes for the core
13242 subsystem are shown below. These are the code and data sizes for the
13243 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
13244 These
13245 values do not include any ACPI driver or OSPM code. The debug version of
13246 the
13247 code includes the debug output trace mechanism and has a much larger code
13248 and data size. Note that these values will vary depending on the
13249 efficiency
13250 of 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
13260 2) iASL Compiler/Disassembler:
13261
13262 Updated the disassembler to automatically insert an EndDependentFn()
13263 macro
13264 into the ASL stream if this macro is missing in the original AML code,
13265 simplifying compilation of the resulting ASL module.
13266
13267 Fixed a problem in the disassembler where a disassembled ResourceSource
13268 string (within a large resource descriptor) was not surrounded by quotes
13269 and
13270 not followed by a comma, causing errors when the resulting ASL module was
13271 compiled. Also, escape sequences within a ResourceSource string are now
13272 handled correctly (especially "\\")
13273
13274 ----------------------------------------
13275 02 September 2005. Summary of changes for version 20050902:
13276
13277 1) ACPI CA Core Subsystem:
13278
13279 Fixed a problem with the internal Owner ID allocation and deallocation
13280 mechanisms for control method execution and recursive method invocation.
13281 This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
13282 messages seen on some systems. Recursive method invocation depth is
13283 currently limited to 255. (Alexey Starikovskiy)
13284
13285 Completely eliminated all vestiges of support for the "module-level
13286 executable code" until this support is fully implemented and debugged.
13287 This
13288 should eliminate the NO_RETURN_VALUE exceptions seen during table load on
13289 some systems that invoke this support.
13290
13291 Fixed a problem within the resource manager code where the transaction
13292 flags
13293 for a 64-bit address descriptor were handled incorrectly in the type-
13294 specific flag byte.
13295
13296 Consolidated duplicate code within the address descriptor resource
13297 manager
13298 code, reducing overall subsystem code size.
13299
13300 Fixed a fault when using the AML debugger "disassemble" command to
13301 disassemble individual control methods.
13302
13303 Removed references to the "release_current" directory within the Unix
13304 release package.
13305
13306 Code and Data Size: The current and previous core subsystem library sizes
13307 are shown below. These are the code and data sizes for the acpica.lib
13308 produced by the Microsoft Visual C++ 6.0 compiler. These values do not
13309 include any ACPI driver or OSPM code. The debug version of the code
13310 includes
13311 the debug output trace mechanism and has a much larger code and data
13312 size.
13313 Note that these values will vary depending on the efficiency of the
13314 compiler
13315 and 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
13325 2) iASL Compiler/Disassembler:
13326
13327 Implemented an error check for illegal duplicate values in the interrupt
13328 and
13329 dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
13330 Interrupt().
13331
13332 Implemented error checking for the Irq() and IrqNoFlags() macros to
13333 detect
13334 too many values in the interrupt list (16 max) and invalid values in the
13335 list (range 0 - 15)
13336
13337 The maximum length string literal within an ASL file is now restricted to
13338 200 characters as per the ACPI specification.
13339
13340 Fixed a fault when using the -ln option (generate namespace listing).
13341
13342 Implemented an error check to determine if a DescriptorName within a
13343 resource descriptor has already been used within the current scope.
13344
13345 ----------------------------------------
13346 15 August 2005. Summary of changes for version 20050815:
13347
13348 1) ACPI CA Core Subsystem:
13349
13350 Implemented a full bytewise compare to determine if a table load request
13351 is
13352 attempting to load a duplicate table. The compare is performed if the
13353 table
13354 signatures and table lengths match. This will allow different tables with
13355 the same OEM Table ID and revision to be loaded - probably against the
13356 ACPI
13357 specification, but discovered in the field nonetheless.
13358
13359 Added the changes.txt logfile to each of the zipped release packages.
13360
13361 Code and Data Size: Current and previous core subsystem library sizes are
13362 shown below. These are the code and data sizes for the acpica.lib
13363 produced
13364 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13365 any ACPI driver or OSPM code. The debug version of the code includes the
13366 debug output trace mechanism and has a much larger code and data size.
13367 Note
13368 that these values will vary depending on the efficiency of the compiler
13369 and
13370 the 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
13380 2) iASL Compiler/Disassembler:
13381
13382 Fixed a problem where incorrect AML code could be generated for Package
13383 objects if optimization is disabled (via the -oa switch).
13384
13385 Fixed a problem with where incorrect AML code is generated for variable-
13386 length packages when the package length is not specified and the number
13387 of
13388 initializer values is greater than 255.
13389
13390
13391 ----------------------------------------
13392 29 July 2005. Summary of changes for version 20050729:
13393
13394 1) ACPI CA Core Subsystem:
13395
13396 Implemented support to ignore an attempt to install/load a particular
13397 ACPI
13398 table more than once. Apparently there exists BIOS code that repeatedly
13399 attempts to load the same SSDT upon certain events. With assistance from
13400 Venkatesh Pallipadi.
13401
13402 Restructured the main interface to the AML parser in order to correctly
13403 handle all exceptional conditions. This will prevent leakage of the
13404 OwnerId
13405 resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
13406 some
13407 machines. With assistance from Alexey Starikovskiy.
13408
13409 Support for "module level code" has been disabled in this version due to
13410 a
13411 number of issues that have appeared on various machines. The support can
13412 be
13413 enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
13414 compilation. When the issues are fully resolved, the code will be enabled
13415 by
13416 default again.
13417
13418 Modified the internal functions for debug print support to define the
13419 FunctionName parameter as a (const char *) for compatibility with
13420 compiler
13421 built-in macros such as __FUNCTION__, etc.
13422
13423 Linted the entire ACPICA source tree for both 32-bit and 64-bit.
13424
13425 Implemented support to display an object count summary for the AML
13426 Debugger
13427 commands Object and Methods.
13428
13429 Code and Data Size: Current and previous core subsystem library sizes are
13430 shown below. These are the code and data sizes for the acpica.lib
13431 produced
13432 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13433 any ACPI driver or OSPM code. The debug version of the code includes the
13434 debug output trace mechanism and has a much larger code and data size.
13435 Note
13436 that these values will vary depending on the efficiency of the compiler
13437 and
13438 the 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
13448 2) iASL Compiler/Disassembler:
13449
13450 Fixed a regression that appeared in the 20050708 version of the compiler
13451 where an error message was inadvertently emitted for invocations of the
13452 _OSI
13453 reserved control method.
13454
13455 ----------------------------------------
13456 08 July 2005. Summary of changes for version 20050708:
13457
13458 1) ACPI CA Core Subsystem:
13459
13460 The use of the CPU stack in the debug version of the subsystem has been
13461 considerably reduced. Previously, a debug structure was declared in every
13462 function that used the debug macros. This structure has been removed in
13463 favor of declaring the individual elements as parameters to the debug
13464 functions. This reduces the cumulative stack use during nested execution
13465 of
13466 ACPI function calls at the cost of a small increase in the code size of
13467 the
13468 debug version of the subsystem. With assistance from Alexey Starikovskiy
13469 and
13470 Len Brown.
13471
13472 Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
13473 headers to define a macro that will return the current function name at
13474 runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
13475 by
13476 the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
13477 compiler-dependent header, the function name is saved on the CPU stack
13478 (one
13479 pointer per function.) This mechanism is used because apparently there
13480 exists no standard ANSI-C defined macro that that returns the function
13481 name.
13482
13483 Redesigned and reimplemented the "Owner ID" mechanism used to track
13484 namespace objects created/deleted by ACPI tables and control method
13485 execution. A bitmap is now used to allocate and free the IDs, thus
13486 solving
13487 the wraparound problem present in the previous implementation. The size
13488 of
13489 the namespace node descriptor was reduced by 2 bytes as a result (Alexey
13490 Starikovskiy).
13491
13492 Removed the UINT32_BIT and UINT16_BIT types that were used for the
13493 bitfield
13494 flag definitions within the headers for the predefined ACPI tables. These
13495 have been replaced by UINT8_BIT in order to increase the code portability
13496 of
13497 the subsystem. If the use of UINT8 remains a problem, we may be forced to
13498 eliminate bitfields entirely because of a lack of portability.
13499
13500 Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
13501 This
13502 is a frequently used function and this improvement increases the
13503 performance
13504 of the entire subsystem (Alexey Starikovskiy).
13505
13506 Fixed several possible memory leaks and the inverse - premature object
13507 deletion (Alexey Starikovskiy).
13508
13509 Code and Data Size: Current and previous core subsystem library sizes are
13510 shown below. These are the code and data sizes for the acpica.lib
13511 produced
13512 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13513 any ACPI driver or OSPM code. The debug version of the code includes the
13514 debug output trace mechanism and has a much larger code and data size.
13515 Note
13516 that these values will vary depending on the efficiency of the compiler
13517 and
13518 the 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 ----------------------------------------
13528 24 June 2005. Summary of changes for version 20050624:
13529
13530 1) ACPI CA Core Subsystem:
13531
13532 Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
13533 the host-defined cache object. This allows the OSL implementation to
13534 define
13535 and type this object in any manner desired, simplifying the OSL
13536 implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
13537 Linux, and should be defined in the OS-specific header file for other
13538 operating systems as required.
13539
13540 Changed the interface to AcpiOsAcquireObject to directly return the
13541 requested object as the function return (instead of ACPI_STATUS.) This
13542 change was made for performance reasons, since this is the purpose of the
13543 interface in the first place. AcpiOsAcquireObject is now similar to the
13544 AcpiOsAllocate interface.
13545
13546 Implemented a new AML debugger command named Businfo. This command
13547 displays
13548 information about all devices that have an associate _PRT object. The
13549 _ADR,
13550 _HID, _UID, and _CID are displayed for these devices.
13551
13552 Modified the initialization sequence in AcpiInitializeSubsystem to call
13553 the
13554 OSL interface AcpiOslInitialize first, before any local initialization.
13555 This
13556 change was required because the global initialization now calls OSL
13557 interfaces.
13558
13559 Enhanced the Dump command to display the entire contents of Package
13560 objects
13561 (including all sub-objects and their values.)
13562
13563 Restructured the code base to split some files because of size and/or
13564 because the code logically belonged in a separate file. New files are
13565 listed
13566 below. All makefiles and project files included in the ACPI CA release
13567 have
13568 been 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
13574 Code and Data Size: Current and previous core subsystem library sizes are
13575 shown below. These are the code and data sizes for the acpica.lib
13576 produced
13577 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13578 any ACPI driver or OSPM code. The debug version of the code includes the
13579 debug output trace mechanism and has a much larger code and data size.
13580 Note
13581 that these values will vary depending on the efficiency of the compiler
13582 and
13583 the 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
13593 2) iASL Compiler/Disassembler:
13594
13595 Fixed a regression introduced in version 20050513 where the use of a
13596 Package
13597 object within a Case() statement caused a compile time exception. The
13598 original behavior has been restored (a Match() operator is emitted.)
13599
13600 ----------------------------------------
13601 17 June 2005. Summary of changes for version 20050617:
13602
13603 1) ACPI CA Core Subsystem:
13604
13605 Moved the object cache operations into the OS interface layer (OSL) to
13606 allow
13607 the host OS to handle these operations if desired (for example, the Linux
13608 OSL will invoke the slab allocator). This support is optional; the
13609 compile
13610 time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
13611 cache
13612 code in the ACPI CA core. The new OSL interfaces are shown below. See
13613 utalloc.c for an example implementation, and acpiosxf.h for the exact
13614 interface definitions. With assistance from Alexey Starikovskiy.
13615 AcpiOsCreateCache
13616 AcpiOsDeleteCache
13617 AcpiOsPurgeCache
13618 AcpiOsAcquireObject
13619 AcpiOsReleaseObject
13620
13621 Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
13622 return
13623 and restore a flags parameter. This fits better with many OS lock models.
13624 Note: the current execution state (interrupt handler or not) is no longer
13625 passed to these interfaces. If necessary, the OSL must determine this
13626 state
13627 by itself, a simple and fast operation. With assistance from Alexey
13628 Starikovskiy.
13629
13630 Fixed a problem in the ACPI table handling where a valid XSDT was assumed
13631 present if the revision of the RSDP was 2 or greater. According to the
13632 ACPI
13633 specification, the XSDT is optional in all cases, and the table manager
13634 therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
13635 Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
13636 contain
13637 only the RSDT.
13638
13639 Fixed an interpreter problem with the Mid() operator in the case of an
13640 input
13641 string where the resulting output string is of zero length. It now
13642 correctly
13643 returns a valid, null terminated string object instead of a string object
13644 with a null pointer.
13645
13646 Fixed a problem with the control method argument handling to allow a
13647 store
13648 to an Arg object that already contains an object of type Device. The
13649 Device
13650 object is now correctly overwritten. Previously, an error was returned.
13651
13652
13653 Enhanced the debugger Find command to emit object values in addition to
13654 the
13655 found object pathnames. The output format is the same as the dump
13656 namespace
13657 command.
13658
13659 Enhanced the debugger Set command. It now has the ability to set the
13660 value
13661 of any Named integer object in the namespace (Previously, only method
13662 locals
13663 and args could be set.)
13664
13665 Code and Data Size: Current and previous core subsystem library sizes are
13666 shown below. These are the code and data sizes for the acpica.lib
13667 produced
13668 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13669 any ACPI driver or OSPM code. The debug version of the code includes the
13670 debug output trace mechanism and has a much larger code and data size.
13671 Note
13672 that these values will vary depending on the efficiency of the compiler
13673 and
13674 the 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
13684 2) iASL Compiler/Disassembler:
13685
13686 Fixed a regression in the disassembler where if/else/while constructs
13687 were
13688 output incorrectly. This problem was introduced in the previous release
13689 (20050526). This problem also affected the single-step disassembly in the
13690 debugger.
13691
13692 Fixed a problem where compiling the reserved _OSI method would randomly
13693 (but
13694 rarely) produce compile errors.
13695
13696 Enhanced the disassembler to emit compilable code in the face of
13697 incorrect
13698 AML resource descriptors. If the optional ResourceSourceIndex is present,
13699 but the ResourceSource is not, do not emit the ResourceSourceIndex in the
13700 disassembly. Otherwise, the resulting code cannot be compiled without
13701 errors.
13702
13703 ----------------------------------------
13704 26 May 2005. Summary of changes for version 20050526:
13705
13706 1) ACPI CA Core Subsystem:
13707
13708 Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
13709 the module level (not within a control method.) These opcodes are
13710 executed
13711 exactly once at the time the table is loaded. This type of code was legal
13712 up
13713 until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
13714 in
13715 order to provide backwards compatibility with earlier BIOS
13716 implementations.
13717 This eliminates the "Encountered executable code at module level" warning
13718 that was previously generated upon detection of such code.
13719
13720 Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
13721 inadvertently be generated during the lookup of namespace objects in the
13722 second pass parse of ACPI tables and control methods. It appears that
13723 this
13724 problem could occur during the resolution of forward references to
13725 namespace
13726 objects.
13727
13728 Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
13729 corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
13730 allows the deadlock detection debug code to be compiled out in the normal
13731 case, improving mutex performance (and overall subsystem performance)
13732 considerably.
13733
13734 Implemented a handful of miscellaneous fixes for possible memory leaks on
13735 error conditions and error handling control paths. These fixes were
13736 suggested by FreeBSD and the Coverity Prevent source code analysis tool.
13737
13738 Added a check for a null RSDT pointer in AcpiGetFirmwareTable
13739 (tbxfroot.c)
13740 to prevent a fault in this error case.
13741
13742 Code and Data Size: Current and previous core subsystem library sizes are
13743 shown below. These are the code and data sizes for the acpica.lib
13744 produced
13745 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13746 any ACPI driver or OSPM code. The debug version of the code includes the
13747 debug output trace mechanism and has a much larger code and data size.
13748 Note
13749 that these values will vary depending on the efficiency of the compiler
13750 and
13751 the 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
13761 2) iASL Compiler/Disassembler:
13762
13763 Implemented support to allow Type 1 and Type 2 ASL operators to appear at
13764 the module level (not within a control method.) These operators will be
13765 executed once at the time the table is loaded. This type of code was
13766 legal
13767 up until the release of ACPI 2.0B (2002) and is now supported by the iASL
13768 compiler in order to provide backwards compatibility with earlier BIOS
13769 ASL
13770 code.
13771
13772 The ACPI integer width (specified via the table revision ID or the -r
13773 override, 32 or 64 bits) is now used internally during compile-time
13774 constant
13775 folding to ensure that constants are truncated to 32 bits if necessary.
13776 Previously, the revision ID value was only emitted in the AML table
13777 header.
13778
13779 An error message is now generated for the Mutex and Method operators if
13780 the
13781 SyncLevel parameter is outside the legal range of 0 through 15.
13782
13783 Fixed a problem with the Method operator ParameterTypes list handling
13784 (ACPI
13785 3.0). Previously, more than 2 types or 2 arguments generated a syntax
13786 error.
13787 The actual underlying implementation of method argument typechecking is
13788 still under development, however.
13789
13790 ----------------------------------------
13791 13 May 2005. Summary of changes for version 20050513:
13792
13793 1) ACPI CA Core Subsystem:
13794
13795 Implemented support for PCI Express root bridges -- added support for
13796 device
13797 PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
13798
13799 The interpreter now automatically truncates incoming 64-bit constants to
13800 32
13801 bits if currently executing out of a 32-bit ACPI table (Revision < 2).
13802 This
13803 also affects the iASL compiler constant folding. (Note: as per below, the
13804 iASL compiler no longer allows 64-bit constants within 32-bit tables.)
13805
13806 Fixed a problem where string and buffer objects with "static" pointers
13807 (pointers to initialization data within an ACPI table) were not handled
13808 consistently. The internal object copy operation now always copies the
13809 data
13810 to a newly allocated buffer, regardless of whether the source object is
13811 static or not.
13812
13813 Fixed a problem with the FromBCD operator where an implicit result
13814 conversion was improperly performed while storing the result to the
13815 target
13816 operand. Since this is an "explicit conversion" operator, the implicit
13817 conversion should never be performed on the output.
13818
13819 Fixed a problem with the CopyObject operator where a copy to an existing
13820 named object did not always completely overwrite the existing object
13821 stored
13822 at name. Specifically, a buffer-to-buffer copy did not delete the
13823 existing
13824 buffer.
13825
13826 Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
13827 and
13828 structs for consistency.
13829
13830 Code and Data Size: Current and previous core subsystem library sizes are
13831 shown below. These are the code and data sizes for the acpica.lib
13832 produced
13833 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13834 any ACPI driver or OSPM code. The debug version of the code includes the
13835 debug output trace mechanism and has a much larger code and data size.
13836 Note
13837 that these values will vary depending on the efficiency of the compiler
13838 and
13839 the 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
13849 2) iASL Compiler/Disassembler:
13850
13851 The compiler now emits a warning if an attempt is made to generate a 64-
13852 bit
13853 integer constant from within a 32-bit ACPI table (Revision < 2). The
13854 integer
13855 is truncated to 32 bits.
13856
13857 Fixed a problem with large package objects: if the static length of the
13858 package is greater than 255, the "variable length package" opcode is
13859 emitted. Previously, this caused an error. This requires an update to the
13860 ACPI spec, since it currently (incorrectly) states that packages larger
13861 than
13862 255 elements are not allowed.
13863
13864 The disassembler now correctly handles variable length packages and
13865 packages
13866 larger than 255 elements.
13867
13868 ----------------------------------------
13869 08 April 2005. Summary of changes for version 20050408:
13870
13871 1) ACPI CA Core Subsystem:
13872
13873 Fixed three cases in the interpreter where an "index" argument to an ASL
13874 function was still (internally) 32 bits instead of the required 64 bits.
13875 This was the Index argument to the Index, Mid, and Match operators.
13876
13877 The "strupr" function is now permanently local (AcpiUtStrupr), since this
13878 is
13879 not a POSIX-defined function and not present in most kernel-level C
13880 libraries. All references to the C library strupr function have been
13881 removed
13882 from the headers.
13883
13884 Completed the deployment of static functions/prototypes. All prototypes
13885 with
13886 the static attribute have been moved from the headers to the owning C
13887 file.
13888
13889 Implemented an extract option (-e) for the AcpiBin utility (AML binary
13890 utility). This option allows the utility to extract individual ACPI
13891 tables
13892 from the output of AcpiDmp. It provides the same functionality of the
13893 acpixtract.pl perl script without the worry of setting the correct perl
13894 options. AcpiBin runs on Windows and has not yet been generated/validated
13895 in
13896 the Linux/Unix environment (but should be soon).
13897
13898 Updated and fixed the table dump option for AcpiBin (-d). This option
13899 converts a single ACPI table to a hex/ascii file, similar to the output
13900 of
13901 AcpiDmp.
13902
13903 Code and Data Size: Current and previous core subsystem library sizes are
13904 shown below. These are the code and data sizes for the acpica.lib
13905 produced
13906 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13907 any ACPI driver or OSPM code. The debug version of the code includes the
13908 debug output trace mechanism and has a much larger code and data size.
13909 Note
13910 that these values will vary depending on the efficiency of the compiler
13911 and
13912 the 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
13922 2) iASL Compiler/Disassembler:
13923
13924 Disassembler fix: Added a check to ensure that the table length found in
13925 the
13926 ACPI table header within the input file is not longer than the actual
13927 input
13928 file size. This indicates some kind of file or table corruption.
13929
13930 ----------------------------------------
13931 29 March 2005. Summary of changes for version 20050329:
13932
13933 1) ACPI CA Core Subsystem:
13934
13935 An error is now generated if an attempt is made to create a Buffer Field
13936 of
13937 length zero (A CreateField with a length operand of zero.)
13938
13939 The interpreter now issues a warning whenever executable code at the
13940 module
13941 level is detected during ACPI table load. This will give some idea of the
13942 prevalence of this type of code.
13943
13944 Implemented support for references to named objects (other than control
13945 methods) within package objects.
13946
13947 Enhanced package object output for the debug object. Package objects are
13948 now
13949 completely dumped, showing all elements.
13950
13951 Enhanced miscellaneous object output for the debug object. Any object can
13952 now be written to the debug object (for example, a device object can be
13953 written, and the type of the object will be displayed.)
13954
13955 The "static" qualifier has been added to all local functions across both
13956 the
13957 core subsystem and the iASL compiler.
13958
13959 The number of "long" lines (> 80 chars) within the source has been
13960 significantly reduced, by about 1/3.
13961
13962 Cleaned up all header files to ensure that all CA/iASL functions are
13963 prototyped (even static functions) and the formatting is consistent.
13964
13965 Two new header files have been added, acopcode.h and acnames.h.
13966
13967 Removed several obsolete functions that were no longer used.
13968
13969 Code and Data Size: Current and previous core subsystem library sizes are
13970 shown below. These are the code and data sizes for the acpica.lib
13971 produced
13972 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13973 any ACPI driver or OSPM code. The debug version of the code includes the
13974 debug output trace mechanism and has a much larger code and data size.
13975 Note
13976 that these values will vary depending on the efficiency of the compiler
13977 and
13978 the 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
13989 2) iASL Compiler/Disassembler:
13990
13991 Fixed a problem with the resource descriptor generation/support. For the
13992 ResourceSourceIndex and the ResourceSource fields, both must be present,
13993 or
13994 both must be not present - can't have one without the other.
13995
13996 The compiler now returns non-zero from the main procedure if any errors
13997 have
13998 occurred during the compilation.
13999
14000
14001 ----------------------------------------
14002 09 March 2005. Summary of changes for version 20050309:
14003
14004 1) ACPI CA Core Subsystem:
14005
14006 The string-to-buffer implicit conversion code has been modified again
14007 after
14008 a change to the ACPI specification. In order to match the behavior of
14009 the
14010 other major ACPI implementation, the target buffer is no longer truncated
14011 if
14012 the source string is smaller than an existing target buffer. This change
14013 requires an update to the ACPI spec, and should eliminate the recent
14014 AE_AML_BUFFER_LIMIT issues.
14015
14016 The "implicit return" support was rewritten to a new algorithm that
14017 solves
14018 the general case. Rather than attempt to determine when a method is about
14019 to
14020 exit, the result of every ASL operator is saved momentarily until the
14021 very
14022 next ASL operator is executed. Therefore, no matter how the method exits,
14023 there will always be a saved implicit return value. This feature is only
14024 enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
14025 eliminate
14026 AE_AML_NO_RETURN_VALUE errors when enabled.
14027
14028 Implemented implicit conversion support for the predicate (operand) of
14029 the
14030 If, Else, and While operators. String and Buffer arguments are
14031 automatically
14032 converted to Integers.
14033
14034 Changed the string-to-integer conversion behavior to match the new ACPI
14035 errata: "If no integer object exists, a new integer is created. The ASCII
14036 string is interpreted as a hexadecimal constant. Each string character is
14037 interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
14038 with the first character as the most significant digit, and ending with
14039 the
14040 first non-hexadecimal character or end-of-string." This means that the
14041 first
14042 non-hex character terminates the conversion and this is the code that was
14043 changed.
14044
14045 Fixed a problem where the ObjectType operator would fail (fault) when
14046 used
14047 on an Index of a Package which pointed to a null package element. The
14048 operator now properly returns zero (Uninitialized) in this case.
14049
14050 Fixed a problem where the While operator used excessive memory by not
14051 properly popping the result stack during execution. There was no memory
14052 leak
14053 after execution, however. (Code provided by Valery Podrezov.)
14054
14055 Fixed a problem where references to control methods within Package
14056 objects
14057 caused the method to be invoked, instead of producing a reference object
14058 pointing to the method.
14059
14060 Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
14061 to
14062 improve performance and reduce code size. (Code provided by Alexey
14063 Starikovskiy.)
14064
14065 Code and Data Size: Current and previous core subsystem library sizes are
14066 shown below. These are the code and data sizes for the acpica.lib
14067 produced
14068 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14069 any ACPI driver or OSPM code. The debug version of the code includes the
14070 debug output trace mechanism and has a much larger code and data size.
14071 Note
14072 that these values will vary depending on the efficiency of the compiler
14073 and
14074 the 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
14084 2) iASL Compiler/Disassembler:
14085
14086 Fixed a problem with the Return operator with no arguments. Since the AML
14087 grammar for the byte encoding requires an operand for the Return opcode,
14088 the
14089 compiler now emits a Return(Zero) for this case. An ACPI specification
14090 update has been written for this case.
14091
14092 For tables other than the DSDT, namepath optimization is automatically
14093 disabled. This is because SSDTs can be loaded anywhere in the namespace,
14094 the
14095 compiler has no knowledge of where, and thus cannot optimize namepaths.
14096
14097 Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
14098 inadvertently omitted from the ACPI specification, and will require an
14099 update to the spec.
14100
14101 The source file scan for ASCII characters is now optional (-a). This
14102 change
14103 was made because some vendors place non-ascii characters within comments.
14104 However, the scan is simply a brute-force byte compare to ensure all
14105 characters in the file are in the range 0x00 to 0x7F.
14106
14107 Fixed a problem with the CondRefOf operator where the compiler was
14108 inappropriately checking for the existence of the target. Since the point
14109 of
14110 the operator is to check for the existence of the target at run-time, the
14111 compiler no longer checks for the target existence.
14112
14113 Fixed a problem where errors generated from the internal AML interpreter
14114 during constant folding were not handled properly, causing a fault.
14115
14116 Fixed a problem with overly aggressive range checking for the Stall
14117 operator. The valid range (max 255) is now only checked if the operand is
14118 of
14119 type Integer. All other operand types cannot be statically checked.
14120
14121 Fixed a problem where control method references within the RefOf,
14122 DeRefOf,
14123 and ObjectType operators were not treated properly. They are now treated
14124 as
14125 actual references, not method invocations.
14126
14127 Fixed and enhanced the "list namespace" option (-ln). This option was
14128 broken
14129 a number of releases ago.
14130
14131 Improved error handling for the Field, IndexField, and BankField
14132 operators.
14133 The compiler now cleanly reports and recovers from errors in the field
14134 component (FieldUnit) list.
14135
14136 Fixed a disassembler problem where the optional ResourceDescriptor fields
14137 TRS and TTP were not always handled correctly.
14138
14139 Disassembler - Comments in output now use "//" instead of "/*"
14140
14141 ----------------------------------------
14142 28 February 2005. Summary of changes for version 20050228:
14143
14144 1) ACPI CA Core Subsystem:
14145
14146 Fixed a problem where the result of an Index() operator (an object
14147 reference) must increment the reference count on the target object for
14148 the
14149 life of the object reference.
14150
14151 Implemented AML Interpreter and Debugger support for the new ACPI 3.0
14152 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
14153 WordSpace
14154 resource descriptors.
14155
14156 Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
14157 Space Descriptor" string, indicating interpreter support for the
14158 descriptors
14159 above.
14160
14161 Implemented header support for the new ACPI 3.0 FADT flag bits.
14162
14163 Implemented header support for the new ACPI 3.0 PCI Express bits for the
14164 PM1
14165 status/enable registers.
14166
14167 Updated header support for the MADT processor local Apic struct and MADT
14168 platform interrupt source struct for new ACPI 3.0 fields.
14169
14170 Implemented header support for the SRAT and SLIT ACPI tables.
14171
14172 Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
14173 flag
14174 at runtime.
14175
14176 Code and Data Size: Current and previous core subsystem library sizes are
14177 shown below. These are the code and data sizes for the acpica.lib
14178 produced
14179 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14180 any ACPI driver or OSPM code. The debug version of the code includes the
14181 debug output trace mechanism and has a much larger code and data size.
14182 Note
14183 that these values will vary depending on the efficiency of the compiler
14184 and
14185 the 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
14195 2) iASL Compiler/Disassembler:
14196
14197 Fixed a problem with the internal 64-bit String-to-integer conversion
14198 with
14199 strings less than two characters long.
14200
14201 Fixed a problem with constant folding where the result of the Index()
14202 operator can not be considered a constant. This means that Index() cannot
14203 be
14204 a type3 opcode and this will require an update to the ACPI specification.
14205
14206 Disassembler: Implemented support for the TTP, MTP, and TRS resource
14207 descriptor fields. These fields were inadvertently ignored and not output
14208 in
14209 the disassembly of the resource descriptor.
14210
14211
14212 ----------------------------------------
14213 11 February 2005. Summary of changes for version 20050211:
14214
14215 1) ACPI CA Core Subsystem:
14216
14217 Implemented ACPI 3.0 support for implicit conversion within the Match()
14218 operator. MatchObjects can now be of type integer, buffer, or string
14219 instead
14220 of just type integer. Package elements are implicitly converted to the
14221 type
14222 of the MatchObject. This change aligns the behavior of Match() with the
14223 behavior of the other logical operators (LLess(), etc.) It also requires
14224 an
14225 errata change to the ACPI specification as this support was intended for
14226 ACPI 3.0, but was inadvertently omitted.
14227
14228 Fixed a problem with the internal implicit "to buffer" conversion.
14229 Strings
14230 that are converted to buffers will cause buffer truncation if the string
14231 is
14232 smaller than the target buffer. Integers that are converted to buffers
14233 will
14234 not cause buffer truncation, only zero extension (both as per the ACPI
14235 spec.) The problem was introduced when code was added to truncate the
14236 buffer, but this should not be performed in all cases, only the string
14237 case.
14238
14239 Fixed a problem with the Buffer and Package operators where the
14240 interpreter
14241 would get confused if two such operators were used as operands to an ASL
14242 operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
14243 stack was not being popped after the execution of these operators,
14244 resulting
14245 in an AE_NO_RETURN_VALUE exception.
14246
14247 Fixed a problem with constructs of the form Store(Index(...),...). The
14248 reference object returned from Index was inadvertently resolved to an
14249 actual
14250 value. This problem was introduced in version 20050114 when the behavior
14251 of
14252 Store() was modified to restrict the object types that can be used as the
14253 source operand (to match the ACPI specification.)
14254
14255 Reduced excessive stack use within the AcpiGetObjectInfo procedure.
14256
14257 Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
14258
14259 Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
14260
14261 Code and Data Size: Current and previous core subsystem library sizes are
14262 shown below. These are the code and data sizes for the acpica.lib
14263 produced
14264 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14265 any ACPI driver or OSPM code. The debug version of the code includes the
14266 debug output trace mechanism and has a much larger code and data size.
14267 Note
14268 that these values will vary depending on the efficiency of the compiler
14269 and
14270 the 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
14280 2) iASL Compiler/Disassembler:
14281
14282 Fixed a code generation problem in the constant folding optimization code
14283 where incorrect code was generated if a constant was reduced to a buffer
14284 object (i.e., a reduced type 5 opcode.)
14285
14286 Fixed a typechecking problem for the ToBuffer operator. Caused by an
14287 incorrect return type in the internal opcode information table.
14288
14289 ----------------------------------------
14290 25 January 2005. Summary of changes for version 20050125:
14291
14292 1) ACPI CA Core Subsystem:
14293
14294 Fixed a recently introduced problem with the Global Lock where the
14295 underlying semaphore was not created. This problem was introduced in
14296 version 20050114, and caused an AE_AML_NO_OPERAND exception during an
14297 Acquire() operation on _GL.
14298
14299 The local object cache is now optional, and is disabled by default. Both
14300 AcpiExec and the iASL compiler enable the cache because they run in user
14301 mode and this enhances their performance. #define
14302 ACPI_ENABLE_OBJECT_CACHE
14303 to enable the local cache.
14304
14305 Fixed an issue in the internal function AcpiUtEvaluateObject concerning
14306 the
14307 optional "implicit return" support where an error was returned if no
14308 return
14309 object was expected, but one was implicitly returned. AE_OK is now
14310 returned
14311 in this case and the implicitly returned object is deleted.
14312 AcpiUtEvaluateObject is only occasionally used, and only to execute
14313 reserved
14314 methods such as _STA and _INI where the return type is known up front.
14315
14316 Fixed a few issues with the internal convert-to-integer code. It now
14317 returns
14318 an error if an attempt is made to convert a null string, a string of only
14319 blanks/tabs, or a zero-length buffer. This affects both implicit
14320 conversion
14321 and explicit conversion via the ToInteger() operator.
14322
14323 The internal debug code in AcpiUtAcquireMutex has been commented out. It
14324 is
14325 not needed for normal operation and should increase the performance of
14326 the
14327 entire subsystem. The code remains in case it is needed for debug
14328 purposes
14329 again.
14330
14331 The AcpiExec source and makefile are included in the Unix/Linux package
14332 for
14333 the first time.
14334
14335 Code and Data Size: Current and previous core subsystem library sizes are
14336 shown below. These are the code and data sizes for the acpica.lib
14337 produced
14338 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14339 any ACPI driver or OSPM code. The debug version of the code includes the
14340 debug output trace mechanism and has a much larger code and data size.
14341 Note
14342 that these values will vary depending on the efficiency of the compiler
14343 and
14344 the 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
14353 2) iASL Compiler/Disassembler:
14354
14355 Switch/Case support: A warning is now issued if the type of the Switch
14356 value
14357 cannot be determined at compile time. For example, Switch(Arg0) will
14358 generate the warning, and the type is assumed to be an integer. As per
14359 the
14360 ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
14361 the
14362 warning.
14363
14364 Switch/Case support: Implemented support for buffer and string objects as
14365 the switch value. This is an ACPI 3.0 feature, now that LEqual supports
14366 buffers and strings.
14367
14368 Switch/Case support: The emitted code for the LEqual() comparisons now
14369 uses
14370 the switch value as the first operand, not the second. The case value is
14371 now
14372 the second operand, and this allows the case value to be implicitly
14373 converted to the type of the switch value, not the other way around.
14374
14375 Switch/Case support: Temporary variables are now emitted immediately
14376 within
14377 the control method, not at the global level. This means that there are
14378 now
14379 36 temps available per-method, not 36 temps per-module as was the case
14380 with
14381 the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
14382
14383 ----------------------------------------
14384 14 January 2005. Summary of changes for version 20050114:
14385
14386 Added 2005 copyright to all module headers. This affects every module in
14387 the core subsystem, iASL compiler, and the utilities.
14388
14389 1) ACPI CA Core Subsystem:
14390
14391 Fixed an issue with the String-to-Buffer conversion code where the string
14392 null terminator was not included in the buffer after conversion, but
14393 there
14394 is existing ASL that assumes the string null terminator is included. This
14395 is
14396 the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
14397 introduced in the previous version when the code was updated to correctly
14398 set the converted buffer size as per the ACPI specification. The ACPI
14399 spec
14400 is ambiguous and will be updated to specify that the null terminator must
14401 be
14402 included in the converted buffer. This also affects the ToBuffer() ASL
14403 operator.
14404
14405 Fixed a problem with the Mid() ASL/AML operator where it did not work
14406 correctly on Buffer objects. Newly created sub-buffers were not being
14407 marked
14408 as initialized.
14409
14410
14411 Fixed a problem in AcpiTbFindTable where incorrect string compares were
14412 performed on the OemId and OemTableId table header fields. These fields
14413 are
14414 not null terminated, so strncmp is now used instead of strcmp.
14415
14416 Implemented a restriction on the Store() ASL/AML operator to align the
14417 behavior with the ACPI specification. Previously, any object could be
14418 used
14419 as the source operand. Now, the only objects that may be used are
14420 Integers,
14421 Buffers, Strings, Packages, Object References, and DDB Handles. If
14422 necessary, the original behavior can be restored by enabling the
14423 EnableInterpreterSlack flag.
14424
14425 Enhanced the optional "implicit return" support to allow an implicit
14426 return
14427 value from methods that are invoked externally via the AcpiEvaluateObject
14428 interface. This enables implicit returns from the _STA and _INI methods,
14429 for example.
14430
14431 Changed the Revision() ASL/AML operator to return the current version of
14432 the
14433 AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
14434 returned
14435 the supported ACPI version (This is the function of the _REV method).
14436
14437 Updated the _REV predefined method to return the currently supported
14438 version
14439 of ACPI, now 3.
14440
14441 Implemented batch mode option for the AcpiExec utility (-b).
14442
14443 Code and Data Size: Current and previous core subsystem library sizes are
14444 shown below. These are the code and data sizes for the acpica.lib
14445 produced
14446 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14447 any ACPI driver or OSPM code. The debug version of the code includes the
14448 debug output trace mechanism and has a much larger code and data size.
14449 Note
14450 that these values will vary depending on the efficiency of the compiler
14451 and
14452 the 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 ----------------------------------------
14462 10 December 2004. Summary of changes for version 20041210:
14463
14464 ACPI 3.0 support is nearing completion in both the iASL compiler and the
14465 ACPI CA core subsystem.
14466
14467 1) ACPI CA Core Subsystem:
14468
14469 Fixed a problem in the ToDecimalString operator where the resulting
14470 string
14471 length was incorrectly calculated. The length is now calculated exactly,
14472 eliminating incorrect AE_STRING_LIMIT exceptions.
14473
14474 Fixed a problem in the ToHexString operator to allow a maximum 200
14475 character
14476 string to be produced.
14477
14478 Fixed a problem in the internal string-to-buffer and buffer-to-buffer
14479 copy
14480 routine where the length of the resulting buffer was not truncated to the
14481 new size (if the target buffer already existed).
14482
14483 Code and Data Size: Current and previous core subsystem library sizes are
14484 shown below. These are the code and data sizes for the acpica.lib
14485 produced
14486 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14487 any ACPI driver or OSPM code. The debug version of the code includes the
14488 debug output trace mechanism and has a much larger code and data size.
14489 Note
14490 that these values will vary depending on the efficiency of the compiler
14491 and
14492 the 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
14502 2) iASL Compiler/Disassembler:
14503
14504 Implemented the new ACPI 3.0 resource template macros - DWordSpace,
14505 ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
14506 Includes support in the disassembler.
14507
14508 Implemented support for the new (ACPI 3.0) parameter to the Register
14509 macro,
14510 AccessSize.
14511
14512 Fixed a problem where the _HE resource name for the Interrupt macro was
14513 referencing bit 0 instead of bit 1.
14514
14515 Implemented check for maximum 255 interrupts in the Interrupt macro.
14516
14517 Fixed a problem with the predefined resource descriptor names where
14518 incorrect AML code was generated if the offset within the resource buffer
14519 was 0 or 1. The optimizer shortened the AML code to a single byte opcode
14520 but did not update the surrounding package lengths.
14521
14522 Changes to the Dma macro: All channels within the channel list must be
14523 in
14524 the range 0-7. Maximum 8 channels can be specified. BusMaster operand is
14525 optional (default is BusMaster).
14526
14527 Implemented check for maximum 7 data bytes for the VendorShort macro.
14528
14529 The ReadWrite parameter is now optional for the Memory32 and similar
14530 macros.
14531
14532 ----------------------------------------
14533 03 December 2004. Summary of changes for version 20041203:
14534
14535 1) ACPI CA Core Subsystem:
14536
14537 The low-level field insertion/extraction code (exfldio) has been
14538 completely
14539 rewritten to eliminate unnecessary complexity, bugs, and boundary
14540 conditions.
14541
14542 Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
14543 ToDecimalString
14544 operators where the input operand could be inadvertently deleted if no
14545 conversion was necessary (e.g., if the input to ToInteger was an Integer
14546 object.)
14547
14548 Fixed a problem with the ToDecimalString and ToHexString where an
14549 incorrect
14550 exception code was returned if the resulting string would be > 200 chars.
14551 AE_STRING_LIMIT is now returned.
14552
14553 Fixed a problem with the Concatenate operator where AE_OK was always
14554 returned, even if the operation failed.
14555
14556 Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
14557 semaphores to be allocated.
14558
14559 Code and Data Size: Current and previous core subsystem library sizes are
14560 shown below. These are the code and data sizes for the acpica.lib
14561 produced
14562 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14563 any ACPI driver or OSPM code. The debug version of the code includes the
14564 debug output trace mechanism and has a much larger code and data size.
14565 Note
14566 that these values will vary depending on the efficiency of the compiler
14567 and
14568 the 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
14578 2) iASL Compiler/Disassembler:
14579
14580 Fixed typechecking for the ObjectType and SizeOf operators. Problem was
14581 recently introduced in 20041119.
14582
14583 Fixed a problem with the ToUUID macro where the upper nybble of each
14584 buffer
14585 byte was inadvertently set to zero.
14586
14587 ----------------------------------------
14588 19 November 2004. Summary of changes for version 20041119:
14589
14590 1) ACPI CA Core Subsystem:
14591
14592 Fixed a problem in the internal ConvertToInteger routine where new
14593 integers
14594 were not truncated to 32 bits for 32-bit ACPI tables. This routine
14595 converts
14596 buffers and strings to integers.
14597
14598 Implemented support to store a value to an Index() on a String object.
14599 This
14600 is an ACPI 2.0 feature that had not yet been implemented.
14601
14602 Implemented new behavior for storing objects to individual package
14603 elements
14604 (via the Index() operator). The previous behavior was to invoke the
14605 implicit
14606 conversion rules if an object was already present at the index. The new
14607 behavior is to simply delete any existing object and directly store the
14608 new
14609 object. Although the ACPI specification seems unclear on this subject,
14610 other
14611 ACPI implementations behave in this manner. (This is the root of the
14612 AE_BAD_HEX_CONSTANT issue.)
14613
14614 Modified the RSDP memory scan mechanism to support the extended checksum
14615 for
14616 ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
14617 RSDP signature is found with a valid checksum.
14618
14619 Code and Data Size: Current and previous core subsystem library sizes are
14620 shown below. These are the code and data sizes for the acpica.lib
14621 produced
14622 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14623 any ACPI driver or OSPM code. The debug version of the code includes the
14624 debug output trace mechanism and has a much larger code and data size.
14625 Note
14626 that these values will vary depending on the efficiency of the compiler
14627 and
14628 the 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
14638 2) iASL Compiler/Disassembler:
14639
14640 Fixed a missing semicolon in the aslcompiler.y file.
14641
14642 ----------------------------------------
14643 05 November 2004. Summary of changes for version 20041105:
14644
14645 1) ACPI CA Core Subsystem:
14646
14647 Implemented support for FADT revision 2. This was an interim table
14648 (between
14649 ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
14650
14651 Implemented optional support to allow uninitialized LocalX and ArgX
14652 variables in a control method. The variables are initialized to an
14653 Integer
14654 object with a value of zero. This support is enabled by setting the
14655 AcpiGbl_EnableInterpreterSlack flag to TRUE.
14656
14657 Implemented support for Integer objects for the SizeOf operator. Either
14658 4
14659 or 8 is returned, depending on the current integer size (32-bit or 64-
14660 bit,
14661 depending on the parent table revision).
14662
14663 Fixed a problem in the implementation of the SizeOf and ObjectType
14664 operators
14665 where the operand was resolved to a value too early, causing incorrect
14666 return values for some objects.
14667
14668 Fixed some possible memory leaks during exceptional conditions.
14669
14670 Code and Data Size: Current and previous core subsystem library sizes are
14671 shown below. These are the code and data sizes for the acpica.lib
14672 produced
14673 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14674 any ACPI driver or OSPM code. The debug version of the code includes the
14675 debug output trace mechanism and has a much larger code and data size.
14676 Note
14677 that these values will vary depending on the efficiency of the compiler
14678 and
14679 the 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
14689 2) iASL Compiler/Disassembler:
14690
14691 Implemented support for all ACPI 3.0 reserved names and methods.
14692
14693 Implemented all ACPI 3.0 grammar elements in the front-end, including
14694 support for semicolons.
14695
14696 Implemented the ACPI 3.0 Function() and ToUUID() macros
14697
14698 Fixed a problem in the disassembler where a Scope() operator would not be
14699 emitted properly if the target of the scope was in another table.
14700
14701 ----------------------------------------
14702 15 October 2004. Summary of changes for version 20041015:
14703
14704 Note: ACPI CA is currently undergoing an in-depth and complete formal
14705 evaluation to test/verify the following areas. Other suggestions are
14706 welcome. This will result in an increase in the frequency of releases and
14707 the 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
14718 1) ACPI CA Core Subsystem:
14719
14720 Fixed two alignment issues on 64-bit platforms - within debug statements
14721 in
14722 AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
14723 Address
14724 field within the non-aligned ACPI generic address structure.
14725
14726 Fixed a problem in the Increment and Decrement operators where incorrect
14727 operand resolution could result in the inadvertent modification of the
14728 original integer when the integer is passed into another method as an
14729 argument and the arg is then incremented/decremented.
14730
14731 Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
14732 bit
14733 BCD number were truncated during conversion.
14734
14735 Fixed a problem in the ToDecimal operator where the length of the
14736 resulting
14737 string could be set incorrectly too long if the input operand was a
14738 Buffer
14739 object.
14740
14741 Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
14742 (0)
14743 within a buffer would prematurely terminate a compare between buffer
14744 objects.
14745
14746 Added a check for string overflow (>200 characters as per the ACPI
14747 specification) during the Concatenate operator with two string operands.
14748
14749 Code and Data Size: Current and previous core subsystem library sizes are
14750 shown below. These are the code and data sizes for the acpica.lib
14751 produced
14752 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14753 any ACPI driver or OSPM code. The debug version of the code includes the
14754 debug output trace mechanism and has a much larger code and data size.
14755 Note
14756 that these values will vary depending on the efficiency of the compiler
14757 and
14758 the 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
14769 2) iASL Compiler/Disassembler:
14770
14771 Allow the use of the ObjectType operator on uninitialized Locals and Args
14772 (returns 0 as per the ACPI specification).
14773
14774 Fixed a problem where the compiler would fault if there was a syntax
14775 error
14776 in the FieldName of all of the various CreateXXXField operators.
14777
14778 Disallow the use of lower case letters within the EISAID macro, as per
14779 the
14780 ACPI specification. All EISAID strings must be of the form "UUUNNNN"
14781 Where
14782 U is an uppercase letter and N is a hex digit.
14783
14784
14785 ----------------------------------------
14786 06 October 2004. Summary of changes for version 20041006:
14787
14788 1) ACPI CA Core Subsystem:
14789
14790 Implemented support for the ACPI 3.0 Timer operator. This ASL function
14791 implements a 64-bit timer with 100 nanosecond granularity.
14792
14793 Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
14794 implement the ACPI 3.0 Timer operator. This allows the host OS to
14795 implement
14796 the timer with the best clock available. Also, it keeps the core
14797 subsystem
14798 out of the clock handling business, since the host OS (usually) performs
14799 this function.
14800
14801 Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
14802 functions use a 64-bit address which is part of the packed ACPI Generic
14803 Address Structure. Since the structure is non-aligned, the alignment
14804 macros
14805 are now used to extract the address to a local variable before use.
14806
14807 Fixed a problem where the ToInteger operator assumed all input strings
14808 were
14809 hexadecimal. The operator now handles both decimal strings and hex
14810 strings
14811 (prefixed with "0x").
14812
14813 Fixed a problem where the string length in the string object created as a
14814 result of the internal ConvertToString procedure could be incorrect. This
14815 potentially affected all implicit conversions and also the
14816 ToDecimalString
14817 and ToHexString operators.
14818
14819 Fixed two problems in the ToString operator. If the length parameter was
14820 zero, an incorrect string object was created and the value of the input
14821 length parameter was inadvertently changed from zero to Ones.
14822
14823 Fixed a problem where the optional ResourceSource string in the
14824 ExtendedIRQ
14825 resource macro was ignored.
14826
14827 Simplified the interfaces to the internal division functions, reducing
14828 code
14829 size and complexity.
14830
14831 Code and Data Size: Current and previous core subsystem library sizes are
14832 shown below. These are the code and data sizes for the acpica.lib
14833 produced
14834 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14835 any ACPI driver or OSPM code. The debug version of the code includes the
14836 debug output trace mechanism and has a much larger code and data size.
14837 Note
14838 that these values will vary depending on the efficiency of the compiler
14839 and
14840 the 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
14850 2) iASL Compiler/Disassembler:
14851
14852 Implemented support for the ACPI 3.0 Timer operator.
14853
14854 Fixed a problem where the Default() operator was inadvertently ignored in
14855 a
14856 Switch/Case block. This was a problem in the translation of the Switch
14857 statement to If...Else pairs.
14858
14859 Added support to allow a standalone Return operator, with no parentheses
14860 (or
14861 operands).
14862
14863 Fixed a problem with code generation for the ElseIf operator where the
14864 translated Else...If parse tree was improperly constructed leading to the
14865 loss of some code.
14866
14867 ----------------------------------------
14868 22 September 2004. Summary of changes for version 20040922:
14869
14870 1) ACPI CA Core Subsystem:
14871
14872 Fixed a problem with the implementation of the LNot() operator where
14873 "Ones"
14874 was not returned for the TRUE case. Changed the code to return Ones
14875 instead
14876 of (!Arg) which was usually 1. This change affects iASL constant folding
14877 for
14878 this operator also.
14879
14880 Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
14881 not
14882 initialized properly -- Now zero the entire buffer in this case where the
14883 buffer already exists.
14884
14885 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
14886 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
14887 related code considerably. This will require changes/updates to all OS
14888 interface layers (OSLs.)
14889
14890 Implemented a new external interface, AcpiInstallExceptionHandler, to
14891 allow
14892 a system exception handler to be installed. This handler is invoked upon
14893 any
14894 run-time exception that occurs during control method execution.
14895
14896 Added support for the DSDT in AcpiTbFindTable. This allows the
14897 DataTableRegion() operator to access the local copy of the DSDT.
14898
14899 Code and Data Size: Current and previous core subsystem library sizes are
14900 shown below. These are the code and data sizes for the acpica.lib
14901 produced
14902 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14903 any ACPI driver or OSPM code. The debug version of the code includes the
14904 debug output trace mechanism and has a much larger code and data size.
14905 Note
14906 that these values will vary depending on the efficiency of the compiler
14907 and
14908 the 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
14918 2) iASL Compiler/Disassembler:
14919
14920 Fixed a problem with constant folding and the LNot operator. LNot was
14921 returning 1 in the TRUE case, not Ones as per the ACPI specification.
14922 This
14923 could result in the generation of an incorrect folded/reduced constant.
14924
14925 End-Of-File is now allowed within a "//"-style comment. A parse error no
14926 longer occurs if such a comment is at the very end of the input ASL
14927 source
14928 file.
14929
14930 Implemented the "-r" option to override the Revision in the table header.
14931 The initial use of this option will be to simplify the evaluation of the
14932 AML
14933 interpreter by allowing a single ASL source module to be compiled for
14934 either
14935 32-bit or 64-bit integers.
14936
14937
14938 ----------------------------------------
14939 27 August 2004. Summary of changes for version 20040827:
14940
14941 1) ACPI CA Core Subsystem:
14942
14943 - Implemented support for implicit object conversion in the non-numeric
14944 logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
14945 and
14946 LNotEqual.) Any combination of Integers/Strings/Buffers may now be used;
14947 the second operand is implicitly converted on the fly to match the type
14948 of
14949 the first operand. For example:
14950
14951 LEqual (Source1, Source2)
14952
14953 Source1 and Source2 must each evaluate to an integer, a string, or a
14954 buffer.
14955 The data type of Source1 dictates the required type of Source2. Source2
14956 is
14957 implicitly converted if necessary to match the type of Source1.
14958
14959 - Updated and corrected the behavior of the string conversion support.
14960 The
14961 rules concerning conversion of buffers to strings (according to the ACPI
14962 specification) are as follows:
14963
14964 ToDecimalString - explicit byte-wise conversion of buffer to string of
14965 decimal values (0-255) separated by commas. ToHexString - explicit byte-
14966 wise
14967 conversion of buffer to string of hex values (0-FF) separated by commas.
14968 ToString - explicit byte-wise conversion of buffer to string. Byte-by-
14969 byte
14970 copy with no transform except NULL terminated. Any other implicit buffer-
14971 to-
14972 string conversion - byte-wise conversion of buffer to string of hex
14973 values
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
14979 was
14980 one byte too short in the case of a node in the root scope. This could
14981 cause a fault during debug output.
14982
14983 - Code and Data Size: Current and previous core subsystem library sizes
14984 are
14985 shown below. These are the code and data sizes for the acpica.lib
14986 produced
14987 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14988 any ACPI driver or OSPM code. The debug version of the code includes the
14989 debug output trace mechanism and has a much larger code and data size.
14990 Note
14991 that these values will vary depending on the efficiency of the compiler
14992 and
14993 the 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
15003 2) iASL Compiler/Disassembler:
15004
15005 - Fixed a Linux generation error.
15006
15007
15008 ----------------------------------------
15009 16 August 2004. Summary of changes for version 20040816:
15010
15011 1) ACPI CA Core Subsystem:
15012
15013 Designed and implemented support within the AML interpreter for the so-
15014 called "implicit return". This support returns the result of the last
15015 ASL
15016 operation within a control method, in the absence of an explicit Return()
15017 operator. A few machines depend on this behavior, even though it is not
15018 explicitly supported by the ASL language. It is optional support that
15019 can
15020 be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
15021
15022 Removed support for the PCI_Config address space from the internal low
15023 level
15024 hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This
15025 support was not used internally, and would not work correctly anyway
15026 because
15027 the PCI bus number and segment number were not supported. There are
15028 separate interfaces for PCI configuration space access because of the
15029 unique
15030 interface.
15031
15032 Code and Data Size: Current and previous core subsystem library sizes are
15033 shown below. These are the code and data sizes for the acpica.lib
15034 produced
15035 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15036 any ACPI driver or OSPM code. The debug version of the code includes the
15037 debug output trace mechanism and has a much larger code and data size.
15038 Note
15039 that these values will vary depending on the efficiency of the compiler
15040 and
15041 the 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
15051 2) iASL Compiler/Disassembler:
15052
15053 Fixed a problem where constants in ASL expressions at the root level (not
15054 within a control method) could be inadvertently truncated during code
15055 generation. This problem was introduced in the 20040715 release.
15056
15057
15058 ----------------------------------------
15059 15 July 2004. Summary of changes for version 20040715:
15060
15061 1) ACPI CA Core Subsystem:
15062
15063 Restructured the internal HW GPE interfaces to pass/track the current
15064 state
15065 of interrupts (enabled/disabled) in order to avoid possible deadlock and
15066 increase flexibility of the interfaces.
15067
15068 Implemented a "lexicographical compare" for String and Buffer objects
15069 within
15070 the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
15071 -
15072 as per further clarification to the ACPI specification. Behavior is
15073 similar
15074 to C library "strcmp".
15075
15076 Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
15077 external function. In the 32-bit non-debug case, the stack use has been
15078 reduced from 168 bytes to 32 bytes.
15079
15080 Deployed a new run-time configuration flag,
15081 AcpiGbl_EnableInterpreterSlack,
15082 whose purpose is to allow the AML interpreter to forgive certain bad AML
15083 constructs. Default setting is FALSE.
15084
15085 Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
15086 IO
15087 support code. If enabled, it allows field access to go beyond the end of
15088 a
15089 region definition if the field is within the region length rounded up to
15090 the
15091 next access width boundary (a common coding error.)
15092
15093 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
15094 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also,
15095 these
15096 symbols are lowercase by the latest version of the AcpiSrc tool.
15097
15098 The prototypes for the PCI interfaces in acpiosxf.h have been updated to
15099 rename "Register" to simply "Reg" to prevent certain compilers from
15100 complaining.
15101
15102 Code and Data Size: Current and previous core subsystem library sizes are
15103 shown below. These are the code and data sizes for the acpica.lib
15104 produced
15105 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15106 any ACPI driver or OSPM code. The debug version of the code includes the
15107 debug output trace mechanism and has a much larger code and data size.
15108 Note
15109 that these values will vary depending on the efficiency of the compiler
15110 and
15111 the 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
15121 2) iASL Compiler/Disassembler:
15122
15123 Implemented full support for Package objects within the Case() operator.
15124 Note: The Break() operator is currently not supported within Case blocks
15125 (TermLists) as there is some question about backward compatibility with
15126 ACPI
15127 1.0 interpreters.
15128
15129
15130 Fixed a problem where complex terms were not supported properly within
15131 the
15132 Switch() operator.
15133
15134 Eliminated extraneous warning for compiler-emitted reserved names of the
15135 form "_T_x". (Used in Switch/Case operators.)
15136
15137 Eliminated optimization messages for "_T_x" objects and small constants
15138 within the DefinitionBlock operator.
15139
15140
15141 ----------------------------------------
15142 15 June 2004. Summary of changes for version 20040615:
15143
15144 1) ACPI CA Core Subsystem:
15145
15146 Implemented support for Buffer and String objects (as per ACPI 2.0) for
15147 the
15148 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
15149 LLessEqual.
15150
15151 All directory names in the entire source package are lower case, as they
15152 were in earlier releases.
15153
15154 Implemented "Disassemble" command in the AML debugger that will
15155 disassemble
15156 a single control method.
15157
15158 Code and Data Size: Current and previous core subsystem library sizes are
15159 shown below. These are the code and data sizes for the acpica.lib
15160 produced
15161 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15162 any ACPI driver or OSPM code. The debug version of the code includes the
15163 debug output trace mechanism and has a much larger code and data size.
15164 Note
15165 that these values will vary depending on the efficiency of the compiler
15166 and
15167 the 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
15178 2) iASL Compiler/Disassembler:
15179
15180 Implemented support for Buffer and String objects (as per ACPI 2.0) for
15181 the
15182 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
15183 LLessEqual.
15184
15185 All directory names in the entire source package are lower case, as they
15186 were in earlier releases.
15187
15188 Fixed a fault when using the -g or -d<nofilename> options if the FADT was
15189 not found.
15190
15191 Fixed an issue with the Windows version of the compiler where later
15192 versions
15193 of 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 -
15195 d<nofilename> options. The compiler now looks for both strings as
15196 necessary.
15197
15198 Fixed a problem with compiler namepath optimization where a namepath
15199 within
15200 the Scope() operator could not be optimized if the namepath was a subpath
15201 of
15202 the current scope path.
15203
15204 ----------------------------------------
15205 27 May 2004. Summary of changes for version 20040527:
15206
15207 1) ACPI CA Core Subsystem:
15208
15209 Completed a new design and implementation for EBDA (Extended BIOS Data
15210 Area)
15211 support in the RSDP scan code. The original code improperly scanned for
15212 the
15213 EBDA by simply scanning from memory location 0 to 0x400. The correct
15214 method
15215 is to first obtain the EBDA pointer from within the BIOS data area, then
15216 scan 1K of memory starting at the EBDA pointer. There appear to be few
15217 if
15218 any machines that place the RSDP in the EBDA, however.
15219
15220 Integrated a fix for a possible fault during evaluation of BufferField
15221 arguments. Obsolete code that was causing the problem was removed.
15222
15223 Found and fixed a problem in the Field Support Code where data could be
15224 corrupted on a bit field read that starts on an aligned boundary but does
15225 not end on an aligned boundary. Merged the read/write "datum length"
15226 calculation code into a common procedure.
15227
15228 Rolled in a couple of changes to the FreeBSD-specific header.
15229
15230
15231 Code and Data Size: Current and previous core subsystem library sizes are
15232 shown below. These are the code and data sizes for the acpica.lib
15233 produced
15234 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15235 any ACPI driver or OSPM code. The debug version of the code includes the
15236 debug output trace mechanism and has a much larger code and data size.
15237 Note
15238 that these values will vary depending on the efficiency of the compiler
15239 and
15240 the 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
15250 2) iASL Compiler/Disassembler:
15251
15252 Fixed a generation warning produced by some overly-verbose compilers for
15253 a
15254 64-bit constant.
15255
15256 ----------------------------------------
15257 14 May 2004. Summary of changes for version 20040514:
15258
15259 1) ACPI CA Core Subsystem:
15260
15261 Fixed a problem where hardware GPE enable bits sometimes not set properly
15262 during and after GPE method execution. Result of 04/27 changes.
15263
15264 Removed extra "clear all GPEs" when sleeping/waking.
15265
15266 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
15267 AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
15268 to
15269 the new AcpiEv* calls as appropriate.
15270
15271 ACPI_OS_NAME was removed from the OS-specific headers. The default name
15272 is
15273 now "Microsoft Windows NT" for maximum compatibility. However this can
15274 be
15275 changed by modifying the acconfig.h file.
15276
15277 Allow a single invocation of AcpiInstallNotifyHandler for a handler that
15278 traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag.
15279
15280 Run _INI methods on ThermalZone objects. This is against the ACPI
15281 specification, but there is apparently ASL code in the field that has
15282 these
15283 _INI methods, and apparently "other" AML interpreters execute them.
15284
15285 Performed a full 16/32/64 bit lint that resulted in some small changes.
15286
15287 Added a sleep simulation command to the AML debugger to test sleep code.
15288
15289 Code and Data Size: Current and previous core subsystem library sizes are
15290 shown below. These are the code and data sizes for the acpica.lib
15291 produced
15292 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15293 any ACPI driver or OSPM code. The debug version of the code includes the
15294 debug output trace mechanism and has a much larger code and data size.
15295 Note
15296 that these values will vary depending on the efficiency of the compiler
15297 and
15298 the 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 ----------------------------------------
15308 27 April 2004. Summary of changes for version 20040427:
15309
15310 1) ACPI CA Core Subsystem:
15311
15312 Completed a major overhaul of the GPE handling within ACPI CA. There are
15313 now three types of GPEs: wake-only, runtime-only, and combination
15314 wake/run.
15315 The only GPEs allowed to be combination wake/run are for button-style
15316 devices such as a control-method power button, control-method sleep
15317 button,
15318 or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are
15319 not
15320 referenced by any _PRW methods are marked for "runtime" and hardware
15321 enabled. 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
15324 have been specifically enabled for wake via the AcpiEnableGpe interface
15325 will
15326 actually be hardware enabled.
15327
15328 A new external interface has been added, AcpiSetGpeType(), that is meant
15329 to
15330 be used by device drivers to force a GPE to a particular type. It will
15331 be
15332 especially useful for the drivers for the button devices mentioned above.
15333
15334 Completed restructuring of the ACPI CA initialization sequence so that
15335 default operation region handlers are installed before GPEs are
15336 initialized
15337 and the _PRW methods are executed. This will prevent errors when the
15338 _PRW
15339 methods attempt to access system memory or I/O space.
15340
15341 GPE enable/disable no longer reads the GPE enable register. We now keep
15342 the
15343 enable info for runtime and wake separate and in the GPE_EVENT_INFO. We
15344 thus no longer depend on the hardware to maintain these bits.
15345
15346 Always clear the wake status and fixed/GPE status bits before sleep, even
15347 for state S5.
15348
15349 Improved the AML debugger output for displaying the GPE blocks and their
15350 current status.
15351
15352 Added new strings for the _OSI method, of the form "Windows 2001 SPx"
15353 where
15354 x = 0,1,2,3,4.
15355
15356 Fixed a problem where the physical address was incorrectly calculated
15357 when
15358 the Load() operator was used to directly load from an Operation Region
15359 (vs.
15360 loading from a Field object.) Also added check for minimum table length
15361 for
15362 this case.
15363
15364 Fix for multiple mutex acquisition. Restore original thread SyncLevel on
15365 mutex release.
15366
15367 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
15368 consistency with the other fields returned.
15369
15370 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such
15371 structure for each GPE in the system, so the size of this structure is
15372 important.
15373
15374 CPU stack requirement reduction: Cleaned up the method execution and
15375 object
15376 evaluation paths so that now a parameter structure is passed, instead of
15377 copying the various method parameters over and over again.
15378
15379 In evregion.c: Correctly exit and reenter the interpreter region if and
15380 only if dispatching an operation region request to a user-installed
15381 handler.
15382 Do not exit/reenter when dispatching to a default handler (e.g., default
15383 system memory or I/O handlers)
15384
15385
15386 Notes for updating drivers for the new GPE support. The following
15387 changes
15388 must be made to ACPI-related device drivers that are attached to one or
15389 more
15390 GPEs: (This information will be added to the ACPI CA Programmer
15391 Reference.)
15392
15393 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you
15394 must
15395 explicitly call AcpiEnableGpe.
15396 2) There is a new interface called AcpiSetGpeType. This should be called
15397 before enabling the GPE. Also, this interface will automatically disable
15398 the GPE if it is currently enabled.
15399 3) AcpiEnableGpe no longer supports a GPE type flag.
15400
15401 Specific drivers that must be changed:
15402 1) EC driver:
15403 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
15404 AeGpeHandler, NULL);
15405 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
15406 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
15407
15408 2) Button Drivers (Power, Lid, Sleep):
15409 Run _PRW method under parent device
15410 If _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
15415 For all other devices that have _PRWs, we automatically set the GPE type
15416 to
15417 ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
15418 This
15419 must be done on a selective basis, usually requiring some kind of user
15420 app
15421 to allow the user to pick the wake devices.
15422
15423
15424 Code and Data Size: Current and previous core subsystem library sizes are
15425 shown below. These are the code and data sizes for the acpica.lib
15426 produced
15427 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15428 any ACPI driver or OSPM code. The debug version of the code includes the
15429 debug output trace mechanism and has a much larger code and data size.
15430 Note
15431 that these values will vary depending on the efficiency of the compiler
15432 and
15433 the 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 ----------------------------------------
15446 02 April 2004. Summary of changes for version 20040402:
15447
15448 1) ACPI CA Core Subsystem:
15449
15450 Fixed an interpreter problem where an indirect store through an ArgX
15451 parameter was incorrectly applying the "implicit conversion rules" during
15452 the store. From the ACPI specification: "If the target is a method local
15453 or
15454 argument (LocalX or ArgX), no conversion is performed and the result is
15455 stored directly to the target". The new behavior is to disable implicit
15456 conversion during ALL stores to an ArgX.
15457
15458 Changed the behavior of the _PRW method scan to ignore any and all errors
15459 returned by a given _PRW. This prevents the scan from aborting from the
15460 failure of any single _PRW.
15461
15462 Moved the runtime configuration parameters from the global init procedure
15463 to
15464 static variables in acglobal.h. This will allow the host to override the
15465 default values easily.
15466
15467 Code and Data Size: Current and previous core subsystem library sizes are
15468 shown below. These are the code and data sizes for the acpica.lib
15469 produced
15470 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15471 any ACPI driver or OSPM code. The debug version of the code includes the
15472 debug output trace mechanism and has a much larger code and data size.
15473 Note
15474 that these values will vary depending on the efficiency of the compiler
15475 and
15476 the 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
15486 2) iASL Compiler/Disassembler:
15487
15488 iASL now fully disassembles SSDTs. However, External() statements are
15489 not
15490 generated automatically for unresolved symbols at this time. This is a
15491 planned feature for future implementation.
15492
15493 Fixed a scoping problem in the disassembler that occurs when the type of
15494 the
15495 target of a Scope() operator is overridden. This problem caused an
15496 incorrectly nested internal namespace to be constructed.
15497
15498 Any warnings or errors that are emitted during disassembly are now
15499 commented
15500 out automatically so that the resulting file can be recompiled without
15501 any
15502 hand editing.
15503
15504 ----------------------------------------
15505 26 March 2004. Summary of changes for version 20040326:
15506
15507 1) ACPI CA Core Subsystem:
15508
15509 Implemented 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
15511 identified as a WAKE GPE and by default will no longer be enabled at
15512 runtime. Previously, we were blindly enabling all GPEs with a
15513 corresponding
15514 _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
15515 We
15516 believe this has been the cause of thousands of "spurious" GPEs on some
15517 systems.
15518
15519 This new GPE behavior is can be reverted to the original behavior (enable
15520 ALL GPEs at runtime) via a runtime flag.
15521
15522 Fixed a problem where aliased control methods could not access objects
15523 properly. The proper scope within the namespace was not initialized
15524 (transferred to the target of the aliased method) before executing the
15525 target method.
15526
15527 Fixed a potential race condition on internal object deletion on the
15528 return
15529 object in AcpiEvaluateObject.
15530
15531 Integrated a fix for resource descriptors where both _MEM and _MTP were
15532 being extracted instead of just _MEM. (i.e. bitmask was incorrectly too
15533 wide, 0x0F instead of 0x03.)
15534
15535 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
15536 preventing
15537 a
15538 fault in some cases.
15539
15540 Updated Notify() values for debug statements in evmisc.c
15541
15542 Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
15543
15544 Code and Data Size: Current and previous core subsystem library sizes are
15545 shown below. These are the code and data sizes for the acpica.lib
15546 produced
15547 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15548 any ACPI driver or OSPM code. The debug version of the code includes the
15549 debug output trace mechanism and has a much larger code and data size.
15550 Note
15551 that these values will vary depending on the efficiency of the compiler
15552 and
15553 the 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 ----------------------------------------
15564 11 March 2004. Summary of changes for version 20040311:
15565
15566 1) ACPI CA Core Subsystem:
15567
15568 Fixed a problem where errors occurring during the parse phase of control
15569 method execution did not abort cleanly. For example, objects created and
15570 installed in the namespace were not deleted. This caused all subsequent
15571 invocations of the method to return the AE_ALREADY_EXISTS exception.
15572
15573 Implemented a mechanism to force a control method to "Serialized"
15574 execution
15575 if the method attempts to create namespace objects. (The root of the
15576 AE_ALREADY_EXISTS problem.)
15577
15578 Implemented support for the predefined _OSI "internal" control method.
15579 Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
15580 and
15581 "Windows 2001.1", and can be easily upgraded for new strings as
15582 necessary.
15583 This feature will allow "other" operating systems to execute the fully
15584 tested, "Windows" code path through the ASL code
15585
15586 Global Lock Support: Now allows multiple acquires and releases with any
15587 internal thread. Removed concept of "owning thread" for this special
15588 mutex.
15589
15590 Fixed two functions that were inappropriately declaring large objects on
15591 the
15592 CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage
15593 during
15594 method execution considerably.
15595
15596 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
15597 S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
15598
15599 Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
15600 defined on the machine.
15601
15602 Implemented two runtime options: One to force all control method
15603 execution
15604 to "Serialized" to mimic Windows behavior, another to disable _OSI
15605 support
15606 if it causes problems on a given machine.
15607
15608 Code and Data Size: Current and previous core subsystem library sizes are
15609 shown below. These are the code and data sizes for the acpica.lib
15610 produced
15611 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
15612 any ACPI driver or OSPM code. The debug version of the code includes the
15613 debug output trace mechanism and has a much larger code and data size.
15614 Note
15615 that these values will vary depending on the efficiency of the compiler
15616 and
15617 the 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
15626 2) iASL Compiler/Disassembler:
15627
15628 Fixed an array size problem for FreeBSD that would cause the compiler to
15629 fault.
15630
15631 ----------------------------------------
15632 20 February 2004. Summary of changes for version 20040220:
15633
15634
15635 1) ACPI CA Core Subsystem:
15636
15637 Implemented execution of _SxD methods for Device objects in the
15638 GetObjectInfo interface.
15639
15640 Fixed calls to _SST method to pass the correct arguments.
15641
15642 Added a call to _SST on wake to restore to "working" state.
15643
15644 Check for End-Of-Buffer failure case in the WalkResources interface.
15645
15646 Integrated fix for 64-bit alignment issue in acglobal.h by moving two
15647 structures to the beginning of the file.
15648
15649 After wake, clear GPE status register(s) before enabling GPEs.
15650
15651 After wake, clear/enable power button. (Perhaps we should clear/enable
15652 all
15653 fixed events upon wake.)
15654
15655 Fixed a couple of possible memory leaks in the Namespace manager.
15656
15657 Integrated latest acnetbsd.h file.
15658
15659 ----------------------------------------
15660 11 February 2004. Summary of changes for version 20040211:
15661
15662
15663 1) ACPI CA Core Subsystem:
15664
15665 Completed investigation and implementation of the call-by-reference
15666 mechanism for control method arguments.
15667
15668 Fixed a problem where a store of an object into an indexed package could
15669 fail if the store occurs within a different method than the method that
15670 created the package.
15671
15672 Fixed a problem where the ToDecimal operator could return incorrect
15673 results.
15674
15675 Fixed a problem where the CopyObject operator could fail on some of the
15676 more
15677 obscure objects (e.g., Reference objects.)
15678
15679 Improved the output of the Debug object to display buffer, package, and
15680 index objects.
15681
15682 Fixed a problem where constructs of the form "RefOf (ArgX)" did not
15683 return
15684 the expected result.
15685
15686 Added permanent ACPI_REPORT_ERROR macros for all instances of the
15687 ACPI_AML_INTERNAL exception.
15688
15689 Integrated latest version of acfreebsd.h
15690
15691 ----------------------------------------
15692 16 January 2004. Summary of changes for version 20040116:
15693
15694 The purpose of this release is primarily to update the copyright years in
15695 each module, thus causing a huge number of diffs. There are a few small
15696 functional changes, however.
15697
15698 1) ACPI CA Core Subsystem:
15699
15700 Improved error messages when there is a problem finding one or more of
15701 the
15702 required base ACPI tables
15703
15704 Reintroduced the definition of APIC_HEADER in actbl.h
15705
15706 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
15707
15708 Removed extraneous reference to NewObj in dsmthdat.c
15709
15710 2) iASL compiler
15711
15712 Fixed a problem introduced in December that disabled the correct
15713 disassembly
15714 of Resource Templates
15715
15716
15717 ----------------------------------------
15718 03 December 2003. Summary of changes for version 20031203:
15719
15720 1) ACPI CA Core Subsystem:
15721
15722 Changed the initialization of Operation Regions during subsystem
15723 init to perform two entire walks of the ACPI namespace; The first
15724 to initialize the regions themselves, the second to execute the
15725 _REG methods. This fixed some interdependencies across _REG
15726 methods found on some machines.
15727
15728 Fixed a problem where a Store(Local0, Local1) could simply update
15729 the object reference count, and not create a new copy of the
15730 object if the Local1 is uninitialized.
15731
15732 Implemented support for the _SST reserved method during sleep
15733 transitions.
15734
15735 Implemented support to clear the SLP_TYP and SLP_EN bits when
15736 waking up, this is apparently required by some machines.
15737
15738 When sleeping, clear the wake status only if SleepState is not S5.
15739
15740 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
15741 pointer arithmetic advanced a string pointer too far.
15742
15743 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
15744 could be returned if the requested table has not been loaded.
15745
15746 Within the support for IRQ resources, restructured the handling of
15747 the active and edge/level bits.
15748
15749 Fixed a few problems in AcpiPsxExecute() where memory could be
15750 leaked under certain error conditions.
15751
15752 Improved error messages for the cases where the ACPI mode could
15753 not be entered.
15754
15755 Code and Data Size: Current and previous core subsystem library
15756 sizes are shown below. These are the code and data sizes for the
15757 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15758 these values do not include any ACPI driver or OSPM code. The
15759 debug version of the code includes the debug output trace
15760 mechanism and has a much larger code and data size. Note that
15761 these values will vary depending on the efficiency of the compiler
15762 and 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
15771 2) iASL Compiler/Disassembler:
15772
15773 Implemented a fix for the iASL disassembler where a bad index was
15774 generated. This was most noticeable on 64-bit platforms
15775
15776
15777 ----------------------------------------
15778 29 October 2003. Summary of changes for version 20031029:
15779
15780 1) ACPI CA Core Subsystem:
15781
15782
15783 Fixed a problem where a level-triggered GPE with an associated
15784 _Lxx control method was incorrectly cleared twice.
15785
15786 Fixed a problem with the Field support code where an access can
15787 occur beyond the end-of-region if the field is non-aligned but
15788 extends to the very end of the parent region (resulted in an
15789 AE_AML_REGION_LIMIT exception.)
15790
15791 Fixed a problem with ACPI Fixed Events where an RT Clock handler
15792 would not get invoked on an RTC event. The RTC event bitmasks for
15793 the PM1 registers were not being initialized properly.
15794
15795 Implemented support for executing _STA and _INI methods for
15796 Processor objects. Although this is currently not part of the
15797 ACPI specification, there is existing ASL code that depends on the
15798 init-time execution of these methods.
15799
15800 Implemented and deployed a GetDescriptorName function to decode
15801 the various types of internal descriptors. Guards against null
15802 descriptors during debug output also.
15803
15804 Implemented and deployed a GetNodeName function to extract the 4-
15805 character namespace node name. This function simplifies the debug
15806 and error output, as well as guarding against null pointers during
15807 output.
15808
15809 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
15810 simplify the debug and error output of 64-bit integers. This
15811 macro replaces the HIDWORD and LODWORD macros for dumping these
15812 integers.
15813
15814 Updated the implementation of the Stall() operator to only call
15815 AcpiOsStall(), and also return an error if the operand is larger
15816 than 255. This preserves the required behavior of not
15817 relinquishing the processor, as would happen if AcpiOsSleep() was
15818 called for "long stalls".
15819
15820 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
15821 initialized are now treated as NOOPs.
15822
15823 Cleaned up a handful of warnings during 64-bit generation.
15824
15825 Fixed a reported error where and incorrect GPE number was passed
15826 to the GPE dispatch handler. This value is only used for error
15827 output, however. Used this opportunity to clean up and streamline
15828 the GPE dispatch code.
15829
15830 Code and Data Size: Current and previous core subsystem library
15831 sizes are shown below. These are the code and data sizes for the
15832 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15833 these values do not include any ACPI driver or OSPM code. The
15834
15835 debug version of the code includes the debug output trace
15836 mechanism and has a much larger code and data size. Note that
15837 these values will vary depending on the efficiency of the compiler
15838 and 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
15848 2) iASL Compiler/Disassembler:
15849
15850 Updated the iASL compiler to return an error if the operand to the
15851 Stall() operator is larger than 255.
15852
15853
15854 ----------------------------------------
15855 02 October 2003. Summary of changes for version 20031002:
15856
15857
15858 1) ACPI CA Core Subsystem:
15859
15860 Fixed a problem with Index Fields where the index was not
15861 incremented for fields that require multiple writes to the
15862 index/data registers (Fields that are wider than the data
15863 register.)
15864
15865 Fixed a problem with all Field objects where a write could go
15866 beyond the end-of-field if the field was larger than the access
15867 granularity and therefore required multiple writes to complete the
15868 request. An extra write beyond the end of the field could happen
15869 inadvertently.
15870
15871 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
15872 would incorrectly be returned if the width of the Data Register
15873 was larger than the specified field access width.
15874
15875 Completed fixes for LoadTable() and Unload() and verified their
15876 operation. Implemented full support for the "DdbHandle" object
15877 throughout the ACPI CA subsystem.
15878
15879 Implemented full support for the MADT and ECDT tables in the ACPI
15880 CA header files. Even though these tables are not directly
15881 consumed by ACPI CA, the header definitions are useful for ACPI
15882 device drivers.
15883
15884 Integrated resource descriptor fixes posted to the Linux ACPI
15885 list. This included checks for minimum descriptor length, and
15886 support for trailing NULL strings within descriptors that have
15887 optional string elements.
15888
15889 Code and Data Size: Current and previous core subsystem library
15890 sizes are shown below. These are the code and data sizes for the
15891 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15892 these values do not include any ACPI driver or OSPM code. The
15893 debug version of the code includes the debug output trace
15894 mechanism and has a much larger code and data size. Note that
15895 these values will vary depending on the efficiency of the compiler
15896 and 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
15906 2) iASL Compiler:
15907
15908 Implemented detection of non-ASCII characters within the input
15909 source ASL file. This catches attempts to compile binary (AML)
15910 files early in the compile, with an informative error message.
15911
15912 Fixed a problem where the disassembler would fault if the output
15913 filename could not be generated or if the output file could not be
15914 opened.
15915
15916 ----------------------------------------
15917 18 September 2003. Summary of changes for version 20030918:
15918
15919
15920 1) ACPI CA Core Subsystem:
15921
15922 Found and fixed a longstanding problem with the late execution of
15923 the various deferred AML opcodes (such as Operation Regions,
15924 Buffer Fields, Buffers, and Packages). If the name string
15925 specified for the name of the new object placed the object in a
15926 scope other than the current scope, the initialization/execution
15927 of the opcode failed. The solution to this problem was to
15928 implement a mechanism where the late execution of such opcodes
15929 does not attempt to lookup/create the name a second time in an
15930 incorrect scope. This fixes the "region size computed
15931 incorrectly" problem.
15932
15933 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
15934 Global Lock AE_BAD_PARAMETER error.
15935
15936 Fixed several 64-bit issues with prototypes, casting and data
15937 types.
15938
15939 Removed duplicate prototype from acdisasm.h
15940
15941 Fixed an issue involving EC Operation Region Detach (Shaohua Li)
15942
15943 Code and Data Size: Current and previous core subsystem library
15944 sizes are shown below. These are the code and data sizes for the
15945 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15946 these values do not include any ACPI driver or OSPM code. The
15947 debug version of the code includes the debug output trace
15948 mechanism and has a much larger code and data size. Note that
15949 these values will vary depending on the efficiency of the compiler
15950 and 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
15961 2) Linux:
15962
15963 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
15964 correct sleep time in seconds.
15965
15966 ----------------------------------------
15967 14 July 2003. Summary of changes for version 20030619:
15968
15969 1) ACPI CA Core Subsystem:
15970
15971 Parse SSDTs in order discovered, as opposed to reverse order
15972 (Hrvoje Habjanic)
15973
15974 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
15975 Klausner,
15976 Nate Lawson)
15977
15978
15979 2) Linux:
15980
15981 Dynamically allocate SDT list (suggested by Andi Kleen)
15982
15983 proc function return value cleanups (Andi Kleen)
15984
15985 Correctly handle NMI watchdog during long stalls (Andrew Morton)
15986
15987 Make it so acpismp=force works (reported by Andrew Morton)
15988
15989
15990 ----------------------------------------
15991 19 June 2003. Summary of changes for version 20030619:
15992
15993 1) ACPI CA Core Subsystem:
15994
15995 Fix To/FromBCD, eliminating the need for an arch-specific #define.
15996
15997 Do not acquire a semaphore in the S5 shutdown path.
15998
15999 Fix ex_digits_needed for 0. (Takayoshi Kochi)
16000
16001 Fix sleep/stall code reversal. (Andi Kleen)
16002
16003 Revert a change having to do with control method calling
16004 semantics.
16005
16006 2) Linux:
16007
16008 acpiphp update (Takayoshi Kochi)
16009
16010 Export acpi_disabled for sonypi (Stelian Pop)
16011
16012 Mention acpismp=force in config help
16013
16014 Re-add acpitable.c and acpismp=force. This improves backwards
16015
16016 compatibility and also cleans up the code to a significant degree.
16017
16018 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
16019
16020 ----------------------------------------
16021 22 May 2003. Summary of changes for version 20030522:
16022
16023 1) ACPI CA Core Subsystem:
16024
16025 Found and fixed a reported problem where an AE_NOT_FOUND error
16026 occurred occasionally during _BST evaluation. This turned out to
16027 be an Owner ID allocation issue where a called method did not get
16028 a new ID assigned to it. Eventually, (after 64k calls), the Owner
16029 ID UINT16 would wraparound so that the ID would be the same as the
16030 caller's and the called method would delete the caller's
16031 namespace.
16032
16033 Implemented extended error reporting for control methods that are
16034 aborted due to a run-time exception. Output includes the exact
16035 AML instruction that caused the method abort, a dump of the method
16036 locals and arguments at the time of the abort, and a trace of all
16037 nested control method calls.
16038
16039 Modified the interpreter to allow the creation of buffers of zero
16040 length from the AML code. Implemented new code to ensure that no
16041 attempt is made to actually allocate a memory buffer (of length
16042 zero) - instead, a simple buffer object with a NULL buffer pointer
16043 and length zero is created. A warning is no longer issued when
16044 the AML attempts to create a zero-length buffer.
16045
16046 Implemented a workaround for the "leading asterisk issue" in
16047 _HIDs, _UIDs, and _CIDs in the AML interpreter. One leading
16048 asterisk is automatically removed if present in any HID, UID, or
16049 CID strings. The iASL compiler will still flag this asterisk as
16050 an error, however.
16051
16052 Implemented full support for _CID methods that return a package of
16053 multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface
16054 now additionally returns a device _CID list if present. This
16055 required a change to the external interface in order to pass an
16056 ACPI_BUFFER object as a parameter since the _CID list is of
16057 variable length.
16058
16059 Fixed a problem with the new AE_SAME_HANDLER exception where
16060 handler initialization code did not know about this exception.
16061
16062 Code and Data Size: Current and previous core subsystem library
16063 sizes are shown below. These are the code and data sizes for the
16064 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
16065 these values do not include any ACPI driver or OSPM code. The
16066 debug version of the code includes the debug output trace
16067 mechanism and has a much larger code and data size. Note that
16068 these values will vary depending on the efficiency of the compiler
16069 and 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
16079 2) Linux:
16080
16081 Fixed a bug in which we would reinitialize the ACPI interrupt
16082 after it was already working, thus disabling all ACPI and the IRQs
16083 for any other device sharing the interrupt. (Thanks to Stian
16084 Jordet)
16085
16086 Toshiba driver update (John Belmonte)
16087
16088 Return only 0 or 1 for our interrupt handler status (Andrew
16089 Morton)
16090
16091
16092 3) iASL Compiler:
16093
16094 Fixed a reported problem where multiple (nested) ElseIf()
16095 statements were not handled correctly by the compiler, resulting
16096 in incorrect warnings and incorrect AML code. This was a problem
16097 in both the ASL parser and the code generator.
16098
16099
16100 4) Documentation:
16101
16102 Added changes to existing interfaces, new exception codes, and new
16103 text concerning reference count object management versus garbage
16104 collection.
16105
16106 ----------------------------------------
16107 09 May 2003. Summary of changes for version 20030509.
16108
16109
16110 1) ACPI CA Core Subsystem:
16111
16112 Changed the subsystem initialization sequence to hold off
16113 installation of address space handlers until the hardware has been
16114 initialized and the system has entered ACPI mode. This is because
16115 the installation of space handlers can cause _REG methods to be
16116 run. Previously, the _REG methods could potentially be run before
16117 ACPI mode was enabled.
16118
16119 Fixed some memory leak issues related to address space handler and
16120 notify handler installation. There were some problems with the
16121 reference count mechanism caused by the fact that the handler
16122 objects are shared across several namespace objects.
16123
16124 Fixed a reported problem where reference counts within the
16125 namespace were not properly updated when named objects created by
16126 method execution were deleted.
16127
16128 Fixed a reported problem where multiple SSDTs caused a deletion
16129 issue during subsystem termination. Restructured the table data
16130 structures to simplify the linked lists and the related code.
16131
16132 Fixed a problem where the table ID associated with secondary
16133 tables (SSDTs) was not being propagated into the namespace objects
16134 created by those tables. This would only present a problem for
16135 tables that are unloaded at run-time, however.
16136
16137 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
16138 type as the length parameter (instead of UINT32).
16139
16140 Solved a long-standing problem where an ALREADY_EXISTS error
16141 appears on various systems. This problem could happen when there
16142 are multiple PCI_Config operation regions under a single PCI root
16143 bus. This doesn't happen very frequently, but there are some
16144 systems that do this in the ASL.
16145
16146 Fixed a reported problem where the internal DeleteNode function
16147 was incorrectly handling the case where a namespace node was the
16148 first in the parent's child list, and had additional peers (not
16149 the only child, but first in the list of children.)
16150
16151 Code and Data Size: Current core subsystem library sizes are shown
16152 below. These are the code and data sizes for the acpica.lib
16153 produced by the Microsoft Visual C++ 6.0 compiler, and these
16154 values do not include any ACPI driver or OSPM code. The debug
16155 version of the code includes the debug output trace mechanism and
16156 has a much larger code and data size. Note that these values will
16157 vary depending on the efficiency of the compiler and the compiler
16158 options 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
16168 2) Linux:
16169
16170 Allow ":" in OS override string (Ducrot Bruno)
16171
16172 Kobject fix (Greg KH)
16173
16174
16175 3 iASL Compiler/Disassembler:
16176
16177 Fixed a problem in the generation of the C source code files (AML
16178 is emitted in C source statements for BIOS inclusion) where the
16179 Ascii dump that appears within a C comment at the end of each line
16180 could cause a compile time error if the AML sequence happens to
16181 have an open comment or close comment sequence embedded.
16182
16183
16184 ----------------------------------------
16185 24 April 2003. Summary of changes for version 20030424.
16186
16187
16188 1) ACPI CA Core Subsystem:
16189
16190 Support for big-endian systems has been implemented. Most of the
16191 support has been invisibly added behind big-endian versions of the
16192 ACPI_MOVE_* macros.
16193
16194 Fixed a problem in AcpiHwDisableGpeBlock() and
16195 AcpiHwClearGpeBlock() where an incorrect offset was passed to the
16196 low level hardware write routine. The offset parameter was
16197 actually eliminated from the low level read/write routines because
16198 they had become obsolete.
16199
16200 Fixed a problem where a handler object was deleted twice during
16201 the removal of a fixed event handler.
16202
16203
16204 2) Linux:
16205
16206 A fix for SMP systems with link devices was contributed by
16207
16208 Compaq'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
16212 return value from the ACPI CA core back to the OS.)
16213
16214
16215
16216 3) Documentation:
16217
16218 The ACPI CA Programmer Reference has been updated to reflect new
16219 interfaces and changes to existing interfaces.
16220
16221 ----------------------------------------
16222 28 March 2003. Summary of changes for version 20030328.
16223
16224 1) ACPI CA Core Subsystem:
16225
16226 The GPE Block Device support has been completed. New interfaces
16227 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event
16228 interfaces (enable, disable, clear, getstatus) have been split
16229 into separate interfaces for Fixed Events and General Purpose
16230 Events (GPEs) in order to support GPE Block Devices properly.
16231
16232 Fixed a problem where the error message "Failed to acquire
16233 semaphore" would appear during operations on the embedded
16234 controller (EC).
16235
16236 Code and Data Size: Current core subsystem library sizes are shown
16237 below. These are the code and data sizes for the acpica.lib
16238 produced by the Microsoft Visual C++ 6.0 compiler, and these
16239 values do not include any ACPI driver or OSPM code. The debug
16240 version of the code includes the debug output trace mechanism and
16241 has a much larger code and data size. Note that these values will
16242 vary depending on the efficiency of the compiler and the compiler
16243 options 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 ----------------------------------------
16254 28 February 2003. Summary of changes for version 20030228.
16255
16256
16257 1) ACPI CA Core Subsystem:
16258
16259 The GPE handling and dispatch code has been completely overhauled
16260 in preparation for support of GPE Block Devices (ID ACPI0006).
16261 This affects internal data structures and code only; there should
16262 be no differences visible externally. One new file has been
16263 added, evgpeblk.c
16264
16265 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
16266 fields that are used to determine the GPE block lengths. The
16267 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
16268 structures are ignored. This is per the ACPI specification but it
16269 isn'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
16272 In the SCI interrupt handler, removed the read of the PM1_CONTROL
16273 register to look at the SCI_EN bit. On some machines, this read
16274 causes an SMI event and greatly slows down SCI events. (This may
16275 in fact be the cause of slow battery status response on some
16276 systems.)
16277
16278 Fixed a problem where a store of a NULL string to a package object
16279 could cause the premature deletion of the object. This was seen
16280 during execution of the battery _BIF method on some systems,
16281 resulting in no battery data being returned.
16282
16283 Added AcpiWalkResources interface to simplify parsing of resource
16284 lists.
16285
16286 Code and Data Size: Current core subsystem library sizes are shown
16287 below. These are the code and data sizes for the acpica.lib
16288 produced by the Microsoft Visual C++ 6.0 compiler, and these
16289 values do not include any ACPI driver or OSPM code. The debug
16290 version of the code includes the debug output trace mechanism and
16291 has a much larger code and data size. Note that these values will
16292 vary depending on the efficiency of the compiler and the compiler
16293 options 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
16303 2) Linux
16304
16305 S3 fixes (Ole Rohne)
16306
16307 Update ACPI PHP driver with to use new acpi_walk_resource API
16308 (Bjorn Helgaas)
16309
16310 Add S4BIOS support (Pavel Machek)
16311
16312 Map in entire table before performing checksum (John Stultz)
16313
16314 Expand the mem= cmdline to allow the specification of reserved and
16315 ACPI DATA blocks (Pavel Machek)
16316
16317 Never use ACPI on VISWS
16318
16319 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
16320
16321 Revert a change that allowed P_BLK lengths to be 4 or 5. This is
16322 causing us to think that some systems support C2 when they really
16323 don't.
16324
16325 Do not count processor objects for non-present CPUs (Thanks to
16326 Dominik Brodowski)
16327
16328
16329 3) iASL Compiler:
16330
16331 Fixed a problem where ASL include files could not be found and
16332 opened.
16333
16334 Added support for the _PDC reserved name.
16335
16336
16337 ----------------------------------------
16338 22 January 2003. Summary of changes for version 20030122.
16339
16340
16341 1) ACPI CA Core Subsystem:
16342
16343 Added a check for constructs of the form: Store (Local0, Local0)
16344 where Local0 is not initialized. Apparently, some BIOS
16345 programmers believe that this is a NOOP. Since this store doesn't
16346 do anything anyway, the new prototype behavior will ignore this
16347 error. This is a case where we can relax the strict checking in
16348 the interpreter in the name of compatibility.
16349
16350
16351 2) Linux
16352
16353 The AcpiSrc Source Conversion Utility has been released with the
16354 Linux package for the first time. This is the utility that is
16355 used 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
16360 header.
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
16369 the
16370 former now also includes the latter, acpiphp.h only needs the one,
16371 now.
16372
16373 (2.5) Make it possible to select method of bios restoring after S3
16374 resume. [=> 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
16386 Visinoni)
16387
16388
16389 3) iASL Compiler:
16390
16391 Added support to disassemble SSDT and PSDTs.
16392
16393 Implemented support to obtain SSDTs from the Windows registry if
16394 available.
16395
16396
16397 ----------------------------------------
16398 09 January 2003. Summary of changes for version 20030109.
16399
16400 1) ACPI CA Core Subsystem:
16401
16402 Changed the behavior of the internal Buffer-to-String conversion
16403 function. The current ACPI specification states that the contents
16404 of the buffer are "converted to a string of two-character
16405 hexadecimal numbers, each separated by a space". Unfortunately,
16406 this definition is not backwards compatible with existing ACPI 1.0
16407 implementations (although the behavior was not defined in the ACPI
16408 1.0 specification). The new behavior simply copies data from the
16409 buffer to the string until a null character is found or the end of
16410 the buffer is reached. The new String object is always null
16411 terminated. This problem was seen during the generation of _BIF
16412 battery data where incorrect strings were returned for battery
16413 type, etc. This will also require an errata to the ACPI
16414 specification.
16415
16416 Renamed all instances of NATIVE_UINT and NATIVE_INT to
16417 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
16418
16419 Copyright in all module headers (both Linux and non-Linux) has be
16420 updated to 2003.
16421
16422 Code and Data Size: Current core subsystem library sizes are shown
16423 below. These are the code and data sizes for the acpica.lib
16424 produced by the Microsoft Visual C++ 6.0 compiler, and these
16425 values do not include any ACPI driver or OSPM code. The debug
16426 version of the code includes the debug output trace mechanism and
16427 has a much larger code and data size. Note that these values will
16428 vary depending on the efficiency of the compiler and the compiler
16429 options 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
16439 2) Linux
16440
16441 Fixed 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
16450 of 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
16458 Several changes have been made to the source code translation
16459 utility that generates the Linux Code in order to make the code
16460 more "Linux-like":
16461
16462 All typedefs on structs and unions have been removed in keeping
16463 with the Linux coding style.
16464
16465 Removed the non-Linux SourceSafe module revision number from each
16466 module header.
16467
16468 Completed major overhaul of symbols to be lowercase for linux.
16469 Doubled the number of symbols that are lowercase.
16470
16471 Fixed a problem where identifiers within procedure headers and
16472 within quotes were not fully lower cased (they were left with a
16473 starting capital.)
16474
16475 Some C macros whose only purpose is to allow the generation of 16-
16476 bit code are now completely removed in the Linux code, increasing
16477 readability and maintainability.
16478
16479 ----------------------------------------
16480
16481 12 December 2002. Summary of changes for version 20021212.
16482
16483
16484 1) ACPI CA Core Subsystem:
16485
16486 Fixed a problem where the creation of a zero-length AML Buffer
16487 would cause a fault.
16488
16489 Fixed a problem where a Buffer object that pointed to a static AML
16490 buffer (in an ACPI table) could inadvertently be deleted, causing
16491 memory corruption.
16492
16493 Fixed a problem where a user buffer (passed in to the external
16494 ACPI CA interfaces) could be overwritten if the buffer was too
16495 small to complete the operation, causing memory corruption.
16496
16497 Fixed a problem in the Buffer-to-String conversion code where a
16498 string of length one was always returned, regardless of the size
16499 of the input Buffer object.
16500
16501 Removed the NATIVE_CHAR data type across the entire source due to
16502 lack of need and lack of consistent use.
16503
16504 Code and Data Size: Current core subsystem library sizes are shown
16505 below. These are the code and data sizes for the acpica.lib
16506 produced by the Microsoft Visual C++ 6.0 compiler, and these
16507 values do not include any ACPI driver or OSPM code. The debug
16508 version of the code includes the debug output trace mechanism and
16509 has a much larger code and data size. Note that these values will
16510 vary depending on the efficiency of the compiler and the compiler
16511 options 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 ----------------------------------------
16522 05 December 2002. Summary of changes for version 20021205.
16523
16524 1) ACPI CA Core Subsystem:
16525
16526 Fixed a problem where a store to a String or Buffer object could
16527 cause corruption of the DSDT if the object type being stored was
16528 the same as the target object type and the length of the object
16529 being stored was equal to or smaller than the original (existing)
16530 target object. This was seen to cause corruption of battery _BIF
16531 buffers if the _BIF method modified the buffer on the fly.
16532
16533 Fixed a problem where an internal error was generated if a control
16534 method invocation was used in an OperationRegion, Buffer, or
16535 Package declaration. This was caused by the deferred parsing of
16536 the control method and thus the deferred creation of the internal
16537 method object. The solution to this problem was to create the
16538 internal method object at the moment the method is encountered in
16539 the first pass - so that subsequent references to the method will
16540 able to obtain the required parameter count and thus properly
16541 parse the method invocation. This problem presented itself as an
16542 AE_AML_INTERNAL during the pass 1 parse phase during table load.
16543
16544 Fixed a problem where the internal String object copy routine did
16545 not always allocate sufficient memory for the target String object
16546 and caused memory corruption. This problem was seen to cause
16547 "Allocation already present in list!" errors as memory allocation
16548 became corrupted.
16549
16550 Implemented a new function for the evaluation of namespace objects
16551 that allows the specification of the allowable return object
16552 types. This simplifies a lot of code that checks for a return
16553 object of one or more specific objects returned from the
16554 evaluation (such as _STA, etc.) This may become and external
16555 function if it would be useful to ACPI-related drivers.
16556
16557 Completed another round of prefixing #defines with "ACPI_" for
16558 clarity.
16559
16560 Completed additional code restructuring to allow more modular
16561 linking for iASL compiler and AcpiExec. Several files were split
16562 creating new files. New files: nsparse.c dsinit.c evgpe.c
16563
16564 Implemented an abort mechanism to terminate an executing control
16565 method via the AML debugger. This feature is useful for debugging
16566 control methods that depend (wait) for specific hardware
16567 responses.
16568
16569 Code and Data Size: Current core subsystem library sizes are shown
16570 below. These are the code and data sizes for the acpica.lib
16571 produced by the Microsoft Visual C++ 6.0 compiler, and these
16572 values do not include any ACPI driver or OSPM code. The debug
16573 version of the code includes the debug output trace mechanism and
16574 has a much larger code and data size. Note that these values will
16575 vary depending on the efficiency of the compiler and the compiler
16576 options 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
16586 2) iASL Compiler/Disassembler
16587
16588 Fixed a compiler code generation problem for "Interrupt" Resource
16589 Descriptors. If specified in the ASL, the optional "Resource
16590 Source Index" and "Resource Source" fields were not inserted into
16591 the correct location within the AML resource descriptor, creating
16592 an invalid descriptor.
16593
16594 Fixed a disassembler problem for "Interrupt" resource descriptors.
16595 The optional "Resource Source Index" and "Resource Source" fields
16596 were ignored.
16597
16598
16599 ----------------------------------------
16600 22 November 2002. Summary of changes for version 20021122.
16601
16602
16603 1) ACPI CA Core Subsystem:
16604
16605 Fixed a reported problem where an object stored to a Method Local
16606 or Arg was not copied to a new object during the store - the
16607 object pointer was simply copied to the Local/Arg. This caused
16608 all subsequent operations on the Local/Arg to also affect the
16609 original source of the store operation.
16610
16611 Fixed a problem where a store operation to a Method Local or Arg
16612 was not completed properly if the Local/Arg contained a reference
16613 (from RefOf) to a named field. The general-purpose store-to-
16614 namespace-node code is now used so that this case is handled
16615 automatically.
16616
16617 Fixed a problem where the internal object copy routine would cause
16618 a protection fault if the object being copied was a Package and
16619 contained either 1) a NULL package element or 2) a nested sub-
16620 package.
16621
16622 Fixed a problem with the GPE initialization that resulted from an
16623 ambiguity in the ACPI specification. One section of the
16624 specification states that both the address and length of the GPE
16625 block must be zero if the block is not supported. Another section
16626 implies that only the address need be zero if the block is not
16627 supported. The code has been changed so that both the address and
16628 the length must be non-zero to indicate a valid GPE block (i.e.,
16629 if either the address or the length is zero, the GPE block is
16630 invalid.)
16631
16632 Code and Data Size: Current core subsystem library sizes are shown
16633 below. These are the code and data sizes for the acpica.lib
16634 produced by the Microsoft Visual C++ 6.0 compiler, and these
16635 values do not include any ACPI driver or OSPM code. The debug
16636 version of the code includes the debug output trace mechanism and
16637 has a much larger code and data size. Note that these values will
16638 vary depending on the efficiency of the compiler and the compiler
16639 options 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
16649 2) Linux
16650
16651 Cleaned up EC driver. Exported an external EC read/write
16652 interface. By going through this, other drivers (most notably
16653 sonypi) will be able to serialize access to the EC.
16654
16655
16656 3) iASL Compiler/Disassembler
16657
16658 Implemented support to optionally generate include files for both
16659 ASM and C (the -i switch). This simplifies BIOS development by
16660 automatically creating include files that contain external
16661 declarations for the symbols that are created within the
16662
16663 (optionally generated) ASM and C AML source files.
16664
16665
16666 ----------------------------------------
16667 15 November 2002. Summary of changes for version 20021115.
16668
16669 1) ACPI CA Core Subsystem:
16670
16671 Fixed a memory leak problem where an error during resolution of
16672
16673 method arguments during a method invocation from another method
16674 failed to cleanup properly by deleting all successfully resolved
16675 argument objects.
16676
16677 Fixed a problem where the target of the Index() operator was not
16678 correctly constructed if the source object was a package. This
16679 problem has not been detected because the use of a target operand
16680 with Index() is very rare.
16681
16682 Fixed a problem with the Index() operator where an attempt was
16683 made to delete the operand objects twice.
16684
16685 Fixed a problem where an attempt was made to delete an operand
16686 twice during execution of the CondRefOf() operator if the target
16687 did not exist.
16688
16689 Implemented the first of perhaps several internal create object
16690 functions that create and initialize a specific object type. This
16691 consolidates duplicated code wherever the object is created, thus
16692 shrinking the size of the subsystem.
16693
16694 Implemented improved debug/error messages for errors that occur
16695 during nested method invocations. All executing method pathnames
16696 are displayed (with the error) as the call stack is unwound - thus
16697 simplifying debug.
16698
16699 Fixed a problem introduced in the 10/02 release that caused
16700 premature deletion of a buffer object if a buffer was used as an
16701 ASL operand where an integer operand is required (Thus causing an
16702 implicit object conversion from Buffer to Integer.) The change in
16703 the 10/02 release was attempting to fix a memory leak (albeit
16704 incorrectly.)
16705
16706 Code and Data Size: Current core subsystem library sizes are shown
16707 below. These are the code and data sizes for the acpica.lib
16708 produced by the Microsoft Visual C++ 6.0 compiler, and these
16709 values do not include any ACPI driver or OSPM code. The debug
16710 version of the code includes the debug output trace mechanism and
16711 has a much larger code and data size. Note that these values will
16712 vary depending on the efficiency of the compiler and the compiler
16713 options 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
16723 2) Linux
16724
16725 Changed the implementation of the ACPI semaphores to use down()
16726 instead of down_interruptable(). It is important that the
16727 execution of ACPI control methods not be interrupted by signals.
16728 Methods must run to completion, or the system may be left in an
16729 unknown/unstable state.
16730
16731 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
16732 (Shawn Starr)
16733
16734
16735 3) iASL Compiler/Disassembler
16736
16737
16738 Changed the default location of output files. All output files
16739 are now placed in the current directory by default instead of in
16740 the directory of the source file. This change may affect some
16741 existing makefiles, but it brings the behavior of the compiler in
16742 line with other similar tools. The location of the output files
16743 can be overridden with the -p command line switch.
16744
16745
16746 ----------------------------------------
16747 11 November 2002. Summary of changes for version 20021111.
16748
16749
16750 0) ACPI Specification 2.0B is released and is now available at:
16751 http://www.acpi.info/index.html
16752
16753
16754 1) ACPI CA Core Subsystem:
16755
16756 Implemented support for the ACPI 2.0 SMBus Operation Regions.
16757 This includes the early detection and handoff of the request to
16758 the SMBus region handler (avoiding all of the complex field
16759 support code), and support for the bidirectional return packet
16760 from an SMBus write operation. This paves the way for the
16761 development of SMBus drivers in each host operating system.
16762
16763 Fixed a problem where the semaphore WAIT_FOREVER constant was
16764 defined as 32 bits, but must be 16 bits according to the ACPI
16765 specification. This had the side effect of causing ASL
16766 Mutex/Event timeouts even though the ASL code requested a wait
16767 forever. Changed all internal references to the ACPI timeout
16768 parameter to 16 bits to prevent future problems. Changed the name
16769 of WAIT_FOREVER to ACPI_WAIT_FOREVER.
16770
16771 Code and Data Size: Current core subsystem library sizes are shown
16772 below. These are the code and data sizes for the acpica.lib
16773 produced by the Microsoft Visual C++ 6.0 compiler, and these
16774 values do not include any ACPI driver or OSPM code. The debug
16775 version of the code includes the debug output trace mechanism and
16776 has a much larger code and data size. Note that these values will
16777 vary depending on the efficiency of the compiler and the compiler
16778 options 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
16788 2) Linux
16789
16790 Module loading/unloading fixes (John Cagle)
16791
16792
16793 3) iASL Compiler/Disassembler
16794
16795 Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
16796
16797 Implemented support for the disassembly of all SMBus protocol
16798 keywords (SMBQuick, SMBWord, etc.)
16799
16800 ----------------------------------------
16801 01 November 2002. Summary of changes for version 20021101.
16802
16803
16804 1) ACPI CA Core Subsystem:
16805
16806 Fixed a problem where platforms that have a GPE1 block but no GPE0
16807 block were not handled correctly. This resulted in a "GPE
16808 overlap" error message. GPE0 is no longer required.
16809
16810 Removed code added in the previous release that inserted nodes
16811 into the namespace in alphabetical order. This caused some side-
16812 effects on various machines. The root cause of the problem is
16813 still under investigation since in theory, the internal ordering
16814 of the namespace nodes should not matter.
16815
16816
16817 Enhanced error reporting for the case where a named object is not
16818 found during control method execution. The full ACPI namepath
16819 (name reference) of the object that was not found is displayed in
16820 this case.
16821
16822 Note: as a result of the overhaul of the namespace object types in
16823 the previous release, the namespace nodes for the predefined
16824 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
16825 instead of ACPI_TYPE_ANY. This simplifies the namespace
16826 management code but may affect code that walks the namespace tree
16827 looking for specific object types.
16828
16829 Code and Data Size: Current core subsystem library sizes are shown
16830 below. These are the code and data sizes for the acpica.lib
16831 produced by the Microsoft Visual C++ 6.0 compiler, and these
16832 values do not include any ACPI driver or OSPM code. The debug
16833 version of the code includes the debug output trace mechanism and
16834 has a much larger code and data size. Note that these values will
16835 vary depending on the efficiency of the compiler and the compiler
16836 options 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
16846 2) Linux
16847
16848 Fixed a problem introduced in the previous release where the
16849 Processor and Thermal objects were not recognized and installed in
16850 /proc. This was related to the scope type change described above.
16851
16852
16853 3) iASL Compiler/Disassembler
16854
16855 Implemented the -g option to get all of the required ACPI tables
16856 from the registry and save them to files (Windows version of the
16857 compiler only.) The required tables are the FADT, FACS, and DSDT.
16858
16859 Added ACPI table checksum validation during table disassembly in
16860 order to catch corrupted tables.
16861
16862
16863 ----------------------------------------
16864 22 October 2002. Summary of changes for version 20021022.
16865
16866 1) ACPI CA Core Subsystem:
16867
16868 Implemented a restriction on the Scope operator that the target
16869 must already exist in the namespace at the time the operator is
16870 encountered (during table load or method execution). In other
16871 words, forward references are not allowed and Scope() cannot
16872 create a new object. This changes the previous behavior where the
16873 interpreter would create the name if not found. This new behavior
16874 correctly enables the search-to-root algorithm during namespace
16875 lookup of the target name. Because of this upsearch, this fixes
16876 the known Compaq _SB_.OKEC problem and makes both the AML
16877 interpreter and iASL compiler compatible with other ACPI
16878 implementations.
16879
16880 Completed a major overhaul of the internal ACPI object types for
16881 the ACPI Namespace and the associated operand objects. Many of
16882 these types had become obsolete with the introduction of the two-
16883 pass namespace load. This cleanup simplifies the code and makes
16884 the entire namespace load mechanism much clearer and easier to
16885 understand.
16886
16887 Improved debug output for tracking scope opening/closing to help
16888 diagnose scoping issues. The old scope name as well as the new
16889 scope name are displayed. Also improved error messages for
16890 problems with ASL Mutex objects and error messages for GPE
16891 problems.
16892
16893 Cleaned up the namespace dump code, removed obsolete code.
16894
16895 All string output (for all namespace/object dumps) now uses the
16896 common ACPI string output procedure which handles escapes properly
16897 and does not emit non-printable characters.
16898
16899 Fixed some issues with constants in the 64-bit version of the
16900 local C library (utclib.c)
16901
16902
16903 2) Linux
16904
16905 EC Driver: No longer attempts to acquire the Global Lock at
16906 interrupt level.
16907
16908
16909 3) iASL Compiler/Disassembler
16910
16911 Implemented ACPI 2.0B grammar change that disallows all Type 1 and
16912 2 opcodes outside of a control method. This means that the
16913 "executable" operators (versus the "namespace" operators) cannot
16914 be used at the table level; they can only be used within a control
16915 method.
16916
16917 Implemented the restriction on the Scope() operator where the
16918 target must already exist in the namespace at the time the
16919 operator is encountered (during ASL compilation). In other words,
16920 forward references are not allowed and Scope() cannot create a new
16921 object. This makes the iASL compiler compatible with other ACPI
16922 implementations and makes the Scope() implementation adhere to the
16923 ACPI specification.
16924
16925 Fixed a problem where namepath optimization for the Alias operator
16926 was optimizing the wrong path (of the two namepaths.) This caused
16927 a "Missing alias link" error message.
16928
16929 Fixed a problem where an "unknown reserved name" warning could be
16930 incorrectly generated for names like "_SB" when the trailing
16931 underscore is not used in the original ASL.
16932
16933 Fixed a problem where the reserved name check did not handle
16934 NamePaths with multiple NameSegs correctly. The first nameseg of
16935 the NamePath was examined instead of the last NameSeg.
16936
16937
16938 ----------------------------------------
16939
16940 02 October 2002. Summary of changes for this release.
16941
16942
16943 1) ACPI CA Core Subsystem version 20021002:
16944
16945 Fixed a problem where a store/copy of a string to an existing
16946 string did not always set the string length properly in the String
16947 object.
16948
16949 Fixed a reported problem with the ToString operator where the
16950 behavior was identical to the ToHexString operator instead of just
16951 simply converting a raw buffer to a string data type.
16952
16953 Fixed a problem where CopyObject and the other "explicit"
16954 conversion operators were not updating the internal namespace node
16955 type as part of the store operation.
16956
16957 Fixed a memory leak during implicit source operand conversion
16958 where the original object was not deleted if it was converted to a
16959 new object of a different type.
16960
16961 Enhanced error messages for all problems associated with namespace
16962 lookups. Common procedure generates and prints the lookup name as
16963 well as the formatted status.
16964
16965 Completed implementation of a new design for the Alias support
16966 within the namespace. The existing design did not handle the case
16967 where a new object was assigned to one of the two names due to the
16968 use of an explicit conversion operator, resulting in the two names
16969 pointing to two different objects. The new design simply points
16970 the Alias name to the original name node - not to the object.
16971 This results in a level of indirection that must be handled in the
16972 name resolution mechanism.
16973
16974 Code and Data Size: Current core subsystem library sizes are shown
16975 below. These are the code and data sizes for the acpica.lib
16976 produced by the Microsoft Visual C++ 6.0 compiler, and these
16977 values do not include any ACPI driver or OSPM code. The debug
16978 version of the code includes the debug output trace mechanism and
16979 has a larger code and data size. Note that these values will vary
16980 depending on the efficiency of the compiler and the compiler
16981 options 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
16991 2) Linux
16992
16993 Initialize thermal driver's timer before it is used. (Knut
16994 Neumann)
16995
16996 Allow handling negative celsius values. (Kochi Takayoshi)
16997
16998 Fix thermal management and make trip points. R/W (Pavel Machek)
16999
17000 Fix /proc/acpi/sleep. (P. Christeas)
17001
17002 IA64 fixes. (David Mosberger)
17003
17004 Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
17005
17006 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
17007 Brodowski)
17008
17009
17010 3) iASL Compiler/Disassembler
17011
17012 Clarified some warning/error messages.
17013
17014
17015 ----------------------------------------
17016 18 September 2002. Summary of changes for this release.
17017
17018
17019 1) ACPI CA Core Subsystem version 20020918:
17020
17021 Fixed a reported problem with reference chaining (via the Index()
17022 and RefOf() operators) in the ObjectType() and SizeOf() operators.
17023 The definition of these operators includes the dereferencing of
17024 all chained references to return information on the base object.
17025
17026 Fixed a problem with stores to indexed package elements - the
17027 existing code would not complete the store if an "implicit
17028 conversion" was not performed. In other words, if the existing
17029 object (package element) was to be replaced completely, the code
17030 didn't handle this case.
17031
17032 Relaxed typechecking on the ASL "Scope" operator to allow the
17033 target name to refer to an object of type Integer, String, or
17034 Buffer, in addition to the scoping object types (Device,
17035 predefined Scopes, Processor, PowerResource, and ThermalZone.)
17036 This allows existing AML code that has workarounds for a bug in
17037 Windows to function properly. A warning is issued, however. This
17038 affects both the AML interpreter and the iASL compiler. Below is
17039 an example of this type of ASL code:
17040
17041 Name(DEB,0x00)
17042 Scope(DEB)
17043 {
17044
17045 Fixed some reported problems with 64-bit integer support in the
17046 local implementation of C library functions (clib.c)
17047
17048
17049 2) Linux
17050
17051 Use ACPI fix map region instead of IOAPIC region, since it is
17052 undefined in non-SMP.
17053
17054 Ensure that the SCI has the proper polarity and trigger, even on
17055 systems that do not have an interrupt override entry in the MADT.
17056
17057 2.5 big driver reorganization (Pat Mochel)
17058
17059 Use early table mapping code from acpitable.c (Andi Kleen)
17060
17061 New blacklist entries (Andi Kleen)
17062
17063 Blacklist improvements. Split blacklist code out into a separate
17064 file. Move checking the blacklist to very early. Previously, we
17065 would use ACPI tables, and then halfway through init, check the
17066 blacklist -- too late. Now, it's early enough to completely fall-
17067 back to non-ACPI.
17068
17069
17070 3) iASL Compiler/Disassembler version 20020918:
17071
17072 Fixed a problem where the typechecking code didn't know that an
17073 alias could point to a method. In other words, aliases were not
17074 being dereferenced during typechecking.
17075
17076
17077 ----------------------------------------
17078 29 August 2002. Summary of changes for this release.
17079
17080 1) ACPI CA Core Subsystem Version 20020829:
17081
17082 If the target of a Scope() operator already exists, it must be an
17083 object type that actually opens a scope -- such as a Device,
17084 Method, Scope, etc. This is a fatal runtime error. Similar error
17085 check has been added to the iASL compiler also.
17086
17087 Tightened up the namespace load to disallow multiple names in the
17088 same scope. This previously was allowed if both objects were of
17089 the same type. (i.e., a lookup was the same as entering a new
17090 name).
17091
17092
17093 2) Linux
17094
17095 Ensure that the ACPI interrupt has the proper trigger and
17096 polarity.
17097
17098 local_irq_disable is extraneous. (Matthew Wilcox)
17099
17100 Make "acpi=off" actually do what it says, and not use the ACPI
17101 interpreter *or* the tables.
17102
17103 Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
17104 Takayoshi)
17105
17106
17107 3) iASL Compiler/Disassembler Version 20020829:
17108
17109 Implemented namepath optimization for name declarations. For
17110 example, a declaration like "Method (\_SB_.ABCD)" would get
17111 optimized to "Method (ABCD)" if the declaration is within the
17112 \_SB_ scope. This optimization is in addition to the named
17113 reference path optimization first released in the previous
17114 version. This would seem to complete all possible optimizations
17115 for namepaths within the ASL/AML.
17116
17117 If the target of a Scope() operator already exists, it must be an
17118 object type that actually opens a scope -- such as a Device,
17119 Method, Scope, etc.
17120
17121 Implemented a check and warning for unreachable code in the same
17122 block below a Return() statement.
17123
17124 Fixed a problem where the listing file was not generated if the
17125 compiler aborted if the maximum error count was exceeded (200).
17126
17127 Fixed a problem where the typechecking of method return values was
17128 broken. This includes the check for a return value when the
17129 method is invoked as a TermArg (a return value is expected.)
17130
17131 Fixed a reported problem where EOF conditions during a quoted
17132 string or comment caused a fault.
17133
17134
17135 ----------------------------------------
17136 15 August 2002. Summary of changes for this release.
17137
17138 1) ACPI CA Core Subsystem Version 20020815:
17139
17140 Fixed a reported problem where a Store to a method argument that
17141 contains a reference did not perform the indirect store correctly.
17142 This problem was created during the conversion to the new
17143 reference object model - the indirect store to a method argument
17144 code was not updated to reflect the new model.
17145
17146 Reworked the ACPI mode change code to better conform to ACPI 2.0,
17147 handle corner cases, and improve code legibility (Kochi Takayoshi)
17148
17149 Fixed a problem with the pathname parsing for the carat (^)
17150 prefix. The heavy use of the carat operator by the new namepath
17151 optimization in the iASL compiler uncovered a problem with the AML
17152 interpreter handling of this prefix. In the case where one or
17153 more carats precede a single nameseg, the nameseg was treated as
17154 standalone and the search rule (to root) was inadvertently
17155 applied. This could cause both the iASL compiler and the
17156 interpreter to find the wrong object or to miss the error that
17157 should occur if the object does not exist at that exact pathname.
17158
17159 Found and fixed the problem where the HP Pavilion DSDT would not
17160 load. This was a relatively minor tweak to the table loading code
17161 (a problem caused by the unexpected encounter with a method
17162 invocation not within a control method), but it does not solve the
17163 overall issue of the execution of AML code at the table level.
17164 This investigation is still ongoing.
17165
17166 Code and Data Size: Current core subsystem library sizes are shown
17167 below. These are the code and data sizes for the acpica.lib
17168 produced by the Microsoft Visual C++ 6.0 compiler, and these
17169 values do not include any ACPI driver or OSPM code. The debug
17170 version of the code includes the debug output trace mechanism and
17171 has a larger code and data size. Note that these values will vary
17172 depending on the efficiency of the compiler and the compiler
17173 options 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
17183 2) Linux
17184
17185 Remove redundant slab.h include (Brad Hards)
17186
17187 Fix several bugs in thermal.c (Herbert Nachtnebel)
17188
17189 Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
17190
17191 Change acpi_system_suspend to use updated irq functions (Pavel
17192 Machek)
17193
17194 Export acpi_get_firmware_table (Matthew Wilcox)
17195
17196 Use proper root proc entry for ACPI (Kochi Takayoshi)
17197
17198 Fix early-boot table parsing (Bjorn Helgaas)
17199
17200
17201 3) iASL Compiler/Disassembler
17202
17203 Reworked the compiler options to make them more consistent and to
17204 use two-letter options where appropriate. We were running out of
17205 sensible letters. This may break some makefiles, so check the
17206 current options list by invoking the compiler with no parameters.
17207
17208 Completed the design and implementation of the ASL namepath
17209 optimization option for the compiler. This option optimizes all
17210 references to named objects to the shortest possible path. The
17211 first attempt tries to utilize a single nameseg (4 characters) and
17212 the "search-to-root" algorithm used by the interpreter. If that
17213 cannot be used (because either the name is not in the search path
17214 or there is a conflict with another object with the same name),
17215 the pathname is optimized using the carat prefix (usually a
17216 shorter string than specifying the entire path from the root.)
17217
17218 Implemented support to obtain the DSDT from the Windows registry
17219 (when the disassembly option is specified with no input file).
17220 Added this code as the implementation for AcpiOsTableOverride in
17221 the Windows OSL. Migrated the 16-bit code (used in the AcpiDump
17222 utility) to scan memory for the DSDT to the AcpiOsTableOverride
17223 function in the DOS OSL to make the disassembler truly OS
17224 independent.
17225
17226 Implemented a new option to disassemble and compile in one step.
17227 When used without an input filename, this option will grab the
17228 DSDT from the local machine, disassemble it, and compile it in one
17229 step.
17230
17231 Added a warning message for invalid escapes (a backslash followed
17232 by any character other than the allowable escapes). This catches
17233 the quoted string error "\_SB_" (which should be "\\_SB_" ).
17234
17235 Also, there are numerous instances in the ACPI specification where
17236 this error occurs.
17237
17238 Added a compiler option to disable all optimizations. This is
17239 basically the "compatibility mode" because by using this option,
17240 the AML code will come out exactly the same as other ASL
17241 compilers.
17242
17243 Added error messages for incorrectly ordered dependent resource
17244 functions. This includes: missing EndDependentFn macro at end of
17245 dependent resource list, nested dependent function macros (both
17246 start and end), and missing StartDependentFn macro. These are
17247 common errors that should be caught at compile time.
17248
17249 Implemented _OSI support for the disassembler and compiler. _OSI
17250 must be included in the namespace for proper disassembly (because
17251 the disassembler must know the number of arguments.)
17252
17253 Added an "optimization" message type that is optional (off by
17254 default). This message is used for all optimizations - including
17255 constant folding, integer optimization, and namepath optimization.
17256
17257 ----------------------------------------
17258 25 July 2002. Summary of changes for this release.
17259
17260
17261 1) ACPI CA Core Subsystem Version 20020725:
17262
17263 The AML Disassembler has been enhanced to produce compilable ASL
17264 code and has been integrated into the iASL compiler (see below) as
17265 well as the single-step disassembly for the AML debugger and the
17266 disassembler for the AcpiDump utility. All ACPI 2.0A opcodes,
17267 resource templates and macros are fully supported. The
17268 disassembler has been tested on over 30 different AML files,
17269 producing identical AML when the resulting disassembled ASL file
17270 is recompiled with the same ASL compiler.
17271
17272 Modified the Resource Manager to allow zero interrupts and zero
17273 dma channels during the GetCurrentResources call. This was
17274 causing problems on some platforms.
17275
17276 Added the AcpiOsRedirectOutput interface to the OSL to simplify
17277 output redirection for the AcpiOsPrintf and AcpiOsVprintf
17278 interfaces.
17279
17280 Code and Data Size: Current core subsystem library sizes are shown
17281 below. These are the code and data sizes for the acpica.lib
17282 produced by the Microsoft Visual C++ 6.0 compiler, and these
17283 values do not include any ACPI driver or OSPM code. The debug
17284 version of the code includes the debug output trace mechanism and
17285 has a larger code and data size. Note that these values will vary
17286 depending on the efficiency of the compiler and the compiler
17287 options 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
17297 2) Linux
17298
17299 Fixed a panic in the EC driver (Dominik Brodowski)
17300
17301 Implemented checksum of the R/XSDT itself during Linux table scan
17302 (Richard Schaal)
17303
17304
17305 3) iASL compiler
17306
17307 The AML disassembler is integrated into the compiler. The "-d"
17308 option invokes the disassembler to completely disassemble an
17309 input AML file, producing as output a text ASL file with the
17310 extension ".dsl" (to avoid name collisions with existing .asl
17311 source files.) A future enhancement will allow the disassembler
17312 to obtain the BIOS DSDT from the registry under Windows.
17313
17314 Fixed a problem with the VendorShort and VendorLong resource
17315 descriptors where an invalid AML sequence was created.
17316
17317 Implemented a fix for BufferData term in the ASL parser. It was
17318 inadvertently defined twice, allowing invalid syntax to pass and
17319 causing reduction conflicts.
17320
17321 Fixed a problem where the Ones opcode could get converted to a
17322 value of zero if "Ones" was used where a byte, word or dword value
17323 was expected. The 64-bit value is now truncated to the correct
17324 size with the correct value.
17325
17326
17327
17328 ----------------------------------------
17329 02 July 2002. Summary of changes for this release.
17330
17331
17332 1) ACPI CA Core Subsystem Version 20020702:
17333
17334 The Table Manager code has been restructured to add several new
17335 features. Tables that are not required by the core subsystem
17336 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
17337 validated in any way and are returned from AcpiGetFirmwareTable if
17338 requested. The AcpiOsTableOverride interface is now called for
17339 each table that is loaded by the subsystem in order to allow the
17340 host to override any table it chooses. Previously, only the DSDT
17341 could be overridden. Added one new files, tbrsdt.c and
17342 tbgetall.c.
17343
17344 Fixed a problem with the conversion of internal package objects to
17345 external objects (when a package is returned from a control
17346 method.) The return buffer length was set to zero instead of the
17347 proper length of the package object.
17348
17349 Fixed a reported problem with the use of the RefOf and DeRefOf
17350 operators when passing reference arguments to control methods. A
17351 new type of Reference object is used internally for references
17352 produced by the RefOf operator.
17353
17354 Added additional error messages in the Resource Manager to explain
17355 AE_BAD_DATA errors when they occur during resource parsing.
17356
17357 Split the AcpiEnableSubsystem into two primitives to enable a
17358 finer granularity initialization sequence. These two calls should
17359 be called in this order: AcpiEnableSubsystem (flags),
17360 AcpiInitializeObjects (flags). The flags parameter remains the
17361 same.
17362
17363
17364 2) Linux
17365
17366 Updated the ACPI utilities module to understand the new style of
17367 fully resolved package objects that are now returned from the core
17368 subsystem. 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
17374 The method evaluation utility uses the new buffer allocation
17375 scheme instead of calling AcpiEvaluate Object twice.
17376
17377 Added support for ECDT. This allows the use of the Embedded
17378
17379 Controller before the namespace has been fully initialized, which
17380 is necessary for ACPI 2.0 support, and for some laptops to
17381 initialize properly. (Laptops using ECDT are still rare, so only
17382 limited testing was performed of the added functionality.)
17383
17384 Fixed memory leaks in the EC driver.
17385
17386 Eliminated a brittle code structure in acpi_bus_init().
17387
17388 Eliminated the acpi_evaluate() helper function in utils.c. It is
17389 no longer needed since acpi_evaluate_object can optionally
17390 allocate memory for the return object.
17391
17392 Implemented fix for keyboard hang when getting battery readings on
17393 some systems (Stephen White)
17394
17395 PCI IRQ routing update (Dominik Brodowski)
17396
17397 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
17398 support
17399
17400 ----------------------------------------
17401 11 June 2002. Summary of changes for this release.
17402
17403
17404 1) ACPI CA Core Subsystem Version 20020611:
17405
17406 Fixed a reported problem where constants such as Zero and One
17407 appearing within _PRT packages were not handled correctly within
17408 the resource manager code. Originally reported against the ASL
17409 compiler because the code generator now optimizes integers to
17410 their minimal AML representation (i.e. AML constants if possible.)
17411 The _PRT code now handles all AML constant opcodes correctly
17412 (Zero, One, Ones, Revision).
17413
17414 Fixed a problem with the Concatenate operator in the AML
17415 interpreter where a buffer result object was incorrectly marked as
17416 not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
17417
17418 All package sub-objects are now fully resolved before they are
17419 returned from the external ACPI interfaces. This means that name
17420 strings are resolved to object handles, and constant operators
17421 (Zero, One, Ones, Revision) are resolved to Integers.
17422
17423 Implemented immediate resolution of the AML Constant opcodes
17424 (Zero, One, Ones, Revision) to Integer objects upon detection
17425 within the AML stream. This has simplified and reduced the
17426 generated code size of the subsystem by eliminating about 10
17427 switch statements for these constants (which previously were
17428 contained in Reference objects.) The complicating issues are that
17429 the Zero opcode is used as a "placeholder" for unspecified
17430 optional target operands and stores to constants are defined to be
17431 no-ops.
17432
17433 Code and Data Size: Current core subsystem library sizes are shown
17434 below. These are the code and data sizes for the acpica.lib
17435 produced by the Microsoft Visual C++ 6.0 compiler, and these
17436 values do not include any ACPI driver or OSPM code. The debug
17437 version of the code includes the debug output trace mechanism and
17438 has a larger code and data size. Note that these values will vary
17439 depending on the efficiency of the compiler and the compiler
17440 options 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
17450 2) Linux
17451
17452
17453 Added preliminary support for obtaining _TRA data for PCI root
17454 bridges (Bjorn Helgaas).
17455
17456
17457 3) iASL Compiler Version X2046:
17458
17459 Fixed a problem where the "_DDN" reserved name was defined to be a
17460 control method with one argument. There are no arguments, and
17461 _DDN does not have to be a control method.
17462
17463 Fixed a problem with the Linux version of the compiler where the
17464 source lines printed with error messages were the wrong lines.
17465 This turned out to be the "LF versus CR/LF" difference between
17466 Windows and Unix. This appears to be the longstanding issue
17467 concerning listing output and error messages.
17468
17469 Fixed a problem with the Linux version of compiler where opcode
17470 names within error messages were wrong. This was caused by a
17471 slight difference in the output of the Flex tool on Linux versus
17472 Windows.
17473
17474 Fixed a problem with the Linux compiler where the hex output files
17475 contained some garbage data caused by an internal buffer overrun.
17476
17477
17478 ----------------------------------------
17479 17 May 2002. Summary of changes for this release.
17480
17481
17482 1) ACPI CA Core Subsystem Version 20020517:
17483
17484 Implemented a workaround to an BIOS bug discovered on the HP
17485 OmniBook where the FADT revision number and the table size are
17486 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new
17487 behavior is to fallback to using only the ACPI 1.0 fields of the
17488 FADT if the table is too small to be a ACPI 2.0 table as claimed
17489 by the revision number. Although this is a BIOS bug, this is a
17490 case where the workaround is simple enough and with no side
17491 effects, so it seemed prudent to add it. A warning message is
17492 issued, however.
17493
17494 Implemented minimum size checks for the fixed-length ACPI tables -
17495 - the FADT and FACS, as well as consistency checks between the
17496 revision number and the table size.
17497
17498 Fixed a reported problem in the table override support where the
17499 new table pointer was incorrectly treated as a physical address
17500 instead of a logical address.
17501
17502 Eliminated the use of the AE_AML_ERROR exception and replaced it
17503 with more descriptive codes.
17504
17505 Fixed a problem where an exception would occur if an ASL Field was
17506 defined with no named Field Units underneath it (used by some
17507 index fields).
17508
17509 Code and Data Size: Current core subsystem library sizes are shown
17510 below. These are the code and data sizes for the acpica.lib
17511 produced by the Microsoft Visual C++ 6.0 compiler, and these
17512 values do not include any ACPI driver or OSPM code. The debug
17513 version of the code includes the debug output trace mechanism and
17514 has a larger code and data size. Note that these values will vary
17515 depending on the efficiency of the compiler and the compiler
17516 options 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
17527 2) Linux
17528
17529 Much work done on ACPI init (MADT and PCI IRQ routing support).
17530 (Paul D. and Dominik Brodowski)
17531
17532 Fix PCI IRQ-related panic on boot (Sam Revitch)
17533
17534 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
17535
17536 Fix "MHz" typo (Dominik Brodowski)
17537
17538 Fix RTC year 2000 issue (Dominik Brodowski)
17539
17540 Preclude multiple button proc entries (Eric Brunet)
17541
17542 Moved arch-specific code out of include/platform/aclinux.h
17543
17544 3) iASL Compiler Version X2044:
17545
17546 Implemented error checking for the string used in the EISAID macro
17547 (Usually used in the definition of the _HID object.) The code now
17548 strictly enforces the PnP format - exactly 7 characters, 3
17549 uppercase letters and 4 hex digits.
17550
17551 If a raw string is used in the definition of the _HID object
17552 (instead of the EISAID macro), the string must contain all
17553 alphanumeric characters (e.g., "*PNP0011" is not allowed because
17554 of the asterisk.)
17555
17556 Implemented checking for invalid use of ACPI reserved names for
17557 most of the name creation operators (Name, Device, Event, Mutex,
17558 OperationRegion, PowerResource, Processor, and ThermalZone.)
17559 Previously, this check was only performed for control methods.
17560
17561 Implemented an additional check on the Name operator to emit an
17562 error if a reserved name that must be implemented in ASL as a
17563 control method is used. We know that a reserved name must be a
17564 method if it is defined with input arguments.
17565
17566 The warning emitted when a namespace object reference is not found
17567 during the cross reference phase has been changed into an error.
17568 The "External" directive should be used for names defined in other
17569 modules.
17570
17571
17572 4) Tools and Utilities
17573
17574 The 16-bit tools (adump16 and aexec16) have been regenerated and
17575 tested.
17576
17577 Fixed a problem with the output of both acpidump and adump16 where
17578 the indentation of closing parentheses and brackets was not
17579
17580 aligned properly with the parent block.
17581
17582
17583 ----------------------------------------
17584 03 May 2002. Summary of changes for this release.
17585
17586
17587 1) ACPI CA Core Subsystem Version 20020503:
17588
17589 Added support a new OSL interface that allows the host operating
17590
17591 system software to override the DSDT found in the firmware -
17592 AcpiOsTableOverride. With this interface, the OSL can examine the
17593 version of the firmware DSDT and replace it with a different one
17594 if desired.
17595
17596 Added new external interfaces for accessing ACPI registers from
17597 device drivers and other system software - AcpiGetRegister and
17598 AcpiSetRegister. This was simply an externalization of the
17599 existing AcpiHwBitRegister interfaces.
17600
17601 Fixed a regression introduced in the previous build where the
17602 ASL/AML CreateField operator always returned an error,
17603 "destination must be a NS Node".
17604
17605 Extended the maximum time (before failure) to successfully enable
17606 ACPI mode to 3 seconds.
17607
17608 Code and Data Size: Current core subsystem library sizes are shown
17609 below. These are the code and data sizes for the acpica.lib
17610 produced by the Microsoft Visual C++ 6.0 compiler, and these
17611 values do not include any ACPI driver or OSPM code. The debug
17612 version of the code includes the debug output trace mechanism and
17613 has a larger code and data size. Note that these values will vary
17614 depending on the efficiency of the compiler and the compiler
17615 options 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
17625 2) Linux
17626
17627 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
17628 free. While 3 out of 4 of our in-house systems work fine, the last
17629 one still hangs when testing the LAPIC timer.
17630
17631 Renamed many files in 2.5 kernel release to omit "acpi_" from the
17632 name.
17633
17634 Added warning on boot for Presario 711FR.
17635
17636 Sleep improvements (Pavel Machek)
17637
17638 ACPI can now be built without CONFIG_PCI enabled.
17639
17640 IA64: Fixed memory map functions (JI Lee)
17641
17642
17643 3) iASL Compiler Version X2043:
17644
17645 Added support to allow the compiler to be integrated into the MS
17646 VC++ development environment for one-button compilation of single
17647 files or entire projects -- with error-to-source-line mapping.
17648
17649 Implemented support for compile-time constant folding for the
17650 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
17651 specification. This allows the ASL writer to use expressions
17652 instead of Integer/Buffer/String constants in terms that must
17653 evaluate to constants at compile time and will also simplify the
17654 emitted AML in any such sub-expressions that can be folded
17655 (evaluated at compile-time.) This increases the size of the
17656 compiler significantly because a portion of the ACPI CA AML
17657 interpreter is included within the compiler in order to pre-
17658 evaluate constant expressions.
17659
17660
17661 Fixed a problem with the "Unicode" ASL macro that caused the
17662 compiler to fault. (This macro is used in conjunction with the
17663 _STR reserved name.)
17664
17665 Implemented an AML opcode optimization to use the Zero, One, and
17666 Ones opcodes where possible to further reduce the size of integer
17667 constants and thus reduce the overall size of the generated AML
17668 code.
17669
17670 Implemented error checking for new reserved terms for ACPI version
17671 2.0A.
17672
17673 Implemented the -qr option to display the current list of ACPI
17674 reserved names known to the compiler.
17675
17676 Implemented the -qc option to display the current list of ASL
17677 operators that are allowed within constant expressions and can
17678 therefore be folded at compile time if the operands are constants.
17679
17680
17681 4) Documentation
17682
17683 Updated the Programmer's Reference for new interfaces, data types,
17684 and memory allocation model options.
17685
17686 Updated the iASL Compiler User Reference to apply new format and
17687 add information about new features and options.
17688
17689 ----------------------------------------
17690 19 April 2002. Summary of changes for this release.
17691
17692 1) ACPI CA Core Subsystem Version 20020419:
17693
17694 The source code base for the Core Subsystem has been completely
17695 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
17696 versions. The Lint option files used are included in the
17697 /acpi/generate/lint directory.
17698
17699 Implemented enhanced status/error checking across the entire
17700 Hardware manager subsystem. Any hardware errors (reported from
17701 the OSL) are now bubbled up and will abort a running control
17702 method.
17703
17704
17705 Fixed a problem where the per-ACPI-table integer width (32 or 64)
17706 was stored only with control method nodes, causing a fault when
17707 non-control method code was executed during table loading. The
17708 solution implemented uses a global variable to indicate table
17709 width across the entire ACPI subsystem. Therefore, ACPI CA does
17710 not support mixed integer widths across different ACPI tables
17711 (DSDT, SSDT).
17712
17713 Fixed a problem where NULL extended fields (X fields) in an ACPI
17714 2.0 ACPI FADT caused the table load to fail. Although the
17715 existing ACPI specification is a bit fuzzy on this topic, the new
17716 behavior is to fall back on a ACPI 1.0 field if the corresponding
17717 ACPI 2.0 X field is zero (even though the table revision indicates
17718 a full ACPI 2.0 table.) The ACPI specification will be updated to
17719 clarify this issue.
17720
17721 Fixed a problem with the SystemMemory operation region handler
17722 where memory was always accessed byte-wise even if the AML-
17723 specified access width was larger than a byte. This caused
17724 problems on systems with memory-mapped I/O. Memory is now
17725 accessed with the width specified. On systems that do not support
17726 non-aligned transfers, a check is made to guarantee proper address
17727 alignment before proceeding in order to avoid an AML-caused
17728 alignment fault within the kernel.
17729
17730
17731 Fixed a problem with the ExtendedIrq resource where only one byte
17732 of the 4-byte Irq field was extracted.
17733
17734 Fixed the AcpiExDigitsNeeded() procedure to support _UID. This
17735 function was out of date and required a rewrite.
17736
17737 Code and Data Size: Current core subsystem library sizes are shown
17738 below. These are the code and data sizes for the acpica.lib
17739 produced by the Microsoft Visual C++ 6.0 compiler, and these
17740 values do not include any ACPI driver or OSPM code. The debug
17741 version of the code includes the debug output trace mechanism and
17742 has a larger code and data size. Note that these values will vary
17743 depending on the efficiency of the compiler and the compiler
17744 options 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
17754 2) Linux
17755
17756 PCI IRQ routing fixes (Dominik Brodowski)
17757
17758
17759 3) iASL Compiler Version X2042:
17760
17761 Implemented an additional compile-time error check for a field
17762 unit whose size + minimum access width would cause a run-time
17763 access beyond the end-of-region. Previously, only the field size
17764 itself was checked.
17765
17766 The Core subsystem and iASL compiler now share a common parse
17767 object in preparation for compile-time evaluation of the type
17768 3/4/5 ASL operators.
17769
17770
17771 ----------------------------------------
17772 Summary of changes for this release: 03_29_02
17773
17774 1) ACPI CA Core Subsystem Version 20020329:
17775
17776 Implemented support for late evaluation of TermArg operands to
17777 Buffer and Package objects. This allows complex expressions to be
17778 used in the declarations of these object types.
17779
17780 Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
17781 1.0, if the field was larger than 32 bits, it was returned as a
17782 buffer - otherwise it was returned as an integer. In ACPI 2.0,
17783 the field is returned as a buffer only if the field is larger than
17784 64 bits. The TableRevision is now considered when making this
17785 conversion to avoid incompatibility with existing ASL code.
17786
17787 Implemented logical addressing for AcpiOsGetRootPointer. This
17788 allows an RSDP with either a logical or physical address. With
17789 this support, the host OS can now override all ACPI tables with
17790 one logical RSDP. Includes implementation of "typed" pointer
17791 support to allow a common data type for both physical and logical
17792 pointers internally. This required a change to the
17793 AcpiOsGetRootPointer interface.
17794
17795 Implemented the use of ACPI 2.0 Generic Address Structures for all
17796 GPE, Fixed Event, and PM Timer I/O. This allows the use of memory
17797 mapped I/O for these ACPI features.
17798
17799 Initialization now ignores not only non-required tables (All
17800 tables other than the FADT, FACS, DSDT, and SSDTs), but also does
17801 not validate the table headers of unrecognized tables.
17802
17803 Fixed a problem where a notify handler could only be
17804 installed/removed on an object of type Device. All "notify"
17805
17806 objects are now supported -- Devices, Processor, Power, and
17807 Thermal.
17808
17809 Removed most verbosity from the ACPI_DB_INFO debug level. Only
17810 critical information is returned when this debug level is enabled.
17811
17812 Code and Data Size: Current core subsystem library sizes are shown
17813 below. These are the code and data sizes for the acpica.lib
17814 produced by the Microsoft Visual C++ 6.0 compiler, and these
17815 values do not include any ACPI driver or OSPM code. The debug
17816 version of the code includes the debug output trace mechanism and
17817 has a larger code and data size. Note that these values will vary
17818 depending on the efficiency of the compiler and the compiler
17819 options 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
17829 2) Linux:
17830
17831 The processor driver (acpi_processor.c) now fully supports ACPI
17832 2.0-based processor performance control (e.g. Intel(R)
17833 SpeedStep(TM) technology) Note that older laptops that only have
17834 the 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
17837 transitions will be included in the next version of ospmd.] The
17838 idle handler was modified to more aggressively use C2, and PIIX4
17839 errata handling underwent a complete overhaul (big thanks to
17840 Dominik Brodowski).
17841
17842 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
17843 based devices in the ACPI namespace are now dynamically bound
17844 (associated) with their PCI counterparts (e.g. PCI1->01:00.0).
17845 This allows, among other things, ACPI to resolve bus numbers for
17846 subordinate PCI bridges.
17847
17848 Enhanced PCI IRQ routing to get the proper bus number for _PRT
17849 entries defined underneath PCI bridges.
17850
17851 Added IBM 600E to bad bios list due to invalid _ADR value for
17852 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
17853
17854 In the process of adding full MADT support (e.g. IOAPIC) for IA32
17855 (acpi.c, mpparse.c) -- stay tuned.
17856
17857 Added back visual differentiation between fixed-feature and
17858 control-method buttons in dmesg. Buttons are also subtyped (e.g.
17859 button/power/PWRF) to simplify button identification.
17860
17861 We no longer use -Wno-unused when compiling debug. Please ignore
17862 any "_THIS_MODULE defined but not used" messages.
17863
17864 Can now shut down the system using "magic sysrq" key.
17865
17866
17867 3) iASL Compiler version 2041:
17868
17869 Fixed a problem where conversion errors for hex/octal/decimal
17870 constants were not reported.
17871
17872 Implemented a fix for the General Register template Address field.
17873 This field was 8 bits when it should be 64.
17874
17875 Fixed a problem where errors/warnings were no longer being emitted
17876 within the listing output file.
17877
17878 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
17879 exactly 4 characters, alphanumeric only.
17880
17881
17882
17883
17884 ----------------------------------------
17885 Summary of changes for this release: 03_08_02
17886
17887
17888 1) ACPI CA Core Subsystem Version 20020308:
17889
17890 Fixed a problem with AML Fields where the use of the "AccessAny"
17891 keyword could cause an interpreter error due to attempting to read
17892 or write beyond the end of the parent Operation Region.
17893
17894 Fixed a problem in the SystemMemory Operation Region handler where
17895 an attempt was made to map memory beyond the end of the region.
17896 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
17897 errors on some Linux systems.
17898
17899 Fixed a problem where the interpreter/namespace "search to root"
17900 algorithm was not functioning for some object types. Relaxed the
17901 internal restriction on the search to allow upsearches for all
17902 external object types as well as most internal types.
17903
17904
17905 2) Linux:
17906
17907 We now use safe_halt() macro versus individual calls to sti | hlt.
17908
17909 Writing to the processor limit interface should now work. "echo 1"
17910 will increase the limit, 2 will decrease, and 0 will reset to the
17911
17912 default.
17913
17914
17915 3) ASL compiler:
17916
17917 Fixed segfault on Linux version.
17918
17919
17920 ----------------------------------------
17921 Summary of changes for this release: 02_25_02
17922
17923 1) ACPI CA Core Subsystem:
17924
17925
17926 Fixed a problem where the GPE bit masks were not initialized
17927 properly, causing erratic GPE behavior.
17928
17929 Implemented limited support for multiple calling conventions. The
17930 code can be generated with either the VPL (variable parameter
17931 list, or "C") convention, or the FPL (fixed parameter list, or
17932 "Pascal") convention. The core subsystem is about 3.4% smaller
17933 when generated with FPL.
17934
17935
17936 2) Linux
17937
17938 Re-add some /proc/acpi/event functionality that was lost during
17939 the rewrite
17940
17941 Resolved issue with /proc events for fixed-feature buttons showing
17942 up as the system device.
17943
17944 Fixed checks on C2/C3 latencies to be inclusive of maximum values.
17945
17946 Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
17947
17948 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
17949
17950 Fixed limit interface & usage to fix bugs with passive cooling
17951 hysterisis.
17952
17953 Restructured PRT support.
17954
17955
17956 ----------------------------------------
17957 Summary of changes for this label: 02_14_02
17958
17959
17960 1) ACPI CA Core Subsystem:
17961
17962 Implemented support in AcpiLoadTable to allow loading of FACS and
17963 FADT tables.
17964
17965 Support for the now-obsolete interim 0.71 64-bit ACPI tables has
17966 been removed. All 64-bit platforms should be migrated to the ACPI
17967 2.0 tables. The actbl71.h header has been removed from the source
17968 tree.
17969
17970 All C macros defined within the subsystem have been prefixed with
17971 "ACPI_" to avoid collision with other system include files.
17972
17973 Removed the return value for the two AcpiOsPrint interfaces, since
17974 it is never used and causes lint warnings for ignoring the return
17975 value.
17976
17977 Added error checking to all internal mutex acquire and release
17978 calls. Although a failure from one of these interfaces is
17979 probably a fatal system error, these checks will cause the
17980 immediate abort of the currently executing method or interface.
17981
17982 Fixed a problem where the AcpiSetCurrentResources interface could
17983 fault. This was a side effect of the deployment of the new memory
17984 allocation model.
17985
17986 Fixed a couple of problems with the Global Lock support introduced
17987 in the last major build. The "common" (1.0/2.0) internal FACS was
17988 being overwritten with the FACS signature and clobbering the
17989 Global Lock pointer. Also, the actual firmware FACS was being
17990 unmapped after construction of the "common" FACS, preventing
17991 access to the actual Global Lock field within it. The "common"
17992 internal FACS is no longer installed as an actual ACPI table; it
17993 is used simply as a global.
17994
17995 Code and Data Size: Current core subsystem library sizes are shown
17996 below. These are the code and data sizes for the acpica.lib
17997 produced by the Microsoft Visual C++ 6.0 compiler, and these
17998 values do not include any ACPI driver or OSPM code. The debug
17999 version of the code includes the debug output trace mechanism and
18000 has a larger code and data size. Note that these values will vary
18001 depending on the efficiency of the compiler and the compiler
18002 options 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
18012 2) Linux
18013
18014 Updated Linux-specific code for core macro and OSL interface
18015 changes described above.
18016
18017 Improved /proc/acpi/event. It now can be opened only once and has
18018 proper poll functionality.
18019
18020 Fixed and restructured power management (acpi_bus).
18021
18022 Only create /proc "view by type" when devices of that class exist.
18023
18024 Fixed "charging/discharging" bug (and others) in acpi_battery.
18025
18026 Improved thermal zone code.
18027
18028
18029 3) ASL Compiler, version X2039:
18030
18031
18032 Implemented the new compiler restriction on ASL String hex/octal
18033 escapes to non-null, ASCII values. An error results if an invalid
18034 value is used. (This will require an ACPI 2.0 specification
18035 change.)
18036
18037 AML object labels that are output to the optional C and ASM source
18038 are now prefixed with both the ACPI table signature and table ID
18039 to help guarantee uniqueness within a large BIOS project.
18040
18041
18042 ----------------------------------------
18043 Summary of changes for this label: 02_01_02
18044
18045 1) ACPI CA Core Subsystem:
18046
18047 ACPI 2.0 support is complete in the entire Core Subsystem and the
18048 ASL compiler. All new ACPI 2.0 operators are implemented and all
18049 other changes for ACPI 2.0 support are complete. With
18050 simultaneous code and data optimizations throughout the subsystem,
18051 ACPI 2.0 support has been implemented with almost no additional
18052 cost in terms of code and data size.
18053
18054 Implemented a new mechanism for allocation of return buffers. If
18055 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
18056 be allocated on behalf of the caller. Consolidated all return
18057 buffer validation and allocation to a common procedure. Return
18058 buffers will be allocated via the primary OSL allocation interface
18059 since it appears that a separate pool is not needed by most users.
18060 If a separate pool is required for these buffers, the caller can
18061 still use the original mechanism and pre-allocate the buffer(s).
18062
18063 Implemented support for string operands within the DerefOf
18064 operator.
18065
18066 Restructured the Hardware and Event managers to be table driven,
18067 simplifying the source code and reducing the amount of generated
18068 code.
18069
18070 Split the common read/write low-level ACPI register bitfield
18071 procedure into a separate read and write, simplifying the code
18072 considerably.
18073
18074 Obsoleted the AcpiOsCallocate OSL interface. This interface was
18075 used only a handful of times and didn't have enough critical mass
18076 for a separate interface. Replaced with a common calloc procedure
18077 in the core.
18078
18079 Fixed a reported problem with the GPE number mapping mechanism
18080 that allows GPE1 numbers to be non-contiguous with GPE0.
18081 Reorganized the GPE information and shrunk a large array that was
18082 originally large enough to hold info for all possible GPEs (256)
18083 to simply large enough to hold all GPEs up to the largest GPE
18084 number on the machine.
18085
18086 Fixed a reported problem with resource structure alignment on 64-
18087 bit platforms.
18088
18089 Changed the AcpiEnableEvent and AcpiDisableEvent external
18090 interfaces to not require any flags for the common case of
18091 enabling/disabling a GPE.
18092
18093 Implemented support to allow a "Notify" on a Processor object.
18094
18095 Most TBDs in comments within the source code have been resolved
18096 and eliminated.
18097
18098
18099 Fixed a problem in the interpreter where a standalone parent
18100 prefix (^) was not handled correctly in the interpreter and
18101 debugger.
18102
18103 Removed obsolete and unnecessary GPE save/restore code.
18104
18105 Implemented Field support in the ASL Load operator. This allows a
18106 table to be loaded from a named field, in addition to loading a
18107 table directly from an Operation Region.
18108
18109 Implemented timeout and handle support in the external Global Lock
18110 interfaces.
18111
18112 Fixed a problem in the AcpiDump utility where pathnames were no
18113 longer being generated correctly during the dump of named objects.
18114
18115 Modified the AML debugger to give a full display of if/while
18116 predicates instead of just one AML opcode at a time. (The
18117 predicate can have several nested ASL statements.) The old method
18118 was confusing during single stepping.
18119
18120 Code and Data Size: Current core subsystem library sizes are shown
18121 below. These are the code and data sizes for the acpica.lib
18122 produced by the Microsoft Visual C++ 6.0 compiler, and these
18123 values do not include any ACPI driver or OSPM code. The debug
18124 version of the code includes the debug output trace mechanism and
18125 has a larger code and data size. Note that these values will vary
18126 depending on the efficiency of the compiler and the compiler
18127 options 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
18136 2) Linux
18137
18138 Implemented fix for PIIX reverse throttling errata (Processor
18139 driver)
18140
18141 Added new Limit interface (Processor and Thermal drivers)
18142
18143 New thermal policy (Thermal driver)
18144
18145 Many updates to /proc
18146
18147 Battery "low" event support (Battery driver)
18148
18149 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
18150
18151 IA32 - IA64 initialization unification, no longer experimental
18152
18153 Menuconfig options redesigned
18154
18155 3) ASL Compiler, version X2037:
18156
18157 Implemented several new output features to simplify integration of
18158 AML code into firmware: 1) Output the AML in C source code with
18159 labels for each named ASL object. The original ASL source code
18160 is interleaved as C comments. 2) Output the AML in ASM source code
18161 with labels and interleaved ASL source. 3) Output the AML in
18162 raw hex table form, in either C or ASM.
18163
18164 Implemented support for optional string parameters to the
18165 LoadTable operator.
18166
18167 Completed support for embedded escape sequences within string
18168 literals. The compiler now supports all single character escapes
18169 as well as the Octal and Hex escapes. Note: the insertion of a
18170 null byte into a string literal (via the hex/octal escape) causes
18171 the string to be immediately terminated. A warning is issued.
18172
18173 Fixed a problem where incorrect AML was generated for the case
18174 where an ASL namepath consists of a single parent prefix (
18175
18176 ) with no trailing name segments.
18177
18178 The compiler has been successfully generated with a 64-bit C
18179 compiler.
18180
18181
18182
18183
18184 ----------------------------------------
18185 Summary of changes for this label: 12_18_01
18186
18187 1) Linux
18188
18189 Enhanced blacklist with reason and severity fields. Any table's
18190 signature may now be used to identify a blacklisted system.
18191
18192 Call _PIC control method to inform the firmware which interrupt
18193 model the OS is using. Turn on any disabled link devices.
18194
18195 Cleaned up busmgr /proc error handling (Andreas Dilger)
18196
18197 2) ACPI CA Core Subsystem:
18198
18199 Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
18200 while loop)
18201
18202 Completed implementation of the ACPI 2.0 "Continue",
18203 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
18204 operators. All new ACPI 2.0 operators are now implemented in both
18205 the ASL compiler and the AML interpreter. The only remaining ACPI
18206 2.0 task is support for the String data type in the DerefOf
18207 operator. Fixed a problem with AcquireMutex where the status code
18208 was lost if the caller had to actually wait for the mutex.
18209
18210 Increased the maximum ASL Field size from 64K bits to 4G bits.
18211
18212 Completed implementation of the external Global Lock interfaces --
18213 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and
18214 Handler parameters were added.
18215
18216 Completed another pass at removing warnings and issues when
18217 compiling with 64-bit compilers. The code now compiles cleanly
18218 with the Intel 64-bit C/C++ compiler. Most notably, the pointer
18219 add and subtract (diff) macros have changed considerably.
18220
18221
18222 Created and deployed a new ACPI_SIZE type that is 64-bits wide on
18223 64-bit platforms, 32-bits on all others. This type is used
18224 wherever memory allocation and/or the C sizeof() operator is used,
18225 and affects the OSL memory allocation interfaces AcpiOsAllocate
18226 and AcpiOsCallocate.
18227
18228 Implemented sticky user breakpoints in the AML debugger.
18229
18230 Code and Data Size: Current core subsystem library sizes are shown
18231 below. These are the code and data sizes for the acpica.lib
18232 produced by the Microsoft Visual C++ 6.0 compiler, and these
18233 values do not include any ACPI driver or OSPM code. The debug
18234 version of the code includes the debug output trace mechanism and
18235 has a larger code and data size. Note that these values will vary
18236 depending on the efficiency of the compiler and the compiler
18237 options 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
18248 Now checks for (and generates an error if detected) the use of a
18249 Break or Continue statement without an enclosing While statement.
18250
18251
18252 Successfully generated the compiler with the Intel 64-bit C
18253 compiler.
18254
18255 ----------------------------------------
18256 Summary of changes for this label: 12_05_01
18257
18258 1) ACPI CA Core Subsystem:
18259
18260 The ACPI 2.0 CopyObject operator is fully implemented. This
18261 operator creates a new copy of an object (and is also used to
18262 bypass the "implicit conversion" mechanism of the Store operator.)
18263
18264 The ACPI 2.0 semantics for the SizeOf operator are fully
18265 implemented. The change is that performing a SizeOf on a
18266 reference object causes an automatic dereference of the object to
18267 the actual value before the size is evaluated. This behavior was
18268 undefined in ACPI 1.0.
18269
18270 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
18271 have been implemented. The interrupt polarity and mode are now
18272 independently set.
18273
18274 Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
18275 appearing in Package objects were not properly converted to
18276 integers when the internal Package was converted to an external
18277 object (via the AcpiEvaluateObject interface.)
18278
18279 Fixed a problem with the namespace object deletion mechanism for
18280 objects created by control methods. There were two parts to this
18281 problem: 1) Objects created during the initialization phase method
18282 parse were not being deleted, and 2) The object owner ID mechanism
18283 to track objects was broken.
18284
18285 Fixed a problem where the use of the ASL Scope operator within a
18286 control method would result in an invalid opcode exception.
18287
18288 Fixed a problem introduced in the previous label where the buffer
18289 length required for the _PRT structure was not being returned
18290 correctly.
18291
18292 Code and Data Size: Current core subsystem library sizes are shown
18293 below. These are the code and data sizes for the acpica.lib
18294 produced by the Microsoft Visual C++ 6.0 compiler, and these
18295 values do not include any ACPI driver or OSPM code. The debug
18296 version of the code includes the debug output trace mechanism and
18297 has a larger code and data size. Note that these values will vary
18298 depending on the efficiency of the compiler and the compiler
18299 options 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
18311 Updated all files to apply cleanly against 2.4.16.
18312
18313 Added basic PCI Interrupt Routing Table (PRT) support for IA32
18314 (acpi_pci.c), and unified the PRT code for IA32 and IA64. This
18315 version supports both static and dynamic PRT entries, but dynamic
18316 entries are treated as if they were static (not yet
18317 reconfigurable). Architecture- specific code to use this data is
18318 absent on IA32 but should be available shortly.
18319
18320 Changed the initialization sequence to start the ACPI interpreter
18321 (acpi_init) prior to initialization of the PCI driver (pci_init)
18322 in init/main.c. This ordering is required to support PRT and
18323 facilitate other (future) enhancement. A side effect is that the
18324 ACPI bus driver and certain device drivers can no longer be loaded
18325 as modules.
18326
18327 Modified the 'make menuconfig' options to allow PCI Interrupt
18328 Routing support to be included without the ACPI Bus and other
18329 device drivers.
18330
18331 3) ASL Compiler, version X2033:
18332
18333 Fixed some issues with the use of the new CopyObject and
18334 DataTableRegion operators. Both are fully functional.
18335
18336 ----------------------------------------
18337 Summary 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
18343 Updated Index support to match ACPI 2.0 semantics. Storing a
18344 Integer, String, or Buffer to an Index of a Buffer will store only
18345 the least-significant byte of the source to the Indexed buffer
18346 byte. Multiple writes are not performed.
18347
18348 Fixed a problem where the access type used in an AccessAs ASL
18349 operator was not recorded correctly into the field object.
18350
18351 Fixed a problem where ASL Event objects were created in a
18352 signalled state. Events are now created in an unsignalled state.
18353
18354 The internal object cache is now purged after table loading and
18355 initialization to reduce the use of dynamic kernel memory -- on
18356 the assumption that object use is greatest during the parse phase
18357 of the entire table (versus the run-time use of individual control
18358 methods.)
18359
18360 ACPI 2.0 variable-length packages are now fully operational.
18361
18362 Code and Data Size: Code and Data optimizations have permitted new
18363 feature development with an actual reduction in the library size.
18364 Current core subsystem library sizes are shown below. These are
18365 the code and data sizes for the acpica.lib produced by the
18366 Microsoft Visual C++ 6.0 compiler, and these values do not include
18367 any ACPI driver or OSPM code. The debug version of the code
18368 includes the debug output trace mechanism and has a larger code
18369 and data size. Note that these values will vary depending on the
18370 efficiency of the compiler and the compiler options used during
18371 generation.
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
18383 Enhanced the ACPI boot-time initialization code to allow the use
18384 of Local APIC tables for processor enumeration on IA-32, and to
18385 pave the way for a fully MPS-free boot (on SMP systems) in the
18386 near future. This functionality replaces
18387 arch/i386/kernel/acpitables.c, which was introduced in an earlier
18388 2.4.15-preX release. To enable this feature you must add
18389 "acpi_boot=on" to the kernel command line -- see the help entry
18390 for CONFIG_ACPI_BOOT for more information. An IA-64 release is in
18391 the works...
18392
18393 Restructured the configuration options to allow boot-time table
18394 parsing support without inclusion of the ACPI Interpreter (and
18395 other) code.
18396
18397 NOTE: This release does not include fixes for the reported events,
18398 power-down, and thermal passive cooling issues (coming soon).
18399
18400 3) ASL Compiler:
18401
18402 Added additional typechecking for Fields within restricted access
18403 Operation Regions. All fields within EC and CMOS regions must be
18404 declared with ByteAcc. All fields within SMBus regions must be
18405 declared with the BufferAcc access type.
18406
18407 Fixed a problem where the listing file output of control methods
18408 no longer interleaved the actual AML code with the ASL source
18409 code.
18410
18411
18412
18413
18414 ----------------------------------------
18415 Summary of changes for this label: 11_09_01
18416
18417 1) ACPI CA Core Subsystem:
18418
18419 Implemented ACPI 2.0-defined support for writes to fields with a
18420 Buffer, String, or Integer source operand that is smaller than the
18421 target field. In these cases, the source operand is zero-extended
18422 to fill the target field.
18423
18424 Fixed a problem where a Field starting bit offset (within the
18425 parent operation region) was calculated incorrectly if the
18426
18427 alignment of the field differed from the access width. This
18428 affected CreateWordField, CreateDwordField, CreateQwordField, and
18429 possibly other fields that use the "AccessAny" keyword.
18430
18431 Fixed a problem introduced in the 11_02_01 release where indirect
18432 stores through method arguments did not operate correctly.
18433
18434 2) Linux:
18435
18436 Implemented boot-time ACPI table parsing support
18437 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code
18438 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
18439 legacy BIOS interfaces (e.g. MPS) for the configuration of system
18440 processors, memory, and interrupts during setup_arch(). Note that
18441 this patch does not include the required architecture-specific
18442 changes required to apply this information -- subsequent patches
18443 will be posted for both IA32 and IA64 to achieve this.
18444
18445 Added low-level sleep support for IA32 platforms, courtesy of Pat
18446 Mochel. This allows IA32 systems to transition to/from various
18447 sleeping states (e.g. S1, S3), although the lack of a centralized
18448 driver model and power-manageable drivers will prevent its
18449 (successful) use on most systems.
18450
18451 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
18452 submenu, unified IA32 and IA64 options, added new "Boot using ACPI
18453 tables" option, etc.
18454
18455 Increased 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
18457 transactions.
18458
18459 ----------------------------------------
18460 Summary of changes for this label: 11_02_01
18461
18462 1) ACPI CA Core Subsystem:
18463
18464 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
18465 (QWordAcc keyword). All ACPI 2.0 64-bit support is now
18466 implemented.
18467
18468 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
18469 changes to support ACPI 2.0 Qword field access. Read/Write
18470 PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
18471 accept an ACPI_INTEGER (64 bits) as the value parameter. Also,
18472 the value parameter for the address space handler interface is now
18473 an ACPI_INTEGER. OSL implementations of these interfaces must now
18474 handle the case where the Width parameter is 64.
18475
18476 Index Fields: Fixed a problem where unaligned bit assembly and
18477 disassembly for IndexFields was not supported correctly.
18478
18479 Index and Bank Fields: Nested Index and Bank Fields are now
18480 supported. During field access, a check is performed to ensure
18481 that the value written to an Index or Bank register is not out of
18482 the range of the register. The Index (or Bank) register is
18483 written before each access to the field data. Future support will
18484 include allowing individual IndexFields to be wider than the
18485 DataRegister width.
18486
18487 Fields: Fixed a problem where the AML interpreter was incorrectly
18488 attempting to write beyond the end of a Field/OpRegion. This was
18489 a boundary case that occurred when a DWORD field was written to a
18490 BYTE access OpRegion, forcing multiple writes and causing the
18491 interpreter to write one datum too many.
18492
18493 Fields: Fixed a problem with Field/OpRegion access where the
18494 starting bit address of a field was incorrectly calculated if the
18495 current access type was wider than a byte (WordAcc, DwordAcc, or
18496 QwordAcc).
18497
18498 Fields: Fixed a problem where forward references to individual
18499 FieldUnits (individual Field names within a Field definition) were
18500 not resolved during the AML table load.
18501
18502 Fields: Fixed a problem where forward references from a Field
18503 definition to the parent Operation Region definition were not
18504 resolved during the AML table load.
18505
18506 Fields: Duplicate FieldUnit names within a scope are now detected
18507 during AML table load.
18508
18509 Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
18510 returned an incorrect name for the root node.
18511
18512 Code and Data Size: Code and Data optimizations have permitted new
18513 feature development with an actual reduction in the library size.
18514 Current core subsystem library sizes are shown below. These are
18515 the code and data sizes for the acpica.lib produced by the
18516 Microsoft Visual C++ 6.0 compiler, and these values do not include
18517 any ACPI driver or OSPM code. The debug version of the code
18518 includes the debug output trace mechanism and has a larger code
18519 and data size. Note that these values will vary depending on the
18520 efficiency of the compiler and the compiler options used during
18521 generation.
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
18533 Improved /proc processor output (Pavel Machek) Re-added
18534 MODULE_LICENSE("GPL") to all modules.
18535
18536 3) ASL Compiler version X2030:
18537
18538 Duplicate FieldUnit names within a scope are now detected and
18539 flagged as errors.
18540
18541 4) Documentation:
18542
18543 Programmer Reference updated to reflect OSL and address space
18544 handler interface changes described above.
18545
18546 ----------------------------------------
18547 Summary of changes for this label: 10_18_01
18548
18549 ACPI CA Core Subsystem:
18550
18551 Fixed a problem with the internal object reference count mechanism
18552 that occasionally caused premature object deletion. This resolves
18553 all of the outstanding problem reports where an object is deleted
18554 in the middle of an interpreter evaluation. Although this problem
18555 only showed up in rather obscure cases, the solution to the
18556 problem involved an adjustment of all reference counts involving
18557 objects attached to namespace nodes.
18558
18559 Fixed a problem with Field support in the interpreter where
18560 writing to an aligned field whose length is an exact multiple (2
18561 or greater) of the field access granularity would cause an attempt
18562 to write beyond the end of the field.
18563
18564 The top level AML opcode execution functions within the
18565 interpreter have been renamed with a more meaningful and
18566 consistent naming convention. The modules exmonad.c and
18567 exdyadic.c were eliminated. New modules are exoparg1.c,
18568 exoparg2.c, exoparg3.c, and exoparg6.c.
18569
18570 Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
18571
18572 Fixed a problem where the AML debugger was causing some internal
18573 objects to not be deleted during subsystem termination.
18574
18575 Fixed a problem with the external AcpiEvaluateObject interface
18576 where the subsystem would fault if the named object to be
18577 evaluated referred to a constant such as Zero, Ones, etc.
18578
18579 Fixed a problem with IndexFields and BankFields where the
18580 subsystem would fault if the index, data, or bank registers were
18581 not defined in the same scope as the field itself.
18582
18583 Added printf format string checking for compilers that support
18584 this feature. Corrected more than 50 instances of issues with
18585 format specifiers within invocations of ACPI_DEBUG_PRINT
18586 throughout the core subsystem code.
18587
18588 The ASL "Revision" operator now returns the ACPI support level
18589 implemented in the core - the value "2" since the ACPI 2.0 support
18590 is more than 50% implemented.
18591
18592 Enhanced the output of the AML debugger "dump namespace" command
18593 to output in a more human-readable form.
18594
18595 Current core subsystem library code sizes are shown below. These
18596
18597 are the code and data sizes for the acpica.lib produced by the
18598 Microsoft Visual C++ 6.0 compiler, and these values do not include
18599 any ACPI driver or OSPM code. The debug version of the code
18600 includes the full debug trace mechanism -- leading to a much
18601
18602 larger code and data size. Note that these values will vary
18603 depending on the efficiency of the compiler and the compiler
18604 options 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
18615 Linux:
18616
18617 Implemented a "Bad BIOS Blacklist" to track machines that have
18618 known ASL/AML problems.
18619
18620 Enhanced the /proc interface for the thermal zone driver and added
18621 support for _HOT (the critical suspend trip point). The 'info'
18622 file now includes threshold/policy information, and allows setting
18623 of _SCP (cooling preference) and _TZP (polling frequency) values
18624 to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
18625 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
18626 preference to the passive/quiet mode (if supported by the ASL).
18627
18628 Implemented a workaround for a gcc bug that resuted in an OOPs
18629 when loading the control method battery driver.
18630
18631 ----------------------------------------
18632 Summary of changes for this label: 09_20_01
18633
18634 ACPI CA Core Subsystem:
18635
18636 The AcpiEnableEvent and AcpiDisableEvent interfaces have been
18637 modified to allow individual GPE levels to be flagged as wake-
18638 enabled (i.e., these GPEs are to remain enabled when the platform
18639 sleeps.)
18640
18641 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
18642 support wake-enabled GPEs. This means that upon entering the
18643 sleep state, all GPEs that are not wake-enabled are disabled.
18644 When leaving the sleep state, these GPEs are re-enabled.
18645
18646 A local double-precision divide/modulo module has been added to
18647 enhance portability to OS kernels where a 64-bit math library is
18648 not available. The new module is "utmath.c".
18649
18650 Several optimizations have been made to reduce the use of CPU
18651 stack. Originally over 2K, the maximum stack usage is now below
18652 2K at 1860 bytes (1.82k)
18653
18654 Fixed a problem with the AcpiGetFirmwareTable interface where the
18655 root table pointer was not mapped into a logical address properly.
18656
18657 Fixed a problem where a NULL pointer was being dereferenced in the
18658 interpreter code for the ASL Notify operator.
18659
18660 Fixed a problem where the use of the ASL Revision operator
18661 returned an error. This operator now returns the current version
18662 of the ACPI CA core subsystem.
18663
18664 Fixed a problem where objects passed as control method parameters
18665 to AcpiEvaluateObject were always deleted at method termination.
18666 However, these objects may end up being stored into the namespace
18667 by the called method. The object reference count mechanism was
18668 applied to these objects instead of a force delete.
18669
18670 Fixed a problem where static strings or buffers (contained in the
18671 AML code) that are declared as package elements within the ASL
18672 code could cause a fault because the interpreter would attempt to
18673 delete them. These objects are now marked with the "static
18674 object" flag to prevent any attempt to delete them.
18675
18676 Implemented an interpreter optimization to use operands directly
18677 from the state object instead of extracting the operands to local
18678 variables. This reduces stack use and code size, and improves
18679 performance.
18680
18681 The module exxface.c was eliminated as it was an unnecessary extra
18682 layer of code.
18683
18684 Current core subsystem library code sizes are shown below. These
18685 are the code and data sizes for the acpica.lib produced by the
18686 Microsoft Visual C++ 6.0 compiler, and these values do not include
18687 any ACPI driver or OSPM code. The debug version of the code
18688 includes the full debug trace mechanism -- leading to a much
18689 larger code and data size. Note that these values will vary
18690 depending on the efficiency of the compiler and the compiler
18691 options used during generation.
18692
18693 Non-Debug Version: 65K Code, 5K Data, 70K Total
18694 (Previously 69K) Debug Version: 138K Code, 58K Data, 196K
18695 Total (Previously 195K)
18696
18697 Linux:
18698
18699 Support for ACPI 2.0 64-bit integers has been added. All ACPI
18700 Integer objects are now 64 bits wide
18701
18702 All Acpi data types and structures are now in lower case. Only
18703 Acpi macros are upper case for differentiation.
18704
18705 Documentation:
18706
18707 Changes to the external interfaces as described above.
18708
18709 ----------------------------------------
18710 Summary of changes for this label: 08_31_01
18711
18712 ACPI CA Core Subsystem:
18713
18714 A bug with interpreter implementation of the ASL Divide operator
18715 was found and fixed. The implicit function return value (not the
18716 explicit store operands) was returning the remainder instead of
18717 the quotient. This was a longstanding bug and it fixes several
18718 known outstanding issues on various platforms.
18719
18720 The ACPI_DEBUG_PRINT and function trace entry/exit macros have
18721 been further optimized for size. There are 700 invocations of the
18722 DEBUG_PRINT macro alone, so each optimization reduces the size of
18723 the debug version of the subsystem significantly.
18724
18725 A stack trace mechanism has been implemented. The maximum stack
18726 usage is about 2K on 32-bit platforms. The debugger command "stat
18727 stack" will display the current maximum stack usage.
18728
18729 All public symbols and global variables within the subsystem are
18730 now prefixed with the string "Acpi". This keeps all of the
18731 symbols grouped together in a kernel map, and avoids conflicts
18732 with other kernel subsystems.
18733
18734 Most of the internal fixed lookup tables have been moved into the
18735 code segment via the const operator.
18736
18737 Several enhancements have been made to the interpreter to both
18738 reduce the code size and improve performance.
18739
18740 Current core subsystem library code sizes are shown below. These
18741 are the code and data sizes for the acpica.lib produced by the
18742 Microsoft Visual C++ 6.0 compiler, and these values do not include
18743 any ACPI driver or OSPM code. The debug version of the code
18744 includes the full debug trace mechanism which contains over 700
18745 invocations of the DEBUG_PRINT macro, 500 function entry macro
18746 invocations, and over 900 function exit macro invocations --
18747 leading to a much larger code and data size. Note that these
18748 values will vary depending on the efficiency of the compiler and
18749 the compiler options used during generation.
18750
18751 Non-Debug Version: 64K Code, 5K Data, 69K Total
18752 Debug Version: 137K Code, 58K Data, 195K Total
18753
18754 Linux:
18755
18756 Implemented wbinvd() macro, pending a kernel-wide definition.
18757
18758 Fixed /proc/acpi/event to handle poll() and short reads.
18759
18760 ASL Compiler, version X2026:
18761
18762 Fixed a problem introduced in the previous label where the AML
18763
18764 code emitted for package objects produced packages with zero
18765 length.
18766
18767 ----------------------------------------
18768 Summary of changes for this label: 08_16_01
18769
18770 ACPI CA Core Subsystem:
18771
18772 The following ACPI 2.0 ASL operators have been implemented in the
18773 AML interpreter (These are already supported by the Intel ASL
18774 compiler): ToDecimalString, ToHexString, ToString, ToInteger, and
18775 ToBuffer. Support for 64-bit AML constants is implemented in the
18776 AML parser, debugger, and disassembler.
18777
18778 The internal memory tracking mechanism (leak detection code) has
18779 been upgraded to reduce the memory overhead (a separate tracking
18780 block is no longer allocated for each memory allocation), and now
18781 supports all of the internal object caches.
18782
18783 The data structures and code for the internal object caches have
18784 been coelesced and optimized so that there is a single cache and
18785 memory list data structure and a single group of functions that
18786 implement generic cache management. This has reduced the code
18787 size in both the debug and release versions of the subsystem.
18788
18789 The DEBUG_PRINT macro(s) have been optimized for size and replaced
18790 by ACPI_DEBUG_PRINT. The syntax for this macro is slightly
18791 different, because it generates a single call to an internal
18792 function. This results in a savings of about 90 bytes per
18793 invocation, resulting in an overall code and data savings of about
18794 16% in the debug version of the subsystem.
18795
18796 Linux:
18797
18798 Fixed C3 disk corruption problems and re-enabled C3 on supporting
18799 machines.
18800
18801 Integrated low-level sleep code by Patrick Mochel.
18802
18803 Further tweaked source code Linuxization.
18804
18805 Other minor fixes.
18806
18807 ASL Compiler:
18808
18809 Support for ACPI 2.0 variable length packages is fixed/completed.
18810
18811 Fixed a problem where the optional length parameter for the ACPI
18812 2.0 ToString operator.
18813
18814 Fixed multiple extraneous error messages when a syntax error is
18815 detected within the declaration line of a control method.
18816
18817 ----------------------------------------
18818 Summary of changes for this label: 07_17_01
18819
18820 ACPI CA Core Subsystem:
18821
18822 Added a new interface named AcpiGetFirmwareTable to obtain any
18823 ACPI table via the ACPI signature. The interface can be called at
18824 any time during kernel initialization, even before the kernel
18825 virtual memory manager is initialized and paging is enabled. This
18826 allows kernel subsystems to obtain ACPI tables very early, even
18827 before the ACPI CA subsystem is initialized.
18828
18829 Fixed a problem where Fields defined with the AnyAcc attribute
18830 could be resolved to the incorrect address under the following
18831 conditions: 1) the field width is larger than 8 bits and 2) the
18832 parent operation region is not defined on a DWORD boundary.
18833
18834 Fixed a problem where the interpreter is not being locked during
18835 namespace initialization (during execution of the _INI control
18836 methods), causing an error when an attempt is made to release it
18837 later.
18838
18839 ACPI 2.0 support in the AML Interpreter has begun and will be
18840 ongoing throughout the rest of this year. In this label, The Mod
18841 operator is implemented.
18842
18843 Added a new data type to contain full PCI addresses named
18844 ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
18845 and Function values.
18846
18847 Linux:
18848
18849 Enhanced the Linux version of the source code to change most
18850 capitalized ACPI type names to lowercase. For example, all
18851 instances of ACPI_STATUS are changed to acpi_status. This will
18852 result in a large diff, but the change is strictly cosmetic and
18853 aligns the CA code closer to the Linux coding standard.
18854
18855 OSL Interfaces:
18856
18857 The interfaces to the PCI configuration space have been changed to
18858 add the PCI Segment number and to split the single 32-bit combined
18859 DeviceFunction field into two 16-bit fields. This was
18860 accomplished by moving the four values that define an address in
18861 PCI configuration space (segment, bus, device, and function) to
18862 the new ACPI_PCI_ID structure.
18863
18864 The changes to the PCI configuration space interfaces led to a
18865 reexamination of the complete set of address space access
18866 interfaces for PCI, I/O, and Memory. The previously existing 18
18867 interfaces have proven difficult to maintain (any small change
18868 must be propagated across at least 6 interfaces) and do not easily
18869 allow for future expansion to 64 bits if necessary. Also, on some
18870 systems, it would not be appropriate to demultiplex the access
18871 width (8, 16, 32,or 64) before calling the OSL if the
18872 corresponding native OS interfaces contain a similar access width
18873 parameter. For these reasons, the 18 address space interfaces
18874 have been replaced by these 6 new ones:
18875
18876 AcpiOsReadPciConfiguration
18877 AcpiOsWritePciConfiguration
18878 AcpiOsReadMemory
18879 AcpiOsWriteMemory
18880 AcpiOsReadPort
18881 AcpiOsWritePort
18882
18883 Added a new interface named AcpiOsGetRootPointer to allow the OSL
18884 to perform the platform and/or OS-specific actions necessary to
18885 obtain the ACPI RSDP table pointer. On IA-32 platforms, this
18886 interface will simply call down to the CA core to perform the low-
18887 memory search for the table. On IA-64, the RSDP is obtained from
18888 EFI. Migrating this interface to the OSL allows the CA core to
18889
18890 remain OS and platform independent.
18891
18892 Added a new interface named AcpiOsSignal to provide a generic
18893 "function code and pointer" interface for various miscellaneous
18894 signals and notifications that must be made to the host OS. The
18895 first such signals are intended to support the ASL Fatal and
18896 Breakpoint operators. In the latter case, the AcpiOsBreakpoint
18897 interface has been obsoleted.
18898
18899 The definition of the AcpiFormatException interface has been
18900 changed to simplify its use. The caller no longer must supply a
18901 buffer to the call; A pointer to a const string is now returned
18902 directly. This allows the call to be easily used in printf
18903 statements, etc. since the caller does not have to manage a local
18904 buffer.
18905
18906
18907 ASL Compiler, Version X2025:
18908
18909 The ACPI 2.0 Switch/Case/Default operators have been implemented
18910 and are fully functional. They will work with all ACPI 1.0
18911 interpreters, since the operators are simply translated to If/Else
18912 pairs.
18913
18914 The ACPI 2.0 ElseIf operator is implemented and will also work
18915 with 1.0 interpreters, for the same reason.
18916
18917 Implemented support for ACPI 2.0 variable-length packages. These
18918 packages have a separate opcode, and their size is determined by
18919 the interpreter at run-time.
18920
18921 Documentation The ACPI CA Programmer Reference has been updated to
18922 reflect the new interfaces and changes to existing interfaces.
18923
18924 ------------------------------------------
18925 Summary of changes for this label: 06_15_01
18926
18927 ACPI CA Core Subsystem:
18928
18929 Fixed a problem where a DWORD-accessed field within a Buffer
18930 object would get its byte address inadvertently rounded down to
18931 the nearest DWORD. Buffers are always Byte-accessible.
18932
18933 ASL Compiler, version X2024:
18934
18935 Fixed a problem where the Switch() operator would either fault or
18936 hang the compiler. Note however, that the AML code for this ACPI
18937 2.0 operator is not yet implemented.
18938
18939 Compiler uses the new AcpiOsGetTimer interface to obtain compile
18940 timings.
18941
18942 Implementation of the CreateField operator automatically converts
18943 a reference to a named field within a resource descriptor from a
18944 byte offset to a bit offset if required.
18945
18946 Added some missing named fields from the resource descriptor
18947 support. These are the names that are automatically created by the
18948 compiler to reference fields within a descriptor. They are only
18949 valid at compile time and are not passed through to the AML
18950 interpreter.
18951
18952 Resource descriptor named fields are now typed as Integers and
18953 subject to compile-time typechecking when used in expressions.
18954
18955 ------------------------------------------
18956 Summary of changes for this label: 05_18_01
18957
18958 ACPI CA Core Subsystem:
18959
18960 Fixed a couple of problems in the Field support code where bits
18961 from adjacent fields could be returned along with the proper field
18962 bits. Restructured the field support code to improve performance,
18963 readability and maintainability.
18964
18965 New DEBUG_PRINTP macro automatically inserts the procedure name
18966 into the output, saving hundreds of copies of procedure name
18967 strings within the source, shrinking the memory footprint of the
18968 debug version of the core subsystem.
18969
18970 Source Code Structure:
18971
18972 The source code directory tree was restructured to reflect the
18973 current organization of the component architecture. Some files
18974 and directories have been moved and/or renamed.
18975
18976 Linux:
18977
18978 Fixed leaking kacpidpc processes.
18979
18980 Fixed queueing event data even when /proc/acpi/event is not
18981 opened.
18982
18983 ASL Compiler, version X2020:
18984
18985 Memory allocation performance enhancement - over 24X compile time
18986 improvement on large ASL files. Parse nodes and namestring
18987 buffers are now allocated from a large internal compiler buffer.
18988
18989 The temporary .SRC file is deleted unless the "-s" option is
18990 specified
18991
18992 The "-d" debug output option now sends all output to the .DBG file
18993 instead of the console.
18994
18995 "External" second parameter is now optional
18996
18997 "ElseIf" syntax now properly allows the predicate
18998
18999 Last operand to "Load" now recognized as a Target operand
19000
19001 Debug object can now be used anywhere as a normal object.
19002
19003 ResourceTemplate now returns an object of type BUFFER
19004
19005 EISAID 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
19017 Escaped backslash at the end of a string ("\\") scan/parse error
19018 fixed
19019
19020 "Revision" is now an object of type INTEGER.
19021
19022
19023
19024 ------------------------------------------
19025 Summary of changes for this label: 05_02_01
19026
19027 Linux:
19028
19029 /proc/acpi/event now blocks properly.
19030
19031 Removed /proc/sys/acpi. You can still dump your DSDT from
19032 /proc/acpi/dsdt.
19033
19034 ACPI CA Core Subsystem:
19035
19036 Fixed a problem introduced in the previous label where some of the
19037 "small" resource descriptor types were not recognized.
19038
19039 Improved error messages for the case where an ASL Field is outside
19040 the range of the parent operation region.
19041
19042 ASL Compiler, version X2018:
19043
19044
19045 Added error detection for ASL Fields that extend beyond the length
19046 of the parent operation region (only if the length of the region
19047 is known at compile time.) This includes fields that have a
19048 minimum access width that is smaller than the parent region, and
19049 individual field units that are partially or entirely beyond the
19050 extent of the parent.
19051
19052
19053
19054 ------------------------------------------
19055 Summary of changes for this label: 04_27_01
19056
19057 ACPI CA Core Subsystem:
19058
19059 Fixed a problem where the namespace mutex could be released at the
19060 wrong time during execution of AcpiRemoveAddressSpaceHandler.
19061
19062 Added optional thread ID output for debug traces, to simplify
19063 debugging of multiple threads. Added context switch notification
19064 when the debug code realizes that a different thread is now
19065 executing ACPI code.
19066
19067 Some additional external data types have been prefixed with the
19068 string "ACPI_" for consistency. This may effect existing code.
19069 The data types affected are the external callback typedefs - e.g.,
19070
19071 WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
19072
19073 Linux:
19074
19075 Fixed an issue with the OSL semaphore implementation where a
19076 thread was waking up with an error from receiving a SIGCHLD
19077 signal.
19078
19079 Linux version of ACPI CA now uses the system C library for string
19080 manipulation routines instead of a local implementation.
19081
19082 Cleaned up comments and removed TBDs.
19083
19084 ASL Compiler, version X2017:
19085
19086 Enhanced error detection and reporting for all file I/O
19087 operations.
19088
19089 Documentation:
19090
19091 Programmer Reference updated to version 1.06.
19092
19093
19094
19095 ------------------------------------------
19096 Summary of changes for this label: 04_13_01
19097
19098 ACPI CA Core Subsystem:
19099
19100 Restructured support for BufferFields and RegionFields.
19101 BankFields support is now fully operational. All known 32-bit
19102 limitations on field sizes have been removed. Both BufferFields
19103 and (Operation) RegionFields are now supported by the same field
19104 management code.
19105
19106 Resource support now supports QWORD address and IO resources. The
19107 16/32/64 bit address structures and the Extended IRQ structure
19108 have been changed to properly handle Source Resource strings.
19109
19110 A ThreadId of -1 is now used to indicate a "mutex not acquired"
19111 condition internally and must never be returned by AcpiOsThreadId.
19112 This reserved value was changed from 0 since Unix systems allow a
19113 thread ID of 0.
19114
19115 Linux:
19116
19117 Driver code reorganized to enhance portability
19118
19119 Added a kernel configuration option to control ACPI_DEBUG
19120
19121 Fixed the EC driver to honor _GLK.
19122
19123 ASL Compiler, version X2016:
19124
19125 Fixed support for the "FixedHw" keyword. Previously, the FixedHw
19126 address space was set to 0, not 0x7f as it should be.
19127
19128 ------------------------------------------
19129 Summary of changes for this label: 03_13_01
19130
19131 ACPI CA Core Subsystem:
19132
19133 During ACPI initialization, the _SB_._INI method is now run if
19134 present.
19135
19136 Notify handler fix - notifies are deferred until the parent method
19137 completes execution. This fixes the "mutex already acquired"
19138 issue seen occasionally.
19139
19140 Part of the "implicit conversion" rules in ACPI 2.0 have been
19141 found to cause compatibility problems with existing ASL/AML. The
19142 convert "result-to-target-type" implementation has been removed
19143 for stores to method Args and Locals. Source operand conversion
19144 is still fully implemented. Possible changes to ACPI 2.0
19145 specification pending.
19146
19147 Fix to AcpiRsCalculatePciRoutingTableLength to return correct
19148 length.
19149
19150 Fix for compiler warnings for 64-bit compiles.
19151
19152 Linux:
19153
19154 /proc output aligned for easier parsing.
19155
19156 Release-version compile problem fixed.
19157
19158 New kernel configuration options documented in Configure.help.
19159
19160 IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
19161 context" message.
19162
19163 OSPM:
19164
19165 Power resource driver integrated with bus manager.
19166
19167 Fixed kernel fault during active cooling for thermal zones.
19168
19169 Source Code:
19170
19171 The source code tree has been restructured.
19172
19173
19174
19175 ------------------------------------------
19176 Summary of changes for this label: 03_02_01
19177
19178 Linux OS Services Layer (OSL):
19179
19180 Major revision of all Linux-specific code.
19181
19182 Modularized all ACPI-specific drivers.
19183
19184 Added new thermal zone and power resource drivers.
19185
19186 Revamped /proc interface (new functionality is under /proc/acpi).
19187
19188 New kernel configuration options.
19189
19190 Linux known issues:
19191
19192 New kernel configuration options not documented in Configure.help
19193 yet.
19194
19195
19196 Module dependencies not currently implemented. If used, they
19197 should be loaded in this order: busmgr, power, ec, system,
19198 processor, battery, ac_adapter, button, thermal.
19199
19200 Modules will not load if CONFIG_MODVERSION is set.
19201
19202 IBM 600E - entering S5 may reboot instead of shutting down.
19203
19204 IBM 600E - Sleep button may generate "Invalid <NULL> context"
19205 message.
19206
19207 Some systems may fail with "execution mutex already acquired"
19208 message.
19209
19210 ACPI CA Core Subsystem:
19211
19212 Added a new OSL Interface, AcpiOsGetThreadId. This was required
19213 for the deadlock detection code. Defined to return a non-zero, 32-
19214 bit thread ID for the currently executing thread. May be a non-
19215 zero constant integer on single-thread systems.
19216
19217 Implemented deadlock detection for internal subsystem mutexes. We
19218 may add conditional compilation for this code (debug only) later.
19219
19220 ASL/AML Mutex object semantics are now fully supported. This
19221 includes multiple acquires/releases by owner and support for the
19222
19223 Mutex SyncLevel parameter.
19224
19225 A new "Force Release" mechanism automatically frees all ASL
19226 Mutexes that have been acquired but not released when a thread
19227 exits the interpreter. This forces conformance to the ACPI spec
19228 ("All mutexes must be released when an invocation exits") and
19229 prevents deadlocked ASL threads. This mechanism can be expanded
19230 (later) to monitor other resource acquisitions if OEM ASL code
19231 continues to misbehave (which it will).
19232
19233 Several new ACPI exception codes have been added for the Mutex
19234 support.
19235
19236 Recursive method calls are now allowed and supported (the ACPI
19237 spec does in fact allow recursive method calls.) The number of
19238 recursive calls is subject to the restrictions imposed by the
19239 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
19240 parameter.
19241
19242 Implemented support for the SyncLevel parameter for control
19243 methods (ACPI 2.0 feature)
19244
19245 Fixed a deadlock problem when multiple threads attempted to use
19246 the interpreter.
19247
19248 Fixed a problem where the string length of a String package
19249 element was not always set in a package returned from
19250 AcpiEvaluateObject.
19251
19252 Fixed a problem where the length of a String package element was
19253 not always included in the length of the overall package returned
19254 from AcpiEvaluateObject.
19255
19256 Added external interfaces (Acpi*) to the ACPI debug memory
19257 manager. This manager keeps a list of all outstanding
19258 allocations, and can therefore detect memory leaks and attempts to
19259 free memory blocks more than once. Useful for code such as the
19260 power manager, etc. May not be appropriate for device drivers.
19261 Performance with the debug code enabled is slow.
19262
19263 The ACPI Global Lock is now an optional hardware element.
19264
19265 ASL Compiler Version X2015:
19266
19267 Integrated changes to allow the compiler to be generated on
19268 multiple platforms.
19269
19270 Linux makefile added to generate the compiler on Linux
19271
19272 Source Code:
19273
19274 All platform-specific headers have been moved to their own
19275 subdirectory, Include/Platform.
19276
19277 New source file added, Interpreter/ammutex.c
19278
19279 New header file, Include/acstruct.h
19280
19281 Documentation:
19282
19283 The programmer reference has been updated for the following new
19284 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
19285
19286 ------------------------------------------
19287 Summary of changes for this label: 02_08_01
19288
19289 Core ACPI CA Subsystem: Fixed a problem where an error was
19290 incorrectly returned if the return resource buffer was larger than
19291 the actual data (in the resource interfaces).
19292
19293 References to named objects within packages are resolved to the
19294
19295 full pathname string before packages are returned directly (via
19296 the AcpiEvaluateObject interface) or indirectly via the resource
19297 interfaces.
19298
19299 Linux OS Services Layer (OSL):
19300
19301 Improved /proc battery interface.
19302
19303
19304 Added C-state debugging output and other miscellaneous fixes.
19305
19306 ASL Compiler Version X2014:
19307
19308 All defined method arguments can now be used as local variables,
19309 including the ones that are not actually passed in as parameters.
19310 The compiler tracks initialization of the arguments and issues an
19311 exception if they are used without prior assignment (just like
19312 locals).
19313
19314 The -o option now specifies a filename prefix that is used for all
19315 output files, including the AML output file. Otherwise, the
19316 default behavior is as follows: 1) the AML goes to the file
19317 specified in the DSDT. 2) all other output files use the input
19318 source filename as the base.
19319
19320 ------------------------------------------
19321 Summary of changes for this label: 01_25_01
19322
19323 Core ACPI CA Subsystem: Restructured the implementation of object
19324 store support within the interpreter. This includes support for
19325 the Store operator as well as any ASL operators that include a
19326 target operand.
19327
19328 Partially implemented support for Implicit Result-to-Target
19329 conversion. This is when a result object is converted on the fly
19330 to the type of an existing target object. Completion of this
19331 support is pending further analysis of the ACPI specification
19332 concerning this matter.
19333
19334 CPU-specific code has been removed from the subsystem (hardware
19335 directory).
19336
19337 New Power Management Timer functions added
19338
19339 Linux OS Services Layer (OSL): Moved system state transition code
19340 to the core, fixed it, and modified Linux OSL accordingly.
19341
19342 Fixed C2 and C3 latency calculations.
19343
19344
19345 We no longer use the compilation date for the version message on
19346 initialization, but retrieve the version from AcpiGetSystemInfo().
19347
19348 Incorporated for fix Sony VAIO machines.
19349
19350 Documentation: The Programmer Reference has been updated and
19351 reformatted.
19352
19353
19354 ASL Compiler: Version X2013: Fixed a problem where the line
19355 numbering and error reporting could get out of sync in the
19356 presence of multiple include files.
19357
19358 ------------------------------------------
19359 Summary of changes for this label: 01_15_01
19360
19361 Core ACPI CA Subsystem:
19362
19363 Implemented support for type conversions in the execution of the
19364 ASL Concatenate operator (The second operand is converted to
19365 match the type of the first operand before concatenation.)
19366
19367 Support for implicit source operand conversion is partially
19368 implemented. The ASL source operand types Integer, Buffer, and
19369 String are freely interchangeable for most ASL operators and are
19370 converted by the interpreter on the fly as required. Implicit
19371 Target operand conversion (where the result is converted to the
19372 target type before storing) is not yet implemented.
19373
19374 Support for 32-bit and 64-bit BCD integers is implemented.
19375
19376 Problem fixed where a field read on an aligned field could cause a
19377 read past the end of the field.
19378
19379 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
19380 does not return a value, but the caller expects one. (The ASL
19381 compiler flags this as a warning.)
19382
19383 ASL Compiler:
19384
19385 Version X2011:
19386 1. Static typechecking of all operands is implemented. This
19387 prevents the use of invalid objects (such as using a Package where
19388 an Integer is required) at compile time instead of at interpreter
19389 run-time.
19390 2. The ASL source line is printed with ALL errors and warnings.
19391 3. Bug fix for source EOF without final linefeed.
19392 4. Debug option is split into a parse trace and a namespace trace.
19393 5. Namespace output option (-n) includes initial values for
19394 integers and strings.
19395 6. Parse-only option added for quick syntax checking.
19396 7. Compiler checks for duplicate ACPI name declarations
19397
19398 Version X2012:
19399 1. Relaxed typechecking to allow interchangeability between
19400 strings, integers, and buffers. These types are now converted by
19401 the interpreter at runtime.
19402 2. Compiler reports time taken by each internal subsystem in the
19403 debug output file.
19404
19405
19406 ------------------------------------------
19407 Summary of changes for this label: 12_14_00
19408
19409 ASL Compiler:
19410
19411 This is the first official release of the compiler. Since the
19412 compiler requires elements of the Core Subsystem, this label
19413 synchronizes everything.
19414
19415 ------------------------------------------
19416 Summary of changes for this label: 12_08_00
19417
19418
19419 Fixed a problem where named references within the ASL definition
19420 of both OperationRegions and CreateXXXFields did not work
19421 properly. The symptom was an AE_AML_OPERAND_TYPE during
19422 initialization of the region/field. This is similar (but not
19423 related internally) to the problem that was fixed in the last
19424 label.
19425
19426 Implemented both 32-bit and 64-bit support for the BCD ASL
19427 functions ToBCD and FromBCD.
19428
19429 Updated all legal headers to include "2000" in the copyright
19430 years.
19431
19432 ------------------------------------------
19433 Summary of changes for this label: 12_01_00
19434
19435 Fixed a problem where method invocations within the ASL definition
19436 of both OperationRegions and CreateXXXFields did not work
19437 properly. The symptom was an AE_AML_OPERAND_TYPE during
19438 initialization 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
19444 Fixed a problem where operators with more than one nested
19445 subexpression would fail. The symptoms were varied, by mostly
19446 AE_AML_OPERAND_TYPE errors. This was actually a rather serious
19447 problem that has gone unnoticed until now.
19448
19449 Subtract (Add (1,2), Multiply (3,4))
19450
19451 Fixed a problem where AcpiGetHandle didn't quite get fixed in the
19452 previous build (The prefix part of a relative path was handled
19453 incorrectly).
19454
19455 Fixed a problem where Operation Region initialization failed if
19456 the operation region name was a "namepath" instead of a simple
19457 "nameseg". Symptom was an AE_NO_OPERAND error.
19458
19459 Fixed a problem where an assignment to a local variable via the
19460 indirect RefOf mechanism only worked for the first such
19461 assignment. Subsequent assignments were ignored.
19462
19463 ------------------------------------------
19464 Summary of changes for this label: 11_15_00
19465
19466 ACPI 2.0 table support with backwards support for ACPI 1.0 and the
19467 0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables,
19468 the AML interpreter does NOT have support for the new 2.0 ASL
19469 grammar terms at this time.
19470
19471 All ACPI hardware access is via the GAS structures in the ACPI 2.0
19472 FADT.
19473
19474 All physical memory addresses across all platforms are now 64 bits
19475 wide. Logical address width remains dependent on the platform
19476 (i.e., "void *").
19477
19478 AcpiOsMapMemory interface changed to a 64-bit physical address.
19479
19480 The AML interpreter integer size is now 64 bits, as per the ACPI
19481 2.0 specification.
19482
19483 For backwards compatibility with ACPI 1.0, ACPI tables with a
19484 revision number less than 2 use 32-bit integers only.
19485
19486 Fixed a problem where the evaluation of OpRegion operands did not
19487 always resolve them to numbers properly.
19488
19489 ------------------------------------------
19490 Summary of changes for this label: 10_20_00
19491
19492 Fix for CBN_._STA issue. This fix will allow correct access to
19493 CBN_ OpRegions when the _STA returns 0x8.
19494
19495 Support to convert ACPI constants (Ones, Zeros, One) to actual
19496 values before a package object is returned
19497
19498 Fix for method call as predicate to if/while construct causing
19499 incorrect if/while behavior
19500
19501 Fix for Else block package lengths sometimes calculated wrong (if
19502 block > 63 bytes)
19503
19504 Fix for Processor object length field, was always zero
19505
19506 Table load abort if FACP sanity check fails
19507
19508 Fix for problem with Scope(name) if name already exists
19509
19510 Warning emitted if a named object referenced cannot be found
19511 (resolved) during method execution.
19512
19513
19514
19515
19516
19517 ------------------------------------------
19518 Summary of changes for this label: 9_29_00
19519
19520 New table initialization interfaces: AcpiInitializeSubsystem no
19521 longer has any parameters AcpiFindRootPointer - Find the RSDP (if
19522 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
19523 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
19524 AcpiLoadTables
19525
19526 Note: These interface changes require changes to all existing OSDs
19527
19528 The PCI_Config default address space handler is always installed
19529 at the root namespace object.
19530
19531 -------------------------------------------
19532 Summary of changes for this label: 09_15_00
19533
19534 The new initialization architecture is implemented. New
19535 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
19536 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
19537
19538 (Namespace is automatically loaded when a table is loaded)
19539
19540 The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
19541 52 bytes to 32 bytes. There is usually one of these for every
19542 namespace object, so the memory savings is significant.
19543
19544 Implemented just-in-time evaluation of the CreateField operators.
19545
19546 Bug fixes for IA-64 support have been integrated.
19547
19548 Additional code review comments have been implemented
19549
19550 The so-called "third pass parse" has been replaced by a final walk
19551 through the namespace to initialize all operation regions (address
19552 spaces) and fields that have not yet been initialized during the
19553 execution of the various _INI and REG methods.
19554
19555 New file - namespace/nsinit.c
19556
19557 -------------------------------------------
19558 Summary of changes for this label: 09_01_00
19559
19560 Namespace manager data structures have been reworked to change the
19561 primary object from a table to a single object. This has
19562 resulted in dynamic memory savings of 3X within the namespace and
19563 2X overall in the ACPI CA subsystem.
19564
19565 Fixed problem where the call to AcpiEvFindPciRootBuses was
19566 inadvertently left commented out.
19567
19568 Reduced the warning count when generating the source with the GCC
19569 compiler.
19570
19571 Revision numbers added to each module header showing the
19572 SourceSafe version of the file. Please refer to this version
19573 number when giving us feedback or comments on individual modules.
19574
19575 The main object types within the subsystem have been renamed to
19576 clarify their purpose:
19577
19578 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
19579 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
19580 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
19581
19582 NOTE: no changes to the initialization sequence are included in
19583 this label.
19584
19585 -------------------------------------------
19586 Summary of changes for this label: 08_23_00
19587
19588 Fixed problem where TerminateControlMethod was being called
19589 multiple times per method
19590
19591 Fixed debugger problem where single stepping caused a semaphore to
19592 be oversignalled
19593
19594 Improved performance through additional parse object caching -
19595 added ACPI_EXTENDED_OP type
19596
19597 -------------------------------------------
19598 Summary of changes for this label: 08_10_00
19599
19600 Parser/Interpreter integration: Eliminated the creation of
19601 complete parse trees for ACPI tables and control methods.
19602 Instead, parse subtrees are created and then deleted as soon as
19603 they are processed (Either entered into the namespace or executed
19604 by the interpreter). This reduces the use of dynamic kernel
19605 memory significantly. (about 10X)
19606
19607 Exception codes broken into classes and renumbered. Be sure to
19608 recompile all code that includes acexcep.h. Hopefully we won't
19609 have to renumber the codes again now that they are split into
19610 classes (environment, programmer, AML code, ACPI table, and
19611 internal).
19612
19613 Fixed some additional alignment issues in the Resource Manager
19614 subcomponent
19615
19616 Implemented semaphore tracking in the AcpiExec utility, and fixed
19617 several places where mutexes/semaphores were being unlocked
19618 without a corresponding lock operation. There are no known
19619 semaphore or mutex "leaks" at this time.
19620
19621 Fixed the case where an ASL Return operator is used to return an
19622 unnamed package.
19623
19624 -------------------------------------------
19625 Summary of changes for this label: 07_28_00
19626
19627 Fixed a problem with the way addresses were calculated in
19628 AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem
19629 manifested itself when a Field was created with WordAccess or
19630 DwordAccess, but the field unit defined within the Field was less
19631
19632 than a Word or Dword.
19633
19634 Fixed a problem in AmlDumpOperands() module's loop to pull
19635 operands off of the operand stack to display information. The
19636 problem manifested itself as a TLB error on 64-bit systems when
19637 accessing an operand stack with two or more operands.
19638
19639 Fixed a problem with the PCI configuration space handlers where
19640 context was getting confused between accesses. This required a
19641 change to the generic address space handler and address space
19642 setup definitions. Handlers now get both a global handler context
19643 (this is the one passed in by the user when executing
19644 AcpiInstallAddressSpaceHandler() and a specific region context
19645 that is unique to each region (For example, the _ADR, _SEG and
19646 _BBN values associated with a specific region). The generic
19647 function definitions have changed to the following:
19648
19649 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
19650 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
19651 *HandlerContext, // This used to be void *Context void
19652 *RegionContext); // This is an additional parameter
19653
19654 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
19655 RegionHandle, UINT32 Function, void *HandlerContext, void
19656 **RegionContext); // This used to be **ReturnContext
19657
19658 -------------------------------------------
19659 Summary of changes for this label: 07_21_00
19660
19661 Major file consolidation and rename. All files within the
19662 interpreter have been renamed as well as most header files. This
19663 was done to prevent collisions with existing files in the host
19664 OSs -- filenames such as "config.h" and "global.h" seem to be
19665 quite common. The VC project files have been updated. All
19666 makefiles will require modification.
19667
19668 The parser/interpreter integration continues in Phase 5 with the
19669 implementation of a complete 2-pass parse (the AML is parsed
19670 twice) for each table; This avoids the construction of a huge
19671 parse tree and therefore reduces the amount of dynamic memory
19672 required by the subsystem. Greater use of the parse object cache
19673 means that performance is unaffected.
19674
19675 Many comments from the two code reviews have been rolled in.
19676
19677 The 64-bit alignment support is complete.
19678
19679 -------------------------------------------
19680 Summary of changes for this label: 06_30_00
19681
19682 With a nod and a tip of the hat to the technology of yesteryear,
19683 we've added support in the source code for 80 column output
19684 devices. The code is now mostly constrained to 80 columns or
19685 less to support environments and editors that 1) cannot display
19686 or print more than 80 characters on a single line, and 2) cannot
19687 disable line wrapping.
19688
19689 A major restructuring of the namespace data structure has been
19690 completed. The result is 1) cleaner and more
19691 understandable/maintainable code, and 2) a significant reduction
19692 in the dynamic memory requirement for each named ACPI object
19693 (almost half).
19694
19695 -------------------------------------------
19696 Summary of changes for this label: 06_23_00
19697
19698 Linux support has been added. In order to obtain approval to get
19699 the ACPI CA subsystem into the Linux kernel, we've had to make
19700 quite a few changes to the base subsystem that will affect all
19701 users (all the changes are generic and OS- independent). The
19702 effects of these global changes have been somewhat far reaching.
19703 Files have been merged and/or renamed and interfaces have been
19704 renamed. The major changes are described below.
19705
19706 Osd* interfaces renamed to AcpiOs* to eliminate namespace
19707 pollution/confusion within our target kernels. All OSD
19708 interfaces must be modified to match the new naming convention.
19709
19710 Files merged across the subsystem. A number of the smaller source
19711 and header files have been merged to reduce the file count and
19712 increase the density of the existing files. There are too many
19713 to list here. In general, makefiles that call out individual
19714 files will require rebuilding.
19715
19716 Interpreter files renamed. All interpreter files now have the
19717 prefix am* instead of ie* and is*.
19718
19719 Header files renamed: The acapi.h file is now acpixf.h. The
19720 acpiosd.h file is now acpiosxf.h. We are removing references to
19721 the acronym "API" since it is somewhat windowsy. The new name is
19722 "external interface" or xface or xf in the filenames.j
19723
19724
19725 All manifest constants have been forced to upper case (some were
19726 mixed case.) Also, the string "ACPI_" has been prepended to many
19727 (not all) of the constants, typedefs, and structs.
19728
19729 The globals "DebugLevel" and "DebugLayer" have been renamed
19730 "AcpiDbgLevel" and "AcpiDbgLayer" respectively.
19731
19732 All other globals within the subsystem are now prefixed with
19733 "AcpiGbl_" Internal procedures within the subsystem are now
19734 prefixed with "Acpi" (with only a few exceptions). The original
19735 two-letter abbreviation for the subcomponent remains after "Acpi"
19736 - for example, CmCallocate became AcpiCmCallocate.
19737
19738 Added a source code translation/conversion utility. Used to
19739 generate the Linux source code, it can be modified to generate
19740 other types of source as well. Can also be used to cleanup
19741 existing source by removing extraneous spaces and blank lines.
19742 Found in tools/acpisrc/*
19743
19744 OsdUnMapMemory was renamed to OsdUnmapMemory and then
19745 AcpiOsUnmapMemory. (UnMap became Unmap).
19746
19747 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
19748 When set to one, this indicates that the caller wants to use the
19749
19750 semaphore as a mutex, not a counting semaphore. ACPI CA uses
19751 both types. However, implementers of this call may want to use
19752 different OS primitives depending on the type of semaphore
19753 requested. For example, some operating systems provide separate
19754
19755 "mutex" and "semaphore" interfaces - where the mutex interface is
19756 much faster because it doesn't have all the overhead of a full
19757 semaphore implementation.
19758
19759 Fixed a deadlock problem where a method that accesses the PCI
19760 address space can block forever if it is the first access to the
19761 space.
19762
19763 -------------------------------------------
19764 Summary of changes for this label: 06_02_00
19765
19766 Support for environments that cannot handle unaligned data
19767 accesses (e.g. firmware and OS environments devoid of alignment
19768 handler technology namely SAL/EFI and the IA-64 Linux kernel) has
19769 been added (via configurable macros) in these three areas: -
19770 Transfer of data from the raw AML byte stream is done via byte
19771 moves instead of word/dword/qword moves. - External objects are
19772 aligned within the user buffer, including package elements (sub-
19773 objects). - Conversion of name strings to UINT32 Acpi Names is now
19774 done byte-wise.
19775
19776 The Store operator was modified to mimic Microsoft's
19777 implementation when storing to a Buffer Field.
19778
19779 Added a check of the BM_STS bit before entering C3.
19780
19781 The methods subdirectory has been obsoleted and removed. A new
19782 file, cmeval.c subsumes the functionality.
19783
19784 A 16-bit (DOS) version of AcpiExec has been developed. The
19785 makefile is under the acpiexec directory.
19786