changes.txt revision 1.1.1.22 1 ----------------------------------------
2 13 December 2019. Summary of changes for version 20191213:
3
4
5 1) ACPICA kernel-resident subsystem:
6
7 Return a Buffer object for all fields created via the CreateField operator. Previously, an Integer would be returned if the size of the field was less than or equal to the current size of an Integer. Although this goes against the ACPI specification, it provides compatibility with other ACPI implementations. Also updated the ASLTS test suite to reflect this new behavior.
8
9 2) iASL Compiler/Disassembler and ACPICA tools:
10
11 iASL: Implemented detection of (and throw an error for) duplicate values for Case statements within a single Switch statement. Duplicate Integers, Strings, and Buffers are supported.
12
13 iASL: Fix error logging issue during multiple file compilation -- Switch to the correct input file during error node creation.
14
15 iASL: For duplicate named object creation, now emit an error instead of a warning - since this will cause a runtime error.
16
17 AcpiSrc: Add unix line-ending support for non-Windows builds.
18
19 iASL: Add an error condition for an attempt to create a NameString with > 255 NameSegs (the max allowable via the AML definition).
20
21
22 ----------------------------------------
23 18 October 2019. Summary of changes for version 20191018:
24
25
26 1) ACPICA kernel-resident subsystem:
27
28 Debugger: added a new command: ?Fields [address space ID]?. This command
29 dumps the contents of all field units that are defined within the
30 namespace with a particular address space ID.
31
32 Modified the external interface AcpiLoadTable() to return a table index.
33 This table index can be used for unloading a table for debugging.
34 ACPI_STATUS
35 AcpiLoadTable (
36 ACPI_TABLE_HEADER *Table,
37 UINT32 *TableIndex))
38
39 Implemented a new external interface: AcpiUnloadTable() This new function
40 takes a table index as an argument and unloads the table. Useful for
41 debugging only.
42 ACPI_STATUS
43 AcpiUnloadTable (
44 UINT32 TableIndex))
45
46 Ported the AcpiNames utility to use the new table initialization
47 sequence. The utility was broken before this change. Also, it was
48 required to include most of the AML interpreter into the utility in order
49 to process table initialization (module-level code execution.)
50
51 Update for results from running Clang V8.0.1. This fixes all "dead
52 assignment" warnings. There are still several "Dereference of NULL
53 pointer" warnings, but these have been found to be false positive
54 warnings.
55
56
57 2) iASL Compiler/Disassembler and ACPICA tools:
58
59 iASL: numerous table compiler changes to ensure that the usage of
60 yacc/bison syntax is POSIX-compliant.
61
62 iASL/disassembler: several simple bug fixes in the data table
63 disassembler.
64
65 Acpiexec: expanded the initialization file (the -fi option) to initialize
66 strings, buffers, packages, and field units.
67
68
69 ----------------------------------------
70 16 August 2019. Summary of changes for version 20190816:
71
72 This release is available at https://acpica.org/downloads
73
74
75 1) ACPICA kernel-resident subsystem:
76
77 Modified the OwnerId mechanism to allow for more Owner Ids. The previous
78 limit was 256 Ids, now it is 4096 Ids. This prevents OWNER_ID_LIMIT
79 exceptions on machines with a large number of initialization threads,
80 many CPU cores and nested initialization control methods.
81
82 Introduced acpi_dispatch_gpe() as a wrapper around AcpiEvDetectGpe() for
83 checking if the given GPE (as represented by a GPE device handle and a
84 GPE number) is currently active and dispatching it (if that's the case)
85 outside of interrupt context.
86
87 Table load: exit the interpreter before initializing objects within the
88 new table This prevents re-acquiring the interpreter lock when loading
89 tables
90
91 Added the "Windows 2019" string to the _OSI support (version 1903). Jung-
92 uk Kim
93
94 Macros: removed pointer math on a null pointer. Causes warnings on some
95 compilers and/or tools. Changed ACPI_TO_POINTER to use ACPI_CAST_PTR
96 instead of using arithmetic.
97
98 Fully deployed the ACPI_PRINTF_LIKE macro. This macro was not being used
99 across all "printf-like" internal functions. Also, cleanup all calls to
100 such functions (both in 32-bit mode and 64-bit mode) now that they are
101 analyzed by the gcc compiler via ACPI_PRINTF_LIKE.
102
103
104 2) iASL Compiler/Disassembler and ACPICA tools:
105
106 iASL: implemented a new data table compiler flex/bison front-end. This
107 change is internal and is not intended to result in changes to the
108 compiled code. This new compiler front-end can be invoked using the -tp
109 option for now, until the old mechanism is removed.
110
111 ASLTS: Implemented a new data table compiler test suite. This test suite
112 generates all table templates and compile/disassemble/re-compile/binary-
113 compare each file.
114
115 iASL: return -1 if AML files were not generated due to compiler errors
116
117 iASL: added a warning on use of the now-legacy ASL Processor () keyword.
118
119 iASL: added an error on _UID object declaration that returns a String
120 within a Processor () declaration. A _UID for a processor must be an
121 Integer.
122
123 iASL: added a null terminator to name strings that consist only of
124 multiple parent prefixes (^)
125
126 iASL: added support to compile both ASL and data table files in a single
127 command.
128
129 Updated the tool generation project files that were recently migrated to
130 MSVC 2017 to eliminate all new warnings. The new project files appear in
131 the directory \acpica\generate\msvc2017. This change effectively
132 deprecates the older project files in \acpica\generate\msvc9.
133
134
135 ----------------------------------------
136 03 July 2019. Summary of changes for version 20190703:
137
138
139 1) ACPICA kernel-resident subsystem:
140
141 Remove legacy module-level support code. There were still some remnants
142 of the legacy module-level code executions. Since we no longer support
143 this option, this is essentially dead code and has been removed from the
144 ACPICA source.
145
146 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
147 scope. If these named objects are declared outside the root scope, they
148 will not be invoked by any host Operating System.
149
150 Clear status of GPEs on first direct enable. ACPI GPEs (other than the EC
151 one) can be enabled in two situations. First, the GPEs with existing _Lxx
152 and _Exx methods are enabled implicitly by ACPICA during system
153 initialization. Second, the GPEs without these methods (like GPEs listed
154 by _PRW objects for wakeup devices) need to be enabled directly by the
155 code that is going to use them (e.g. ACPI power management or device
156 drivers).
157
158 In the former case, if the status of a given GPE is set to start with,
159 its handler method (either _Lxx or _Exx) needs to be invoked to take care
160 of the events (possibly) signaled before the GPE was enabled. In the
161 latter case, however, the first caller of AcpiEnableGpe() for a given GPE
162 should not be expected to care about any events that might be signaled
163 through it earlier. In that case, it is better to clear the status of
164 the GPE before enabling it, to prevent stale events from triggering
165 unwanted actions (like spurious system resume, for example).
166
167 For this reason, modify AcpiEvAddGpeReference() to take an additional
168 boolean argument indicating whether or not the GPE status needs to be
169 cleared when its reference counter changes from zero to one and make
170 AcpiEnableGpe() pass TRUE to it through that new argument.
171
172
173 2) iASL Compiler/Disassembler and ACPICA tools:
174
175 The tool generation process has been migrated to MSVC 2017, and all
176 project files have been upgraded. The new project files appear in the
177 directory \acpica\generate\msvc2017. This change effectively deprecates
178 the older project files in \acpica\generate\msvc9.
179
180 iASL: ensure that _WAK, _PTS, _TTS, and _Sx are declared only at the root
181 scope. If these named objects are declared outside the root scope, they
182 will not be invoked by any host Operating System
183
184 ----------------------------------------
185 09 May 2019. Summary of changes for version 20190509:
186
187
188 1) ACPICA kernel-resident subsystem:
189
190 Revert commit 6c43e1a ("ACPICA: Clear status of GPEs before enabling
191 them") that causes problems with Thunderbolt controllers to occur if a
192 dock device is connected at init time (the xhci_hcd and thunderbolt
193 modules crash which prevents peripherals connected through them from
194 working). Commit 6c43e1a effectively causes commit ecc1165b8b74 ("ACPICA:
195 Dispatch active GPEs at init time") to get undone, so the problem
196 addressed by commit ecc1165b8b74 appears again as a result of it.
197
198
199 2) iASL Compiler/Disassembler and ACPICA tools:
200
201 Reverted iASL: Additional forward reference detection. This change
202 reverts forward reference detection for field declarations. The feature
203 unintentionally emitted AML bytecode with incorrect package lengths for
204 some ASL code related to Fields and OperationRegions. This malformed AML
205 can cause systems to crash
206 during boot. The malformed AML bytecode is emitted in iASL version
207 20190329 and 20190405.
208
209 iASL: improve forward reference detection. This change improves forward
210 reference detection for named objects inside of scopes. If a parse object
211 has the OP_NOT_FOUND_DURING_LOAD set, it means that Op is a reference to
212 a named object that is declared later in the AML bytecode. This is
213 allowed if the reference is inside of a method and the declaration is
214 outside of a method like so:
215
216 DefinitionBlock(...)
217 {
218 Method (TEST)
219 {
220 Return (NUM0)
221 }
222 Name (NUM0,0)
223 }
224
225 However, if the declaration and reference are both in the same method or
226 outside any methods, this is a forward reference and should be marked as
227 an error because it would result in runtime errors.
228
229 DefinitionBlock(...)
230 {
231 Name (BUFF, Buffer (NUM0) {}) // Forward reference
232 Name (NUM0, 0x0)
233
234 Method (TEST)
235 {
236 Local0 = NUM1
237 Name (NUM1, 0x1) // Forward reference
238 return (Local0)
239 }
240 }
241
242 iASL: Implemented additional buffer overflow analysis for BufferField
243 declarations. Check if a buffer index argument to a create buffer field
244 operation is beyond the end of the target buffer.
245
246 This affects these AML operators:
247
248 AML_CREATE_FIELD_OP
249 AML_CREATE_BIT_FIELD_OP
250 AML_CREATE_BYTE_FIELD_OP
251 AML_CREATE_WORD_FIELD_OP
252 AML_CREATE_DWORD_FIELD_OP
253 AML_CREATE_QWORD_FIELD_OP
254
255 There are three conditions that must be satisfied in order to allow this
256 validation at compile time:
257
258 1) The length of the target buffer must be an integer constant
259 2) The index specified in the create* must be an integer constant
260 3) For CreateField, the bit length argument must be non-zero.
261
262 Example:
263 Name (BUF1, Buffer() {1,2})
264 CreateField (BUF1, 7, 9, CF03) // 3: ERR
265
266 dsdt.asl 14: CreateField (BUF1, 7, 9, CF03) // 3: ERR
267 Error 6165 - ^ Buffer index beyond end of
268 target buffer
269
270
271 ----------------------------------------
272 05 April 2019. Summary of changes for version 20190405:
273
274
275 1) ACPICA kernel-resident subsystem:
276
277 Event Manager: History: Commit 18996f2db918 ("ACPICA: Events: Stop
278 unconditionally clearing ACPI IRQs during suspend/resume") was added
279 earlier to stop clearing of event status bits unconditionally on suspend
280 and resume paths. Though this change fixed an issue on suspend path, it
281 introduced regressions on several resume paths. In the case of S0ix,
282 events are enabled as part of device suspend path. If status bits for the
283 events are set when they are enabled, it could result in premature wake
284 from S0ix. If status is cleared for any event that is being enabled so
285 that any stale events are cleared out. In case of S0ix, events are
286 enabled as part of device suspend path. If status bits for the events are
287 set when they are enabled, it could result in premature wake from S0ix.
288
289 This change ensures that status is cleared for any event that is being
290 enabled so that any stale events are cleared out.
291
292
293 2) iASL Compiler/Disassembler and ACPICA tools:
294
295 iASL: Implemented an enhanced multiple file compilation that combines
296 named objects from all input files to a single namespace. With this
297 feature, any unresolved external declarations as well as duplicate named
298 object declarations can be detected during compilation rather than
299 generating errors much later at runtime. The following commands are
300 examples that utilize this feature:
301 iasl dsdt.asl ssdt.asl
302 iasl dsdt.asl ssdt1.asl ssdt2.asl
303 iasl dsdt.asl ssdt*.asl
304
305 ----------------------------------------
306 29 March 2019. Summary of changes for version 20190329:
307
308
309 1) ACPICA kernel-resident subsystem:
310
311 Namespace support: Remove the address nodes from global list after method
312 termination. The global address list contains pointers to namespace nodes
313 that represent Operation Regions. This change properly removes Operation
314 Region namespace nodes that are declared dynamically during method
315 execution.
316
317 Linux: Use a different debug default than ACPICA. There was a divergence
318 between Linux and the ACPICA codebases. In order to resolve this
319 divergence, Linux now declares its own debug default in aclinux.h
320
321 Renamed some internal macros to improve code understanding and
322 maintenance. The macros below all operate on single 4-character ACPI
323 NameSegs, not generic strings (old -> new):
324 ACPI_NAME_SIZE -> ACPI_NAMESEG_SIZE
325 ACPI_COMPARE_NAME -> ACPI_COMPARE_NAMESEG
326 ACPI_MOVE_NAME -> ACPI_COPY_NAMESEG
327
328 Fix for missing comma in array declaration for the AcpiGbl_GenericNotify
329 table.
330
331 Test suite: Update makefiles, add PCC operation region support
332
333
334 2) iASL Compiler/Disassembler and Tools:
335
336 iASL: Implemented additional illegal forward reference detection. Now
337 detect and emit an error upon detection of a forward reference from a
338 Field to an Operation Region. This will fail at runtime if allowed to
339 pass the compiler.
340
341 AcpiExec: Add an address list check for dynamic Operation Regions. This
342 feature performs a sanity test for each node the global address list.
343 This is done in order to ensure that all dynamic operation regions are
344 properly removed from the global address list and no dangling pointers
345 are left behind.
346
347 Disassembler: Improved generation of resource pathnames. This change
348 improves the code that generates resource descriptor and resource tag
349 pathnames. The original code used a bunch of str* C library functions
350 that caused warnings on some compilers.
351
352 iASL: Removed some uses of strncpy and replaced with memmove. The strncpy
353 function can overwrite buffers if the calling code is not very careful.
354 In the case of generating a module/table header, use of memmove is a
355 better implementation.
356
357
358 3) Status of new features that have not been completed at this time:
359
360 iASL: Implementing an enhanced multiple file compilation into a single
361 namespace feature (Status): This feature will be released soon, and
362 allows multiple ASL files to be compiled into the same single namespace.
363 By doing so, any unresolved external declarations as well as duplicate
364 named object declarations can be detected during compilation (rather than
365 later during runtime). The following commands are examples that utilize
366 this feature:
367 iasl dsdt.asl ssdt.asl
368 iasl dsdt.asl ssdt1.asl ssdt2.asl
369 iasl dsdt.asl ssdt*.asl
370
371 ASL tutorial status: Feedback is being gathered internally and the
372 current plan is to publish this tutorial on the ACPICA website after a
373 final review by a tech writer.
374
375 ----------------------------------------
376 15 February 2019. Summary of changes for version 20190215:
377
378
379 0) Support for ACPI specification version 6.3:
380
381 Add PCC operation region support for the AML interpreter. This adds PCC
382 operation region support in the AML interpreter and a default handler for
383 acpiexec. The change also renames the PCC region address space keyword to
384 PlatformCommChannel.
385
386 Support for new predefined methods _NBS, _NCH, _NIC, _NIH, and _NIG.
387 These methods provide OSPM with health information and device boot
388 status.
389
390 PDTT: Add TriggerOrder to the PCC Identifier structure. The field value
391 defines if the trigger needs to be invoked by OSPM before or at the end
392 of kernel crash dump processing/handling operation.
393
394 SRAT: Add Generic Affinity Structure subtable. This subtable in the SRAT
395 is used for describing devices such as heterogeneous processors,
396 accelerators, GPUs, and IO devices with integrated compute or DMA
397 engines.
398
399 MADT: Add support for statistical profiling in GICC. Statistical
400 profiling extension (SPE) is an architecture-specific feature for ARM.
401
402 MADT: Add online capable flag. If this bit is set, system hardware
403 supports enabling this processor during OS runtime.
404
405 New Error Disconnect Recover Notification value. There are a number of
406 scenarios where system Firmware in collaboration with hardware may
407 disconnect one or more devices from the rest of the system for purposes
408 of error containment. Firmware can use this new notification value to
409 alert OSPM of such a removal.
410
411 PPTT: New additional fields in Processor Structure Flags. These flags
412 provide more information about processor topology.
413
414 NFIT/Disassembler: Change a field name from "Address Range" to "Region
415 Type".
416
417 HMAT updates: make several existing fields to be reserved as well as
418 rename subtable 0 to "memory proximity domain attributes".
419
420 GTDT: Add support for new GTDT Revision 3. This revision adds information
421 for the EL2 timer.
422
423 iASL: Update the HMAT example template for new fields.
424
425 iASL: Add support for the new revision of the GTDT (Rev 3).
426
427
428 1) ACPICA kernel-resident subsystem:
429
430 AML Parser: fix the main AML parse loop to correctly skip erroneous
431 extended opcodes. AML opcodes come in two lengths: 1-byte opcodes and 2-
432 byte extended opcodes. If an error occurs during an AML table load, the
433 AML parser will continue loading the table by skipping the offending
434 opcode. This implements a "load table at any cost" philosophy.
435
436
437 2) iASL Compiler/Disassembler and Tools:
438
439 iASL: Add checks for illegal object references, such as a reference
440 outside of method to an object within a method. Such an object is only
441 temporary.
442
443 iASL: Emit error for creation of a zero-length operation region. Such a
444 region is rather pointless. If encountered, a runtime error is also
445 implemented in the interpeter.
446
447 Debugger: Fix a possible fault with the "test objects" command.
448
449 iASL: Makefile: support parent directory filenames containing embedded
450 spaces.
451
452 iASL: Update the TPM2 template to revision 4.
453
454 iASL: Add the ability to report specific warnings or remarks as errors.
455
456 Disassembler: Disassemble OEMx tables as actual AML byte code.
457 Previously, these tables were treated as "unknown table".
458
459 iASL: Add definition and disassembly for TPM2 revision 3.
460
461 iASL: Add support for TPM2 rev 3 compilation.
462
463
464 ----------------------------------------
465 08 January 2019. Summary of changes for version 20190108:
466
467
468 1) ACPICA kernel-resident subsystem:
469
470 Updated all copyrights to 2019. This affects all source code modules.
471
472
473 2) iASL Compiler/Disassembler and Tools:
474
475 ASL test suite (ASLTS): Updated all copyrights to 2019.
476
477 Tools: Updated all signon copyrights to 2019.
478
479 AcpiExec: Added a new option to dump extra information concerning any
480 memory leaks detected by the internal object/cache tracking mechanism. -
481 va
482
483 iASL: Updated the table template for the TPM2 table to the newest version
484 of the table (Revision 4)
485
486
487 ----------------------------------------
488 13 December 2018. Summary of changes for version 20181213:
489
490
491 1) ACPICA Kernel-resident Subsystem:
492
493 Fixed some buffer length issues with the GenericSerialBus, related to two
494 of the bidirectional protocols: AttribRawProcessBytes and AttribRawBytes,
495 which are rarely seen in the field. For these, the LEN field of the ASL
496 buffer is now ignored. Hans de Goede
497
498 Implemented a new object evaluation trace mechanism for control methods
499 and data objects. This includes nested control methods. It is
500 particularly useful for examining the ACPI execution during system
501 initialization since the output is relatively terse. The flag below
502 enables the output of the trace via the ACPI_DEBUG_PRINT_RAW interface:
503 #define ACPI_LV_EVALUATION 0x00080000
504
505 Examples:
506 Enter evaluation : _SB.PCI0._INI (Method)
507 Exit evaluation : _SB.PCI0._INI
508 Enter evaluation : _OSI (Method)
509 Exit evaluation : _OSI
510 Enter evaluation : _SB.PCI0.TEST (Method)
511 Nested method call : _SB.PCI0.NST1
512 Exit nested method : _SB.PCI0.NST1
513 Exit evaluation : _SB.PCI0.TEST
514
515 Added two recently-defined _OSI strings. See
516 https://docs.microsoft.com/en-us/windows-hardware/drivers/acpi/winacpi-
517 osi.
518 "Windows 2018"
519 "Windows 2018.2"
520
521 Update for buffer-to-string conversions via the ToHexString ASL operator.
522 A "0x" is now prepended to each of the hex values in the output string.
523 This provides compatibility with other ACPI implementations. The ACPI
524 specification is somewhat vague on this issue.
525 Example output string after conversion:
526 "0x01,0x02,0x03,0x04,0x05,0x06"
527
528 Return a run-time error for TermArg expressions within individual package
529 elements. Although this is technically supported by the ASL grammar,
530 other ACPI implementations do not support this either. Also, this fixes a
531 fault if this type of construct is ever encountered (it never has been).
532
533
534 2) iASL Compiler/Disassembler and Tools:
535
536 iASL: Implemented a new compile option (-ww) that will promote individual
537 warnings and remarks to errors. This is intended to enhance the firmware
538 build process.
539
540 AcpiExec: Implemented a new command-line option (-eo) to support the new
541 object evaluation trace mechanism described above.
542
543 Disassembler: Added support to disassemble OEMx tables as AML/ASL tables
544 instead of a "unknown table" message.
545
546 AcpiHelp: Improved support for the "special" predefined names such as
547 _Lxx, _Exx, _EJx, _T_x, etc. For these, any legal hex value can now be
548 used for "xx" and "x".
549
550 ----------------------------------------
551 31 October 2018. Summary of changes for version 20181031:
552
553
554 An Operation Region regression was fixed by properly adding address
555 ranges to a global list during initialization. This allows OS to
556 accurately check for overlapping regions between native devices (such as
557 PCI) and Operation regions as well as checking for region conflicts
558 between two Operation Regions.
559
560 Added support for the 2-byte extended opcodes in the code/feature that
561 attempts to continue parsing during the table load phase. Skip parsing
562 Device declarations (and other extended opcodes) when an error occurs
563 during parsing. Previously, only single-byte opcodes were supported.
564
565 Cleanup: Simplified the module-level code support by eliminating a
566 useless global variable (AcpiGbl_GroupModuleLeveCode).
567
568
569 2) iASL Compiler/Disassembler and Tools:
570
571 iASL/Preprocessor: Fixed a regression where an incorrect use of ACPI_FREE
572 could cause a fault in the preprocessor. This was an inadvertent side-
573 effect from moving more allocations/frees to the local cache/memory
574 mechanism.
575
576 iASL: Enhanced error detection by validating that all NameSeg elements
577 within a NamePatch actually exist. The previous behavior was spotty at
578 best, and such errors could be improperly ignored at compiler time (never
579 at runtime, however. There are two new error messages, as shown in the
580 examples below:
581
582 dsdt.asl 33: CreateByteField (TTTT.BXXX, 1, CBF1)
583 Error 6161 - ^ One or more objects within
584 the Pathname do not exist (TTTT.BXXX)
585
586 dsdt.asl 34: CreateByteField (BUF1, UUUU.INT1, BBBB.CBF1)
587 Error 6160 - One or more prefix Scopes do not exist ^
588 (BBBB.CBF1)
589
590 iASL: Disassembler/table-compiler: Added support for the static data
591 table TPM2 revision 3 (an older version of TPM2). The support has been
592 added for the compiler and the disassembler.
593
594 Fixed compilation of DOS format data table file on Unix/Linux systems.
595 iASL now properly detects line continuations (\) for DOS format data
596 table definition language files on when executing on Unix/Linux.
597
598 ----------------------------------------
599 03 October 2018. Summary of changes for version 20181003:
600
601
602 2) iASL Compiler/Disassembler and Tools:
603
604 Fixed a regression introduced in version 20180927 that could cause the
605 compiler to fault, especially with NamePaths containing one or more
606 carats (^). Such as: ^^_SB_PCI0
607
608 Added a new remark for the Sleep() operator when the sleep time operand
609 is larger than one second. This is a very long time for the ASL/BIOS code
610 and may not be what was intended by the ASL writer.
611
612 ----------------------------------------
613 27 September 2018. Summary of changes for version 20180927:
614
615
616 1) ACPICA kernel-resident subsystem:
617
618 Updated the GPE support to clear the status of all ACPI events when
619 entering any/all sleep states in order to avoid premature wakeups. In
620 theory, this may cause some wakeup events to be missed, but the
621 likelihood of this is small. This change restores the original behavior
622 of the ACPICA code in order to fix a regression seen from the previous
623 "Stop unconditionally clearing ACPI IRQs during suspend/resume" change.
624 This regression could cause some systems to incorrectly wake immediately.
625
626 Updated the execution of the _REG methods during initialization and
627 namespace loading to bring the behavior into closer conformance to the
628 ACPI specification and other ACPI implementations:
629
630 From the ACPI specification 6.2A, section 6.5.4 "_REG (Region):
631 "Control methods must assume all operation regions are inaccessible
632 until the _REG(RegionSpace, 1) method is executed"
633
634 "The exceptions to this rule are:
635 1. OSPM must guarantee that the following operation regions are always
636 accessible:
637 SystemIO operation regions.
638 SystemMemory operation regions when accessing memory returned by the
639 System Address Map reporting interfaces."
640
641 Since the state of both the SystemIO and SystemMemory address spaces are
642 defined by the specification to never change, this ACPICA change ensures
643 that now _REG is never called on them. This solves some problems seen in
644 the field and provides compatibility with other ACPI implementations. An
645 update to the upcoming new version of the ACPI specification will help
646 clarify this behavior.
647
648 Updated the implementation of support for the Generic Serial Bus. For the
649 "bidirectional" protocols, the internal implementation now automatically
650 creates a return data buffer of the maximum size (255). This handles the
651 worst-case for data that is returned from the serial bus handler, and
652 fixes some problems seen in the field. This new buffer is directly
653 returned to the ASL. As such, there is no true "bidirectional" buffer,
654 which matches the ACPI specification. This is the reason for the "double
655 store" seen in the example ASL code in the specification, shown below:
656
657 Word Process Call (AttribProcessCall):
658 OperationRegion(TOP1, GenericSerialBus, 0x00, 0x100)
659 Field(TOP1, BufferAcc, NoLock, Preserve)
660 {
661 FLD1, 8, // Virtual register at command value 1.
662 }
663
664 Name(BUFF, Buffer(20){}) // Create GenericSerialBus data buffer
665 // as BUFF
666 CreateWordField(BUFF, 0x02, DATA) // DATA = Data (Word)
667
668 Store(0x5416, DATA) // Save 0x5416 into the data buffer
669 Store(Store(BUFF, FLD1), BUFF) // Invoke a write/read Process Call
670 transaction
671 // This is the "double store". The write to
672 // FLD1 returns a new buffer, which is stored
673 // back into BUFF with the second Store.
674
675
676 2) iASL Compiler/Disassembler and Tools:
677
678 iASL: Implemented detection of extraneous/redundant uses of the Offset()
679 operator within a Field Unit list. A remark is now issued for these. For
680 example, the first two of the Offset() operators below are extraneous.
681 Because both the compiler and the interpreter track the offsets
682 automatically, these Offsets simply refer to the current offset and are
683 unnecessary. Note, when optimization is enabled, the iASL compiler will
684 in fact remove the redundant Offset operators and will not emit any AML
685 code for them.
686
687 OperationRegion (OPR1, SystemMemory, 0x100, 0x100)
688 Field (OPR1)
689 {
690 Offset (0), // Never needed
691 FLD1, 32,
692 Offset (4), // Redundant, offset is already 4 (bytes)
693 FLD2, 8,
694 Offset (64), // OK use of Offset.
695 FLD3, 16,
696 }
697 dsdt.asl 14: Offset (0),
698 Remark 2158 - ^ Unnecessary/redundant use of Offset
699 operator
700
701 dsdt.asl 16: Offset (4),
702 Remark 2158 - ^ Unnecessary/redundant use of Offset
703 operator
704
705 ----------------------------------------
706 10 August 2018. Summary of changes for version 20180810:
707
708
709 1) ACPICA kernel-resident subsystem:
710
711 Initial ACPI table loading: Attempt to continue loading ACPI tables
712 regardless of malformed AML. Since migrating table initialization to the
713 new module-level code support, the AML interpreter rejected tables upon
714 any ACPI error encountered during table load. This is a problem because
715 non-serious ACPI errors during table load do not necessarily mean that
716 the entire definition block (DSDT or SSDT) is invalid. This change
717 improves the table loading by ignoring some types of errors that can be
718 generated by incorrect AML. This can range from object type errors, scope
719 errors, and index errors.
720
721 Suspend/Resume support: Update to stop unconditionally clearing ACPI IRQs
722 during suspend/resume. The status of ACPI events is no longer cleared
723 when entering the ACPI S5 system state (power off) which caused some
724 systems to power up immediately after turning off power in certain
725 situations. This was a functional regression. It was fixed by clearing
726 the status of all ACPI events again when entering S5 (for system-wide
727 suspend or hibernation the clearing of the status of all events is not
728 desirable, as it might cause the kernel to miss wakeup events sometimes).
729 Rafael Wysocki.
730
731
732 2) iASL Compiler/Disassembler and Tools:
733
734 AcpiExec: Enhanced the -fi option (Namespace initialization file). Field
735 elements listed in the initialization file were previously initialized
736 after the table load and before executing module-level code blocks.
737 Recent changes in the module-level code support means that the table load
738 becomes a large control method execution. If fields are used within
739 module-level code and we are executing with the -fi option, the
740 initialization values were used to initialize the namespace object(s)
741 only after the table was finished loading. This change Provides an early
742 initialization of objects specified in the initialization file so that
743 field unit values are populated during the table load (not after the
744 load).
745
746 AcpiExec: Fixed a small memory leak regression that could result in
747 warnings during exit of the utility. These warnings were similar to
748 these:
749 0002D690 Length 0x0006 nsnames-0502 [Not a Descriptor - too small]
750 0002CD70 Length 0x002C utcache-0453 [Operand] Integer RefCount 0x0001
751
752 ----------------------------------------
753 29 June 2018. Summary of changes for version 20180629:
754
755
756 1) iASL Compiler/Disassembler and Tools:
757
758 iASL: Fixed a regression related to the use of the ASL External
759 statement. Error checking for the use of the External() statement has
760 been relaxed. Previously, a restriction on the use of External meant that
761 the referenced named object was required to be defined in a different
762 table (an SSDT). Thus it would be an error to declare an object as an
763 external and then define the same named object in the same table. For
764 example:
765 DefinitionBlock (...)
766 {
767 External (DEV1)
768 Device (DEV1){...} // This was an error
769 }
770 However, this behavior has caused regressions in some existing ASL code,
771 because there is code that depends on named objects and externals (with
772 the same name) being declared in the same table. This change will allow
773 the ASL code above to compile without errors or warnings.
774
775 iASL: Implemented ASL language extensions for four operators to make some
776 of their arguments optional instead of required:
777 1) Field (RegionName, AccessType, LockRule, UpdateRule)
778 2) BankField (RegionName, BankName, BankValue,
779 AccessType, LockRule, UpdateRule)
780 3) IndexField (IndexName, DataName,
781 AccessType, LockRule, UpdateRule)
782 For the Field operators above, the AccessType, LockRule, and UpdateRule
783 are now optional arguments. The default values are:
784 AccessType: AnyAcc
785 LockRule: NoLock
786 UpdateRule: Preserve
787 4) Mutex (MutexName, SyncLevel)
788 For this operator, the SyncLevel argument is now optional. This argument
789 is rarely used in any meaningful way by ASL code, and thus it makes sense
790 to make it optional. The default value is:
791 SyncLevel: 0
792
793 iASL: Attempted use of the ASL Unload() operator now results in the
794 following warning:
795 "Unload is not supported by all operating systems"
796 This is in fact very true, and the Unload operator may be completely
797 deprecated in the near future.
798
799 AcpiExec: Fixed a regression for the -fi option (Namespace initialization
800 file. Recent changes in the ACPICA module-level code support altered the
801 table load/initialization sequence . This means that the table load has
802 become a large method execution of the table itself. If Operation Region
803 Fields are used within any module-level code and the -fi option was
804 specified, the initialization values were populated only after the table
805 had completely finished loading (and thus the module-level code had
806 already been executed). This change moves the initialization of objects
807 listed in the initialization file to before the table is executed as a
808 method. Field unit values are now initialized before the table execution
809 is performed.
810
811 ----------------------------------------
812 31 May 2018. Summary of changes for version 20180531:
813
814
815 1) ACPICA kernel-resident Subsystem:
816
817 Implemented additional support to help ensure that a DSDT or SSDT is
818 fully loaded even if errors are incurred during the load. The majority of
819 the problems that are seen is the failure of individual AML operators
820 that occur during execution of any module-level code (MLC) existing in
821 the table. This support adds a mechanism to abort the current ASL
822 statement (AML opcode), emit an error message, and to simply move on to
823 the next opcode -- instead of aborting the entire table load. This is
824 different than the execution of a control method where the entire method
825 is aborted upon any error. The goal is to perform a very "best effort" to
826 load the ACPI tables. The most common MLC errors that have been seen in
827 the field are direct references to unresolved ASL/AML symbols (referenced
828 directly without the use of the CondRefOf operator to validate the
829 symbol). This new ACPICA behavior is now compatible with other ACPI
830 implementations.
831
832 Interpreter: The Unload AML operator is no longer supported for the
833 reasons below. An AE_NOT_IMPLEMENTED exception is returned.
834 1) A correct implementation on at least some hosts may not be possible.
835 2) Other ACPI implementations do not correctly/fully support it.
836 3) It requires host device driver support which is not known to exist.
837 (To properly support namespace unload out from underneath.)
838 4) This AML operator has never been seen in the field.
839
840 Parser: Added a debug option to dump AML parse sub-trees as they are
841 being executed. Used with ACPI_DEBUG_PRINT, the enabling debug level is
842 ACPI_DB_PARSE_TREES.
843
844 Debugger: Reduced the verbosity for errors incurred during table load and
845 module-level code execution.
846
847 Completed an investigation into adding a namespace node "owner list"
848 instead of the current "owner ID" associated with namespace nodes. This
849 list would link together all nodes that are owned by an individual
850 control method. The purpose would be to enhance control method execution
851 by speeding up cleanup during method exit (all namespace nodes created by
852 a method are deleted upon method termination.) Currently, the entire
853 namespace must be searched for matching owner IDs if (and only if) the
854 method creates named objects outside of the local scope. However, by far
855 the most common case is that methods create objects locally, not outside
856 the method scope. There is already an ACPICA optimization in place that
857 only searches the entire namespace in the rare case of a method creating
858 objects elsewhere in the namespace. Therefore, it is felt that the
859 overhead of adding an additional pointer to each namespace node to
860 implement the owner list makes this feature unnecessary.
861
862
863 2) iASL Compiler/Disassembler and Tools:
864
865 iASL, Disassembler, and Template generator: Implemented support for
866 Revision D of the IORT table. Adds a new subtable that is used to specify
867 SMMUv3 PMCGs. rmurphy-arm.
868
869 Disassembler: Restored correct table header validation for the "special"
870 ACPI tables -- RSDP and FACS. These tables do not contain a standard ACPI
871 table header and must be special-cased. This was a regression that has
872 been present for apparently a long time.
873
874 AcpiExec: Reduced verbosity of the local exception handler implemented
875 within acpiexec. This handler is invoked by ACPICA upon any exceptions
876 generated during control method execution. A new option was added: -vh
877 restores the original verbosity level if desired.
878
879 AcpiExec: Changed the default base from decimal to hex for the -x option
880 (set debug level). This simplifies the use of this option and matches the
881 behavior of the corresponding iASL -x option.
882
883 AcpiExec: Restored a force-exit on multiple control-c (sigint)
884 interrupts. This allows program termination even if other issues cause
885 the control-c to fail.
886
887 ASL test suite (ASLTS): Added tests for the recently implemented package
888 element resolution mechanism that allows forward references to named
889 objects from individual package elements (this mechanism provides
890 compatibility with other ACPI implementations.)
891
892
893 ----------------------------------------
894 8 May 2018. Summary of changes for version 20180508:
895
896
897 1) ACPICA kernel-resident subsystem:
898
899 Completed the new (recently deployed) package resolution mechanism for
900 the Load and LoadTable ASL/AML operators. This fixes a regression that
901 was introduced in version 20180209 that could result in an
902 AE_AML_INTERNAL exception during the loading of a dynamic ACPI/AML table
903 (SSDT) that contains package objects.
904
905
906 2) iASL Compiler/Disassembler and Tools:
907
908 AcpiDump and AcpiXtract: Implemented support for ACPI tables larger than
909 1 MB. This change allows for table offsets within the acpidump file to be
910 up to 8 characters. These changes are backwards compatible with existing
911 acpidump files.
912
913
914 ----------------------------------------
915 27 April 2018. Summary of changes for version 20180427:
916
917
918 1) ACPICA kernel-resident subsystem:
919
920 Debugger: Added support for Package objects in the "Test Objects"
921 command. This command walks the entire namespace and evaluates all named
922 data objects (Integers, Strings, Buffers, and now Packages).
923
924 Improved error messages for the namespace root node. Originally, the root
925 was referred to by the confusing string "\___". This has been replaced by
926 "Namespace Root" for clarification.
927
928 Fixed a potential infinite loop in the AcpiRsDumpByteList function. Colin
929 Ian King <colin.king (a] canonical.com>.
930
931
932 2) iASL Compiler/Disassembler and Tools:
933
934 iASL: Implemented support to detect and flag illegal forward references.
935 For compatibility with other ACPI implementations, these references are
936 now illegal at the root level of the DSDT or SSDTs. Forward references
937 have always been illegal within control methods. This change should not
938 affect existing ASL/AML code because of the fact that these references
939 have always been illegal in the other ACPI implementation.
940
941 iASL: Added error messages for the case where a table OEM ID and OEM
942 TABLE ID strings are longer than the ACPI-defined length. Previously,
943 these strings were simply silently truncated.
944
945 iASL: Enhanced the -tc option (which creates an AML hex file in C,
946 suitable for import into a firmware project):
947 1) Create a unique name for the table, to simplify use of multiple
948 SSDTs.
949 2) Add a protection #ifdef in the file, similar to a .h header file.
950 With assistance from Sami Mujawar, sami.mujawar (a] arm.com and Evan Lloyd,
951 evan.lloyd (a] arm.com
952
953 AcpiExec: Added a new option, -df, to disable the local fault handler.
954 This is useful during debugging, where it may be desired to drop into a
955 debugger on a fault.
956
957 ----------------------------------------
958 13 March 2018. Summary of changes for version 20180313:
959
960
961 1) ACPICA kernel-resident subsystem:
962
963 Implemented various improvements to the GPE support:
964
965 1) Dispatch all active GPEs at initialization time so that no GPEs are
966 lost.
967 2) Enable runtime GPEs earlier. Some systems expect GPEs to be enabled
968 before devices are enumerated.
969 3) Don't unconditionally clear ACPI IRQs during suspend/resume, so that
970 IRQs are not lost.
971 4) Add parallel GPE handling to eliminate the possibility of dispatching
972 the same GPE twice.
973 5) Dispatch any pending GPEs after enabling for the first time.
974
975 AcpiGetObjectInfo - removed support for the _STA method. This was causing
976 problems on some platforms.
977
978 Added a new _OSI string, "Windows 2017.2".
979
980 Cleaned up and simplified the module-level code support. These changes
981 are in preparation for the eventual removal of the legacy MLC support
982 (deferred execution), replaced by the new MLC architecture which executes
983 the MLC as a table is loaded (DSDT/SSDTs).
984
985 Changed a compile-time option to a runtime option. Changes the option to
986 ignore ACPI table load-time package resolution errors into a runtime
987 option. Used only for platforms that generate many AE_NOT_FOUND errors
988 during boot. AcpiGbl_IgnorePackageResolutionErrors.
989
990 Fixed the ACPI_ERROR_NAMESPACE macro. This change involves putting some
991 ACPI_ERROR_NAMESPACE parameters inside macros. By doing so, we avoid
992 compilation errors from unused variables (seen with some compilers).
993
994
995 2) iASL Compiler/Disassembler and Tools:
996
997 ASLTS: parallelized execution in order to achieve an (approximately) 2X
998 performance increase.
999
1000 ASLTS: Updated to use the iASL __LINE__ and __METHOD__ macros. Improves
1001 error reporting.
1002
1003 ----------------------------------------
1004 09 February 2018. Summary of changes for version 20180209:
1005
1006
1007 1) ACPICA kernel-resident subsystem:
1008
1009 Completed the final integration of the recent changes to Package Object
1010 handling and the module-level AML code support. This allows forward
1011 references from individual package elements when the package object is
1012 declared from within module-level code blocks. Provides compatibility
1013 with other ACPI implementations.
1014
1015 The new architecture for the AML module-level code has been completed and
1016 is now the default for the ACPICA code. This new architecture executes
1017 the module-level code in-line as the ACPI table is loaded/parsed instead
1018 of the previous architecture which deferred this code until after the
1019 table was fully loaded. This solves some ASL code ordering issues and
1020 provides compatibility with other ACPI implementations. At this time,
1021 there is an option to fallback to the earlier architecture, but this
1022 support is deprecated and is planned to be completely removed later this
1023 year.
1024
1025 Added a compile-time option to ignore AE_NOT_FOUND exceptions during
1026 resolution of named reference elements within Package objects. Although
1027 this is potentially a serious problem, it can generate a lot of
1028 noise/errors on platforms whose firmware carries around a bunch of unused
1029 Package objects. To disable these errors, define
1030 ACPI_IGNORE_PACKAGE_RESOLUTION_ERRORS in the OS-specific header. All
1031 errors are always reported for ACPICA applications such as AcpiExec.
1032
1033 Fixed a regression related to the explicit type-conversion AML operators
1034 (ToXXXX). The regression was introduced early in 2017 but was not seen
1035 until recently because these operators are not fully supported by other
1036 ACPI implementations and are thus rarely used by firmware developers. The
1037 operators are defined by the ACPI specification to not implement the
1038 "implicit result object conversion". The regression incorrectly
1039 introduced this object conversion for the following explicit conversion
1040 operators:
1041 ToInteger
1042 ToString
1043 ToBuffer
1044 ToDecimalString
1045 ToHexString
1046 ToBCD
1047 FromBCD
1048
1049
1050 2) iASL Compiler/Disassembler and Tools:
1051
1052 iASL: Fixed a problem with the compiler constant folding feature as
1053 related to the ToXXXX explicit conversion operators. These operators do
1054 not support the "implicit result object conversion" by definition. Thus,
1055 ASL expressions that use these operators cannot be folded to a simple
1056 Store operator because Store implements the implicit conversion. This
1057 change uses the CopyObject operator for the ToXXXX operator folding
1058 instead. CopyObject is defined to not implement implicit result
1059 conversions and is thus appropriate for folding the ToXXXX operators.
1060
1061 iASL: Changed the severity of an error condition to a simple warning for
1062 the case where a symbol is declared both locally and as an external
1063 symbol. This accommodates existing ASL code.
1064
1065 AcpiExec: The -ep option to enable the new architecture for module-level
1066 code has been removed. It is replaced by the -dp option which instead has
1067 the opposite effect: it disables the new architecture (the default) and
1068 enables the legacy architecture. When the legacy code is removed in the
1069 future, the -dp option will be removed also.
1070
1071 ----------------------------------------
1072 05 January 2018. Summary of changes for version 20180105:
1073
1074
1075 1) ACPICA kernel-resident subsystem:
1076
1077 Updated all copyrights to 2018. This affects all source code modules.
1078
1079 Fixed a possible build error caused by an unresolved reference to the
1080 AcpiUtSafeStrncpy function.
1081
1082 Removed NULL pointer arithmetic in the various pointer manipulation
1083 macros. All "(void *) NULL" constructs are converted to "(void *) 0".
1084 This eliminates warnings/errors in newer C compilers. Jung-uk Kim.
1085
1086 Added support for A32 ABI compilation, which uses the ILP32 model. Anuj
1087 Mittal.
1088
1089
1090 2) iASL Compiler/Disassembler and Tools:
1091
1092 ASLTS: Updated all copyrights to 2018.
1093
1094 Tools: Updated all signon copyrights to 2018.
1095
1096 AcpiXtract: Fixed a regression related to ACPI table signatures where the
1097 signature was truncated to 3 characters (instead of 4).
1098
1099 AcpiExec: Restore the original terminal mode after the use of the -v and
1100 -vd options.
1101
1102 ASLTS: Deployed the iASL __METHOD__ macro across the test suite.
1103
1104 ----------------------------------------
1105 14 December 2017. Summary of changes for version 20171214:
1106
1107
1108 1) ACPICA kernel-resident subsystem:
1109
1110 Fixed a regression in the external (public) AcpiEvaluateObjectTyped
1111 interface where the optional "pathname" argument had inadvertently become
1112 a required argument returning an error if omitted (NULL pointer
1113 argument).
1114
1115 Fixed two possible memory leaks related to the recently developed "late
1116 resolution" of reference objects within ASL Package Object definitions.
1117
1118 Added two recently defined _OSI strings: "Windows 2016" and "Windows
1119 2017". Mario Limonciello.
1120
1121 Implemented and deployed a safer version of the C library function
1122 strncpy: AcpiUtSafeStrncpy. The intent is to at least prevent the
1123 creation of unterminated strings as a possible result of a standard
1124 strncpy.
1125
1126 Cleaned up and restructured the global variable file (acglobal.h). There
1127 are many changes, but no functional changes.
1128
1129
1130 2) iASL Compiler/Disassembler and Tools:
1131
1132 iASL Table Compiler: Fixed a problem with the DBG2 ACPI table where the
1133 optional OemData field at the end of the table was incorrectly required
1134 for proper compilation. It is now correctly an optional field.
1135
1136 ASLTS: The entire suite was converted from standard ASL to the ASL+
1137 language, using the ASL-to-ASL+ converter which is integrated into the
1138 iASL compiler. A binary compare of all output files has verified the
1139 correctness of the conversion.
1140
1141 iASL: Fixed the source code build for platforms where "char" is unsigned.
1142 This affected the iASL lexer only. Jung-uk Kim.
1143
1144 ----------------------------------------
1145 10 November 2017. Summary of changes for version 20171110:
1146
1147
1148 1) ACPICA kernel-resident subsystem:
1149
1150 This release implements full support for ACPI 6.2A:
1151 NFIT - Added a new subtable, "Platform Capabilities Structure"
1152 No other changes to ACPICA were required, since ACPI 6.2A is primarily an
1153 errata release of the specification.
1154
1155 Other ACPI table changes:
1156 IORT: Added the SMMUv3 Device ID mapping index. Hanjun Guo
1157 PPTT: Added cache attribute flag definitions to actbl1.h. Jeremy
1158 Linton
1159
1160 Utilities: Modified the string/integer conversion functions to use
1161 internal 64-bit divide support instead of a native divide. On 32-bit
1162 platforms, a 64-bit divide typically requires a library function which
1163 may not be present in the build (kernel or otherwise).
1164
1165 Implemented a targeted error message for timeouts returned from the
1166 Embedded Controller device driver. This is seen frequently enough to
1167 special-case an AE_TIME returned from an EC operation region access:
1168 "Timeout from EC hardware or EC device driver"
1169
1170 Changed the "ACPI Exception" message prefix to "ACPI Error" so that all
1171 runtime error messages have the identical prefix.
1172
1173
1174 2) iASL Compiler/Disassembler and Tools:
1175
1176 AcpiXtract: Fixed a problem with table header detection within the
1177 acpidump file. Processing a table could be ended early if a 0x40 (@)
1178 appears in the original binary table, resulting in the @ symbol appearing
1179 in the decoded ASCII field at the end of the acpidump text line. The
1180 symbol caused acpixtract to incorrectly think it had reached the end of
1181 the current table and the beginning of a new table.
1182
1183 AcpiXtract: Added an option (-f) to ignore some errors during table
1184 extraction. This initial implementation ignores non-ASCII and non-
1185 printable characters found in the acpidump text file.
1186
1187 TestSuite(ASLTS)/AcpiExec: Fixed and restored the memory usage statistics
1188 for ASLTS. This feature is used to track memory allocations from
1189 different memory caches within the ACPICA code. At the end of an ASLTS
1190 run, these memory statistics are recorded and stored in a log file.
1191
1192 Debugger (user-space version): Implemented a simple "Background" command.
1193 Creates a new thread to execute a control method in the background, while
1194 control returns to the debugger prompt to allow additional commands.
1195 Syntax: Background <Namepath> [Arguments]
1196
1197 ----------------------------------------
1198 29 September 2017. Summary of changes for version 20170929:
1199
1200
1201 1) ACPICA kernel-resident subsystem:
1202
1203 Redesigned and implemented an improved ASL While() loop timeout
1204 mechanism. This mechanism is used to prevent infinite loops in the kernel
1205 AML interpreter caused by either non-responsive hardware or incorrect AML
1206 code. The new implementation uses AcpiOsGetTimer instead of a simple
1207 maximum loop count, and is thus more accurate and constant across
1208 different machines. The default timeout is currently 30 seconds, but this
1209 may be adjusted later.
1210
1211 Renamed the ACPI_AML_INFINITE_LOOP exception to AE_AML_LOOP_TIMEOUT to
1212 better reflect the new implementation of the loop timeout mechanism.
1213
1214 Updated the AcpiGetTimerDuration interface to cleanup the 64-bit support
1215 and to fix an off-by-one error. Jung-uk Kim.
1216
1217 Fixed an EFI build problem by updating the makefiles to for a new file
1218 that was added, utstrsuppt.c
1219
1220
1221 2) iASL Compiler/Disassembler and Tools:
1222
1223 Implemented full support for the PDTT, SDEV, and TPM2 ACPI tables. This
1224 includes support in the table disassembler, compiler, and template
1225 generator.
1226
1227 iASL: Added an exception for an illegal type of recursive method
1228 invocation. If a method creates named objects, the first recursive call
1229 will fail at runtime. This change adds an error detection at compile time
1230 to catch the problem up front. Note: Marking such a method as
1231 "serialized" will not help with this problem, because the same thread can
1232 acquire the method mutex more than once. Example compiler and runtime
1233 output:
1234
1235 Method (MTH1)
1236 {
1237 Name (INT1, 1)
1238 MTH1 ()
1239 }
1240
1241 dsdt.asl 22: MTH1 ()
1242 Error 6152 - ^ Illegal recursive call to method
1243 that creates named objects (MTH1)
1244
1245 Previous runtime exception:
1246 ACPI Error: [INT1] Namespace lookup failure,
1247 AE_ALREADY_EXISTS (20170831/dswload2-465)
1248
1249 iASL: Updated support for External() opcodes to improve namespace
1250 management and error detection. These changes are related to issues seen
1251 with multiple-segment namespace pathnames within External declarations,
1252 such as below:
1253
1254 External(\_SB.PCI0.GFX0, DeviceObj)
1255 External(\_SB.PCI0.GFX0.ALSI)
1256
1257 iASL: Implemented support for multi-line error/warning messages. This
1258 enables more detailed and helpful error messages as below, from the
1259 initial deployment for the duplicate names error:
1260
1261 DSDT.iiii 1692: Device(PEG2) {
1262 Error 6074 - ^ Name already exists in scope
1263 (PEG2)
1264
1265 Original name creation/declaration below:
1266 DSDT.iiii 93: External(\_SB.PCI0.PEG2, DeviceObj)
1267
1268 AcpiXtract: Added additional flexibility to support differing input hex
1269 dump formats. Specifically, hex dumps that contain partial disassembly
1270 and/or comments within the ACPI table data definition. There exist some
1271 dump utilities seen in the field that create this type of hex dump (such
1272 as Simics). For example:
1273
1274 DSDT @ 0xdfffd0c0 (10999 bytes)
1275 Signature DSDT
1276 Length 10999
1277 Revision 1
1278 Checksum 0xf3 (Ok)
1279 OEM_ID BXPC
1280 OEM_table_id BXDSDT
1281 OEM_revision 1
1282 Creator_id 1280593481
1283 Creator_revision 537399345
1284 0000: 44 53 44 54 f7 2a 00 00 01 f3 42 58 50 43 00 00
1285 ...
1286 2af0: 5f 4c 30 46 00 a4 01
1287
1288 Test suite: Miscellaneous changes/fixes:
1289 More cleanup and simplification of makefiles
1290 Continue compilation of test cases after a compile failure
1291 Do not perform binary compare unless both files actually exist
1292
1293 iASL: Performed some code/module restructuring. Moved all memory
1294 allocation functions to new modules. Two new files, aslallocate.c and
1295 aslcache.c
1296
1297 ----------------------------------------
1298 31 August 2017. Summary of changes for version 20170831:
1299
1300
1301 1) ACPICA kernel-resident subsystem:
1302
1303 Implemented internal support for full 64-bit addresses that appear in all
1304 Generic Address Structure (GAS) structures. Previously, only the lower 32
1305 bits were used. Affects the use of GAS structures in the FADT and other
1306 tables, as well as the GAS structures passed to the AcpiRead and
1307 AcpiWrite public external interfaces that are used by drivers. Lv Zheng.
1308
1309 Added header support for the PDTT ACPI table (Processor Debug Trigger
1310 Table). Full support in the iASL Data Table Compiler and disassembler is
1311 forthcoming.
1312
1313
1314 2) iASL Compiler/Disassembler and Tools:
1315
1316 iASL/Disassembler: Fixed a problem with the PPTT ACPI table (Processor
1317 Properties Topology Table) where a flag bit was specified in the wrong
1318 bit position ("Line Size Valid", bit 6).
1319
1320 iASL: Implemented support for Octal integer constants as defined by the
1321 ASL language grammar, per the ACPI specification. Any integer constant
1322 that starts with a zero is an octal constant. For example,
1323 Store (037777, Local0) /* Octal constant */
1324 Store (0x3FFF, Local0) /* Hex equivalent */
1325 Store (16383, Local0) /* Decimal equivalent */
1326
1327 iASL: Improved overflow detection for 64-bit string conversions during
1328 compilation of integer constants. "Overflow" in this case means a string
1329 that represents an integer that is too large to fit into a 64-bit value.
1330 Any 64-bit constants within a 32-bit DSDT or SSDT are still truncated to
1331 the low-order 32 bits with a warning, as previously implemented. Several
1332 new exceptions are defined that indicate a 64-bit overflow, as well as
1333 the base (radix) that was used during the attempted conversion. Examples:
1334 Local0 = 0xAAAABBBBCCCCDDDDEEEEFFFF // AE_HEX_OVERFLOW
1335 Local0 = 01111222233334444555566667777 // AE_OCTAL_OVERFLOW
1336 Local0 = 11112222333344445555666677778888 // AE_DECIMAL_OVERFLOW
1337
1338 iASL: Added a warning for the case where a ResourceTemplate is declared
1339 with no ResourceDescriptor entries (coded as "ResourceTemplate(){}"). In
1340 this case, the resulting template is created with a single END_TAG
1341 descriptor, which is essentially useless.
1342
1343 iASL: Expanded the -vw option (ignore specific warnings/remarks) to
1344 include compilation error codes as well.
1345
1346 ----------------------------------------
1347 28 July 2017. Summary of changes for version 20170728:
1348
1349
1350 1) ACPICA kernel-resident subsystem:
1351
1352 Fixed a regression seen with small resource descriptors that could cause
1353 an inadvertent AE_AML_NO_RESOURCE_END_TAG exception.
1354
1355 AML interpreter: Implemented a new feature that allows forward references
1356 from individual named references within package objects that are
1357 contained within blocks of "module-level code". This provides
1358 compatibility with other ACPI implementations and supports existing
1359 firmware that depends on this feature. Example:
1360
1361 Name (ABCD, 1)
1362 If (ABCD) /* An If() at module-level */
1363 {
1364 Name (PKG1, Package()
1365 {
1366 INT1 /* Forward reference to object INT1
1367 */
1368 })
1369 Name (INT1, 0x1234)
1370 }
1371
1372 AML Interpreter: Fixed a problem with the Alias() operator where aliases
1373 to some ASL objects were not handled properly. Objects affected are:
1374 Mutex, Event, and OperationRegion.
1375
1376 AML Debugger: Enhanced to properly handle AML Alias objects. These
1377 objects have one level of indirection which was not fully supported by
1378 the debugger.
1379
1380 Table Manager: Added support to detect and ignore duplicate SSDTs within
1381 the XSDT/RSDT. This error in the XSDT has been seen in the field.
1382
1383 EFI and EDK2 support:
1384 Enabled /WX flag for MSVC builds
1385 Added support for AcpiOsStall, AcpiOsSleep, and AcpiOsGetTimer
1386 Added local support for 64-bit multiply and shift operations
1387 Added support to compile acpidump.efi on Windows
1388 Added OSL function stubs for interfaces not used under EFI
1389
1390 Added additional support for the _DMA predefined name. _DMA returns a
1391 buffer containing a resource template. This change add support within the
1392 resource manager (AcpiWalkResourceBuffer) to walk and parse this list of
1393 resource descriptors. Lorenzo Pieralisi <lorenzo.pieralisi (a] arm.com>
1394
1395
1396 2) iASL Compiler/Disassembler and Tools:
1397
1398 iASL: Fixed a problem where the internal input line buffer(s) could
1399 overflow if there are very long lines in the input ASL source code file.
1400 Implemented buffer management that automatically increases the size of
1401 the buffers as necessary.
1402
1403 iASL: Added an option (-vx) to "expect" particular remarks, warnings and
1404 errors. If the specified exception is not raised during compilation, the
1405 compiler emits an error. This is intended to support the ASL test suite,
1406 but may be useful in other contexts.
1407
1408 iASL: Implemented a new predefined macro, __METHOD__, which returns a
1409 string containing the name of the current control method that is being
1410 compiled.
1411
1412 iASL: Implemented debugger and table compiler support for the SDEI ACPI
1413 table (Software Delegated Exception Interface). James Morse
1414 <james.morse (a] arm.com>
1415
1416 Unix/Linux makefiles: Added an option to disable compile optimizations.
1417 The disable occurs when the NOOPT flag is set to TRUE.
1418 theracermaster (a] gmail.com
1419
1420 Acpidump: Added support for multiple DSDT and FACS tables. This can occur
1421 when there are different tables for 32-bit versus 64-bit.
1422
1423 Enhanced error reporting for the ASL test suite (ASLTS) by removing
1424 unnecessary/verbose text, and emit the actual line number where an error
1425 has occurred. These changes are intended to improve the usefulness of the
1426 test suite.
1427
1428 ----------------------------------------
1429 29 June 2017. Summary of changes for version 20170629:
1430
1431
1432 1) ACPICA kernel-resident subsystem:
1433
1434 Tables: Implemented a deferred ACPI table verification. This is useful
1435 for operating systems where the tables cannot be verified in the early
1436 initialization stage due to early memory mapping limitations on some
1437 architectures. Lv Zheng.
1438
1439 Tables: Removed the signature validation for dynamically loaded tables.
1440 Provides compatibility with other ACPI implementations. Previously, only
1441 SSDT tables were allowed, as per the ACPI specification. Now, any table
1442 signature can be used via the Load() operator. Lv Zheng.
1443
1444 Tables: Fixed several mutex issues that could cause errors during table
1445 acquisition. Lv Zheng.
1446
1447 Tables: Fixed a problem where an ACPI warning could be generated if a
1448 null pointer was passed to the AcpiPutTable interface. Lv Zheng.
1449
1450 Tables: Added a mechanism to handle imbalances for the AcpiGetTable and
1451 AcpiPutTable interfaces. This applies to the "late stage" table loading
1452 when the use of AcpiPutTable is no longer required (since the system
1453 memory manager is fully running and available). Lv Zheng.
1454
1455 Fixed/Reverted a regression during processing of resource descriptors
1456 that contain only a single EndTag. Fixes an AE_AML_NO_RESOURCE_END_TAG
1457 exception in this case.
1458
1459 Headers: IORT/SMMU support: Updated the SMMU models for Revision C of the
1460 I/O Remapping specification. Robin Murphy <robin.murphy (a] arm.com>
1461
1462 Interpreter: Fixed a possible fault if an Alias operator with an invalid
1463 or duplicate target is encountered during Alias creation in
1464 AcpiExCreateAlias. Alex James <theracermaster (a] gmail.com>
1465
1466 Added an option to use designated initializers for function pointers.
1467 Kees Cook <keescook (a] google.com>
1468
1469
1470 2) iASL Compiler/Disassembler and Tools:
1471
1472 iASL: Allow compilation of External declarations with target pathnames
1473 that refer to existing named objects within the table. Erik Schmauss.
1474
1475 iASL: Fixed a regression when compiling FieldUnits. Fixes an error if a
1476 FieldUnit name also is declared via External in the same table. Erik
1477 Schmauss.
1478
1479 iASL: Allow existing scope names within pathnames used in External
1480 statements. For example:
1481 External (ABCD.EFGH) // ABCD exists, but EFGH is truly external
1482 Device (ABCD)
1483
1484 iASL: IORT ACPI table: Implemented changes required to decode the new
1485 Proximity Domain for the SMMUv3 IORT. Disassembler and Data Table
1486 compiler. Ganapatrao Kulkarni <ganapatrao.kulkarni (a] cavium.com>
1487
1488 Disassembler: Don't abort disassembly on errors from External()
1489 statements. Erik Schmauss.
1490
1491 Disassembler: fixed a possible fault when one of the Create*Field
1492 operators references a Resource Template. ACPICA Bugzilla 1396.
1493
1494 iASL: In the source code, resolved some naming inconsistences across the
1495 parsing support. Fixes confusion between "Parse Op" and "Parse Node".
1496 Adds a new file, aslparseop.c
1497
1498 ----------------------------------------
1499 31 May 2017. Summary of changes for version 20170531:
1500
1501
1502 0) ACPI 6.2 support:
1503
1504 The ACPI specification version 6.2 has been released and is available at
1505 http://uefi.org/specifications
1506
1507 This version of ACPICA fully supports the ACPI 6.2 specification. Changes
1508 are summarized below.
1509
1510 New ACPI tables (Table Compiler/Disassembler/Templates):
1511 HMAT (Heterogeneous Memory Attributes Table)
1512 WSMT (Windows SMM Security Mitigation Table)
1513 PPTT (Processor Properties Topology Table)
1514
1515 New subtables for existing ACPI tables:
1516 HEST (New subtable, Arch-deferred machine check)
1517 SRAT (New subtable, Arch-specific affinity structure)
1518 PCCT (New subtables, Extended PCC subspaces (types 3 and 4))
1519
1520 Simple updates for existing ACPI tables:
1521 BGRT (two new flag bits)
1522 HEST (New bit defined for several subtables, GHES_ASSIST)
1523
1524 New Resource Descriptors and Resource macros (Compiler/Disassembler):
1525 PinConfig()
1526 PinFunction()
1527 PinGroup()
1528 PinGroupConfig()
1529 PinGroupFunction()
1530 New type for hardware error notification (section 18.3.2.9)
1531
1532 New predefined names/methods (Compiler/Interpreter):
1533 _HMA (Heterogeneous Memory Attributes)
1534 _LSI (Label Storage Information)
1535 _LSR (Label Storage Read)
1536 _LSW (Label Storage Write)
1537
1538 ASL grammar/macro changes (Compiler):
1539 For() ASL macro, implemented with the AML while operator
1540 Extensions to Concatenate operator
1541 Support for multiple definition blocks in same ASL file
1542 Clarification for Buffer operator
1543 Allow executable AML code underneath all scopes (Devices, etc.)
1544 Clarification/change for the _OSI return value
1545 ASL grammar update for reference operators
1546 Allow a zero-length string for AML filename in DefinitionBlock
1547
1548 Miscellaneous:
1549 New device object notification value
1550 Remove a notify value (0x0C) for graceful shutdown
1551 New UUIDs for processor/cache properties and
1552 physical package property
1553 New _HID, ACPI0014 (Wireless Power Calibration Device)
1554
1555
1556 1) ACPICA kernel-resident subsystem:
1557
1558 Added support to disable ACPI events on hardware-reduced platforms.
1559 Eliminates error messages of the form "Could not enable fixed event". Lv
1560 Zheng
1561
1562 Fixed a problem using Device/Thermal objects with the ObjectType and
1563 DerefOf ASL operators. This support had not been fully/properly
1564 implemented.
1565
1566 Fixed a problem where if a Buffer object containing a resource template
1567 was longer than the actual resource template, an error was generated --
1568 even though the AML is legal. This case has been seen in the field.
1569
1570 Fixed a problem with the header definition of the MADT PCAT_COMPAT flag.
1571 The values for DUAL_PIC and MULTIPLE_APIC were reversed.
1572
1573 Added header file changes for the TPM2 ACPI table. Update to new version
1574 of the TCG specification. Adds a new TPM2 subtable for ARM SMC.
1575
1576 Exported the external interfaces AcpiAcquireMutex and AcpiReleaseMutex.
1577 These interfaces are intended to be used only in conjunction with the
1578 predefined _DLM method (Device Lock Method). "This object appears in a
1579 device scope when AML access to the device must be synchronized with the
1580 OS environment".
1581
1582 Example Code and Data Size: These are the sizes for the OS-independent
1583 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1584 debug version of the code includes the debug output trace mechanism and
1585 has a much larger code and data size.
1586
1587 Current Release:
1588 Non-Debug Version: 143.1K Code, 60.0K Data, 203.1K Total
1589 Debug Version: 204.0K Code, 84.3K Data, 288.3K Total
1590 Previous Release:
1591 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1592 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
1593
1594
1595 2) iASL Compiler/Disassembler and Tools:
1596
1597 iASL: Fixed a problem where an External() declaration could not refer to
1598 a Field Unit. Erik Schmauss.
1599
1600 Disassembler: Improved support for the Switch/Case operators. This
1601 feature will disassemble AML code back to the original Switch operators
1602 when possible, instead of an If..Else sequence. David Box
1603
1604 iASL and disassembler: Improved the handling of multiple extraneous
1605 parentheses for both ASL input and disassembled ASL output.
1606
1607 Improved the behavior of the iASL compiler and disassembler to detect
1608 improper use of external declarations
1609
1610 Disassembler: Now aborts immediately upon detection of an unknown AML
1611 opcode. The AML parser has no real way to recover from this, and can
1612 result in the creation of an ill-formed parse tree that causes errors
1613 later during the disassembly.
1614
1615 All tools: Fixed a problem where the Unix application OSL did not handle
1616 control-c correctly. For example, a control-c could incorrectly wake the
1617 debugger.
1618
1619 AcpiExec: Improved the Control-C handling and added a handler for
1620 segmentation faults (SIGSEGV). Supports both Windows and Unix-like
1621 environments.
1622
1623 Reduced the verbosity of the generic unix makefiles. Previously, each
1624 compilation displayed the full set of compiler options. This has been
1625 eliminated as the options are easily inspected within the makefiles. Each
1626 compilation now results in a single line of output.
1627
1628 ----------------------------------------
1629 03 March 2017. Summary of changes for version 20170303:
1630
1631
1632 0) ACPICA licensing:
1633
1634 The licensing information at the start of each source code module has
1635 been updated. In addition to the Intel license, the dual GPLv2/BSD
1636 license has been added for completeness. Now, a single version of the
1637 source code should be suitable for all ACPICA customers. This is the
1638 major change for this release since it affects all source code modules.
1639
1640
1641 1) ACPICA kernel-resident subsystem:
1642
1643 Fixed two issues with the common asltypes.h header that could cause
1644 problems in some environments: (Kim Jung-uk)
1645 Removed typedef for YY_BUFFER_STATE ?
1646 Fixes an error with earlier versions of Flex.
1647 Removed use of FILE typedef (which is only defined in stdio.h)
1648
1649
1650 2) iASL Compiler/Disassembler and Tools:
1651
1652 Disassembler: fixed a regression introduced in 20170224. A fix for a
1653 memory leak related to resource descriptor tags (names) could fault when
1654 the disassembler was generated with 64-bit compilers.
1655
1656 The ASLTS test suite has been updated to implement a new testing
1657 architecture. During generation of the suite from ASL source, both the
1658 ASL and ASL+ compilers are now validated, as well as the disassembler
1659 itself (Erik Schmauss). The architecture executes as follows:
1660
1661 For every ASL source module:
1662 Compile (legacy ASL compilation)
1663 Disassemble the resulting AML to ASL+ source code
1664 Compile the new ASL+ module
1665 Perform a binary compare on the legacy AML and the new ASL+ AML
1666 The ASLTS suite then executes normally using the AML binaries.
1667
1668 ----------------------------------------
1669 24 February 2017. Summary of changes for version 20170224:
1670
1671
1672 1) ACPICA kernel-resident subsystem:
1673
1674 Interpreter: Fixed two issues with the control method return value auto-
1675 repair feature, where an attempt to double-delete an internal object
1676 could result in an ACPICA warning (for _CID repair and others). No fault
1677 occurs, however, because the attempted deletion (actually a release to an
1678 internal cache) is detected and ignored via object poisoning.
1679
1680 Debugger: Fixed an AML interpreter mutex issue during the single stepping
1681 of control methods. If certain debugger commands are executed during
1682 stepping, a mutex acquire/release error could occur. Lv Zheng.
1683
1684 Fixed some issues generating ACPICA with the Intel C compiler by
1685 restoring the original behavior and compiler-specific include file in
1686 acenv.h. Lv Zheng.
1687
1688 Example Code and Data Size: These are the sizes for the OS-independent
1689 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1690 debug version of the code includes the debug output trace mechanism and
1691 has a much larger code and data size.
1692
1693 Current Release:
1694 Non-Debug Version: 141.7K Code, 58.5K Data, 200.2K Total
1695 Debug Version: 207.5K Code, 82.7K Data, 290.2K Total
1696 Previous Release:
1697 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
1698 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
1699
1700
1701 2) iASL Compiler/Disassembler and Tools:
1702
1703 iASL/Disassembler: A preliminary version of a new ASL-to-ASL+ conversion
1704 tool has been designed, implemented, and included in this release. The
1705 key feature of this utility is that the original comments within the
1706 input ASL file are preserved during the conversion process, and included
1707 within the converted ASL+ file -- thus creating a transparent conversion
1708 of existing ASL files to ASL+ (ASL 2.0). Erik Schmauss.
1709
1710 Usage: iasl -ca <ASL-filename> // Output is a .dsl file with
1711 converted code
1712
1713 iASL/Disassembler: Improved the detection and correct disassembly of
1714 Switch/Case operators. This feature detects sequences of if/elseif/else
1715 operators that originated from ASL Switch/Case/Default operators and
1716 emits the original operators. David Box.
1717
1718 iASL: Improved the IORT ACPI table support in the following areas. Lv
1719 Zheng:
1720 Clear MappingOffset if the MappingCount is zero.
1721 Fix the disassembly of the SMMU GSU interrupt offset.
1722 Update the template file for the IORT table.
1723
1724 Disassembler: Enhanced the detection and disassembly of resource
1725 template/descriptor within a Buffer object. An EndTag descriptor is now
1726 required to have a zero second byte, since all known ASL compilers emit
1727 this. This helps eliminate incorrect decisions when a buffer is
1728 disassembled (false positives on resource templates).
1729
1730 ----------------------------------------
1731 19 January 2017. Summary of changes for version 20170119:
1732
1733
1734 1) General ACPICA software:
1735
1736 Entire source code base: Added the 2017 copyright to all source code
1737 legal/licensing module headers and utility/tool signons. This includes
1738 the standard Linux dual-license header. This affects virtually every file
1739 in the ACPICA core subsystem, iASL compiler, all ACPICA utilities, and
1740 the ACPICA test suite.
1741
1742
1743 2) iASL Compiler/Disassembler and Tools:
1744
1745 iASL: Removed/fixed an inadvertent remark when a method argument
1746 containing a reference is used as a target operand within the method (and
1747 never used as a simple argument), as in the example below. Jeffrey Hugo.
1748
1749 dsdt.asl 1507: Store(0x1, Arg0)
1750 Remark 2146 - ^ Method Argument is never used (Arg0)
1751
1752 All tools: Removed the bit width of the compiler that generated the tool
1753 from the common signon for all user space tools. This proved to be
1754 confusing and unnecessary. This includes similar removal of HARDWARE_NAME
1755 from the generic makefiles (Thomas Petazzoni). Example below.
1756
1757 Old:
1758 ASL+ Optimizing Compiler version 20170119-32
1759 ASL+ Optimizing Compiler version 20170119-64
1760
1761 New:
1762 ASL+ Optimizing Compiler version 20170119
1763
1764 ----------------------------------------
1765 22 December 2016. Summary of changes for version 20161222:
1766
1767
1768 1) ACPICA kernel-resident subsystem:
1769
1770 AML Debugger: Implemented a new mechanism to simplify and enhance
1771 debugger integration into all environments, including kernel debuggers
1772 and user-space utilities, as well as remote debug services. This
1773 mechanism essentially consists of new OSL interfaces to support debugger
1774 initialization/termination, as well as wait/notify interfaces to perform
1775 the debugger handshake with the host. Lv Zheng.
1776
1777 New OSL interfaces:
1778 AcpiOsInitializeDebugger (void)
1779 AcpiOsTerminateDebugger (void)
1780 AcpiOsWaitCommandReady (void)
1781 AcpiOsNotifyCommandComplete (void)
1782
1783 New OS services layer:
1784 osgendbg.c -- Example implementation, and used for AcpiExec
1785
1786 Update for Generic Address Space (GAS) support: Although the AccessWidth
1787 and/or BitOffset fields of the GAS are not often used, this change now
1788 fully supports these fields. This affects the internal support for FADT
1789 registers, registers in other ACPI data tables, and the AcpiRead and
1790 AcpiWrite public interfaces. Lv Zheng.
1791
1792 Sleep support: In order to simplify integration of ACPI sleep for the
1793 various host operating systems, a new OSL interface has been introduced.
1794 AcpiOsEnterSleep allows the host to perform any required operations
1795 before the final write to the sleep control register(s) is performed by
1796 ACPICA. Lv Zheng.
1797
1798 New OSL interface:
1799 AcpiOsEnterSleep(SleepState, RegisterAValue, RegisterBValue)
1800
1801 Called from these internal interfaces:
1802 AcpiHwLegacySleep
1803 AcpiHwExtendedSleep
1804
1805 EFI support: Added a very small EFI/ACPICA example application. Provides
1806 a simple demo for EFI integration, as well as assisting with resolution
1807 of issues related to customer ACPICA/EFI integration. Lv Zheng. See:
1808
1809 source/tools/efihello/efihello.c
1810
1811 Local C library: Implemented several new functions to enhance ACPICA
1812 portability, for environments where these clib functions are not
1813 available (such as EFI). Lv Zheng:
1814 putchar
1815 getchar
1816 strpbrk
1817 strtok
1818 memmove
1819
1820 Fixed a regression where occasionally a valid resource descriptor was
1821 incorrectly detected as invalid at runtime, and a
1822 AE_AML_NO_RESOURCE_END_TAG was returned.
1823
1824 Fixed a problem with the recently implemented support that enables
1825 control method invocations as Target operands to many ASL operators.
1826 Warnings of this form: "Needed type [Reference], found [Processor]" were
1827 seen at runtime for some method invocations.
1828
1829 Example Code and Data Size: These are the sizes for the OS-independent
1830 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1831 debug version of the code includes the debug output trace mechanism and
1832 has a much larger code and data size.
1833
1834 Current Release:
1835 Non-Debug Version: 141.5K Code, 58.5K Data, 200.0K Total
1836 Debug Version: 201.7K Code, 82.7K Data, 284.4K Total
1837 Previous Release:
1838 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1839 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
1840
1841
1842 2) iASL Compiler/Disassembler and Tools:
1843
1844 Disassembler: Enhanced output by adding the capability to detect and
1845 disassemble ASL Switch/Case statements back to the original ASL source
1846 code instead of if/else blocks. David Box.
1847
1848 AcpiHelp: Split a large file into separate files based upon
1849 functionality/purpose. New files are:
1850 ahaml.c
1851 ahasl.c
1852
1853 ----------------------------------------
1854 17 November 2016. Summary of changes for version 20161117:
1855
1856
1857 1) ACPICA kernel-resident subsystem:
1858
1859 Table Manager: Fixed a regression introduced in 20160729, "FADT support
1860 cleanup". This was an attempt to remove all references in the source to
1861 the FADT version 2, which never was a legal version number. It was
1862 skipped because it was an early version of 64-bit support that was
1863 eventually abandoned for the current 64-bit support.
1864
1865 Interpreter: Fixed a problem where runtime implicit conversion was
1866 incorrectly disabled for the ASL operators below. This brings the
1867 behavior into compliance with the ACPI specification:
1868 FromBCD
1869 ToBCD
1870 ToDecimalString
1871 ToHexString
1872 ToInteger
1873 ToBuffer
1874
1875 Table Manager: Added a new public interface, AcpiPutTable, used to
1876 release and free an ACPI table returned by AcpiGetTable and related
1877 interfaces. Lv Zheng.
1878
1879 Example Code and Data Size: These are the sizes for the OS-independent
1880 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1881 debug version of the code includes the debug output trace mechanism and
1882 has a much larger code and data size.
1883
1884 Current Release:
1885 Non-Debug Version: 140.5K Code, 58.5K Data, 198.9K Total
1886 Debug Version: 201.3K Code, 82.7K Data, 284.0K Total
1887 Previous Release:
1888 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1889 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
1890
1891
1892 2) iASL Compiler/Disassembler and Tools:
1893
1894 Disassembler: Fixed a regression for disassembly of Resource Template.
1895 Detection of templates in the AML stream missed some types of templates.
1896
1897 iASL: Fixed a problem where an Access Size error was returned for the PCC
1898 address space when the AccessSize of the GAS register is greater than a
1899 DWORD. Hoan Tran.
1900
1901 iASL: Implemented several grammar changes for the operators below. These
1902 changes are slated for the next version of the ACPI specification:
1903 RefOf - Disallow method invocation as an operand
1904 CondRefOf - Disallow method invocation as an operand
1905 DerefOf - Disallow operands that use the result from operators
1906 that
1907 do not return a reference (Changed TermArg to
1908 SuperName).
1909
1910 iASL: Control method invocations are now allowed for Target operands, as
1911 per the ACPI specification. Removed error for using a control method
1912 invocation as a Target operand.
1913
1914 Disassembler: Improved detection of Resource Templates, Unicode, and
1915 Strings within Buffer objects. These subtypes do not contain a specific
1916 opcode to indicate the originating ASL code, and they must be detected by
1917 other means within the disassembler.
1918
1919 iASL: Implemented an optimization improvement for 32-bit ACPI tables
1920 (DSDT/SSDT). For the 32-bit case only, compute the optimum integer opcode
1921 only after 64-bit to 32-bit truncation. A truncation warning message is
1922 still emitted, however.
1923
1924 AcpiXtract: Implemented handling for both types of line terminators (LF
1925 or CR/LF) so that it can accept AcpiDump output files from any system.
1926 Peter Wu.
1927
1928 AcpiBin: Added two new options for comparing AML files:
1929 -a: compare and display ALL mismatches
1930 -o: start compare at this offset into the second file
1931
1932 ----------------------------------------
1933 30 September 2016. Summary of changes for version 20160930:
1934
1935
1936 1) ACPICA kernel-resident subsystem:
1937
1938 Fixed a regression in the internal AcpiTbFindTable function where a non
1939 AE_OK exception could inadvertently be returned even if the function did
1940 not fail. This problem affects the following operators:
1941 DataTableRegion
1942 LoadTable
1943
1944 Fixed a regression in the LoadTable operator where a load to any
1945 namespace location other than the root no longer worked properly.
1946
1947 Increased the maximum loop count value that will result in the
1948 AE_AML_INFINITE_LOOP exception. This is a mechanism that is intended to
1949 prevent infinite loops within the AML interpreter and thus the host OS
1950 kernel. The value is increased from 0xFFFF to 0xFFFFF loops (65,535 to
1951 1,048,575).
1952
1953 Moved the AcpiGbl_MaxLoopIterations configuration variable to the public
1954 acpixf.h file. This allows hosts to easily configure the maximum loop
1955 count at runtime.
1956
1957 Removed an illegal character in the strtoul64.c file. This character
1958 caused errors with some C compilers.
1959
1960 Example Code and Data Size: These are the sizes for the OS-independent
1961 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
1962 debug version of the code includes the debug output trace mechanism and
1963 has a much larger code and data size.
1964
1965 Current Release:
1966 Non-Debug Version: 140.4K Code, 58.1K Data, 198.5K Total
1967 Debug Version: 200.7K Code, 82.1K Data, 282.8K Total
1968 Previous Release:
1969 Non-Debug Version: 140.0K Code, 58.1K Data, 198.1K Total
1970 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
1971
1972
1973 2) iASL Compiler/Disassembler and Tools:
1974
1975 Disassembler: Fixed a problem with the conversion of Else{If{ blocks into
1976 the simpler ASL ElseIf keyword. During the conversion, a trailing If
1977 block could be lost and missing from the disassembled output.
1978
1979 iASL: Fixed a missing parser rule for the ObjectType operator. For ASL+,
1980 the missing rule caused a parse error when using the Index operator as an
1981 operand to ObjectType. This construct now compiles properly. Example:
1982 ObjectType(PKG1[4]).
1983
1984 iASL: Correctly handle unresolved symbols in the hardware map file (-lm
1985 option). Previously, unresolved symbols could cause a protection fault.
1986 Such symbols are now marked as unresolved in the map file.
1987
1988 iASL: Implemented support to allow control method invocations as an
1989 operand to the ASL DeRefOf operator. Example:
1990 DeRefOf(MTH1(Local0))
1991
1992 Disassembler: Improved support for the ToPLD ASL macro. Detection of a
1993 possible _PLD buffer now includes examination of both the normal buffer
1994 length (16 or 20) as well as the surrounding AML package length.
1995
1996 Disassembler: Fixed a problem with the decoding of complex expressions
1997 within the Divide operator for ASL+. For the case where both the quotient
1998 and remainder targets are specified, the entire statement cannot be
1999 disassembled. Previously, the output incorrectly contained a mix of ASL-
2000 and ASL+ operators. This mixed statement causes a syntax error when
2001 compiled. Example:
2002 Divide (Add (INT1, 6), 128, RSLT, QUOT) // was incorrectly
2003 disassembled to:
2004 Divide (INT1 + 6, 128, RSLT, QUOT)
2005
2006 iASL/Tools: Added support to process AML and non-AML ACPI tables
2007 consistently. For the disassembler and AcpiExec, allow all types of ACPI
2008 tables (AML and data tables). For the iASL -e option, allow only AML
2009 tables (DSDT/SSDT).
2010
2011 ----------------------------------------
2012 31 August 2016. Summary of changes for version 20160831:
2013
2014
2015 1) ACPICA kernel-resident subsystem:
2016
2017 Improve support for the so-called "module-level code", which is defined
2018 to be math, logical and control AML opcodes that appear outside of any
2019 control method. This change improves the support by adding more opcodes
2020 that can be executed in the manner. Some other issues have been solved,
2021 and the ASL grammar changes to support such code under all scope
2022 operators (Device, etc.) are complete. Lv Zheng.
2023
2024 UEFI support: these OSL functions have been implemented. This is an
2025 additional step toward supporting the AcpiExec utility natively (with
2026 full hardware access) under UEFI. Marcelo Ferreira.
2027 AcpiOsReadPciConfiguration
2028 AcpiOsWritePciConfiguration
2029
2030 Fixed a possible mutex error during control method auto-serialization. Lv
2031 Zheng.
2032
2033 Updated support for the Generic Address Structure by fully implementing
2034 all GAS fields when a 32-bit address is expanded to a 64-bit GAS. Lv
2035 Zheng.
2036
2037 Updated the return value for the internal _OSI method. Instead of
2038 0xFFFFFFFF, the "Ones" value is now returned, which is 0xFFFFFFFFFFFFFFFF
2039 for 64-bit ACPI tables. This fixes an incompatibility with other ACPI
2040 implementations, and will be reflected and clarified in the next version
2041 of the ACPI specification.
2042
2043 Implemented two new table events that can be passed to an ACPICA table
2044 handler. These events are used to indicate a table installation or
2045 uninstallation. These events are used in addition to existed table load
2046 and unload events. Lv Zheng.
2047
2048 Implemented a cleanup for all internal string-to-integer conversions.
2049 Consolidate multiple versions of this functionality and limit possible
2050 bases to either 10 or 16 to simplify the code. Adds a new file,
2051 utstrtoul64.
2052
2053 Cleanup the inclusion order of the various compiler-specific headers.
2054 This simplifies build configuration management. The compiler-specific
2055 headers are now split out from the host-specific headers. Lv Zheng.
2056
2057 Example Code and Data Size: These are the sizes for the OS-independent
2058 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2059 debug version of the code includes the debug output trace mechanism and
2060 has a much larger code and data size.
2061
2062 Current Release:
2063 Non-Debug Version: 140.1K Code, 58.1K Data, 198.1K Total
2064 Debug Version: 200.3K Code, 82.1K Data, 282.4K Total
2065
2066
2067 2) iASL Compiler/Disassembler and Tools:
2068
2069 iASL/AcpiExec: Added a command line option to display the build date/time
2070 of the tool (-vd). This can be useful to verify that the correct version
2071 of the tools are being used.
2072
2073 AML Debugger: Implemented a new subcommand ("execute predef") to execute
2074 all predefined control methods and names within the current namespace.
2075 This can be useful for debugging problems with ACPI tables and the ACPI
2076 namespace.
2077
2078 ----------------------------------------
2079 29 July 2016. Summary of changes for version 20160729:
2080
2081
2082 1) ACPICA kernel-resident subsystem:
2083
2084 Implemented basic UEFI support for the various ACPICA tools. This
2085 includes:
2086 1) An OSL to implement the various AcpiOs* interfaces on UEFI.
2087 2) Support to obtain the ACPI tables on UEFI.
2088 3) Local implementation of required C library functions not available on
2089 UEFI.
2090 4) A front-end (main) function for the tools for UEFI-related
2091 initialization.
2092
2093 The initial deployment of this support is the AcpiDump utility executing
2094 as an UEFI application via EDK2 (EDKII, "UEFI Firmware Development Kit").
2095 Current environments supported are Linux/Unix. MSVC generation is not
2096 supported at this time. See the generate/efi/README file for build
2097 instructions. Lv Zheng.
2098
2099 Future plans include porting the AcpiExec utility to execute natively on
2100 the platform with I/O and memory access. This will allow viewing/dump of
2101 the platform namespace and native execution of ACPI control methods that
2102 access the actual hardware. To fully implement this support, the OSL
2103 functions below must be implemented with UEFI interfaces. Any community
2104 help in the implementation of these functions would be appreciated:
2105 AcpiOsReadPort
2106 AcpiOsWritePort
2107 AcpiOsReadMemory
2108 AcpiOsWriteMemory
2109 AcpiOsReadPciConfiguration
2110 AcpiOsWritePciConfiguration
2111
2112 Restructured and standardized the C library configuration for ACPICA,
2113 resulting in the various configuration options below. This includes a
2114 global restructuring of the compiler-dependent and platform-dependent
2115 include files. These changes may affect the existing platform-dependent
2116 configuration files on some hosts. Lv Zheng.
2117
2118 The current C library configuration options appear below. For any issues,
2119 it may be helpful to examine the existing compiler-dependent and
2120 platform-dependent files as examples. Lv Zheng.
2121
2122 1) Linux kernel:
2123 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2124 library.
2125 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2126 2) Unix/Windows/BSD applications:
2127 ACPI_USE_STANDARD_HEADERS=y in order to use system-provided C
2128 library.
2129 ACPI_USE_SYSTEM_CLIBRARY=y in order not to use ACPICA mini C library.
2130 3) UEFI applications:
2131 ACPI_USE_STANDARD_HEADERS=n in order not to use system-provided C
2132 library.
2133 ACPI_USE_SYSTEM_CLIBRARY=n in order to use ACPICA mini C library.
2134 4) UEFI applications (EDK2/StdLib):
2135 ACPI_USE_STANDARD_HEADERS=y in order to use EDK2 StdLib C library.
2136 ACPI_USE_SYSTEM_CLIBRARY=y in order to use EDK2 StdLib C library.
2137
2138
2139 AML interpreter: "module-level code" support. Allows for execution of so-
2140 called "executable" AML code (math/logical operations, etc.) outside of
2141 control methods not just at the module level (top level) but also within
2142 any scope declared outside of a control method - Scope{}, Device{},
2143 Processor{}, PowerResource{}, and ThermalZone{}. Lv Zheng.
2144
2145 Simplified the configuration of the "maximum AML loops" global option by
2146 adding a global public variable, "AcpiGbl_MaxLoopIterations" which can be
2147 modified at runtime.
2148
2149
2150 Example Code and Data Size: These are the sizes for the OS-independent
2151 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2152 debug version of the code includes the debug output trace mechanism and
2153 has a much larger code and data size.
2154
2155 Current Release:
2156 Non-Debug Version: 139.1K Code, 22.9K Data, 162.0K Total
2157 Debug Version: 199.0K Code, 81.8K Data, 280.8K Total
2158
2159
2160 2) iASL Compiler/Disassembler and Tools:
2161
2162 iASL: Add full support for the RASF ACPI table (RAS Features Table).
2163 Includes disassembler, data table compiler, and header support.
2164
2165 iASL Expand "module-level code" support. Allows for
2166 compilation/disassembly of so-called "executable" AML code (math/logical
2167 operations, etc.) outside of control methods not just at the module level
2168 (top level) but also within any scope declared outside of a control
2169 method - Scope{}, Device{}, Processor{}, PowerResource{}, and
2170 ThermalZone{}.
2171
2172 AcpiDump: Added support for dumping all SSDTs on newer versions of
2173 Windows. These tables are now easily available -- SSDTs are not available
2174 through the registry on older versions.
2175
2176 ----------------------------------------
2177 27 May 2016. Summary of changes for version 20160527:
2178
2179
2180 1) ACPICA kernel-resident subsystem:
2181
2182 Temporarily reverted the new arbitrary bit length/alignment support in
2183 AcpiHwRead/AcpiHwWrite for the Generic Address Structure. There have been
2184 a number of regressions with the new code that need to be fully resolved
2185 and tested before this support can be finally integrated into ACPICA.
2186 Apologies for any inconveniences these issues may have caused.
2187
2188 The ACPI message macros are not configurable (ACPI_MSG_ERROR,
2189 ACPI_MSG_EXCEPTION, ACPI_MSG_WARNING, ACPI_MSG_INFO, ACPI_MSG_BIOS_ERROR,
2190 and ACPI_MSG_BIOS_WARNING). Lv Zheng.
2191
2192 Fixed a couple of GCC warnings associated with the use of the -Wcast-qual
2193 option. Adds a new return macro, return_STR. Junk-uk Kim.
2194
2195 Example Code and Data Size: These are the sizes for the OS-independent
2196 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2197 debug version of the code includes the debug output trace mechanism and
2198 has a much larger code and data size.
2199
2200 Current Release:
2201 Non-Debug Version: 136.8K Code, 51.6K Data, 188.4K Total
2202 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
2203 Previous Release:
2204 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2205 Debug Version: 200.9K Code, 82.2K Data, 283.1K Total
2206
2207 ----------------------------------------
2208 22 April 2016. Summary of changes for version 20160422:
2209
2210 1) ACPICA kernel-resident subsystem:
2211
2212 Fixed a regression in the GAS (generic address structure) arbitrary bit
2213 support in AcpiHwRead/AcpiHwWrite. Problem could cause incorrect behavior
2214 and incorrect return values. Lv Zheng. ACPICA BZ 1270.
2215
2216 ACPI 6.0: Added support for new/renamed resource macros. One new argument
2217 was added to each of these macros, and the original name has been
2218 deprecated. The AML disassembler will always disassemble to the new
2219 names. Support for the new macros was added to iASL, disassembler,
2220 resource manager, and the acpihelp utility. ACPICA BZ 1274.
2221
2222 I2cSerialBus -> I2cSerialBusV2
2223 SpiSerialBus -> SpiSerialBusV2
2224 UartSerialBus -> UartSerialBusV2
2225
2226 ACPI 6.0: Added support for a new integer field that was appended to the
2227 package object returned by the _BIX method. This adds iASL compile-time
2228 and AML runtime error checking. ACPICA BZ 1273.
2229
2230 ACPI 6.1: Added support for a new PCCT subtable, "HW-Reduced Comm
2231 Subspace Type2" (Headers, Disassembler, and data table compiler).
2232
2233 Example Code and Data Size: These are the sizes for the OS-independent
2234 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2235 debug version of the code includes the debug output trace mechanism and
2236 has a much larger code and data size.
2237
2238 Current Release:
2239 Non-Debug Version: 137.4K Code, 52.6K Data, 190.0K Total
2240 Debug Version: 201.5K Code, 82.2K Data, 283.7K Total
2241 Previous Release:
2242 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2243 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
2244
2245
2246 2) iASL Compiler/Disassembler and Tools:
2247
2248 iASL: Implemented an ASL grammar extension to allow/enable executable
2249 "module-level code" to be created and executed under the various
2250 operators that create new scopes. This type of AML code is already
2251 supported in all known AML interpreters, and the grammar change will
2252 appear in the next version of the ACPI specification. Simplifies the
2253 conditional runtime creation of named objects under these object types:
2254
2255 Device
2256 PowerResource
2257 Processor
2258 Scope
2259 ThermalZone
2260
2261 iASL: Implemented a new ASL extension, a "For" loop macro to add greater
2262 ease-of-use to the ASL language. The syntax is similar to the
2263 corresponding C operator, and is implemented with the existing AML While
2264 opcode -- thus requiring no changes to existing AML interpreters.
2265
2266 For (Initialize, Predicate, Update) {TermList}
2267
2268 Grammar:
2269 ForTerm :=
2270 For (
2271 Initializer // Nothing | TermArg => ComputationalData
2272 Predicate // Nothing | TermArg => ComputationalData
2273 Update // Nothing | TermArg => ComputationalData
2274 ) {TermList}
2275
2276
2277 iASL: The _HID/_ADR detection and validation has been enhanced to search
2278 under conditionals in order to allow these objects to be conditionally
2279 created at runtime.
2280
2281 iASL: Fixed several issues with the constant folding feature. The
2282 improvement allows better detection and resolution of statements that can
2283 be folded at compile time. ACPICA BZ 1266.
2284
2285 iASL/Disassembler: Fixed a couple issues with the Else{If{}...}
2286 conversion to the ASL ElseIf operator where incorrect ASL code could be
2287 generated.
2288
2289 iASL/Disassembler: Fixed a problem with the ASL+ code disassembly where
2290 sometimes an extra (and extraneous) set of parentheses were emitted for
2291 some combinations of operators. Although this did not cause any problems
2292 with recompilation of the disassembled code, it made the code more
2293 difficult to read. David Box. ACPICA BZ 1231.
2294
2295 iASL: Changed to ignore the unreferenced detection for predefined names
2296 of resource descriptor elements, when the resource descriptor is
2297 created/defined within a control method.
2298
2299 iASL: Disassembler: Fix a possible fault with externally declared Buffer
2300 objects.
2301
2302 ----------------------------------------
2303 18 March 2016. Summary of changes for version 20160318:
2304
2305 1) ACPICA kernel-resident subsystem:
2306
2307 Added support for arbitrary bit lengths and bit offsets for registers
2308 defined by the Generic Address Structure. Previously, only aligned bit
2309 lengths of 8/16/32/64 were supported. This was sufficient for many years,
2310 but recently some machines have been seen that require arbitrary bit-
2311 level support. ACPICA BZ 1240. Lv Zheng.
2312
2313 Fixed an issue where the \_SB._INI method sometimes must be evaluated
2314 before any _REG methods are evaluated. Lv Zheng.
2315
2316 Implemented several changes related to ACPI table support
2317 (Headers/Disassembler/TableCompiler):
2318 NFIT: For ACPI 6.1, updated to add some additional new fields and
2319 constants.
2320 FADT: Updated a warning message and set compliance to ACPI 6.1 (Version
2321 6).
2322 DMAR: Added new constants per the 10/2014 DMAR spec.
2323 IORT: Added new subtable per the 10/2015 IORT spec.
2324 HEST: For ACPI 6.1, added new constants and new subtable.
2325 DBG2: Added new constants per the 12/2015 DBG2 spec.
2326 FPDT: Fixed several incorrect fields, add the FPDT boot record structure.
2327 ACPICA BZ 1249.
2328 ERST/EINJ: Updated disassembler with new "Execute Timings" actions.
2329
2330 Updated header support for the DMAR table to match the current version of
2331 the related spec.
2332
2333 Added extensions to the ASL Concatenate operator to allow any ACPI object
2334 to be passed as an operand. Any object other than Integer/String/Buffer
2335 simply returns a string containing the object type. This extends the
2336 usefulness of the Printf macros. Previously, Concatenate would abort the
2337 control method if a non-data object was encountered.
2338
2339 ACPICA source code: Deployed the C "const" keyword across the source code
2340 where appropriate. ACPICA BZ 732. Joerg Sonnenberger (NetBSD).
2341
2342 Example Code and Data Size: These are the sizes for the OS-independent
2343 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2344 debug version of the code includes the debug output trace mechanism and
2345 has a much larger code and data size.
2346
2347 Current Release:
2348 Non-Debug Version: 137.1K Code, 51.5K Data, 188.6K Total
2349 Debug Version: 201.0K Code, 82.0K Data, 283.0K Total
2350 Previous Release:
2351 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2352 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
2353
2354
2355 2) iASL Compiler/Disassembler and Tools:
2356
2357 iASL/Disassembler: Improved the heuristic used to determine the number of
2358 arguments for an externally defined control method (a method in another
2359 table). Although this is an improvement, there is no deterministic way to
2360 "guess" the number of method arguments. Only the ACPI 6.0 External opcode
2361 will completely solve this problem as it is deployed (automatically) in
2362 newer BIOS code.
2363
2364 iASL/Disassembler: Fixed an ordering issue for emitted External() ASL
2365 statements that could cause errors when the disassembled file is
2366 compiled. ACPICA BZ 1243. David Box.
2367
2368 iASL: Fixed a regression caused by the merger of the two versions of the
2369 local strtoul64. Because of a dependency on a global variable, strtoul64
2370 could return an error for integers greater than a 32-bit value. ACPICA BZ
2371 1260.
2372
2373 iASL: Fixed a regression where a fault could occur for an ASL Return
2374 statement if it invokes a control method that is not resolved. ACPICA BZ
2375 1264.
2376
2377 AcpiXtract: Improved input file validation: detection of binary files and
2378 non-acpidump text files.
2379
2380 ----------------------------------------
2381 12 February 2016. Summary of changes for version 20160212:
2382
2383 1) ACPICA kernel-resident subsystem:
2384
2385 Implemented full support for the ACPI 6.1 specification (released in
2386 January). This version of the specification is available at:
2387 http://www.uefi.org/specifications
2388
2389 Only a relatively small number of changes were required in ACPICA to
2390 support ACPI 6.1, in these areas:
2391 - New predefined names
2392 - New _HID values
2393 - A new subtable for HEST
2394 - A few other header changes for new values
2395
2396 Ensure \_SB_._INI is executed before any _REG methods are executed. There
2397 appears to be existing BIOS code that relies on this behavior. Lv Zheng.
2398
2399 Reverted a change made in version 20151218 which enabled method
2400 invocations to be targets of various ASL operators (SuperName and Target
2401 grammar elements). While the new behavior is supported by the ACPI
2402 specification, other AML interpreters do not support this behavior and
2403 never will. The ACPI specification will be updated for ACPI 6.2 to remove
2404 this support. Therefore, the change was reverted to the original ACPICA
2405 behavior.
2406
2407 ACPICA now supports the GCC 6 compiler.
2408
2409 Current Release: (Note: build changes increased sizes)
2410 Non-Debug Version: 136.2K Code, 51.5K Data, 187.7K Total
2411 Debug Version: 200.4K Code, 82.0K Data, 282.4K Total
2412 Previous Release:
2413 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2414 Debug Version: 200.4K Code, 81.9K Data, 282.3K Total
2415
2416
2417 2) iASL Compiler/Disassembler and Tools:
2418
2419 Completed full support for the ACPI 6.0 External() AML opcode. The
2420 compiler emits an external AML opcode for each ASL External statement.
2421 This opcode is used by the disassembler to assist with the disassembly of
2422 external control methods by specifying the required number of arguments
2423 for the method. AML interpreters do not use this opcode. To ensure that
2424 interpreters do not even see the opcode, a block of one or more external
2425 opcodes is surrounded by an "If(0)" construct. As this feature becomes
2426 commonly deployed in BIOS code, the ability of disassemblers to correctly
2427 disassemble AML code will be greatly improved. David Box.
2428
2429 iASL: Implemented support for an optional cross-reference output file.
2430 The -lx option will create a the cross-reference file with the suffix
2431 "xrf". Three different types of cross-reference are created in this file:
2432 - List of object references made from within each control method
2433 - Invocation (caller) list for each user-defined control method
2434 - List of references to each non-method object in the namespace
2435
2436 iASL: Method invocations as ASL Target operands are now disallowed and
2437 flagged as errors in preparation for ACPI 6.2 (see the description of the
2438 problem above).
2439
2440 ----------------------------------------
2441 8 January 2016. Summary of changes for version 20160108:
2442
2443 1) ACPICA kernel-resident subsystem:
2444
2445 Updated all ACPICA copyrights and signons to 2016: Added the 2016
2446 copyright to all source code module headers and utility/tool signons.
2447 This includes the standard Linux dual-license header. This affects
2448 virtually every file in the ACPICA core subsystem, iASL compiler, all
2449 ACPICA utilities, and the ACPICA test suite.
2450
2451 Fixed a regression introduced in version 20151218 concerning the
2452 execution of so-called module-level ASL/AML code. Namespace objects
2453 created under a module-level If() construct were not properly/fully
2454 entered into the namespace and could cause an interpreter fault when
2455 accessed.
2456
2457 Example Code and Data Size: These are the sizes for the OS-independent
2458 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2459 debug version of the code includes the debug output trace mechanism and
2460 has a much larger code and data size.
2461
2462 Current Release:
2463 Non-Debug Version: 102.7K Code, 28.4K Data, 131.1K Total
2464 Debug Version: 200.4K Code, 81.9K Data, 282.4K Total
2465 Previous Release:
2466 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2467 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
2468
2469
2470 2) iASL Compiler/Disassembler and Tools:
2471
2472 Fixed a problem with the compilation of the GpioIo and GpioInt resource
2473 descriptors. The _PIN field name was incorrectly defined to be an array
2474 of 32-bit values, but the _PIN values are in fact 16 bits each. This
2475 would cause incorrect bit width warnings when using Word (16-bit) fields
2476 to access the descriptors.
2477
2478
2479 ----------------------------------------
2480 18 December 2015. Summary of changes for version 20151218:
2481
2482 1) ACPICA kernel-resident subsystem:
2483
2484 Implemented per-AML-table execution of "module-level code" as individual
2485 ACPI tables are loaded into the namespace during ACPICA initialization.
2486 In other words, any module-level code within an AML table is executed
2487 immediately after the table is loaded, instead of batched and executed
2488 after all of the tables have been loaded. This provides compatibility
2489 with other ACPI implementations. ACPICA BZ 1219. Bob Moore, Lv Zheng,
2490 David Box.
2491
2492 To fully support the feature above, the default operation region handlers
2493 for the SystemMemory, SystemIO, and PCI_Config address spaces are now
2494 installed before any ACPI tables are loaded. This enables module-level
2495 code to access these address spaces during the table load and module-
2496 level code execution phase. ACPICA BZ 1220. Bob Moore, Lv Zheng, David
2497 Box.
2498
2499 Implemented several changes to the internal _REG support in conjunction
2500 with the changes above. Also, changes to the AcpiExec/AcpiNames/Examples
2501 utilities for the changes above. Although these tools were changed, host
2502 operating systems that simply use the default handlers for SystemMemory,
2503 SystemIO, and PCI_Config spaces should not require any update. Lv Zheng.
2504
2505 For example, in the code below, DEV1 is conditionally added to the
2506 namespace by the DSDT via module-level code that accesses an operation
2507 region. The SSDT references DEV1 via the Scope operator. DEV1 must be
2508 created immediately after the DSDT is loaded in order for the SSDT to
2509 successfully reference DEV1. Previously, this code would cause an
2510 AE_NOT_EXIST exception during the load of the SSDT. Now, this code is
2511 fully supported by ACPICA.
2512
2513 DefinitionBlock ("", "DSDT", 2, "Intel", "DSDT1", 1)
2514 {
2515 OperationRegion (OPR1, SystemMemory, 0x400, 32)
2516 Field (OPR1, AnyAcc, NoLock, Preserve)
2517 {
2518 FLD1, 1
2519 }
2520 If (FLD1)
2521 {
2522 Device (\DEV1)
2523 {
2524 }
2525 }
2526 }
2527 DefinitionBlock ("", "SSDT", 2, "Intel", "SSDT1", 1)
2528 {
2529 External (\DEV1, DeviceObj)
2530 Scope (\DEV1)
2531 {
2532 }
2533 }
2534
2535 Fixed an AML interpreter problem where control method invocations were
2536 not handled correctly when the invocation was itself a SuperName argument
2537 to another ASL operator. In these cases, the method was not invoked.
2538 ACPICA BZ 1002. Affects the following ASL operators that have a SuperName
2539 argument:
2540 Store
2541 Acquire, Wait
2542 CondRefOf, RefOf
2543 Decrement, Increment
2544 Load, Unload
2545 Notify
2546 Signal, Release, Reset
2547 SizeOf
2548
2549 Implemented automatic String-to-ObjectReference conversion support for
2550 packages returned by predefined names (such as _DEP). A common BIOS error
2551 is to add double quotes around an ObjectReference namepath, which turns
2552 the reference into an unexpected string object. This support detects the
2553 problem and corrects it before the package is returned to the caller that
2554 invoked the method. Lv Zheng.
2555
2556 Implemented extensions to the Concatenate operator. Concatenate now
2557 accepts any type of object, it is not restricted to simply
2558 Integer/String/Buffer. For objects other than these 3 basic data types,
2559 the argument is treated as a string containing the name of the object
2560 type. This expands the utility of Concatenate and the Printf/Fprintf
2561 macros. ACPICA BZ 1222.
2562
2563 Cleaned up the output of the ASL Debug object. The timer() value is now
2564 optional and no longer emitted by default. Also, the basic data types of
2565 Integer/String/Buffer are simply emitted as their values, without a data
2566 type string -- since the data type is obvious from the output. ACPICA BZ
2567 1221.
2568
2569 Example Code and Data Size: These are the sizes for the OS-independent
2570 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2571 debug version of the code includes the debug output trace mechanism and
2572 has a much larger code and data size.
2573
2574 Current Release:
2575 Non-Debug Version: 102.6K Code, 28.4K Data, 131.0K Total
2576 Debug Version: 200.3K Code, 81.9K Data, 282.3K Total
2577 Previous Release:
2578 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2579 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
2580
2581
2582 2) iASL Compiler/Disassembler and Tools:
2583
2584 iASL: Fixed some issues with the ASL Include() operator. This operator
2585 was incorrectly defined in the iASL parser rules, causing a new scope to
2586 be opened for the code within the include file. This could lead to
2587 several issues, including allowing ASL code that is technically illegal
2588 and not supported by AML interpreters. Note, this does not affect the
2589 related #include preprocessor operator. ACPICA BZ 1212.
2590
2591 iASL/Disassembler: Implemented support for the ASL ElseIf operator. This
2592 operator is essentially an ASL macro since there is no AML opcode
2593 associated with it. The code emitted by the iASL compiler for ElseIf is
2594 an Else opcode followed immediately by an If opcode. The disassembler
2595 will now emit an ElseIf if it finds an Else immediately followed by an
2596 If. This simplifies the decoded ASL, especially for deeply nested
2597 If..Else and large Switch constructs. Thus, the disassembled code more
2598 closely follows the original source ASL. ACPICA BZ 1211. Example:
2599
2600 Old disassembly:
2601 Else
2602 {
2603 If (Arg0 == 0x02)
2604 {
2605 Local0 = 0x05
2606 }
2607 }
2608
2609 New disassembly:
2610 ElseIf (Arg0 == 0x02)
2611 {
2612 Local0 = 0x05
2613 }
2614
2615 AcpiExec: Added support for the new module level code behavior and the
2616 early region installation. This required a small change to the
2617 initialization, since AcpiExec must install its own operation region
2618 handlers.
2619
2620 AcpiExec: Added support to make the debug object timer optional. Default
2621 is timer disabled. This cleans up the debug object output -- the timer
2622 data is rarely used.
2623
2624 AcpiExec: Multiple ACPI tables are now loaded in the order that they
2625 appear on the command line. This can be important when there are
2626 interdependencies/references between the tables.
2627
2628 iASL/Templates. Add support to generate template files with multiple
2629 SSDTs within a single output file. Also added ommand line support to
2630 specify the number of SSDTs (in addition to a single DSDT). ACPICA BZ
2631 1223, 1225.
2632
2633
2634 ----------------------------------------
2635 24 November 2015. Summary of changes for version 20151124:
2636
2637 1) ACPICA kernel-resident subsystem:
2638
2639 Fixed a possible regression for a previous update to FADT handling. The
2640 FADT no longer has a fixed table ID, causing some issues with code that
2641 was hardwired to a specific ID. Lv Zheng.
2642
2643 Fixed a problem where the method auto-serialization could interfere with
2644 the current SyncLevel. This change makes the auto-serialization support
2645 transparent to the SyncLevel support and management.
2646
2647 Removed support for the _SUB predefined name in AcpiGetObjectInfo. This
2648 interface is intended for early access to the namespace during the
2649 initial namespace device discovery walk. The _SUB method has been seen to
2650 access operation regions in some cases, causing errors because the
2651 operation regions are not fully initialized.
2652
2653 AML Debugger: Fixed some issues with the terminate/quit/exit commands
2654 that can cause faults. Lv Zheng.
2655
2656 AML Debugger: Add thread ID support so that single-step mode only applies
2657 to the AML Debugger thread. This prevents runtime errors within some
2658 kernels. Lv Zheng.
2659
2660 Eliminated extraneous warnings from AcpiGetSleepTypeData. Since the _Sx
2661 methods that are invoked by this interface are optional, removed warnings
2662 emitted for the case where one or more of these methods do not exist.
2663 ACPICA BZ 1208, original change by Prarit Bhargava.
2664
2665 Made a major pass through the entire ACPICA source code base to
2666 standardize formatting that has diverged a bit over time. There are no
2667 functional changes, but this will of course cause quite a few code
2668 differences from the previous ACPICA release.
2669
2670 Example Code and Data Size: These are the sizes for the OS-independent
2671 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2672 debug version of the code includes the debug output trace mechanism and
2673 has a much larger code and data size.
2674
2675 Current Release:
2676 Non-Debug Version: 102.0K Code, 28.3K Data, 130.3K Total
2677 Debug Version: 199.6K Code, 81.8K Data, 281.4K Total
2678 Previous Release:
2679 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2680 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
2681
2682
2683 2) iASL Compiler/Disassembler and Tools:
2684
2685 iASL/acpiexec/acpixtract/disassembler: Added support to allow multiple
2686 definition blocks within a single ASL file and the resulting AML file.
2687 Support for this type of file was also added to the various tools that
2688 use binary AML files: acpiexec, acpixtract, and the AML disassembler. The
2689 example code below shows two definition blocks within the same file:
2690
2691 DefinitionBlock ("dsdt.aml", "DSDT", 2, "Intel", "Template",
2692 0x12345678)
2693 {
2694 }
2695 DefinitionBlock ("", "SSDT", 2, "Intel", "Template", 0xABCDEF01)
2696 {
2697 }
2698
2699 iASL: Enhanced typechecking for the Name() operator. All expressions for
2700 the value of the named object must be reduced/folded to a single constant
2701 at compile time, as per the ACPI specification (the AML definition of
2702 Name()).
2703
2704 iASL: Fixed some code indentation issues for the -ic and -ia options (C
2705 and assembly headers). Now all emitted code correctly begins in column 1.
2706
2707 iASL: Added an error message for an attempt to open a Scope() on an
2708 object defined in an SSDT. The DSDT is always loaded into the namespace
2709 first, so any attempt to open a Scope on an SSDT object will fail at
2710 runtime.
2711
2712
2713 ----------------------------------------
2714 30 September 2015. Summary of changes for version 20150930:
2715
2716 1) ACPICA kernel-resident subsystem:
2717
2718 Debugger: Implemented several changes and bug fixes to assist support for
2719 the in-kernel version of the AML debugger. Lv Zheng.
2720 - Fix the "predefined" command for in-kernel debugger.
2721 - Do not enter debug command loop for the help and version commands.
2722 - Disallow "execute" command during execution/single-step of a method.
2723
2724 Interpreter: Updated runtime typechecking for all operators that have
2725 target operands. The operand is resolved and validated that it is legal.
2726 For example, the target cannot be a non-data object such as a Device,
2727 Mutex, ThermalZone, etc., as per the ACPI specification.
2728
2729 Debugger: Fixed the double-mutex user I/O handshake to work when local
2730 deadlock detection is enabled.
2731
2732 Debugger: limited display of method locals and arguments (LocalX and
2733 ArgX) to only those that have actually been initialized. This prevents
2734 lines of extraneous output.
2735
2736 Updated the definition of the NFIT table to correct the bit polarity of
2737 one flag: ACPI_NFIT_MEM_ARMED --> ACPI_NFIT_MEM_NOT_ARMED
2738
2739 Example Code and Data Size: These are the sizes for the OS-independent
2740 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2741 debug version of the code includes the debug output trace mechanism and
2742 has a much larger code and data size.
2743
2744 Current Release:
2745 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
2746 Debug Version: 199.3K Code, 81.4K Data, 280.7K Total
2747 Previous Release:
2748 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2749 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
2750
2751
2752 2) iASL Compiler/Disassembler and Tools:
2753
2754 iASL: Improved the compile-time typechecking for operands of many of the
2755 ASL operators:
2756
2757 -- Added an option to disable compiler operand/operator typechecking (-
2758 ot).
2759
2760 -- For the following operators, the TermArg operands are now validated
2761 when possible to be Integer data objects: BankField, OperationRegion,
2762 DataTableRegion, Buffer, and Package.
2763
2764 -- Store (Source, Target): Both the source and target operands are
2765 resolved and checked that the operands are both legal. For example,
2766 neither operand can be a non-data object such as a Device, Mutex,
2767 ThermalZone, etc. Note, as per the ACPI specification, the CopyObject
2768 operator can be used to store an object to any type of target object.
2769
2770 -- Store (Source, Target): If the source is a Package object, the target
2771 must be a Package object, LocalX, ArgX, or Debug. Likewise, if the target
2772 is a Package, the source must also be a Package.
2773
2774 -- Store (Source, Target): A warning is issued if the source and target
2775 resolve to the identical named object.
2776
2777 -- Store (Source, <method invocation>): An error is generated for the
2778 target method invocation, as this construct is not supported by the AML
2779 interpreter.
2780
2781 -- For all ASL math and logic operators, the target operand must be a
2782 data object (Integer, String, Buffer, LocalX, ArgX, or Debug). This
2783 includes the function return value also.
2784
2785 -- External declarations are also included in the typechecking where
2786 possible. External objects defined using the UnknownObj keyword cannot be
2787 typechecked, however.
2788
2789 iASL and Disassembler: Added symbolic (ASL+) support for the ASL Index
2790 operator:
2791 - Legacy code: Index(PKG1, 3)
2792 - New ASL+ code: PKG1[3]
2793 This completes the ACPI 6.0 ASL+ support as it was the only operator not
2794 supported.
2795
2796 iASL: Fixed the file suffix for the preprocessor output file (.i). Two
2797 spaces were inadvertently appended to the filename, causing file access
2798 and deletion problems on some systems.
2799
2800 ASL Test Suite (ASLTS): Updated the master makefile to generate all
2801 possible compiler output files when building the test suite -- thus
2802 exercising these features of the compiler. These files are automatically
2803 deleted when the test suite exits.
2804
2805
2806 ----------------------------------------
2807 18 August 2015. Summary of changes for version 20150818:
2808
2809 1) ACPICA kernel-resident subsystem:
2810
2811 Fix a regression for AcpiGetTableByIndex interface causing it to fail. Lv
2812 Zheng. ACPICA BZ 1186.
2813
2814 Completed development to ensure that the ACPICA Disassembler and Debugger
2815 are fully standalone components of ACPICA. Removed cross-component
2816 dependences. Lv Zheng.
2817
2818 The max-number-of-AML-loops is now runtime configurable (previously was
2819 compile-time only). This is essentially a loop timeout to force-abort
2820 infinite AML loops. ACPCIA BZ 1192.
2821
2822 Debugger: Cleanup output to dump ACPI names and namepaths without any
2823 trailing underscores. Lv Zheng. ACPICA BZ 1135.
2824
2825 Removed unnecessary conditional compilations across the Debugger and
2826 Disassembler components where entire modules could be left uncompiled.
2827
2828 The aapits test is deprecated and has been removed from the ACPICA git
2829 tree. The test has never been completed and has not been maintained, thus
2830 becoming rather useless. ACPICA BZ 1015, 794.
2831
2832 A batch of small changes to close bugzilla and other reports:
2833 - Remove duplicate code for _PLD processing. ACPICA BZ 1176.
2834 - Correctly cleanup after a ACPI table load failure. ACPICA BZ 1185.
2835 - iASL: Support POSIX yacc again in makefile. Jung-uk Kim.
2836 - ACPI table support: general cleanup and simplification. Lv Zheng, Bob
2837 Moore.
2838 - ACPI table support: fix for a buffer read overrun in AcpiTbFindTable.
2839 ACPICA BZ 1184.
2840 - Enhance parameter validation for DataTableRegion and LoadTable ASL/AML
2841 operators.
2842 - Debugger: Split debugger initialization/termination interfaces. Lv
2843 Zheng.
2844 - AcpiExec: Emit OemTableId for SSDTs during the load phase for table
2845 identification.
2846 - AcpiExec: Add debug message during _REG method phase during table
2847 load/init.
2848 - AcpiNames: Fix a regression where some output was missing and no longer
2849 emitted.
2850 - Debugger: General cleanup and simplification. Lv Zheng.
2851 - Disassembler: Cleanup use of several global option variables. Lv Zheng.
2852
2853 Example Code and Data Size: These are the sizes for the OS-independent
2854 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
2855 debug version of the code includes the debug output trace mechanism and
2856 has a much larger code and data size.
2857
2858 Current Release:
2859 Non-Debug Version: 101.3K Code, 27.7K Data, 129.0K Total
2860 Debug Version: 198.6K Code, 80.9K Data, 279.5K Total
2861 Previous Release:
2862 Non-Debug Version: 100.9K Code, 24.5K Data, 125.4K Total
2863 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
2864
2865
2866 2) iASL Compiler/Disassembler and Tools:
2867
2868 AcpiExec: Fixed a problem where any more than 32 ACPI tables in the XSDT
2869 were not handled properly and caused load errors. Now, properly invoke
2870 and use the ACPICA auto-reallocate mechanism for ACPI table data
2871 structures. ACPICA BZ 1188
2872
2873 AcpiNames: Add command-line wildcard support for ACPI table files. ACPICA
2874 BZ 1190.
2875
2876 AcpiExec and AcpiNames: Add -l option to load ACPI tables only. For
2877 AcpiExec, this means that no control methods (like _REG/_INI/_STA) are
2878 executed during initialization. ACPICA BZ 1187, 1189.
2879
2880 iASL/Disassembler: Implemented a prototype "listing" mode that emits AML
2881 that corresponds to each disassembled ASL statement, to simplify
2882 debugging. ACPICA BZ 1191.
2883
2884 Debugger: Add option to the "objects" command to display a summary of the
2885 current namespace objects (Object type and count). This is displayed if
2886 the command is entered with no arguments.
2887
2888 AcpiNames: Add -x option to specify debug level, similar to AcpiExec.
2889
2890
2891 ----------------------------------------
2892 17 July 2015. Summary of changes for version 20150717:
2893
2894 1) ACPICA kernel-resident subsystem:
2895
2896 Improved the partitioning between the Debugger and Disassembler
2897 components. This allows the Debugger to be used standalone within kernel
2898 code without the Disassembler (which is used for single stepping also).
2899 This renames and moves one file, dmobject.c to dbobject.c. Lv Zheng.
2900
2901 Debugger: Implemented a new command to trace the execution of control
2902 methods (Trace). This is especially useful for the in-kernel version of
2903 the debugger when file I/O may not be available for method trace output.
2904 See the ACPICA reference for more information. Lv Zheng.
2905
2906 Moved all C library prototypes (used for the local versions of these
2907 functions when requested) to a new header, acclib.h
2908 Cleaned up the use of non-ANSI C library functions. These functions are
2909 implemented locally in ACPICA. Moved all such functions to a common
2910 source file, utnonansi.c
2911
2912 Debugger: Fixed a problem with the "!!" command (get last command
2913 executed) where the debugger could enter an infinite loop and eventually
2914 crash.
2915
2916 Removed the use of local macros that were used for some of the standard C
2917 library functions to automatically cast input parameters. This mostly
2918 affected the is* functions where the input parameter is defined to be an
2919 int. This required a few modifications to the main ACPICA source code to
2920 provide casting for these functions and eliminate possible compiler
2921 warnings for these parameters.
2922
2923 Across the source code, added additional status/error checking to resolve
2924 issues discovered by static source code analysis tools such as Coverity.
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: 100.9K Code, 24.5K Data, 125.4K Total
2933 Debug Version: 197.8K Code, 81.5K Data, 279.3K Total
2934 Previous Release:
2935 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
2936 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
2937
2938
2939 2) iASL Compiler/Disassembler and Tools:
2940
2941 iASL: Fixed a regression where the device map file feature no longer
2942 worked properly when used in conjunction with the disassembler. It only
2943 worked properly with the compiler itself.
2944
2945 iASL: Implemented a new warning for method LocalX variables that are set
2946 but never used (similar to a C compiler such as gcc). This also applies
2947 to ArgX variables that are not defined by the parent method, and are
2948 instead (legally) used as local variables.
2949
2950 iASL/Preprocessor: Finished the pass-through of line numbers from the
2951 preprocessor to the compiler. This ensures that compiler errors/warnings
2952 have the correct original line numbers and filenames, regardless of any
2953 #include files.
2954
2955 iASL/Preprocessor: Fixed a couple of issues with comment handling and the
2956 pass-through of comments to the preprocessor output file (which becomes
2957 the compiler input file). Also fixed a problem with // comments that
2958 appear after a math expression.
2959
2960 iASL: Added support for the TCPA server table to the table compiler and
2961 template generator. (The client table was already previously supported)
2962
2963 iASL/Preprocessor: Added a permanent #define of the symbol "__IASL__" to
2964 identify the iASL compiler.
2965
2966 Cleaned up the use of the macros NEGATIVE and POSITIVE which were defined
2967 multiple times. The new names are ACPI_SIGN_NEGATIVE and
2968 ACPI_SIGN_POSITIVE.
2969
2970 AcpiHelp: Update to expand help messages for the iASL preprocessor
2971 directives.
2972
2973
2974 ----------------------------------------
2975 19 June 2015. Summary of changes for version 20150619:
2976
2977 Two regressions in version 20150616 have been addressed:
2978
2979 Fixes some problems/issues with the C library macro removal (ACPI_STRLEN,
2980 etc.) This update changes ACPICA to only use the standard headers for
2981 functions, or the prototypes for the local versions of the C library
2982 functions. Across the source code, this required some additional casts
2983 for some Clib invocations for portability. Moved all local prototypes to
2984 a new file, acclib.h
2985
2986 Fixes several problems with recent changes to the handling of the FACS
2987 table that could cause some systems not to boot.
2988
2989
2990 ----------------------------------------
2991 16 June 2015. Summary of changes for version 20150616:
2992
2993
2994 1) ACPICA kernel-resident subsystem:
2995
2996 Across the entire ACPICA source code base, the various macros for the C
2997 library functions (such as ACPI_STRLEN, etc.) have been removed and
2998 replaced by the standard C library names (strlen, etc.) The original
2999 purpose for these macros is no longer applicable. This simplification
3000 reduces the number of macros used in the ACPICA source code
3001 significantly, improving readability and maintainability.
3002
3003 Implemented support for a new ACPI table, the OSDT. This table, the
3004 "override" SDT, can be loaded directly by the host OS at boot time. It
3005 enables the replacement of existing namespace objects that were installed
3006 via the DSDT and/or SSDTs. The primary purpose for this is to replace
3007 buggy or incorrect ASL/AML code obtained via the BIOS. The OSDT is slated
3008 for inclusion in a future version of the ACPI Specification. Lv Zheng/Bob
3009 Moore.
3010
3011 Added support for systems with (improperly) two FACS tables -- a "32-bit"
3012 table (via FADT 32-bit legacy field) and a "64-bit" table (via the 64-bit
3013 X field). This change will support both automatically. There continues to
3014 be systems found with this issue. This support requires a change to the
3015 AcpiSetFirmwareWakingVector interface. Also, a public global variable has
3016 been added to allow the host to select which FACS is desired
3017 (AcpiGbl_Use32BitFacsAddresses). See the ACPICA reference for more
3018 details Lv Zheng.
3019
3020 Added a new feature to allow for systems that do not contain an FACS.
3021 Although this is already supported on hardware-reduced platforms, the
3022 feature has been extended for all platforms. The reasoning is that we do
3023 not want to abort the entire ACPICA initialization just because the
3024 system is seriously buggy and has no FACS.
3025
3026 Fixed a problem where the GUID strings for NFIT tables (in acuuid.h) were
3027 not correctly transcribed from the ACPI specification in ACPICA version
3028 20150515.
3029
3030 Implemented support for the _CLS object in the AcpiGetObjectInfo external
3031 interface.
3032
3033 Updated the definitions of the TCPA and TPM2 ACPI tables to the more
3034 recent TCG ACPI Specification, December 14, 2014. Table disassembler and
3035 compiler also updated. Note: The TCPA "server" table is not supported by
3036 the disassembler/table-compiler at this time.
3037
3038 ACPI 6.0: Added definitions for the new GIC version field in the MADT.
3039
3040 Example Code and Data Size: These are the sizes for the OS-independent
3041 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3042 debug version of the code includes the debug output trace mechanism and
3043 has a much larger code and data size.
3044
3045 Current Release:
3046 Non-Debug Version: 100.6K Code, 27.6K Data, 128.2K Total
3047 Debug Version: 196.2K Code, 81.0K Data, 277.2K Total
3048 Previous Release:
3049 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
3050 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
3051
3052
3053 2) iASL Compiler/Disassembler and Tools:
3054
3055 Disassembler: Fixed a problem with the new symbolic operator disassembler
3056 where incorrect ASL code could be emitted in some cases for the "non-
3057 commutative" operators -- Subtract, Divide, Modulo, ShiftLeft, and
3058 ShiftRight. The actual problem cases seem to be rather unusual in common
3059 ASL code, however. David Box.
3060
3061 Modified the linux version of acpidump to obtain ACPI tables from not
3062 just /dev/mem (which may not exist) and /sys/firmware/acpi/tables. Lv
3063 Zheng.
3064
3065 iASL: Fixed a problem where the user preprocessor output file (.i)
3066 contained extra data that was not expected. The compiler was using this
3067 file as a temporary file and passed through #line directives in order to
3068 keep compiler error messages in sync with the input file and line number
3069 across multiple include files. The (.i) is no longer a temporary file as
3070 the compiler uses a new, different file for the original purpose.
3071
3072 iASL: Fixed a problem where comments within the original ASL source code
3073 file were not passed through to the preprocessor output file, nor any
3074 listing files.
3075
3076 iASL: Fixed some issues for the handling of the "#include" preprocessor
3077 directive and the similar (but not the same) "Include" ASL operator.
3078
3079 iASL: Add support for the new OSDT in both the disassembler and compiler.
3080
3081 iASL: Fixed a problem with the constant folding support where a Buffer
3082 object could be incorrectly generated (incorrectly formed) during a
3083 conversion to a Store() operator.
3084
3085 AcpiHelp: Updated for new NFIT GUIDs, "External" AML opcode, and new
3086 description text for the _REV predefined name. _REV now permanently
3087 returns 2, as per the ACPI 6.0 specification.
3088
3089 Debugger: Enhanced the output of the Debug ASL object for references
3090 produced by the Index operator. For Buffers and strings, only output the
3091 actual byte pointed to by the index. For packages, only print the single
3092 package element decoded by the index. Previously, the entire
3093 buffer/string/package was emitted.
3094
3095 iASL/Table-compiler: Fixed a regression where the "generic" data types
3096 were no longer recognized, causing errors.
3097
3098
3099 ----------------------------------------
3100 15 May 2015. Summary of changes for version 20150515:
3101
3102 This release implements most of ACPI 6.0 as described below.
3103
3104 1) ACPICA kernel-resident subsystem:
3105
3106 Implemented runtime argument checking and return value checking for all
3107 new ACPI 6.0 predefined names. This includes: _BTH, _CR3, _DSD, _LPI,
3108 _MTL, _PRR, _RDI, _RST, _TFP, _TSN.
3109
3110 Example Code and Data Size: These are the sizes for the OS-independent
3111 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3112 debug version of the code includes the debug output trace mechanism and
3113 has a much larger code and data size.
3114
3115 Current Release:
3116 Non-Debug Version: 99.9K Code, 27.5K Data, 127.4K Total
3117 Debug Version: 195.2K Code, 80.8K Data, 276.0K Total
3118 Previous Release:
3119 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
3120 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
3121
3122
3123 2) iASL Compiler/Disassembler and Tools:
3124
3125 iASL compiler: Added compile-time support for all new ACPI 6.0 predefined
3126 names (argument count validation and return value typechecking.)
3127
3128 iASL disassembler and table compiler: implemented support for all new
3129 ACPI 6.0 tables. This includes: DRTM, IORT, LPIT, NFIT, STAO, WPBT, XENV.
3130
3131 iASL disassembler and table compiler: Added ACPI 6.0 changes to existing
3132 tables: FADT, MADT.
3133
3134 iASL preprocessor: Added a new directive to enable inclusion of binary
3135 blobs into ASL code. The new directive is #includebuffer. It takes a
3136 binary file as input and emits a named ascii buffer object into the ASL
3137 code.
3138
3139 AcpiHelp: Added support for all new ACPI 6.0 predefined names.
3140
3141 AcpiHelp: Added a new option, -d, to display all iASL preprocessor
3142 directives.
3143
3144 AcpiHelp: Added a new option, -t, to display all known/supported ACPI
3145 tables.
3146
3147
3148 ----------------------------------------
3149 10 April 2015. Summary of changes for version 20150410:
3150
3151 Reverted a change introduced in version 20150408 that caused
3152 a regression in the disassembler where incorrect operator
3153 symbols could be emitted.
3154
3155
3156 ----------------------------------------
3157 08 April 2015. Summary of changes for version 20150408:
3158
3159
3160 1) ACPICA kernel-resident subsystem:
3161
3162 Permanently set the return value for the _REV predefined name. It now
3163 returns 2 (was 5). This matches other ACPI implementations. _REV will be
3164 deprecated in the future, and is now defined to be 1 for ACPI 1.0, and 2
3165 for ACPI 2.0 and later. It should never be used to differentiate or
3166 identify operating systems.
3167
3168 Added the "Windows 2015" string to the _OSI support. ACPICA will now
3169 return TRUE to a query with this string.
3170
3171 Fixed several issues with the local version of the printf function.
3172
3173 Added the C99 compiler option (-std=c99) to the Unix makefiles.
3174
3175 Current Release:
3176 Non-Debug Version: 99.9K Code, 27.4K Data, 127.3K Total
3177 Debug Version: 195.2K Code, 80.7K Data, 275.9K Total
3178 Previous Release:
3179 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
3180 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
3181
3182
3183 2) iASL Compiler/Disassembler and Tools:
3184
3185 iASL: Implemented an enhancement to the constant folding feature to
3186 transform the parse tree to a simple Store operation whenever possible:
3187 Add (2, 3, X) ==> is converted to: Store (5, X)
3188 X = 2 + 3 ==> is converted to: Store (5, X)
3189
3190 Updated support for the SLIC table (Software Licensing Description Table)
3191 in both the Data Table compiler and the disassembler. The SLIC table
3192 support now conforms to "Microsoft Software Licensing Tables (SLIC and
3193 MSDM). November 29, 2011. Copyright 2011 Microsoft". Note: Any SLIC data
3194 following the ACPI header is now defined to be "Proprietary Data", and as
3195 such, can only be entered or displayed as a hex data block.
3196
3197 Implemented full support for the MSDM table as described in the document
3198 above. Note: The format of MSDM is similar to SLIC. Any MSDM data
3199 following the ACPI header is defined to be "Proprietary Data", and can
3200 only be entered or displayed as a hex data block.
3201
3202 Implemented the -Pn option for the iASL Table Compiler (was only
3203 implemented for the ASL compiler). This option disables the iASL
3204 preprocessor.
3205
3206 Disassembler: For disassembly of Data Tables, added a comment field
3207 around the Ascii equivalent data that is emitted as part of the "Raw
3208 Table Data" block. This prevents the iASL Preprocessor from possible
3209 confusion if/when the table is compiled.
3210
3211 Disassembler: Added an option (-df) to force the disassembler to assume
3212 that the table being disassembled contains valid AML. This feature is
3213 useful for disassembling AML files that contain ACPI signatures other
3214 than DSDT or SSDT (such as OEMx or other signatures).
3215
3216 Changes for the EFI version of the tools:
3217 1) Fixed a build error/issue
3218 2) Fixed a cast warning
3219
3220 iASL: Fixed a path issue with the __FILE__ operator by making the
3221 directory prefix optional within the internal SplitInputFilename
3222 function.
3223
3224 Debugger: Removed some unused global variables.
3225
3226 Tests: Updated the makefile for proper generation of the AAPITS suite.
3227
3228
3229 ----------------------------------------
3230 04 February 2015. Summary of changes for version 20150204:
3231
3232 ACPICA kernel-resident subsystem:
3233
3234 Updated all ACPICA copyrights and signons to 2014. Added the 2014
3235 copyright to all module headers and signons, including the standard Linux
3236 header. This affects virtually every file in the ACPICA core subsystem,
3237 iASL compiler, all ACPICA utilities, and the test suites.
3238
3239 Events: Introduce ACPI_GPE_DISPATCH_RAW_HANDLER to fix GPE storm issues.
3240 A raw gpe handling mechanism was created to allow better handling of GPE
3241 storms that aren't easily managed by the normal handler. The raw handler
3242 allows disabling/renabling of the the GPE so that interrupt storms can be
3243 avoided in cases where events cannot be timely serviced. In this
3244 scenario, handlers should use the AcpiSetGpe() API to disable/enable the
3245 GPE. This API will leave the reference counts undisturbed, thereby
3246 preventing unintentional clearing of the GPE when the intent in only to
3247 temporarily disable it. Raw handlers allow enabling and disabling of a
3248 GPE by removing GPE register locking. As such, raw handlers much provide
3249 their own locks while using GPE API's to protect access to GPE data
3250 structures.
3251 Lv Zheng
3252
3253 Events: Always modify GPE registers under the GPE lock.
3254 Applies GPE lock around AcpiFinishGpe() to protect access to GPE register
3255 values. Reported as bug by joe.liu (a] apple.com.
3256
3257 Unix makefiles: Separate option to disable optimizations and
3258 _FORTIFY_SOURCE. This change removes the _FORTIFY_SOURCE flag from the
3259 NOOPT disable option and creates a separate flag (NOFORTIFY) for this
3260 purpose. Some toolchains may define _FORTIFY_SOURCE which leads redefined
3261 errors when building ACPICA. This allows disabling the option without
3262 also having to disable optimazations.
3263 David Box
3264
3265 Current Release:
3266 Non-Debug Version: 101.7K Code, 27.9K Data, 129.6K Total
3267 Debug Version: 199.2K Code, 82.4K Data, 281.6K Total
3268
3269 --
3270 --------------------------------------
3271 07 November 2014. Summary of changes for version 20141107:
3272
3273 This release is available at https://acpica.org/downloads
3274
3275 This release introduces and implements language extensions to ASL that
3276 provide support for symbolic ("C-style") operators and expressions. These
3277 language extensions are known collectively as ASL+.
3278
3279
3280 1) iASL Compiler/Disassembler and Tools:
3281
3282 Disassembler: Fixed a problem with disassembly of the UartSerialBus
3283 macro. Changed "StopBitsNone" to the correct "StopBitsZero". David E.
3284 Box.
3285
3286 Disassembler: Fixed the Unicode macro support to add escape sequences.
3287 All non-printable ASCII values are emitted as escape sequences, as well
3288 as the standard escapes for quote and backslash. Ensures that the
3289 disassembled macro can be correctly recompiled.
3290
3291 iASL: Added Printf/Fprintf macros for formatted output. These macros are
3292 translated to existing AML Concatenate and Store operations. Printf
3293 writes to the ASL Debug object. Fprintf allows the specification of an
3294 ASL name as the target. Only a single format specifier is required, %o,
3295 since the AML interpreter dynamically converts objects to the required
3296 type. David E. Box.
3297
3298 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
3299 (Concatenate (Concatenate (Concatenate ("", Arg0),
3300 ": Unexpected value for "), Arg1), ", "), Arg2),
3301 " at line "), Arg3), Debug)
3302
3303 (new) Printf ("%o: Unexpected value for %o, %o at line %o",
3304 Arg0, Arg1, Arg2, Arg3)
3305
3306 (old) Store (Concatenate (Concatenate (Concatenate (Concatenate
3307 ("", Arg1), ": "), Arg0), " Successful"), STR1)
3308
3309 (new) Fprintf (STR1, "%o: %o Successful", Arg1, Arg0)
3310
3311 iASL: Added debug options (-bp, -bt) to dynamically prune levels of the
3312 ASL parse tree before the AML code is generated. This allows blocks of
3313 ASL code to be removed in order to help locate and identify problem
3314 devices and/or code. David E. Box.
3315
3316 AcpiExec: Added support (-fi) for an optional namespace object
3317 initialization file. This file specifies initial values for namespace
3318 objects as necessary for debugging and testing different ASL code paths
3319 that may be taken as a result of BIOS options.
3320
3321
3322 2) Overview of symbolic operator support for ASL (ASL+)
3323 -------------------------------------------------------
3324
3325 As an extension to the ASL language, iASL implements support for symbolic
3326 (C-style) operators for math and logical expressions. This can greatly
3327 simplify ASL code as well as improve both readability and
3328 maintainability. These language extensions can exist concurrently with
3329 all legacy ASL code and expressions.
3330
3331 The symbolic extensions are 100% compatible with existing AML
3332 interpreters, since no new AML opcodes are created. To implement the
3333 extensions, the iASL compiler transforms the symbolic expressions into
3334 the legacy ASL/AML equivalents at compile time.
3335
3336 Full symbolic expressions are supported, along with the standard C
3337 precedence and associativity rules.
3338
3339 Full disassembler support for the symbolic expressions is provided, and
3340 creates an automatic migration path for existing ASL code to ASL+ code
3341 via the disassembly process. By default, the disassembler now emits ASL+
3342 code with symbolic expressions. An option (-dl) is provided to force the
3343 disassembler to emit legacy ASL code if desired.
3344
3345 Below is the complete list of the currently supported symbolic operators
3346 with examples. See the iASL User Guide for additional information.
3347
3348
3349 ASL+ Syntax Legacy ASL Equivalent
3350 ----------- ---------------------
3351
3352 // Math operators
3353
3354 Z = X + Y Add (X, Y, Z)
3355 Z = X - Y Subtract (X, Y, Z)
3356 Z = X * Y Multiply (X, Y, Z)
3357 Z = X / Y Divide (X, Y, , Z)
3358 Z = X % Y Mod (X, Y, Z)
3359 Z = X << Y ShiftLeft (X, Y, Z)
3360 Z = X >> Y ShiftRight (X, Y, Z)
3361 Z = X & Y And (X, Y, Z)
3362 Z = X | Y Or (X, Y, Z)
3363 Z = X ^ Y Xor (X, Y, Z)
3364 Z = ~X Not (X, Z)
3365 X++ Increment (X)
3366 X-- Decrement (X)
3367
3368 // Logical operators
3369
3370 (X == Y) LEqual (X, Y)
3371 (X != Y) LNotEqual (X, Y)
3372 (X < Y) LLess (X, Y)
3373 (X > Y) LGreater (X, Y)
3374 (X <= Y) LLessEqual (X, Y)
3375 (X >= Y) LGreaterEqual (X, Y)
3376 (X && Y) LAnd (X, Y)
3377 (X || Y) LOr (X, Y)
3378 (!X) LNot (X)
3379
3380 // Assignment and compound assignment operations
3381
3382 X = Y Store (Y, X)
3383 X += Y Add (X, Y, X)
3384 X -= Y Subtract (X, Y, X)
3385 X *= Y Multiply (X, Y, X)
3386 X /= Y Divide (X, Y, , X)
3387 X %= Y Mod (X, Y, X)
3388 X <<= Y ShiftLeft (X, Y, X)
3389 X >>= Y ShiftRight (X, Y, X)
3390 X &= Y And (X, Y, X)
3391 X |= Y Or (X, Y, X)
3392 X ^= Y Xor (X, Y, X)
3393
3394
3395 3) ASL+ Examples:
3396 -----------------
3397
3398 Legacy ASL:
3399 If (LOr (LOr (LEqual (And (R510, 0x03FB), 0x02E0), LEqual (
3400 And (R520, 0x03FB), 0x02E0)), LOr (LEqual (And (R530,
3401 0x03FB),
3402 0x02E0), LEqual (And (R540, 0x03FB), 0x02E0))))
3403 {
3404 And (MEMB, 0xFFFFFFF0, SRMB)
3405 Store (MEMB, Local2)
3406 Store (PDBM, Local1)
3407 And (PDBM, 0xFFFFFFFFFFFFFFF9, PDBM)
3408 Store (SRMB, MEMB)
3409 Or (PDBM, 0x02, PDBM)
3410 }
3411
3412 ASL+ version:
3413 If (((R510 & 0x03FB) == 0x02E0) ||
3414 ((R520 & 0x03FB) == 0x02E0) ||
3415 ((R530 & 0x03FB) == 0x02E0) ||
3416 ((R540 & 0x03FB) == 0x02E0))
3417 {
3418 SRMB = (MEMB & 0xFFFFFFF0)
3419 Local2 = MEMB
3420 Local1 = PDBM
3421 PDBM &= 0xFFFFFFFFFFFFFFF9
3422 MEMB = SRMB
3423 PDBM |= 0x02
3424 }
3425
3426 Legacy ASL:
3427 Store (0x1234, Local1)
3428 Multiply (Add (Add (Local1, TEST), 0x20), Local2, Local3)
3429 Multiply (Local2, Add (Add (Local1, TEST), 0x20), Local3)
3430 Add (Local1, Add (TEST, Multiply (0x20, Local2)), Local3)
3431 Store (Index (PKG1, 0x03), Local6)
3432 Store (Add (Local3, Local2), Debug)
3433 Add (Local1, 0x0F, Local2)
3434 Add (Local1, Multiply (Local2, Local3), Local2)
3435 Multiply (Add (Add (Local1, TEST), 0x20), ToBCD (Local1), Local3)
3436
3437 ASL+ version:
3438 Local1 = 0x1234
3439 Local3 = (((Local1 + TEST) + 0x20) * Local2)
3440 Local3 = (Local2 * ((Local1 + TEST) + 0x20))
3441 Local3 = (Local1 + (TEST + (0x20 * Local2)))
3442 Local6 = Index (PKG1, 0x03)
3443 Debug = (Local3 + Local2)
3444 Local2 = (Local1 + 0x0F)
3445 Local2 = (Local1 + (Local2 * Local3))
3446 Local3 = (((Local1 + TEST) + 0x20) * ToBCD (Local1))
3447
3448
3449 ----------------------------------------
3450 26 September 2014. Summary of changes for version 20140926:
3451
3452 1) ACPICA kernel-resident subsystem:
3453
3454 Updated the GPIO operation region handler interface (GeneralPurposeIo).
3455 In order to support GPIO Connection objects with multiple pins, along
3456 with the related Field objects, the following changes to the interface
3457 have been made: The Address is now defined to be the offset in bits of
3458 the field unit from the previous invocation of a Connection. It can be
3459 viewed as a "Pin Number Index" into the connection resource descriptor.
3460 The BitWidth is the exact bit width of the field. It is usually one bit,
3461 but not always. See the ACPICA reference guide (section 8.8.6.2.1) for
3462 additional information and examples.
3463
3464 GPE support: During ACPICA/GPE initialization, ensure that all GPEs with
3465 corresponding _Lxx/_Exx methods are disabled (they may have been enabled
3466 by the firmware), so that they cannot fire until they are enabled via
3467 AcpiUpdateAllGpes. Rafael J. Wysocki.
3468
3469 Added a new return flag for the Event/GPE status interfaces --
3470 AcpiGetEventStatus and AcpiGetGpeStatus. The new
3471 ACPI_EVENT_FLAGS_HAS_HANDLER flag is used to indicate that the event or
3472 GPE currently has a handler associated with it, and can thus actually
3473 affect the system. Lv Zheng.
3474
3475 Example Code and Data Size: These are the sizes for the OS-independent
3476 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3477 debug version of the code includes the debug output trace mechanism and
3478 has a much larger code and data size.
3479
3480 Current Release:
3481 Non-Debug Version: 99.1K Code, 27.3K Data, 126.4K Total
3482 Debug Version: 192.8K Code, 79.9K Data, 272.7K Total
3483 Previous Release:
3484 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
3485 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
3486
3487 2) iASL Compiler/Disassembler and Tools:
3488
3489 iASL: Fixed a memory allocation/free regression introduced in 20140828
3490 that could cause the compiler to crash. This was introduced inadvertently
3491 during the effort to eliminate compiler memory leaks. ACPICA BZ 1111,
3492 1113.
3493
3494 iASL: Removed two error messages that have been found to create false
3495 positives, until they can be fixed and fully validated (ACPICA BZ 1112):
3496 1) Illegal forward reference within a method
3497 2) Illegal reference across two methods
3498
3499 iASL: Implemented a new option (-lm) to create a hardware mapping file
3500 that summarizes all GPIO, I2C, SPI, and UART connections. This option
3501 works for both the compiler and disassembler. See the iASL compiler user
3502 guide for additional information and examples (section 6.4.6).
3503
3504 AcpiDump: Added support for the version 1 (ACPI 1.0) RSDP in addition to
3505 version 2. This corrects the AE_BAD_HEADER exception seen on systems with
3506 a version 1 RSDP. Lv Zheng ACPICA BZ 1097.
3507
3508 AcpiExec: For Unix versions, don't attempt to put STDIN into raw mode
3509 unless STDIN is actually a terminal. Assists with batch-mode processing.
3510 ACPICA BZ 1114.
3511
3512 Disassembler/AcpiHelp: Added another large group of recognized _HID
3513 values.
3514
3515
3516 ----------------------------------------
3517 28 August 2014. Summary of changes for version 20140828:
3518
3519 1) ACPICA kernel-resident subsystem:
3520
3521 Fixed a problem related to the internal use of the Timer() operator where
3522 a 64-bit divide could cause an attempted link to a double-precision math
3523 library. This divide is not actually necessary, so the code was
3524 restructured to eliminate it. Lv Zheng.
3525
3526 ACPI 5.1: Added support for the runtime validation of the _DSD package
3527 (similar to the iASL support).
3528
3529 ACPI 5.1/Headers: Added support for the GICC affinity subtable to the
3530 SRAT table. Hanjun Guo <hanjun.guo (a] linaro.org>.
3531
3532 Example Code and Data Size: These are the sizes for the OS-independent
3533 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3534 debug version of the code includes the debug output trace mechanism and
3535 has a much larger code and data size.
3536
3537 Current Release:
3538 Non-Debug Version: 98.8K Code, 27.3K Data, 126.1K Total
3539 Debug Version: 192.1K Code, 79.8K Data, 271.9K Total
3540 Previous Release:
3541 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total1
3542 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
3543
3544 2) iASL Compiler/Disassembler and Tools:
3545
3546 AcpiExec: Fixed a problem on unix systems where the original terminal
3547 state was not always properly restored upon exit. Seen when using the -v
3548 option. ACPICA BZ 1104.
3549
3550 iASL: Fixed a problem with the validation of the ranges/length within the
3551 Memory24 resource descriptor. There was a boundary condition when the
3552 range was equal to the (length -1) caused by the fact that these values
3553 are defined in 256-byte blocks, not bytes. ACPICA BZ 1098
3554
3555 Disassembler: Fixed a problem with the GpioInt descriptor interrupt
3556 polarity
3557 flags. The flags are actually 2 bits, not 1, and the "ActiveBoth" keyword
3558 is
3559 now supported properly.
3560
3561 ACPI 5.1: Added the GICC affinity subtable to the SRAT table. Supported
3562 in the disassembler, data table compiler, and table template generator.
3563
3564 iASL: Added a requirement for Device() objects that one of either a _HID
3565 or _ADR must exist within the scope of a Device, as per the ACPI
3566 specification. Remove a similar requirement that was incorrectly in place
3567 for the _DSD object.
3568
3569 iASL: Added error detection for illegal named references within control
3570 methods that would cause runtime failures. Now trapped as errors are: 1)
3571 References to objects within a non-parent control method. 2) Forward
3572 references (within a method) -- for control methods, AML interpreters use
3573 a one-pass parse of control methods. ACPICA BZ 1008.
3574
3575 iASL: Added error checking for dependencies related to the _PSx power
3576 methods. ACPICA BZ 1029.
3577 1) For _PS0, one of these must exist within the same scope: _PS1, _PS2,
3578 _PS3.
3579 2) For _PS1, _PS2, and PS3: A _PS0 object must exist within the same
3580 scope.
3581
3582 iASL and table compiler: Cleanup miscellaneous memory leaks by fully
3583 deploying the existing object and string caches and adding new caches for
3584 the table compiler.
3585
3586 iASL: Split the huge parser source file into multiple subfiles to improve
3587 manageability. Generation now requires the M4 macro preprocessor, which
3588 is part of the Bison distribution on both unix and windows platforms.
3589
3590 AcpiSrc: Fixed and removed all extraneous warnings generated during
3591 entire ACPICA source code scan and/or conversion.
3592
3593
3594 ----------------------------------------
3595
3596 24 July 2014. Summary of changes for version 20140724:
3597
3598 The ACPI 5.1 specification has been released and is available at:
3599 http://uefi.org/specs/access
3600
3601
3602 0) ACPI 5.1 support in ACPICA:
3603
3604 ACPI 5.1 is fully supported in ACPICA as of this release.
3605
3606 New predefined names. Support includes iASL and runtime ACPICA
3607 validation.
3608 _CCA (Cache Coherency Attribute).
3609 _DSD (Device-Specific Data). David Box.
3610
3611 Modifications to existing ACPI tables. Support includes headers, iASL
3612 Data Table compiler, disassembler, and the template generator.
3613 FADT - New fields and flags. Graeme Gregory.
3614 GTDT - One new subtable and new fields. Tomasz Nowicki.
3615 MADT - Two new subtables. Tomasz Nowicki.
3616 PCCT - One new subtable.
3617
3618 Miscellaneous.
3619 New notification type for System Resource Affinity change events.
3620
3621
3622 1) ACPICA kernel-resident subsystem:
3623
3624 Fixed a regression introduced in 20140627 where a fault can happen during
3625 the deletion of Alias AML namespace objects. The problem affected both
3626 the core ACPICA and the ACPICA tools including iASL and AcpiExec.
3627
3628 Implemented a new GPE public interface, AcpiMarkGpeForWake. Provides a
3629 simple mechanism to enable wake GPEs that have no associated handler or
3630 control method. Rafael Wysocki.
3631
3632 Updated the AcpiEnableGpe interface to disallow the enable if there is no
3633 handler or control method associated with the particular GPE. This will
3634 help avoid meaningless GPEs and even GPE floods. Rafael Wysocki.
3635
3636 Updated GPE handling and dispatch by disabling the GPE before clearing
3637 the status bit for edge-triggered GPEs. Lv Zheng.
3638
3639 Added Timer() support to the AML Debug object. The current timer value is
3640 now displayed with each invocation of (Store to) the debug object to
3641 enable simple generation of execution times for AML code (method
3642 execution for example.) ACPICA BZ 1093.
3643
3644 Example Code and Data Size: These are the sizes for the OS-independent
3645 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3646 debug version of the code includes the debug output trace mechanism and
3647 has a much larger code and data size.
3648
3649 Current Release:
3650 Non-Debug Version: 98.7K Code, 27.3K Data, 126.0K Total
3651 Debug Version: 192.0K Code, 79.7K Data, 271.7K Total
3652 Previous Release:
3653 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
3654 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
3655
3656
3657 2) iASL Compiler/Disassembler and Tools:
3658
3659 Fixed an issue with the recently added local printf implementation,
3660 concerning width/precision specifiers that could cause incorrect output.
3661 Lv Zheng. ACPICA BZ 1094.
3662
3663 Disassembler: Added support to detect buffers that contain UUIDs and
3664 disassemble them to an invocation of the ToUUID operator. Also emit
3665 commented descriptions of known ACPI-related UUIDs.
3666
3667 AcpiHelp: Added support to display known ACPI-related UUIDs. New option,
3668 -u. Adds three new files.
3669
3670 iASL: Update table compiler and disassembler for DMAR table changes that
3671 were introduced in September 2013. With assistance by David Woodhouse.
3672
3673 ----------------------------------------
3674 27 June 2014. Summary of changes for version 20140627:
3675
3676 1) ACPICA kernel-resident subsystem:
3677
3678 Formatted Output: Implemented local versions of standard formatted output
3679 utilities such as printf, etc. Over time, it has been discovered that
3680 there are in fact many portability issues with printf, and the addition
3681 of this feature will fix/prevent these issues once and for all. Some
3682 known issues are summarized below:
3683
3684 1) Output of 64-bit values is not portable. For example, UINT64 is %ull
3685 for the Linux kernel and is %uI64 for some MSVC versions.
3686 2) Invoking printf consistently in a manner that is portable across both
3687 32-bit and 64-bit platforms is difficult at best in many situations.
3688 3) The output format for pointers varies from system to system (leading
3689 zeros especially), and leads to inconsistent output from ACPICA across
3690 platforms.
3691 4) Certain platform-specific printf formats may conflict with ACPICA use.
3692 5) If there is no local C library available, ACPICA now has local support
3693 for printf.
3694
3695 -- To address these printf issues in a complete manner, ACPICA now
3696 directly implements a small subset of printf format specifiers, only
3697 those that it requires. Adds a new file, utilities/utprint.c. Lv Zheng.
3698
3699 Implemented support for ACPICA generation within the EFI environment.
3700 Initially, the AcpiDump utility is supported in the UEFI shell
3701 environment. Lv Zheng.
3702
3703 Added a new external interface, AcpiLogError, to improve ACPICA
3704 portability. This allows the host to redirect error messages from the
3705 ACPICA utilities. Lv Zheng.
3706
3707 Added and deployed new OSL file I/O interfaces to improve ACPICA
3708 portability:
3709 AcpiOsOpenFile
3710 AcpiOsCloseFile
3711 AcpiOsReadFile
3712 AcpiOsWriteFile
3713 AcpiOsGetFileOffset
3714 AcpiOsSetFileOffset
3715 There are C library implementations of these functions in the new file
3716 service_layers/oslibcfs.c -- however, the functions can be implemented by
3717 the local host in any way necessary. Lv Zheng.
3718
3719 Implemented a mechanism to disable/enable ACPI table checksum validation
3720 at runtime. This can be useful when loading tables very early during OS
3721 initialization when it may not be possible to map the entire table in
3722 order to compute the checksum. Lv Zheng.
3723
3724 Fixed a buffer allocation issue for the Generic Serial Bus support.
3725 Originally, a fixed buffer length was used. This change allows for
3726 variable-length buffers based upon the protocol indicated by the field
3727 access attributes. Reported by Lan Tianyu. Lv Zheng.
3728
3729 Fixed a problem where an object detached from a namespace node was not
3730 properly terminated/cleared and could cause a circular list problem if
3731 reattached. ACPICA BZ 1063. David Box.
3732
3733 Fixed a possible recursive lock acquisition in hwregs.c. Rakib Mullick.
3734
3735 Fixed a possible memory leak in an error return path within the function
3736 AcpiUtCopyIobjectToIobject. ACPICA BZ 1087. Colin Ian King.
3737
3738 Example Code and Data Size: These are the sizes for the OS-independent
3739 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3740 debug version of the code includes the debug output trace mechanism and
3741 has a much larger code and data size.
3742
3743 Current Release:
3744 Non-Debug Version: 98.7K Code, 27.2K Data, 125.9K Total
3745 Debug Version: 191.7K Code, 79.6K Data, 271.3K Total
3746 Previous Release:
3747 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
3748 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
3749
3750
3751 2) iASL Compiler/Disassembler and Tools:
3752
3753 Disassembler: Add dump of ASCII equivalent text within a comment at the
3754 end of each line of the output for the Buffer() ASL operator.
3755
3756 AcpiDump: Miscellaneous changes:
3757 Fixed repetitive table dump in -n mode.
3758 For older EFI platforms, use the ACPI 1.0 GUID during RSDP search if
3759 the ACPI 2.0 GUID fails.
3760
3761 iASL: Fixed a problem where the compiler could fault if incorrectly given
3762 an acpidump output file as input. ACPICA BZ 1088. David Box.
3763
3764 AcpiExec/AcpiNames: Fixed a problem where these utilities could fault if
3765 they are invoked without any arguments.
3766
3767 Debugger: Fixed a possible memory leak in an error return path. ACPICA BZ
3768 1086. Colin Ian King.
3769
3770 Disassembler: Cleaned up a block of code that extracts a parent Op
3771 object. Added a comment that explains that the parent is guaranteed to be
3772 valid in this case. ACPICA BZ 1069.
3773
3774
3775 ----------------------------------------
3776 24 April 2014. Summary of changes for version 20140424:
3777
3778 1) ACPICA kernel-resident subsystem:
3779
3780 Implemented support to skip/ignore NULL address entries in the RSDT/XSDT.
3781 Some of these tables are known to contain a trailing NULL entry. Lv
3782 Zheng.
3783
3784 Removed an extraneous error message for the case where there are a large
3785 number of system GPEs (> 124). This was the "32-bit FADT register is too
3786 long to convert to GAS struct" message, which is irrelevant for GPEs
3787 since the GPEx_BLK_LEN fields of the FADT are always used instead of the
3788 (limited capacity) GAS bit length. Also, several changes to ensure proper
3789 support for GPE numbers > 255, where some "GPE number" fields were 8-bits
3790 internally.
3791
3792 Implemented and deployed additional configuration support for the public
3793 ACPICA external interfaces. Entire classes of interfaces can now be
3794 easily modified or configured out, replaced by stubbed inline functions
3795 by default. Lv Zheng.
3796
3797 Moved all public ACPICA runtime configuration globals to the public
3798 ACPICA external interface file for convenience. Also, removed some
3799 obsolete/unused globals. See the file acpixf.h. Lv Zheng.
3800
3801 Documentation: Added a new section to the ACPICA reference describing the
3802 maximum number of GPEs that can be supported by the FADT-defined GPEs in
3803 block zero and one. About 1200 total. See section 4.4.1 of the ACPICA
3804 reference.
3805
3806 Example Code and Data Size: These are the sizes for the OS-independent
3807 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3808 debug version of the code includes the debug output trace mechanism and
3809 has a much larger code and data size.
3810
3811 Current Release:
3812 Non-Debug Version: 96.8K Code, 27.2K Data, 124.0K Total
3813 Debug Version: 189.5K Code, 79.7K Data, 269.2K Total
3814 Previous Release:
3815 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
3816 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
3817
3818
3819 2) iASL Compiler/Disassembler and Tools:
3820
3821 iASL and disassembler: Add full support for the LPIT table (Low Power
3822 Idle Table). Includes support in the disassembler, data table compiler,
3823 and template generator.
3824
3825 AcpiDump utility:
3826 1) Add option to force the use of the RSDT (over the XSDT).
3827 2) Improve validation of the RSDP signature (use 8 chars instead of 4).
3828
3829 iASL: Add check for predefined packages that are too large. For
3830 predefined names that contain subpackages, check if each subpackage is
3831 too large. (Check for too small already exists.)
3832
3833 Debugger: Updated the GPE command (which simulates a GPE by executing the
3834 GPE code paths in ACPICA). The GPE device is now optional, and defaults
3835 to the GPE 0/1 FADT-defined blocks.
3836
3837 Unix application OSL: Update line-editing support. Add additional error
3838 checking and take care not to reset terminal attributes on exit if they
3839 were never set. This should help guarantee that the terminal is always
3840 left in the previous state on program exit.
3841
3842
3843 ----------------------------------------
3844 25 March 2014. Summary of changes for version 20140325:
3845
3846 1) ACPICA kernel-resident subsystem:
3847
3848 Updated the auto-serialize feature for control methods. This feature
3849 automatically serializes all methods that create named objects in order
3850 to prevent runtime errors. The update adds support to ignore the
3851 currently executing AML SyncLevel when invoking such a method, in order
3852 to prevent disruption of any existing SyncLevel priorities that may exist
3853 in the AML code. Although the use of SyncLevels is relatively rare, this
3854 change fixes a regression where an AE_AML_MUTEX_ORDER exception can
3855 appear on some machines starting with the 20140214 release.
3856
3857 Added a new external interface to allow the host to install ACPI tables
3858 very early, before the namespace is even created. AcpiInstallTable gives
3859 the host additional flexibility for ACPI table management. Tables can be
3860 installed directly by the host as if they had originally appeared in the
3861 XSDT/RSDT. Installed tables can be SSDTs or other ACPI data tables
3862 (anything except the DSDT and FACS). Adds a new file, tbdata.c, along
3863 with additional internal restructuring and cleanup. See the ACPICA
3864 Reference for interface details. Lv Zheng.
3865
3866 Added validation of the checksum for all incoming dynamically loaded
3867 tables (via external interfaces or via AML Load/LoadTable operators). Lv
3868 Zheng.
3869
3870 Updated the use of the AcpiOsWaitEventsComplete interface during Notify
3871 and GPE handler removal. Restructured calls to eliminate possible race
3872 conditions. Lv Zheng.
3873
3874 Added a warning for the use/execution of the ASL/AML Unload (table)
3875 operator. This will help detect and identify machines that use this
3876 operator if and when it is ever used. This operator has never been seen
3877 in the field and the usage model and possible side-effects of the drastic
3878 runtime action of a full table removal are unknown.
3879
3880 Reverted the use of #pragma push/pop which was introduced in the 20140214
3881 release. It appears that push and pop are not implemented by enough
3882 compilers to make the use of this feature feasible for ACPICA at this
3883 time. However, these operators may be deployed in a future ACPICA
3884 release.
3885
3886 Added the missing EXPORT_SYMBOL macros for the install and remove SCI
3887 handler interfaces.
3888
3889 Source code generation:
3890 1) Disabled the use of the "strchr" macro for the gcc-specific
3891 generation. For some versions of gcc, this macro can periodically expose
3892 a compiler bug which in turn causes compile-time error(s).
3893 2) Added support for PPC64 compilation. Colin Ian King.
3894
3895 Example Code and Data Size: These are the sizes for the OS-independent
3896 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3897 debug version of the code includes the debug output trace mechanism and
3898 has a much larger code and data size.
3899
3900 Current Release:
3901 Non-Debug Version: 97.0K Code, 27.2K Data, 124.2K Total
3902 Debug Version: 189.7K Code, 79.5K Data, 269.2K Total
3903 Previous Release:
3904 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
3905 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
3906
3907
3908 2) iASL Compiler/Disassembler and Tools:
3909
3910 Disassembler: Added several new features to improve the readability of
3911 the resulting ASL code. Extra information is emitted within comment
3912 fields in the ASL code:
3913 1) Known _HID/_CID values are decoded to descriptive text.
3914 2) Standard values for the Notify() operator are decoded to descriptive
3915 text.
3916 3) Target operands are expanded to full pathnames (in a comment) when
3917 possible.
3918
3919 Disassembler: Miscellaneous updates for extern() handling:
3920 1) Abort compiler if file specified by -fe option does not exist.
3921 2) Silence unnecessary warnings about argument count mismatches.
3922 3) Update warning messages concerning unresolved method externals.
3923 4) Emit "UnknownObj" keyword for externals whose type cannot be
3924 determined.
3925
3926 AcpiHelp utility:
3927 1) Added the -a option to display both the ASL syntax and the AML
3928 encoding for an input ASL operator. This effectively displays all known
3929 information about an ASL operator with one AcpiHelp invocation.
3930 2) Added substring match support (similar to a wildcard) for the -i
3931 (_HID/PNP IDs) option.
3932
3933 iASL/Disassembler: Since this tool does not yet support execution on big-
3934 endian machines, added detection of endianness and an error message if
3935 execution is attempted on big-endian. Support for big-endian within iASL
3936 is a feature that is on the ACPICA to-be-done list.
3937
3938 AcpiBin utility:
3939 1) Remove option to extract binary files from an acpidump; this function
3940 is made obsolete by the AcpiXtract utility.
3941 2) General cleanup of open files and allocated buffers.
3942
3943
3944 ----------------------------------------
3945 14 February 2014. Summary of changes for version 20140214:
3946
3947 1) ACPICA kernel-resident subsystem:
3948
3949 Implemented a new mechanism to proactively prevent problems with ill-
3950 behaved reentrant control methods that create named ACPI objects. This
3951 behavior is illegal as per the ACPI specification, but is nonetheless
3952 frequently seen in the field. Previously, this could lead to an
3953 AE_ALREADY_EXISTS exception if the method was actually entered by more
3954 than one thread. This new mechanism detects such methods at table load
3955 time and marks them "serialized" to prevent reentrancy. A new global
3956 option, AcpiGbl_AutoSerializeMethods, has been added to disable this
3957 feature if desired. This mechanism and global option obsoletes and
3958 supersedes the previous AcpiGbl_SerializeAllMethods option.
3959
3960 Added the "Windows 2013" string to the _OSI support. ACPICA will now
3961 respond TRUE to _OSI queries with this string. It is the stated policy of
3962 ACPICA to add new strings to the _OSI support as soon as possible after
3963 they are defined. See the full ACPICA _OSI policy which has been added to
3964 the utilities/utosi.c file.
3965
3966 Hardened/updated the _PRT return value auto-repair code:
3967 1) Do not abort the repair on a single subpackage failure, continue to
3968 check all subpackages.
3969 2) Add check for the minimum subpackage length (4).
3970 3) Properly handle extraneous NULL package elements.
3971
3972 Added support to avoid the possibility of infinite loops when traversing
3973 object linked lists. Never allow an infinite loop, even in the face of
3974 corrupted object lists.
3975
3976 ACPICA headers: Deployed the use of #pragma pack(push) and #pragma
3977 pack(pop) directives to ensure that the ACPICA headers are independent of
3978 compiler settings or other host headers.
3979
3980 Example Code and Data Size: These are the sizes for the OS-independent
3981 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
3982 debug version of the code includes the debug output trace mechanism and
3983 has a much larger code and data size.
3984
3985 Current Release:
3986 Non-Debug Version: 96.5K Code, 27.2K Data, 123.7K Total
3987 Debug Version: 188.6K Code, 79.0K Data, 267.6K Total
3988 Previous Release:
3989 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
3990 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
3991
3992
3993 2) iASL Compiler/Disassembler and Tools:
3994
3995 iASL/Table-compiler: Fixed a problem with support for the SPMI table. The
3996 first reserved field was incorrectly forced to have a value of zero. This
3997 change correctly forces the field to have a value of one. ACPICA BZ 1081.
3998
3999 Debugger: Added missing support for the "Extra" and "Data" subobjects
4000 when displaying object data.
4001
4002 Debugger: Added support to display entire object linked lists when
4003 displaying object data.
4004
4005 iASL: Removed the obsolete -g option to obtain ACPI tables from the
4006 Windows registry. This feature has been superseded by the acpidump
4007 utility.
4008
4009
4010 ----------------------------------------
4011 14 January 2014. Summary of changes for version 20140114:
4012
4013 1) ACPICA kernel-resident subsystem:
4014
4015 Updated all ACPICA copyrights and signons to 2014. Added the 2014
4016 copyright to all module headers and signons, including the standard Linux
4017 header. This affects virtually every file in the ACPICA core subsystem,
4018 iASL compiler, all ACPICA utilities, and the test suites.
4019
4020 Improved parameter validation for AcpiInstallGpeBlock. Added the
4021 following checks:
4022 1) The incoming device handle refers to type ACPI_TYPE_DEVICE.
4023 2) There is not already a GPE block attached to the device.
4024 Likewise, with AcpiRemoveGpeBlock, ensure that the incoming object is a
4025 device.
4026
4027 Correctly support "references" in the ACPI_OBJECT. This change fixes the
4028 support to allow references (namespace nodes) to be passed as arguments
4029 to control methods via the evaluate object interface. This is probably
4030 most useful for testing purposes, however.
4031
4032 Improved support for 32/64 bit physical addresses in printf()-like
4033 output. This change improves the support for physical addresses in printf
4034 debug statements and other output on both 32-bit and 64-bit hosts. It
4035 consistently outputs the appropriate number of bytes for each host. The
4036 %p specifier is unsatisfactory since it does not emit uniform output on
4037 all hosts/clib implementations (on some, leading zeros are not supported,
4038 leading to difficult-to-read output).
4039
4040 Example Code and Data Size: These are the sizes for the OS-independent
4041 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4042 debug version of the code includes the debug output trace mechanism and
4043 has a much larger code and data size.
4044
4045 Current Release:
4046 Non-Debug Version: 96.2K Code, 27.0K Data, 123.2K Total
4047 Debug Version: 187.5K Code, 78.3K Data, 265.8K Total
4048 Previous Release:
4049 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
4050 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
4051
4052
4053 2) iASL Compiler/Disassembler and Tools:
4054
4055 iASL: Fix a possible fault when using the Connection() operator. Fixes a
4056 problem if the parent Field definition for the Connection operator refers
4057 to an operation region that does not exist. ACPICA BZ 1064.
4058
4059 AcpiExec: Load of local test tables is now optional. The utility has the
4060 capability to load some various tables to test features of ACPICA.
4061 However, there are enough of them that the output of the utility became
4062 confusing. With this change, only the required local tables are displayed
4063 (RSDP, XSDT, etc.) along with the actual tables loaded via the command
4064 line specification. This makes the default output simler and easier to
4065 understand. The -el command line option restores the original behavior
4066 for testing purposes.
4067
4068 AcpiExec: Added support for overlapping operation regions. This change
4069 expands the simulation of operation regions by supporting regions that
4070 overlap within the given address space. Supports SystemMemory and
4071 SystemIO. ASLTS test suite updated also. David Box. ACPICA BZ 1031.
4072
4073 AcpiExec: Added region handler support for PCI_Config and EC spaces. This
4074 allows AcpiExec to simulate these address spaces, similar to the current
4075 support for SystemMemory and SystemIO.
4076
4077 Debugger: Added new command to read/write/compare all namespace objects.
4078 The command "test objects" will exercise the entire namespace by writing
4079 new values to each data object, and ensuring that the write was
4080 successful. The original value is then restored and verified.
4081
4082 Debugger: Added the "test predefined" command. This change makes this
4083 test public and puts it under the new "test" command. The test executes
4084 each and every predefined name within the current namespace.
4085
4086
4087 ----------------------------------------
4088 18 December 2013. Summary of changes for version 20131218:
4089
4090 Global note: The ACPI 5.0A specification was released this month. There
4091 are no changes needed for ACPICA since this release of ACPI is an
4092 errata/clarification release. The specification is available at
4093 acpi.info.
4094
4095
4096 1) ACPICA kernel-resident subsystem:
4097
4098 Added validation of the XSDT root table if it is present. Some older
4099 platforms contain an XSDT that is ill-formed or otherwise invalid (such
4100 as containing some or all entries that are NULL pointers). This change
4101 adds a new function to validate the XSDT before actually using it. If the
4102 XSDT is found to be invalid, ACPICA will now automatically fall back to
4103 using the RSDT instead. Original implementation by Zhao Yakui. Ported to
4104 ACPICA and enhanced by Lv Zheng and Bob Moore.
4105
4106 Added a runtime option to ignore the XSDT and force the use of the RSDT.
4107 This change adds a runtime option that will force ACPICA to use the RSDT
4108 instead of the XSDT (AcpiGbl_DoNotUseXsdt). Although the ACPI spec
4109 requires that an XSDT be used instead of the RSDT, the XSDT has been
4110 found to be corrupt or ill-formed on some machines. Lv Zheng.
4111
4112 Added a runtime option to favor 32-bit FADT register addresses over the
4113 64-bit addresses. This change adds an option to favor 32-bit FADT
4114 addresses when there is a conflict between the 32-bit and 64-bit versions
4115 of the same register. The default behavior is to use the 64-bit version
4116 in accordance with the ACPI specification. This can now be overridden via
4117 the AcpiGbl_Use32BitFadtAddresses flag. ACPICA BZ 885. Lv Zheng.
4118
4119 During the change above, the internal "Convert FADT" and "Verify FADT"
4120 functions have been merged to simplify the code, making it easier to
4121 understand and maintain. ACPICA BZ 933.
4122
4123 Improve exception reporting and handling for GPE block installation.
4124 Return an actual status from AcpiEvGetGpeXruptBlock and don't clobber the
4125 status when exiting AcpiEvInstallGpeBlock. ACPICA BZ 1019.
4126
4127 Added helper macros to extract bus/segment numbers from the HEST table.
4128 This change adds two macros to extract the encoded bus and segment
4129 numbers from the HEST Bus field - ACPI_HEST_BUS and ACPI_HEST_SEGMENT.
4130 Betty Dall <betty.dall (a] hp.com>
4131
4132 Removed the unused ACPI_FREE_BUFFER macro. This macro is no longer used
4133 by ACPICA. It is not a public macro, so it should have no effect on
4134 existing OSV code. Lv Zheng.
4135
4136 Example Code and Data Size: These are the sizes for the OS-independent
4137 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4138 debug version of the code includes the debug output trace mechanism and
4139 has a much larger code and data size.
4140
4141 Current Release:
4142 Non-Debug Version: 96.1K Code, 27.0K Data, 123.1K Total
4143 Debug Version: 185.6K Code, 77.3K Data, 262.9K Total
4144 Previous Release:
4145 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
4146 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
4147
4148
4149 2) iASL Compiler/Disassembler and Tools:
4150
4151 Disassembler: Improved pathname support for emitted External()
4152 statements. This change adds full pathname support for external names
4153 that have been resolved internally by the inclusion of additional ACPI
4154 tables (via the iASL -e option). Without this change, the disassembler
4155 can emit multiple externals for the same object, or it become confused
4156 when the Scope() operator is used on an external object. Overall, greatly
4157 improves the ability to actually recompile the emitted ASL code when
4158 objects a referenced across multiple ACPI tables. Reported by Michael
4159 Tsirkin (mst (a] redhat.com).
4160
4161 Tests/ASLTS: Updated functional control suite to execute with no errors.
4162 David Box. Fixed several errors related to the testing of the interpreter
4163 slack mode. Lv Zheng.
4164
4165 iASL: Added support to detect names that are declared within a control
4166 method, but are unused (these are temporary names that are only valid
4167 during the time the method is executing). A remark is issued for these
4168 cases. ACPICA BZ 1022.
4169
4170 iASL: Added full support for the DBG2 table. Adds full disassembler,
4171 table compiler, and template generator support for the DBG2 table (Debug
4172 Port 2 table).
4173
4174 iASL: Added full support for the PCCT table, update the table definition.
4175 Updates the PCCT table definition in the actbl3.h header and adds table
4176 compiler and template generator support.
4177
4178 iASL: Added an option to emit only error messages (no warnings/remarks).
4179 The -ve option will enable only error messages, warnings and remarks are
4180 suppressed. This can simplify debugging when only the errors are
4181 important, such as when an ACPI table is disassembled and there are many
4182 warnings and remarks -- but only the actual errors are of real interest.
4183
4184 Example ACPICA code (source/tools/examples): Updated the example code so
4185 that it builds to an actual working program, not just example code. Added
4186 ACPI tables and execution of an example control method in the DSDT. Added
4187 makefile support for Unix generation.
4188
4189
4190 ----------------------------------------
4191 15 November 2013. Summary of changes for version 20131115:
4192
4193 This release is available at https://acpica.org/downloads
4194
4195
4196 1) ACPICA kernel-resident subsystem:
4197
4198 Resource Manager: Fixed loop termination for the "get AML length"
4199 function. The loop previously had an error termination on a NULL resource
4200 pointer, which can never happen since the loop simply increments a valid
4201 resource pointer. This fix changes the loop to terminate with an error on
4202 an invalid end-of-buffer condition. The problem can be seen as an
4203 infinite loop by callers to AcpiSetCurrentResources with an invalid or
4204 corrupted resource descriptor, or a resource descriptor that is missing
4205 an END_TAG descriptor. Reported by Dan Carpenter
4206 <dan.carpenter (a] oracle.com>. Lv Zheng, Bob Moore.
4207
4208 Table unload and ACPICA termination: Delete all attached data objects
4209 during namespace node deletion. This fix updates namespace node deletion
4210 to delete the entire list of attached objects (attached via
4211 AcpiAttachObject) instead of just one of the attached items. ACPICA BZ
4212 1024. Tomasz Nowicki (tomasz.nowicki (a] linaro.org).
4213
4214 ACPICA termination: Added support to delete all objects attached to the
4215 root namespace node. This fix deletes any and all objects that have been
4216 attached to the root node via AcpiAttachData. Previously, none of these
4217 objects were deleted. Reported by Tomasz Nowicki. ACPICA BZ 1026.
4218
4219 Debug output: Do not emit the function nesting level for the in-kernel
4220 build. The nesting level is really only useful during a single-thread
4221 execution. Therefore, only enable this output for the AcpiExec utility.
4222 Also, only emit the thread ID when executing under AcpiExec (Context
4223 switches are still always detected and a message is emitted). ACPICA BZ
4224 972.
4225
4226 Example Code and Data Size: These are the sizes for the OS-independent
4227 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4228 debug version of the code includes the debug output trace mechanism and
4229 has a much larger code and data size.
4230
4231 Current Release:
4232 Non-Debug Version: 95.9K Code, 27.0K Data, 122.9K Total
4233 Debug Version: 185.1K Code, 77.2K Data, 262.3K Total
4234 Previous Release:
4235 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
4236 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
4237
4238
4239 2) iASL Compiler/Disassembler and Tools:
4240
4241 AcpiExec/Unix-OSL: Use <termios.h> instead of <termio.h>. This is the
4242 correct portable POSIX header for terminal control functions.
4243
4244 Disassembler: Fixed control method invocation issues related to the use
4245 of the CondRefOf() operator. The problem is seen in the disassembly where
4246 control method invocations may not be disassembled properly if the
4247 control method name has been used previously as an argument to CondRefOf.
4248 The solution is to not attempt to emit an external declaration for the
4249 CondRefOf target (it is not necessary in the first place). This prevents
4250 disassembler object type confusion. ACPICA BZ 988.
4251
4252 Unix Makefiles: Added an option to disable compiler optimizations and the
4253 _FORTIFY_SOURCE flag. Some older compilers have problems compiling ACPICA
4254 with optimizations (reportedly, gcc 4.4 for example). This change adds a
4255 command line option for make (NOOPT) that disables all compiler
4256 optimizations and the _FORTIFY_SOURCE compiler flag. The default
4257 optimization is -O2 with the _FORTIFY_SOURCE flag specified. ACPICA BZ
4258 1034. Lv Zheng, Bob Moore.
4259
4260 Tests/ASLTS: Added options to specify individual test cases and modes.
4261 This allows testers running aslts.sh to optionally specify individual
4262 test modes and test cases. Also added an option to disable the forced
4263 generation of the ACPICA tools from source if desired. Lv Zheng.
4264
4265 ----------------------------------------
4266 27 September 2013. Summary of changes for version 20130927:
4267
4268 This release is available at https://acpica.org/downloads
4269
4270
4271 1) ACPICA kernel-resident subsystem:
4272
4273 Fixed a problem with store operations to reference objects. This change
4274 fixes a problem where a Store operation to an ArgX object that contained
4275 a
4276 reference to a field object did not complete the automatic dereference
4277 and
4278 then write to the actual field object. Instead, the object type of the
4279 field object was inadvertently changed to match the type of the source
4280 operand. The new behavior will actually write to the field object (buffer
4281 field or field unit), thus matching the correct ACPI-defined behavior.
4282
4283 Implemented support to allow the host to redefine individual OSL
4284 prototypes. This change enables the host to redefine OSL prototypes found
4285 in the acpiosxf.h file. This allows the host to implement OSL interfaces
4286 with a macro or inlined function. Further, it allows the host to add any
4287 additional required modifiers such as __iomem, __init, __exit, etc., as
4288 necessary on a per-interface basis. Enables maximum flexibility for the
4289 OSL interfaces. Lv Zheng.
4290
4291 Hardcoded the access width for the FADT-defined reset register. The ACPI
4292 specification requires the reset register width to be 8 bits. ACPICA now
4293 hardcodes the width to 8 and ignores the FADT width value. This provides
4294 compatibility with other ACPI implementations that have allowed BIOS code
4295 with bad register width values to go unnoticed. Matthew Garett, Bob
4296 Moore,
4297 Lv Zheng.
4298
4299 Changed the position/use of the ACPI_PRINTF_LIKE macro. This macro is
4300 used
4301 in the OSL header (acpiosxf). The change modifies the position of this
4302 macro in each instance where it is used (AcpiDebugPrint, etc.) to avoid
4303 build issues if the OSL defines the implementation of the interface to be
4304 an inline stub function. Lv Zheng.
4305
4306 Deployed a new macro ACPI_EXPORT_SYMBOL_INIT for the main ACPICA
4307 initialization interfaces. This change adds a new macro for the main init
4308 and terminate external interfaces in order to support hosts that require
4309 additional or different processing for these functions. Changed from
4310 ACPI_EXPORT_SYMBOL to ACPI_EXPORT_SYMBOL_INIT for these functions. Lv
4311 Zheng, Bob Moore.
4312
4313 Cleaned up the memory allocation macros for configurability. In the
4314 common
4315 case, the ACPI_ALLOCATE and related macros now resolve directly to their
4316 respective AcpiOs* OSL interfaces. Two options:
4317 1) The ACPI_ALLOCATE_ZEROED macro uses a simple local implementation by
4318 default, unless overridden by the USE_NATIVE_ALLOCATE_ZEROED define.
4319 2) For AcpiExec (and for debugging), the macros can optionally be
4320 resolved
4321 to the local ACPICA interfaces that track each allocation (local tracking
4322 is used to immediately detect memory leaks).
4323 Lv Zheng.
4324
4325 Simplified the configuration for ACPI_REDUCED_HARDWARE. Allows the kernel
4326 to predefine this macro to either TRUE or FALSE during the system build.
4327
4328 Replaced __FUNCTION_ with __func__ in the gcc-specific header.
4329
4330 Example Code and Data Size: These are the sizes for the OS-independent
4331 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4332 debug version of the code includes the debug output trace mechanism and
4333 has a much larger code and data size.
4334
4335 Current Release:
4336 Non-Debug Version: 95.8K Code, 27.0K Data, 122.8K Total
4337 Debug Version: 185.2K Code, 77.2K Data, 262.4K Total
4338 Previous Release:
4339 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
4340 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
4341
4342
4343 2) iASL Compiler/Disassembler and Tools:
4344
4345 iASL: Implemented wildcard support for the -e option. This simplifies use
4346 when there are many SSDTs that must be included to resolve external
4347 method
4348 declarations. ACPICA BZ 1041. Example:
4349 iasl -e ssdt*.dat -d dsdt.dat
4350
4351 AcpiExec: Add history/line-editing for Unix/Linux systems. This change
4352 adds a portable module that implements full history and limited line
4353 editing for Unix and Linux systems. It does not use readline() due to
4354 portability issues. Instead it uses the POSIX termio interface to put the
4355 terminal in raw input mode so that the various special keys can be
4356 trapped
4357 (such as up/down-arrow for history support and left/right-arrow for line
4358 editing). Uses the existing debugger history mechanism. ACPICA BZ 1036.
4359
4360 AcpiXtract: Add support to handle (ignore) "empty" lines containing only
4361 one or more spaces. This provides compatible with early or different
4362 versions of the AcpiDump utility. ACPICA BZ 1044.
4363
4364 AcpiDump: Do not ignore tables that contain only an ACPI table header.
4365 Apparently, some BIOSs create SSDTs that contain an ACPI table header but
4366 no other data. This change adds support to dump these tables. Any tables
4367 shorter than the length of an ACPI table header remain in error (an error
4368 message is emitted). Reported by Yi Li.
4369
4370 Debugger: Echo actual command along with the "unknown command" message.
4371
4372 ----------------------------------------
4373 23 August 2013. Summary of changes for version 20130823:
4374
4375 1) ACPICA kernel-resident subsystem:
4376
4377 Implemented support for host-installed System Control Interrupt (SCI)
4378 handlers. Certain ACPI functionality requires the host to handle raw
4379 SCIs. For example, the "SCI Doorbell" that is defined for memory power
4380 state support requires the host device driver to handle SCIs to examine
4381 if the doorbell has been activated. Multiple SCI handlers can be
4382 installed to allow for future expansion. New external interfaces are
4383 AcpiInstallSciHandler, AcpiRemoveSciHandler; see the ACPICA reference for
4384 details. Lv Zheng, Bob Moore. ACPICA BZ 1032.
4385
4386 Operation region support: Never locally free the handler "context"
4387 pointer. This change removes some dangerous code that attempts to free
4388 the handler context pointer in some (rare) circumstances. The owner of
4389 the handler owns this pointer and the ACPICA code should never touch it.
4390 Although not seen to be an issue in any kernel, it did show up as a
4391 problem (fault) under AcpiExec. Also, set the internal storage field for
4392 the context pointer to zero when the region is deactivated, simply for
4393 sanity. David Box. ACPICA BZ 1039.
4394
4395 AcpiRead: On error, do not modify the return value target location. If an
4396 error happens in the middle of a split 32/32 64-bit I/O operation, do not
4397 modify the target of the return value pointer. Makes the code consistent
4398 with the rest of ACPICA. Bjorn Helgaas.
4399
4400 Example Code and Data Size: These are the sizes for the OS-independent
4401 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4402 debug version of the code includes the debug output trace mechanism and
4403 has a much larger code and data size.
4404
4405 Current Release:
4406 Non-Debug Version: 96.7K Code, 27.1K Data, 123.9K Total
4407 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
4408 Previous Release:
4409 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
4410 Debug Version: 185.4K Code, 77.1K Data, 262.5K Total
4411
4412
4413 2) iASL Compiler/Disassembler and Tools:
4414
4415 AcpiDump: Implemented several new features and fixed some problems:
4416 1) Added support to dump the RSDP, RSDT, and XSDT tables.
4417 2) Added support for multiple table instances (SSDT, UEFI).
4418 3) Added option to dump "customized" (overridden) tables (-c).
4419 4) Fixed a problem where some table filenames were improperly
4420 constructed.
4421 5) Improved some error messages, removed some unnecessary messages.
4422
4423 iASL: Implemented additional support for disassembly of ACPI tables that
4424 contain invocations of external control methods. The -fe<file> option
4425 allows the import of a file that specifies the external methods along
4426 with the required number of arguments for each -- allowing for the
4427 correct disassembly of the table. This is a workaround for a limitation
4428 of AML code where the disassembler often cannot determine the number of
4429 arguments required for an external control method and generates incorrect
4430 ASL code. See the iASL reference for details. ACPICA BZ 1030.
4431
4432 Debugger: Implemented a new command (paths) that displays the full
4433 pathnames (namepaths) and object types of all objects in the namespace.
4434 This is an alternative to the namespace command.
4435
4436 Debugger: Implemented a new command (sci) that invokes the SCI dispatch
4437 mechanism and any installed handlers.
4438
4439 iASL: Fixed a possible segfault for "too many parent prefixes" condition.
4440 This can occur if there are too many parent prefixes in a namepath (for
4441 example, ^^^^^^PCI0.ECRD). ACPICA BZ 1035.
4442
4443 Application OSLs: Set the return value for the PCI read functions. These
4444 functions simply return AE_OK, but should set the return value to zero
4445 also. This change implements this. ACPICA BZ 1038.
4446
4447 Debugger: Prevent possible command line buffer overflow. Increase the
4448 size of a couple of the debugger line buffers, and ensure that overflow
4449 cannot happen. ACPICA BZ 1037.
4450
4451 iASL: Changed to abort immediately on serious errors during the parsing
4452 phase. Due to the nature of ASL, there is no point in attempting to
4453 compile these types of errors, and they typically end up causing a
4454 cascade of hundreds of errors which obscure the original problem.
4455
4456 ----------------------------------------
4457 25 July 2013. Summary of changes for version 20130725:
4458
4459 1) ACPICA kernel-resident subsystem:
4460
4461 Fixed a problem with the DerefOf operator where references to FieldUnits
4462 and BufferFields incorrectly returned the parent object, not the actual
4463 value of the object. After this change, a dereference of a FieldUnit
4464 reference results in a read operation on the field to get the value, and
4465 likewise, the appropriate BufferField value is extracted from the target
4466 buffer.
4467
4468 Fixed a problem where the _WAK method could cause a fault under these
4469 circumstances: 1) Interpreter slack mode was not enabled, and 2) the _WAK
4470 method returned no value. The problem is rarely seen because most kernels
4471 run ACPICA in slack mode.
4472
4473 For the DerefOf operator, a fatal error now results if an attempt is made
4474 to dereference a reference (created by the Index operator) to a NULL
4475 package element. Provides compatibility with other ACPI implementations,
4476 and this behavior will be added to a future version of the ACPI
4477 specification.
4478
4479 The ACPI Power Management Timer (defined in the FADT) is now optional.
4480 This provides compatibility with other ACPI implementations and will
4481 appear in the next version of the ACPI specification. If there is no PM
4482 Timer on the platform, AcpiGetTimer returns AE_SUPPORT. An address of
4483 zero in the FADT indicates no PM timer.
4484
4485 Implemented a new interface for _OSI support, AcpiUpdateInterfaces. This
4486 allows the host to globally enable/disable all vendor strings, all
4487 feature strings, or both. Intended to be primarily used for debugging
4488 purposes only. Lv Zheng.
4489
4490 Expose the collected _OSI data to the host via a global variable. This
4491 data tracks the highest level vendor ID that has been invoked by the BIOS
4492 so that the host (and potentially ACPICA itself) can change behaviors
4493 based upon the age of the BIOS.
4494
4495 Example Code and Data Size: These are the sizes for the OS-independent
4496 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4497 debug version of the code includes the debug output trace mechanism and
4498 has a much larger code and data size.
4499
4500 Current Release:
4501 Non-Debug Version: 96.2K Code, 27.1K Data, 123.3K Total
4502 Debug Version: 184.4K Code, 76.8K Data, 261.2K Total
4503 Previous Release:
4504 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
4505 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
4506
4507
4508 2) iASL Compiler/Disassembler and Tools:
4509
4510 iASL: Created the following enhancements for the -so option (create
4511 offset table):
4512 1)Add offsets for the last nameseg in each namepath for every supported
4513 object type
4514 2)Add support for Processor, Device, Thermal Zone, and Scope objects
4515 3)Add the actual AML opcode for the parent object of every supported
4516 object type
4517 4)Add support for the ZERO/ONE/ONES AML opcodes for integer objects
4518
4519 Disassembler: Emit all unresolved external symbols in a single block.
4520 These are external references to control methods that could not be
4521 resolved, and thus, the disassembler had to make a guess at the number of
4522 arguments to parse.
4523
4524 iASL: The argument to the -T option (create table template) is now
4525 optional. If not specified, the default table is a DSDT, typically the
4526 most common case.
4527
4528 ----------------------------------------
4529 26 June 2013. Summary of changes for version 20130626:
4530
4531 1) ACPICA kernel-resident subsystem:
4532
4533 Fixed an issue with runtime repair of the _CST object. Null or invalid
4534 elements were not always removed properly. Lv Zheng.
4535
4536 Removed an arbitrary restriction of 256 GPEs per GPE block (such as the
4537 FADT-defined GPE0 and GPE1). For GPE0, GPE1, and each GPE Block Device,
4538 the maximum number of GPEs is 1016. Use of multiple GPE block devices
4539 makes the system-wide number of GPEs essentially unlimited.
4540
4541 Example Code and Data Size: These are the sizes for the OS-independent
4542 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4543 debug version of the code includes the debug output trace mechanism and
4544 has a much larger code and data size.
4545
4546 Current Release:
4547 Non-Debug Version: 95.9K Code, 26.9K Data, 122.8K Total
4548 Debug Version: 184.1K Code, 76.7K Data, 260.8K Total
4549 Previous Release:
4550 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
4551 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
4552
4553
4554 2) iASL Compiler/Disassembler and Tools:
4555
4556 Portable AcpiDump: Implemented full support for the Linux and FreeBSD
4557 hosts. Now supports Linux, FreeBSD, and Windows.
4558
4559 Disassembler: Added some missing types for the HEST and EINJ tables: "Set
4560 Error Type With Address", "CMCI", "MCE", and "Flush Cacheline".
4561
4562 iASL/Preprocessor: Implemented full support for nested
4563 #if/#else/#elif/#endif blocks. Allows arbitrary depth of nested blocks.
4564
4565 Disassembler: Expanded maximum output string length to 64K. Was 256 bytes
4566 max. The original purpose of this constraint was to limit the amount of
4567 debug output. However, the string function in question (UtPrintString) is
4568 now used for the disassembler also, where 256 bytes is insufficient.
4569 Reported by RehabMan@GitHub.
4570
4571 iASL/DataTables: Fixed some problems and issues with compilation of DMAR
4572 tables. ACPICA BZ 999. Lv Zheng.
4573
4574 iASL: Fixed a couple of error exit issues that could result in a "Could
4575 not delete <file>" message during ASL compilation.
4576
4577 AcpiDump: Allow "FADT" and "MADT" as valid table signatures, even though
4578 the actual signatures for these tables are "FACP" and "APIC",
4579 respectively.
4580
4581 AcpiDump: Added support for multiple UEFI tables. Only SSDT and UEFI
4582 tables are allowed to have multiple instances.
4583
4584 ----------------------------------------
4585 17 May 2013. Summary of changes for version 20130517:
4586
4587 1) ACPICA kernel-resident subsystem:
4588
4589 Fixed a regression introduced in version 20130328 for _INI methods. This
4590 change fixes a problem introduced in 20130328 where _INI methods are no
4591 longer executed properly because of a memory block that was not
4592 initialized correctly. ACPICA BZ 1016. Tomasz Nowicki
4593 <tomasz.nowicki (a] linaro.org>.
4594
4595 Fixed a possible problem with the new extended sleep registers in the
4596 ACPI
4597 5.0 FADT. Do not use these registers (even if populated) unless the HW-
4598 reduced bit is set in the FADT (as per the ACPI specification). ACPICA BZ
4599 1020. Lv Zheng.
4600
4601 Implemented return value repair code for _CST predefined objects: Sort
4602 the
4603 list and detect/remove invalid entries. ACPICA BZ 890. Lv Zheng.
4604
4605 Implemented a debug-only option to disable loading of SSDTs from the
4606 RSDT/XSDT during ACPICA initialization. This can be useful for debugging
4607 ACPI problems on some machines. Set AcpiGbl_DisableSsdtTableLoad in
4608 acglobal.h - ACPICA BZ 1005. Lv Zheng.
4609
4610 Fixed some issues in the ACPICA initialization and termination code:
4611 Tomasz Nowicki <tomasz.nowicki (a] linaro.org>
4612 1) Clear events initialized flag upon event component termination. ACPICA
4613 BZ 1013.
4614 2) Fixed a possible memory leak in GPE init error path. ACPICA BZ 1018.
4615 3) Delete global lock pending lock during termination. ACPICA BZ 1012.
4616 4) Clear debug buffer global on termination to prevent possible multiple
4617 delete. ACPICA BZ 1010.
4618
4619 Standardized all switch() blocks across the entire source base. After
4620 many
4621 years, different formatting for switch() had crept in. This change makes
4622 the formatting of every switch block identical. ACPICA BZ 997. Chao Guan.
4623
4624 Split some files to enhance ACPICA modularity and configurability:
4625 1) Split buffer dump routines into utilities/utbuffer.c
4626 2) Split internal error message routines into utilities/uterror.c
4627 3) Split table print utilities into tables/tbprint.c
4628 4) Split iASL command-line option processing into asloptions.c
4629
4630 Makefile enhancements:
4631 1) Support for all new files above.
4632 2) Abort make on errors from any subcomponent. Chao Guan.
4633 3) Add build support for Apple Mac OS X. Liang Qi.
4634
4635 Example Code and Data Size: These are the sizes for the OS-independent
4636 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4637 debug version of the code includes the debug output trace mechanism and
4638 has a much larger code and data size.
4639
4640 Current Release:
4641 Non-Debug Version: 96.0K Code, 27.0K Data, 123.0K Total
4642 Debug Version: 184.1K Code, 76.8K Data, 260.9K Total
4643 Previous Release:
4644 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
4645 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
4646
4647
4648 2) iASL Compiler/Disassembler and Tools:
4649
4650 New utility: Implemented an easily portable version of the acpidump
4651 utility to extract ACPI tables from the system (or a file) in an ASCII
4652 hex
4653 dump format. The top-level code implements the various command line
4654 options, file I/O, and table dump routines. To port to a new host, only
4655 three functions need to be implemented to get tables -- since this
4656 functionality is OS-dependent. See the tools/acpidump/apmain.c module and
4657 the ACPICA reference for porting instructions. ACPICA BZ 859. Notes:
4658 1) The Windows version obtains the ACPI tables from the Registry.
4659 2) The Linux version is under development.
4660 3) Other hosts - If an OS-dependent module is submitted, it will be
4661 distributed with ACPICA.
4662
4663 iASL: Fixed a regression for -D preprocessor option (define symbol). A
4664 restructuring/change to the initialization sequence caused this option to
4665 no longer work properly.
4666
4667 iASL: Implemented a mechanism to disable specific warnings and remarks.
4668 Adds a new command line option, "-vw <messageid> as well as "#pragma
4669 disable <messageid>". ACPICA BZ 989. Chao Guan, Bob Moore.
4670
4671 iASL: Fix for too-strict package object validation. The package object
4672 validation for return values from the predefined names is a bit too
4673 strict, it does not allow names references within the package (which will
4674 be resolved at runtime.) These types of references cannot be validated at
4675 compile time. This change ignores named references within package objects
4676 for names that return or define static packages.
4677
4678 Debugger: Fixed the 80-character command line limitation for the History
4679 command. Now allows lines of arbitrary length. ACPICA BZ 1000. Chao Guan.
4680
4681 iASL: Added control method and package support for the -so option
4682 (generates AML offset table for BIOS support.)
4683
4684 iASL: issue a remark if a non-serialized method creates named objects. If
4685 a thread blocks within the method for any reason, and another thread
4686 enters the method, the method will fail because an attempt will be made
4687 to
4688 create the same (named) object twice. In this case, issue a remark that
4689 the method should be marked serialized. NOTE: may become a warning later.
4690 ACPICA BZ 909.
4691
4692 ----------------------------------------
4693 18 April 2013. Summary of changes for version 20130418:
4694
4695 1) ACPICA kernel-resident subsystem:
4696
4697 Fixed a possible buffer overrun during some rare but specific field unit
4698 read operations. This overrun can only happen if the DSDT version is 1 --
4699 meaning that all AML integers are 32 bits -- and the field length is
4700 between 33 and 55 bits long. During the read, an internal buffer object
4701 is
4702 created for the field unit because the field is larger than an integer
4703 (32
4704 bits). However, in this case, the buffer will be incorrectly written
4705 beyond the end because the buffer length is less than the internal
4706 minimum
4707 of 64 bits (8 bytes) long. The buffer will be either 5, 6, or 7 bytes
4708 long, but a full 8 bytes will be written.
4709
4710 Updated the Embedded Controller "orphan" _REG method support. This refers
4711 to _REG methods under the EC device that have no corresponding operation
4712 region. This is allowed by the ACPI specification. This update removes a
4713 dependency on the existence an ECDT table. It will execute an orphan _REG
4714 method as long as the operation region handler for the EC is installed at
4715 the EC device node and not the namespace root. Rui Zhang (original
4716 update), Bob Moore (update/integrate).
4717
4718 Implemented run-time argument typechecking for all predefined ACPI names
4719 (_STA, _BIF, etc.) This change performs object typechecking on all
4720 incoming arguments for all predefined names executed via
4721 AcpiEvaluateObject. This ensures that ACPI-related device drivers are
4722 passing correct object types as well as the correct number of arguments
4723 (therefore identifying any issues immediately). Also, the ASL/namespace
4724 definition of the predefined name is checked against the ACPI
4725 specification for the proper argument count. Adds one new file,
4726 nsarguments.c
4727
4728 Changed an exception code for the ASL UnLoad() operator. Changed the
4729 exception code for the case where the input DdbHandle is invalid, from
4730 AE_BAD_PARAMETER to the more appropriate AE_AML_OPERAND_TYPE.
4731
4732 Unix/Linux makefiles: Removed the use of the -O2 optimization flag in the
4733 global makefile. The use of this flag causes compiler errors on earlier
4734 versions of GCC, so it has been removed for compatibility.
4735
4736 Miscellaneous cleanup:
4737 1) Removed some unused/obsolete macros
4738 2) Fixed a possible memory leak in the _OSI support
4739 3) Removed an unused variable in the predefined name support
4740 4) Windows OSL: remove obsolete reference to a memory list field
4741
4742 Example Code and Data Size: These are the sizes for the OS-independent
4743 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4744 debug version of the code includes the debug output trace mechanism and
4745 has a much larger code and data size.
4746
4747 Current Release:
4748 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
4749 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
4750 Previous Release:
4751 Non-Debug Version: 95.6K Code, 26.8K Data, 122.4K Total
4752 Debug Version: 183.5K Code, 76.6K Data, 260.1K Total
4753
4754
4755 2) iASL Compiler/Disassembler and Tools:
4756
4757 AcpiExec: Added installation of a handler for the SystemCMOS address
4758 space. This prevents control method abort if a method accesses this
4759 space.
4760
4761 AcpiExec: Added support for multiple EC devices, and now install EC
4762 operation region handler(s) at the actual EC device instead of the
4763 namespace root. This reflects the typical behavior of host operating
4764 systems.
4765
4766 AcpiExec: Updated to ensure that all operation region handlers are
4767 installed before the _REG methods are executed. This prevents a _REG
4768 method from aborting if it accesses an address space has no handler.
4769 AcpiExec installs a handler for every possible address space.
4770
4771 Debugger: Enhanced the "handlers" command to display non-root handlers.
4772 This change enhances the handlers command to display handlers associated
4773 with individual devices throughout the namespace, in addition to the
4774 currently supported display of handlers associated with the root
4775 namespace
4776 node.
4777
4778 ASL Test Suite: Several test suite errors have been identified and
4779 resolved, reducing the total error count during execution. Chao Guan.
4780
4781 ----------------------------------------
4782 28 March 2013. Summary of changes for version 20130328:
4783
4784 1) ACPICA kernel-resident subsystem:
4785
4786 Fixed several possible race conditions with the internal object reference
4787 counting mechanism. Some of the external ACPICA interfaces update object
4788 reference counts without holding the interpreter or namespace lock. This
4789 change adds a spinlock to protect reference count updates on the internal
4790 ACPICA objects. Reported by and with assistance from Andriy Gapon
4791 (avg (a] FreeBSD.org).
4792
4793 FADT support: Removed an extraneous warning for very large GPE register
4794 sets. This change removes a size mismatch warning if the legacy length
4795 field for a GPE register set is larger than the 64-bit GAS structure can
4796 accommodate. GPE register sets can be larger than the 255-bit width
4797 limitation of the GAS structure. Linn Crosetto (linn (a] hp.com).
4798
4799 _OSI Support: handle any errors from AcpiOsAcquireMutex. Check for error
4800 return from this interface. Handles a possible timeout case if
4801 ACPI_WAIT_FOREVER is modified by the host to be a value less than
4802 "forever". Jung-uk Kim.
4803
4804 Predefined name support: Add allowed/required argument type information
4805 to
4806 the master predefined info table. This change adds the infrastructure to
4807 enable typechecking on incoming arguments for all predefined
4808 methods/objects. It does not actually contain the code that will fully
4809 utilize this information, this is still under development. Also condenses
4810 some duplicate code for the predefined names into a new module,
4811 utilities/utpredef.c
4812
4813 Example Code and Data Size: These are the sizes for the OS-independent
4814 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4815 debug version of the code includes the debug output trace mechanism and
4816 has a much larger code and data size.
4817
4818 Previous Release:
4819 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
4820 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
4821 Current Release:
4822 Non-Debug Version: 95.2K Code, 26.4K Data, 121.6K Total
4823 Debug Version: 183.0K Code, 76.0K Data, 259.0K Total
4824
4825
4826 2) iASL Compiler/Disassembler and Tools:
4827
4828 iASL: Implemented a new option to simplify the development of ACPI-
4829 related
4830 BIOS code. Adds support for a new "offset table" output file. The -so
4831 option will create a C table containing the AML table offsets of various
4832 named objects in the namespace so that BIOS code can modify them easily
4833 at
4834 boot time. This can simplify BIOS runtime code by eliminating expensive
4835 searches for "magic values", enhancing boot times and adding greater
4836 reliability. With assistance from Lee Hamel.
4837
4838 iASL: Allow additional predefined names to return zero-length packages.
4839 Now, all predefined names that are defined by the ACPI specification to
4840 return a "variable-length package of packages" are allowed to return a
4841 zero length top-level package. This allows the BIOS to tell the host that
4842 the requested feature is not supported, and supports existing BIOS/ASL
4843 code and practices.
4844
4845 iASL: Changed the "result not used" warning to an error. This is the case
4846 where an ASL operator is effectively a NOOP because the result of the
4847 operation is not stored anywhere. For example:
4848 Add (4, Local0)
4849 There is no target (missing 3rd argument), nor is the function return
4850 value used. This is potentially a very serious problem -- since the code
4851 was probably intended to do something, but for whatever reason, the value
4852 was not stored. Therefore, this issue has been upgraded from a warning to
4853 an error.
4854
4855 AcpiHelp: Added allowable/required argument types to the predefined names
4856 info display. This feature utilizes the recent update to the predefined
4857 names table (above).
4858
4859 ----------------------------------------
4860 14 February 2013. Summary of changes for version 20130214:
4861
4862 1) ACPICA Kernel-resident Subsystem:
4863
4864 Fixed a possible regression on some hosts: Reinstated the safe return
4865 macros (return_ACPI_STATUS, etc.) that ensure that the argument is
4866 evaluated only once. Although these macros are not needed for the ACPICA
4867 code itself, they are often used by ACPI-related host device drivers
4868 where
4869 the safe feature may be necessary.
4870
4871 Fixed several issues related to the ACPI 5.0 reduced hardware support
4872 (SOC): Now ensure that if the platform declares itself as hardware-
4873 reduced
4874 via the FADT, the following functions become NOOPs (and always return
4875 AE_OK) because ACPI is always enabled by definition on these machines:
4876 AcpiEnable
4877 AcpiDisable
4878 AcpiHwGetMode
4879 AcpiHwSetMode
4880
4881 Dynamic Object Repair: Implemented additional runtime repairs for
4882 predefined name return values. Both of these repairs can simplify code in
4883 the related device drivers that invoke these methods:
4884 1) For the _STR and _MLS names, automatically repair/convert an ASCII
4885 string to a Unicode buffer.
4886 2) For the _CRS, _PRS, and _DMA names, return a resource descriptor with
4887 a
4888 lone end tag descriptor in the following cases: A Return(0) was executed,
4889 a null buffer was returned, or no object at all was returned (non-slack
4890 mode only). Adds a new file, nsconvert.c
4891 ACPICA BZ 998. Bob Moore, Lv Zheng.
4892
4893 Resource Manager: Added additional code to prevent possible infinite
4894 loops
4895 while traversing corrupted or ill-formed resource template buffers. Check
4896 for zero-length resource descriptors in all code that loops through
4897 resource templates (the length field is used to index through the
4898 template). This change also hardens the external AcpiWalkResources and
4899 AcpiWalkResourceBuffer interfaces.
4900
4901 Local Cache Manager: Enhanced the main data structure to eliminate an
4902 unnecessary mechanism to access the next object in the list. Actually
4903 provides a small performance enhancement for hosts that use the local
4904 ACPICA cache manager. Jung-uk Kim.
4905
4906 Example Code and Data Size: These are the sizes for the OS-independent
4907 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4908 debug version of the code includes the debug output trace mechanism and
4909 has a much larger code and data size.
4910
4911 Previous Release:
4912 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
4913 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
4914 Current Release:
4915 Non-Debug Version: 95.0K Code, 25.9K Data, 120.9K Total
4916 Debug Version: 182.9K Code, 75.6K Data, 258.5K Total
4917
4918
4919 2) iASL Compiler/Disassembler and Tools:
4920
4921 iASL/Disassembler: Fixed several issues with the definition of the ACPI
4922 5.0 RASF table (RAS Feature Table). This change incorporates late changes
4923 that were made to the ACPI 5.0 specification.
4924
4925 iASL/Disassembler: Added full support for the following new ACPI tables:
4926 1) The MTMR table (MID Timer Table)
4927 2) The VRTC table (Virtual Real Time Clock Table).
4928 Includes header file, disassembler, table compiler, and template support
4929 for both tables.
4930
4931 iASL: Implemented compile-time validation of package objects returned by
4932 predefined names. This new feature validates static package objects
4933 returned by the various predefined names defined to return packages. Both
4934 object types and package lengths are validated, for both parent packages
4935 and sub-packages, if any. The code is similar in structure and behavior
4936 to
4937 the runtime repair mechanism within the AML interpreter and uses the
4938 existing predefined name information table. Adds a new file, aslprepkg.c.
4939 ACPICA BZ 938.
4940
4941 iASL: Implemented auto-detection of binary ACPI tables for disassembly.
4942 This feature detects a binary file with a valid ACPI table header and
4943 invokes the disassembler automatically. Eliminates the need to
4944 specifically invoke the disassembler with the -d option. ACPICA BZ 862.
4945
4946 iASL/Disassembler: Added several warnings for the case where there are
4947 unresolved control methods during the disassembly. This can potentially
4948 cause errors when the output file is compiled, because the disassembler
4949 assumes zero method arguments in these cases (it cannot determine the
4950 actual number of arguments without resolution/definition of the method).
4951
4952 Debugger: Added support to display all resources with a single command.
4953 Invocation of the resources command with no arguments will now display
4954 all
4955 resources within the current namespace.
4956
4957 AcpiHelp: Added descriptive text for each ACPICA exception code displayed
4958 via the -e option.
4959
4960 ----------------------------------------
4961 17 January 2013. Summary of changes for version 20130117:
4962
4963 1) ACPICA Kernel-resident Subsystem:
4964
4965 Updated the AcpiGetSleepTypeData interface: Allow the \_Sx methods to
4966 return either 1 or 2 integers. Although the ACPI spec defines the \_Sx
4967 objects to return a package containing one integer, most BIOS code
4968 returns
4969 two integers and the previous code reflects that. However, we also need
4970 to
4971 support BIOS code that actually implements to the ACPI spec, and this
4972 change reflects this.
4973
4974 Fixed two issues with the ACPI_DEBUG_PRINT macros:
4975 1) Added the ACPI_DO_WHILE macro to the main DEBUG_PRINT helper macro for
4976 C compilers that require this support.
4977 2) Renamed the internal ACPI_DEBUG macro to ACPI_DO_DEBUG_PRINT since
4978 ACPI_DEBUG is already used by many of the various hosts.
4979
4980 Updated all ACPICA copyrights and signons to 2013. Added the 2013
4981 copyright to all module headers and signons, including the standard Linux
4982 header. This affects virtually every file in the ACPICA core subsystem,
4983 iASL compiler, all ACPICA utilities, and the test suites.
4984
4985 Example Code and Data Size: These are the sizes for the OS-independent
4986 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
4987 debug version of the code includes the debug output trace mechanism and
4988 has a much larger code and data size.
4989
4990 Previous Release:
4991 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
4992 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
4993 Current Release:
4994 Non-Debug Version: 94.5K Code, 25.4K Data, 119.9K Total
4995 Debug Version: 182.3K Code, 75.0K Data, 257.3K Total
4996
4997
4998 2) iASL Compiler/Disassembler and Tools:
4999
5000 Generic Unix OSL: Use a buffer to eliminate multiple vfprintf()s and
5001 prevent a possible fault on some hosts. Some C libraries modify the arg
5002 pointer parameter to vfprintf making it difficult to call it twice in the
5003 AcpiOsVprintf function. Use a local buffer to workaround this issue. This
5004 does not affect the Windows OSL since the Win C library does not modify
5005 the arg pointer. Chao Guan, Bob Moore.
5006
5007 iASL: Fixed a possible infinite loop when the maximum error count is
5008 reached. If an output file other than the .AML file is specified (such as
5009 a listing file), and the maximum number of errors is reached, do not
5010 attempt to flush data to the output file(s) as the compiler is aborting.
5011 This can cause an infinite loop as the max error count code essentially
5012 keeps calling itself.
5013
5014 iASL/Disassembler: Added an option (-in) to ignore NOOP
5015 opcodes/operators.
5016 Implemented for both the compiler and the disassembler. Often, the NOOP
5017 opcode is used as padding for packages that are changed dynamically by
5018 the
5019 BIOS. When disassembled and recompiled, these NOOPs will cause syntax
5020 errors. This option causes the disassembler to ignore all NOOP opcodes
5021 (0xA3), and it also causes the compiler to ignore all ASL source code
5022 NOOP
5023 statements as well.
5024
5025 Debugger: Enhanced the Sleep command to execute all sleep states. This
5026 change allows Sleep to be invoked with no arguments and causes the
5027 debugger to execute all of the sleep states, 0-5, automatically.
5028
5029 ----------------------------------------
5030 20 December 2012. Summary of changes for version 20121220:
5031
5032 1) ACPICA Kernel-resident Subsystem:
5033
5034 Implemented a new interface, AcpiWalkResourceBuffer. This interface is an
5035 alternate entry point for AcpiWalkResources and improves the usability of
5036 the resource manager by accepting as input a buffer containing the output
5037 of either a _CRS, _PRS, or _AEI method. The key functionality is that the
5038 input buffer is not deleted by this interface so that it can be used by
5039 the host later. See the ACPICA reference for details.
5040
5041 Interpreter: Add a warning if a 64-bit constant appears in a 32-bit table
5042 (DSDT version < 2). The constant will be truncated and this warning
5043 reflects that behavior.
5044
5045 Resource Manager: Add support for the new ACPI 5.0 wake bit in the IRQ,
5046 ExtendedInterrupt, and GpioInt descriptors. This change adds support to
5047 both get and set the new wake bit in these descriptors, separately from
5048 the existing share bit. Reported by Aaron Lu.
5049
5050 Interpreter: Fix Store() when an implicit conversion is not possible. For
5051 example, in the cases such as a store of a string to an existing package
5052 object, implement the store as a CopyObject(). This is a small departure
5053 from the ACPI specification which states that the control method should
5054 be
5055 aborted in this case. However, the ASLTS suite depends on this behavior.
5056
5057 Performance improvement for the various FUNCTION_TRACE and DEBUG_PRINT
5058 macros: check if debug output is currently enabled as soon as possible to
5059 minimize performance impact if debug is in fact not enabled.
5060
5061 Source code restructuring: Cleanup to improve modularity. The following
5062 new files have been added: dbconvert.c, evhandler.c, nsprepkg.c,
5063 psopinfo.c, psobject.c, rsdumpinfo.c, utstring.c, and utownerid.c.
5064 Associated makefiles and project files have been updated.
5065
5066 Changed an exception code for LoadTable operator. For the case where one
5067 of the input strings is too long, change the returned exception code from
5068 AE_BAD_PARAMETER to AE_AML_STRING_LIMIT.
5069
5070 Fixed a possible memory leak in dispatcher error path. On error, delete
5071 the mutex object created during method mutex creation. Reported by
5072 tim.gardner (a] canonical.com.
5073
5074 Example Code and Data Size: These are the sizes for the OS-independent
5075 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5076 debug version of the code includes the debug output trace mechanism and
5077 has a much larger code and data size.
5078
5079 Previous Release:
5080 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
5081 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5082 Current Release:
5083 Non-Debug Version: 94.5K Code, 25.5K Data, 120.0K Total
5084 Debug Version: 182.2K Code, 74.9K Data, 257.1K Total
5085
5086
5087 2) iASL Compiler/Disassembler and Tools:
5088
5089 iASL: Disallow a method call as argument to the ObjectType ASL operator.
5090 This change tracks an errata to the ACPI 5.0 document. The AML grammar
5091 will not allow the interpreter to differentiate between a method and a
5092 method invocation when these are used as an argument to the ObjectType
5093 operator. The ACPI specification change is to disallow a method
5094 invocation
5095 (UserTerm) for the ObjectType operator.
5096
5097 Finish support for the TPM2 and CSRT tables in the headers, table
5098 compiler, and disassembler.
5099
5100 Unix user-space OSL: Fix a problem with WaitSemaphore where the timeout
5101 always expires immediately if the semaphore is not available. The
5102 original
5103 code was using a relative-time timeout, but sem_timedwait requires the
5104 use
5105 of an absolute time.
5106
5107 iASL: Added a remark if the Timer() operator is used within a 32-bit
5108 table. This operator returns a 64-bit time value that will be truncated
5109 within a 32-bit table.
5110
5111 iASL Source code restructuring: Cleanup to improve modularity. The
5112 following new files have been added: aslhex.c, aslxref.c, aslnamesp.c,
5113 aslmethod.c, and aslfileio.c. Associated makefiles and project files have
5114 been updated.
5115
5116
5117 ----------------------------------------
5118 14 November 2012. Summary of changes for version 20121114:
5119
5120 1) ACPICA Kernel-resident Subsystem:
5121
5122 Implemented a performance enhancement for ACPI/AML Package objects. This
5123 change greatly increases the performance of Package objects within the
5124 interpreter. It changes the processing of reference counts for packages
5125 by
5126 optimizing for the most common case where the package sub-objects are
5127 either Integers, Strings, or Buffers. Increases the overall performance
5128 of
5129 the ASLTS test suite by 1.5X (Increases the Slack Mode performance by
5130 2X.)
5131 Chao Guan. ACPICA BZ 943.
5132
5133 Implemented and deployed common macros to extract flag bits from resource
5134 descriptors. Improves readability and maintainability of the code. Fixes
5135 a
5136 problem with the UART serial bus descriptor for the number of data bits
5137 flags (was incorrectly 2 bits, should be 3).
5138
5139 Enhanced the ACPI_GETx and ACPI_SETx macros. Improved the implementation
5140 of the macros and changed the SETx macros to the style of (destination,
5141 source). Also added ACPI_CASTx companion macros. Lv Zheng.
5142
5143 Example Code and Data Size: These are the sizes for the OS-independent
5144 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5145 debug version of the code includes the debug output trace mechanism and
5146 has a much larger code and data size.
5147
5148 Previous Release:
5149 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
5150 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5151 Current Release:
5152 Non-Debug Version: 94.3K Code, 25.3K Data, 119.6K Total
5153 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5154
5155
5156 2) iASL Compiler/Disassembler and Tools:
5157
5158 Disassembler: Added the new ACPI 5.0 interrupt sharing flags. This change
5159 adds the ShareAndWake and ExclusiveAndWake flags which were added to the
5160 Irq, Interrupt, and Gpio resource descriptors in ACPI 5.0. ACPICA BZ 986.
5161
5162 Disassembler: Fixed a problem with external declaration generation. Fixes
5163 a problem where an incorrect pathname could be generated for an external
5164 declaration if the original reference to the object includes leading
5165 carats (^). ACPICA BZ 984.
5166
5167 Debugger: Completed a major update for the Disassemble<method> command.
5168 This command was out-of-date and did not properly disassemble control
5169 methods that had any reasonable complexity. This fix brings the command
5170 up
5171 to the same level as the rest of the disassembler. Adds one new file,
5172 dmdeferred.c, which is existing code that is now common with the main
5173 disassembler and the debugger disassemble command. ACPICA MZ 978.
5174
5175 iASL: Moved the parser entry prototype to avoid a duplicate declaration.
5176 Newer versions of Bison emit this prototype, so moved the prototype out
5177 of
5178 the iASL header to where it is actually used in order to avoid a
5179 duplicate
5180 declaration.
5181
5182 iASL/Tools: Standardized use of the stream I/O functions:
5183 1) Ensure check for I/O error after every fopen/fread/fwrite
5184 2) Ensure proper order of size/count arguments for fread/fwrite
5185 3) Use test of (Actual != Requested) after all fwrite, and most fread
5186 4) Standardize I/O error messages
5187 Improves reliability and maintainability of the code. Bob Moore, Lv
5188 Zheng.
5189 ACPICA BZ 981.
5190
5191 Disassembler: Prevent duplicate External() statements. During generation
5192 of external statements, detect similar pathnames that are actually
5193 duplicates such as these:
5194 External (\ABCD)
5195 External (ABCD)
5196 Remove all leading '\' characters from pathnames during the external
5197 statement generation so that duplicates will be detected and tossed.
5198 ACPICA BZ 985.
5199
5200 Tools: Replace low-level I/O with stream I/O functions. Replace
5201 open/read/write/close with the stream I/O equivalents
5202 fopen/fread/fwrite/fclose for portability and performance. Lv Zheng, Bob
5203 Moore.
5204
5205 AcpiBin: Fix for the dump-to-hex function. Now correctly output the table
5206 name header so that AcpiXtract recognizes the output file/table.
5207
5208 iASL: Remove obsolete -2 option flag. Originally intended to force the
5209 compiler/disassembler into an ACPI 2.0 mode, this was never implemented
5210 and the entire concept is now obsolete.
5211
5212 ----------------------------------------
5213 18 October 2012. Summary of changes for version 20121018:
5214
5215
5216 1) ACPICA Kernel-resident Subsystem:
5217
5218 Updated support for the ACPI 5.0 MPST table. Fixes some problems
5219 introduced by late changes to the table as it was added to the ACPI 5.0
5220 specification. Includes header, disassembler, and data table compiler
5221 support as well as a new version of the MPST template.
5222
5223 AcpiGetObjectInfo: Enhanced the device object support to include the ACPI
5224 5.0 _SUB method. Now calls _SUB in addition to the other PNP-related ID
5225 methods: _HID, _CID, and _UID.
5226
5227 Changed ACPI_DEVICE_ID to ACPI_PNP_DEVICE_ID. Also changed
5228 ACPI_DEVICE_ID_LIST to ACPI_PNP_DEVICE_ID_LIST. These changes prevent
5229 name collisions on hosts that reserve the *_DEVICE_ID (or *DeviceId)
5230 names for their various drivers. Affects the AcpiGetObjectInfo external
5231 interface, and other internal interfaces as well.
5232
5233 Added and deployed a new macro for ACPI_NAME management: ACPI_MOVE_NAME.
5234 This macro resolves to a simple 32-bit move of the 4-character ACPI_NAME
5235 on machines that support non-aligned transfers. Optimizes for this case
5236 rather than using a strncpy. With assistance from Zheng Lv.
5237
5238 Resource Manager: Small fix for buffer size calculation. Fixed a one byte
5239 error in the output buffer calculation. Feng Tang. ACPICA BZ 849.
5240
5241 Added a new debug print message for AML mutex objects that are force-
5242 released. At control method termination, any currently acquired mutex
5243 objects are force-released. Adds a new debug-only message for each one
5244 that is released.
5245
5246 Audited/updated all ACPICA return macros and the function debug depth
5247 counter: 1) Ensure that all functions that use the various TRACE macros
5248 also use the appropriate ACPICA return macros. 2) Ensure that all normal
5249 return statements surround the return expression (value) with parens to
5250 ensure consistency across the ACPICA code base. Guan Chao, Tang Feng,
5251 Zheng Lv, Bob Moore. ACPICA Bugzilla 972.
5252
5253 Global source code changes/maintenance: All extra lines at the start and
5254 end of each source file have been removed for consistency. Also, within
5255 comments, all new sentences start with a single space instead of a double
5256 space, again for consistency across the code base.
5257
5258 Example Code and Data Size: These are the sizes for the OS-independent
5259 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5260 debug version of the code includes the debug output trace mechanism and
5261 has a much larger code and data size.
5262
5263 Previous Release:
5264 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
5265 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
5266 Current Release:
5267 Non-Debug Version: 93.9K Code, 25.2K Data, 119.1K Total
5268 Debug Version: 175.5K Code, 74.5K Data, 250.0K Total
5269
5270
5271 2) iASL Compiler/Disassembler and Tools:
5272
5273 AcpiExec: Improved the algorithm used for memory leak/corruption
5274 detection. Added some intelligence to the code that maintains the global
5275 list of allocated memory. The list is now ordered by allocated memory
5276 address, significantly improving performance. When running AcpiExec on
5277 the ASLTS test suite, speed improvements of 3X to 5X are seen, depending
5278 on the platform and/or the environment. Note, this performance
5279 enhancement affects the AcpiExec utility only, not the kernel-resident
5280 ACPICA code.
5281
5282 Enhanced error reporting for invalid AML opcodes and bad ACPI_NAMEs. For
5283 the disassembler, dump the 48 bytes surrounding the invalid opcode. Fix
5284 incorrect table offset reported for invalid opcodes. Report the original
5285 32-bit value for bad ACPI_NAMEs (as well as the repaired name.)
5286
5287 Disassembler: Enhanced the -vt option to emit the binary table data in
5288 hex format to assist with debugging.
5289
5290 Fixed a potential filename buffer overflow in osunixdir.c. Increased the
5291 size of file structure. Colin Ian King.
5292
5293 ----------------------------------------
5294 13 September 2012. Summary of changes for version 20120913:
5295
5296
5297 1) ACPICA Kernel-resident Subsystem:
5298
5299 ACPI 5.0: Added two new notify types for the Hardware Error Notification
5300 Structure within the Hardware Error Source Table (HEST) table -- CMCI(5)
5301 and
5302 MCE(6).
5303
5304 Table Manager: Merged/removed duplicate code in the root table resize
5305 functions. One function is external, the other is internal. Lv Zheng,
5306 ACPICA
5307 BZ 846.
5308
5309 Makefiles: Completely removed the obsolete "Linux" makefiles under
5310 acpica/generate/linux. These makefiles are obsolete and have been
5311 replaced
5312 by
5313 the generic unix makefiles under acpica/generate/unix.
5314
5315 Makefiles: Ensure that binary files always copied properly. Minor rule
5316 change
5317 to ensure that the final binary output files are always copied up to the
5318 appropriate binary directory (bin32 or bin64.)
5319
5320 Example Code and Data Size: These are the sizes for the OS-independent
5321 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5322 debug
5323 version of the code includes the debug output trace mechanism and has a
5324 much
5325 larger code and data size.
5326
5327 Previous Release:
5328 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
5329 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
5330 Current Release:
5331 Non-Debug Version: 93.7K Code, 25.3K Data, 119.0K Total
5332 Debug Version: 175.0K Code, 74.4K Data, 249.4K Total
5333
5334
5335 2) iASL Compiler/Disassembler and Tools:
5336
5337 Disassembler: Fixed a possible fault during the disassembly of resource
5338 descriptors when a second parse is required because of the invocation of
5339 external control methods within the table. With assistance from
5340 adq (a] lidskialf.net. ACPICA BZ 976.
5341
5342 iASL: Fixed a namepath optimization problem. An error can occur if the
5343 parse
5344 node that contains the namepath to be optimized does not have a parent
5345 node
5346 that is a named object. This change fixes the problem.
5347
5348 iASL: Fixed a regression where the AML file is not deleted on errors. The
5349 AML
5350 output file should be deleted if there are any errors during the
5351 compiler.
5352 The
5353 only exception is if the -f (force output) option is used. ACPICA BZ 974.
5354
5355 iASL: Added a feature to automatically increase internal line buffer
5356 sizes.
5357 Via realloc(), automatically increase the internal line buffer sizes as
5358 necessary to support very long source code lines. The current version of
5359 the
5360 preprocessor requires a buffer long enough to contain full source code
5361 lines.
5362 This change increases the line buffer(s) if the input lines go beyond the
5363 current buffer size. This eliminates errors that occurred when a source
5364 code
5365 line was longer than the buffer.
5366
5367 iASL: Fixed a problem with constant folding in method declarations. The
5368 SyncLevel term is a ByteConstExpr, and incorrect code would be generated
5369 if a
5370 Type3 opcode was used.
5371
5372 Debugger: Improved command help support. For incorrect argument count,
5373 display
5374 full help for the command. For help command itself, allow an argument to
5375 specify a command.
5376
5377 Test Suites: Several bug fixes for the ASLTS suite reduces the number of
5378 errors during execution of the suite. Guan Chao.
5379
5380 ----------------------------------------
5381 16 August 2012. Summary of changes for version 20120816:
5382
5383
5384 1) ACPICA Kernel-resident Subsystem:
5385
5386 Removed all use of the deprecated _GTS and _BFS predefined methods. The
5387 _GTS
5388 (Going To Sleep) and _BFS (Back From Sleep) methods are essentially
5389 deprecated and will probably be removed from the ACPI specification.
5390 Windows
5391 does not invoke them, and reportedly never will. The final nail in the
5392 coffin
5393 is that the ACPI specification states that these methods must be run with
5394 interrupts off, which is not going to happen in a kernel interpreter.
5395 Note:
5396 Linux has removed all use of the methods also. It was discovered that
5397 invoking these functions caused failures on some machines, probably
5398 because
5399 they were never tested since Windows does not call them. Affects two
5400 external
5401 interfaces, AcpiEnterSleepState and AcpiLeaveSleepStatePrep. Tang Feng.
5402 ACPICA BZ 969.
5403
5404 Implemented support for complex bit-packed buffers returned from the _PLD
5405 (Physical Location of Device) predefined method. Adds a new external
5406 interface, AcpiDecodePldBuffer that parses the buffer into a more usable
5407 C
5408 structure. Note: C Bitfields cannot be used for this type of predefined
5409 structure since the memory layout of individual bitfields is not defined
5410 by
5411 the C language. In addition, there are endian concerns where a compiler
5412 will
5413 change the bitfield ordering based on the machine type. The new ACPICA
5414 interface eliminates these issues, and should be called after _PLD is
5415 executed. ACPICA BZ 954.
5416
5417 Implemented a change to allow a scope change to root (via "Scope (\)")
5418 during
5419 execution of module-level ASL code (code that is executed at table load
5420 time.) Lin Ming.
5421
5422 Added the Windows8/Server2012 string for the _OSI method. This change
5423 adds
5424 a
5425 new _OSI string, "Windows 2012" for both Windows 8 and Windows Server
5426 2012.
5427
5428 Added header support for the new ACPI tables DBG2 (Debug Port Table Type
5429 2)
5430 and CSRT (Core System Resource Table).
5431
5432 Added struct header support for the _FDE, _GRT, _GTM, and _SRT predefined
5433 names. This simplifies access to the buffers returned by these predefined
5434 names. Adds a new file, include/acbuffer.h. ACPICA BZ 956.
5435
5436 GPE support: Removed an extraneous parameter from the various low-level
5437 internal GPE functions. Tang Feng.
5438
5439 Removed the linux makefiles from the unix packages. The generate/linux
5440 makefiles are obsolete and have been removed from the unix tarball
5441 release
5442 packages. The replacement makefiles are under generate/unix, and there is
5443 a
5444 top-level makefile under the main acpica directory. ACPICA BZ 967, 912.
5445
5446 Updates for Unix makefiles:
5447 1) Add -D_FORTIFY_SOURCE=2 for gcc generation. Arjan van de Ven.
5448 2) Update linker flags (move to end of command line) for AcpiExec
5449 utility.
5450 Guan Chao.
5451
5452 Split ACPICA initialization functions to new file, utxfinit.c. Split from
5453 utxface.c to improve modularity and reduce file size.
5454
5455 Example Code and Data Size: These are the sizes for the OS-independent
5456 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5457 debug version of the code includes the debug output trace mechanism and
5458 has a
5459 much larger code and data size.
5460
5461 Previous Release:
5462 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
5463 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
5464 Current Release:
5465 Non-Debug Version: 93.8K Code, 25.3K Data, 119.1K Total
5466 Debug Version: 175.7K Code, 74.8K Data, 250.5K Total
5467
5468
5469 2) iASL Compiler/Disassembler and Tools:
5470
5471 iASL: Fixed a problem with constant folding for fixed-length constant
5472 expressions. The constant-folding code was not being invoked for constant
5473 expressions that allow the use of type 3/4/5 opcodes to generate
5474 constants
5475 for expressions such as ByteConstExpr, WordConstExpr, etc. This could
5476 result
5477 in the generation of invalid AML bytecode. ACPICA BZ 970.
5478
5479 iASL: Fixed a generation issue on newer versions of Bison. Newer versions
5480 apparently automatically emit some of the necessary externals. This
5481 change
5482 handles these versions in order to eliminate generation warnings.
5483
5484 Disassembler: Added support to decode the DBG2 and CSRT ACPI tables.
5485
5486 Disassembler: Add support to decode _PLD buffers. The decoded buffer
5487 appears
5488 within comments in the output file.
5489
5490 Debugger: Fixed a regression with the "Threads" command where
5491 AE_BAD_PARAMETER was always returned.
5492
5493 ----------------------------------------
5494 11 July 2012. Summary of changes for version 20120711:
5495
5496 1) ACPICA Kernel-resident Subsystem:
5497
5498 Fixed a possible fault in the return package object repair code. Fixes a
5499 problem that can occur when a lone package object is wrapped with an
5500 outer
5501 package object in order to force conformance to the ACPI specification.
5502 Can
5503 affect these predefined names: _ALR, _MLS, _PSS, _TRT, _TSS, _PRT, _HPX,
5504 _DLM,
5505 _CSD, _PSD, _TSD.
5506
5507 Removed code to disable/enable bus master arbitration (ARB_DIS bit in the
5508 PM2_CNT register) in the ACPICA sleep/wake interfaces. Management of the
5509 ARB_DIS bit must be implemented in the host-dependent C3 processor power
5510 state
5511 support. Note, ARB_DIS is obsolete and only applies to older chipsets,
5512 both
5513 Intel and other vendors. (for Intel: ICH4-M and earlier)
5514
5515 This change removes the code to disable/enable bus master arbitration
5516 during
5517 suspend/resume. Use of the ARB_DIS bit in the optional PM2_CNT register
5518 causes
5519 resume problems on some machines. The change has been in use for over
5520 seven
5521 years within Linux.
5522
5523 Implemented two new external interfaces to support host-directed dynamic
5524 ACPI
5525 table load and unload. They are intended to simplify the host
5526 implementation
5527 of hot-plug support:
5528 AcpiLoadTable: Load an SSDT from a buffer into the namespace.
5529 AcpiUnloadParentTable: Unload an SSDT via a named object owned by the
5530 table.
5531 See the ACPICA reference for additional details. Adds one new file,
5532 components/tables/tbxfload.c
5533
5534 Implemented and deployed two new interfaces for errors and warnings that
5535 are
5536 known to be caused by BIOS/firmware issues:
5537 AcpiBiosError: Prints "ACPI Firmware Error" message.
5538 AcpiBiosWarning: Prints "ACPI Firmware Warning" message.
5539 Deployed these new interfaces in the ACPICA Table Manager code for ACPI
5540 table
5541 and FADT errors. Additional deployment to be completed as appropriate in
5542 the
5543 future. The associated conditional macros are ACPI_BIOS_ERROR and
5544 ACPI_BIOS_WARNING. See the ACPICA reference for additional details.
5545 ACPICA
5546 BZ
5547 843.
5548
5549 Implicit notify support: ensure that no memory allocation occurs within a
5550 critical region. This fix moves a memory allocation outside of the time
5551 that a
5552 spinlock is held. Fixes issues on systems that do not allow this
5553 behavior.
5554 Jung-uk Kim.
5555
5556 Split exception code utilities and tables into a new file,
5557 utilities/utexcep.c
5558
5559 Example Code and Data Size: These are the sizes for the OS-independent
5560 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5561 debug
5562 version of the code includes the debug output trace mechanism and has a
5563 much
5564 larger code and data size.
5565
5566 Previous Release:
5567 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
5568 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
5569 Current Release:
5570 Non-Debug Version: 93.5K Code, 25.3K Data, 118.8K Total
5571 Debug Version: 173.7K Code, 74.0K Data, 247.7K Total
5572
5573
5574 2) iASL Compiler/Disassembler and Tools:
5575
5576 iASL: Fixed a parser problem for hosts where EOF is defined as -1 instead
5577 of
5578 0. Jung-uk Kim.
5579
5580 Debugger: Enhanced the "tables" command to emit additional information
5581 about
5582 the current set of ACPI tables, including the owner ID and flags decode.
5583
5584 Debugger: Reimplemented the "unload" command to use the new
5585 AcpiUnloadParentTable external interface. This command was disable
5586 previously
5587 due to need for an unload interface.
5588
5589 AcpiHelp: Added a new option to decode ACPICA exception codes. The -e
5590 option
5591 will decode 16-bit hex status codes (ACPI_STATUS) to name strings.
5592
5593 ----------------------------------------
5594 20 June 2012. Summary of changes for version 20120620:
5595
5596
5597 1) ACPICA Kernel-resident Subsystem:
5598
5599 Implemented support to expand the "implicit notify" feature to allow
5600 multiple
5601 devices to be notified by a single GPE. This feature automatically
5602 generates a
5603 runtime device notification in the absence of a BIOS-provided GPE control
5604 method (_Lxx/_Exx) or a host-installed handler for the GPE. Implicit
5605 notify is
5606 provided by ACPICA for Windows compatibility, and is a workaround for
5607 BIOS
5608 AML
5609 code errors. See the description of the AcpiSetupGpeForWake interface in
5610 the
5611 APCICA reference. Bob Moore, Rafael Wysocki. ACPICA BZ 918.
5612
5613 Changed some comments and internal function names to simplify and ensure
5614 correctness of the Linux code translation. No functional changes.
5615
5616 Example Code and Data Size: These are the sizes for the OS-independent
5617 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5618 debug
5619 version of the code includes the debug output trace mechanism and has a
5620 much
5621 larger code and data size.
5622
5623 Previous Release:
5624 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
5625 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
5626 Current Release:
5627 Non-Debug Version: 93.1K Code, 25.1K Data, 118.2K Total
5628 Debug Version: 172.9K Code, 73.6K Data, 246.5K Total
5629
5630
5631 2) iASL Compiler/Disassembler and Tools:
5632
5633 Disassembler: Added support to emit short, commented descriptions for the
5634 ACPI
5635 predefined names in order to improve the readability of the disassembled
5636 output. ACPICA BZ 959. Changes include:
5637 1) Emit descriptions for all standard predefined names (_INI, _STA,
5638 _PRW,
5639 etc.)
5640 2) Emit generic descriptions for the special names (_Exx, _Qxx, etc.)
5641 3) Emit descriptions for the resource descriptor names (_MIN, _LEN,
5642 etc.)
5643
5644 AcpiSrc: Fixed several long-standing Linux code translation issues.
5645 Argument
5646 descriptions in function headers are now translated properly to lower
5647 case
5648 and
5649 underscores. ACPICA BZ 961. Also fixes translation problems such as
5650 these:
5651 (old -> new)
5652 i_aSL -> iASL
5653 00-7_f -> 00-7F
5654 16_k -> 16K
5655 local_fADT -> local_FADT
5656 execute_oSI -> execute_OSI
5657
5658 iASL: Fixed a problem where null bytes were inadvertently emitted into
5659 some
5660 listing files.
5661
5662 iASL: Added the existing debug options to the standard help screen. There
5663 are
5664 no longer two different help screens. ACPICA BZ 957.
5665
5666 AcpiHelp: Fixed some typos in the various predefined name descriptions.
5667 Also
5668 expand some of the descriptions where appropriate.
5669
5670 iASL: Fixed the -ot option (display compile times/statistics). Was not
5671 working
5672 properly for standard output; only worked for the debug file case.
5673
5674 ----------------------------------------
5675 18 May 2012. Summary of changes for version 20120518:
5676
5677
5678 1) ACPICA Core Subsystem:
5679
5680 Added a new OSL interface, AcpiOsWaitEventsComplete. This interface is
5681 defined
5682 to block until asynchronous events such as notifies and GPEs have
5683 completed.
5684 Within ACPICA, it is only called before a notify or GPE handler is
5685 removed/uninstalled. It also may be useful for the host OS within related
5686 drivers such as the Embedded Controller driver. See the ACPICA reference
5687 for
5688 additional information. ACPICA BZ 868.
5689
5690 ACPI Tables: Added a new error message for a possible overflow failure
5691 during
5692 the conversion of FADT 32-bit legacy register addresses to internal
5693 common
5694 64-
5695 bit GAS structure representation. The GAS has a one-byte "bit length"
5696 field,
5697 thus limiting the register length to 255 bits. ACPICA BZ 953.
5698
5699 Example Code and Data Size: These are the sizes for the OS-independent
5700 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5701 debug
5702 version of the code includes the debug output trace mechanism and has a
5703 much
5704 larger code and data size.
5705
5706 Previous Release:
5707 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5708 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
5709 Current Release:
5710 Non-Debug Version: 93.0K Code, 25.1K Data, 118.1K Total
5711 Debug Version: 172.7K Code, 73.6K Data, 246.3K Total
5712
5713
5714 2) iASL Compiler/Disassembler and Tools:
5715
5716 iASL: Added the ACPI 5.0 "PCC" keyword for use in the Register() ASL
5717 macro.
5718 This keyword was added late in the ACPI 5.0 release cycle and was not
5719 implemented until now.
5720
5721 Disassembler: Added support for Operation Region externals. Adds missing
5722 support for operation regions that are defined in another table, and
5723 referenced locally via a Field or BankField ASL operator. Now generates
5724 the
5725 correct External statement.
5726
5727 Disassembler: Several additional fixes for the External() statement
5728 generation
5729 related to some ASL operators. Also, order the External() statements
5730 alphabetically in the disassembler output. Fixes the External()
5731 generation
5732 for
5733 the Create* field, Alias, and Scope operators:
5734 1) Create* buffer field operators - fix type mismatch warning on
5735 disassembly
5736 2) Alias - implement missing External support
5737 3) Scope - fix to make sure all necessary externals are emitted.
5738
5739 iASL: Improved pathname support. For include files, merge the prefix
5740 pathname
5741 with the file pathname and eliminate unnecessary components. Convert
5742 backslashes in all pathnames to forward slashes, for readability. Include
5743 file
5744 pathname changes affect both #include and Include() type operators.
5745
5746 iASL/DTC/Preprocessor: Gracefully handle early EOF. Handle an EOF at the
5747 end
5748 of a valid line by inserting a newline and then returning the EOF during
5749 the
5750 next call to GetNextLine. Prevents the line from being ignored due to EOF
5751 condition.
5752
5753 iASL: Implemented some changes to enhance the IDE support (-vi option.)
5754 Error
5755 and Warning messages are now correctly recognized for both the source
5756 code
5757 browser and the global error and warning counts.
5758
5759 ----------------------------------------
5760 20 April 2012. Summary of changes for version 20120420:
5761
5762
5763 1) ACPICA Core Subsystem:
5764
5765 Implemented support for multiple notify handlers. This change adds
5766 support
5767 to
5768 allow multiple system and device notify handlers on Device, Thermal Zone,
5769 and
5770 Processor objects. This can simplify the host OS notification
5771 implementation.
5772 Also re-worked and restructured the entire notify support code to
5773 simplify
5774 handler installation, handler removal, notify event queuing, and notify
5775 dispatch to handler(s). Note: there can still only be two global notify
5776 handlers - one for system notifies and one for device notifies. There are
5777 no
5778 changes to the existing handler install/remove interfaces. Lin Ming, Bob
5779 Moore, Rafael Wysocki.
5780
5781 Fixed a regression in the package repair code where the object reference
5782 count was calculated incorrectly. Regression was introduced in the commit
5783 "Support to add Package wrappers".
5784
5785 Fixed a couple possible memory leaks in the AML parser, in the error
5786 recovery
5787 path. Jesper Juhl, Lin Ming.
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
5793 much larger code and data size.
5794
5795 Previous Release:
5796 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5797 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
5798 Current Release:
5799 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5800 Debug Version: 172.6K Code, 73.4K Data, 246.0K Total
5801
5802
5803 2) iASL Compiler/Disassembler and Tools:
5804
5805 iASL: Fixed a problem with the resource descriptor support where the
5806 length
5807 of the StartDependentFn and StartDependentFnNoPrio descriptors were not
5808 included in cumulative descriptor offset, resulting in incorrect values
5809 for
5810 resource tags within resource descriptors appearing after a
5811 StartDependent*
5812 descriptor. Reported by Petr Vandrovec. ACPICA BZ 949.
5813
5814 iASL and Preprocessor: Implemented full support for the #line directive
5815 to
5816 correctly track original source file line numbers through the .i
5817 preprocessor
5818 output file - for error and warning messages.
5819
5820 iASL: Expand the allowable byte constants for address space IDs.
5821 Previously,
5822 the allowable range was 0x80-0xFF (user-defined spaces), now the range is
5823 0x0A-0xFF to allow for custom and new IDs without changing the compiler.
5824
5825 iASL: Add option to treat all warnings as errors (-we). ACPICA BZ 948.
5826
5827 iASL: Add option to completely disable the preprocessor (-Pn).
5828
5829 iASL: Now emit all error/warning messages to standard error (stderr) by
5830 default (instead of the previous stdout).
5831
5832 ASL Test Suite (ASLTS): Reduce iASL warnings due to use of Switch().
5833 Update
5834 for resource descriptor offset fix above. Update/cleanup error output
5835 routines. Enable and send iASL errors/warnings to an error logfile
5836 (error.txt). Send all other iASL output to a logfile (compiler.txt).
5837 Fixed
5838 several extraneous "unrecognized operator" messages.
5839
5840 ----------------------------------------
5841 20 March 2012. Summary of changes for version 20120320:
5842
5843
5844 1) ACPICA Core Subsystem:
5845
5846 Enhanced the sleep/wake interfaces to optionally execute the _GTS method
5847 (Going To Sleep) and the _BFS method (Back From Sleep). Windows
5848 apparently
5849 does not execute these methods, and therefore these methods are often
5850 untested. It has been seen on some systems where the execution of these
5851 methods causes errors and also prevents the machine from entering S5. It
5852 is
5853 therefore suggested that host operating systems do not execute these
5854 methods
5855 by default. In the future, perhaps these methods can be optionally
5856 executed
5857 based on the age of the system and/or what is the newest version of
5858 Windows
5859 that the BIOS asks for via _OSI. Changed interfaces: AcpiEnterSleepState
5860 and
5861 AcpileaveSleepStatePrep. See the ACPICA reference and Linux BZ 13041. Lin
5862 Ming.
5863
5864 Fixed a problem where the length of the local/common FADT was set too
5865 early.
5866 The local FADT table length cannot be set to the common length until the
5867 original length has been examined. There is code that checks the table
5868 length
5869 and sets various fields appropriately. This can affect older machines
5870 with
5871 early FADT versions. For example, this can cause inadvertent writes to
5872 the
5873 CST_CNT register. Julian Anastasov.
5874
5875 Fixed a mapping issue related to a physical table override. Use the
5876 deferred
5877 mapping mechanism for tables loaded via the physical override OSL
5878 interface.
5879 This allows for early mapping before the virtual memory manager is
5880 available.
5881 Thomas Renninger, Bob Moore.
5882
5883 Enhanced the automatic return-object repair code: Repair a common problem
5884 with
5885 predefined methods that are defined to return a variable-length Package
5886 of
5887 sub-objects. If there is only one sub-object, some BIOS ASL code
5888 mistakenly
5889 simply returns the single object instead of a Package with one sub-
5890 object.
5891 This new support will repair this error by wrapping a Package object
5892 around
5893 the original object, creating the correct and expected Package with one
5894 sub-
5895 object. Names that can be repaired in this manner include: _ALR, _CSD,
5896 _HPX,
5897 _MLS, _PLD, _PRT, _PSS, _TRT, _TSS, _BCL, _DOD, _FIX, and _Sx. ACPICA BZ
5898 939.
5899
5900 Changed the exception code returned for invalid ACPI paths passed as
5901 parameters to external interfaces such as AcpiEvaluateObject. Was
5902 AE_BAD_PARAMETER, now is the more sensible AE_BAD_PATHNAME.
5903
5904 Example Code and Data Size: These are the sizes for the OS-independent
5905 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
5906 debug
5907 version of the code includes the debug output trace mechanism and has a
5908 much
5909 larger code and data size.
5910
5911 Previous Release:
5912 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
5913 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
5914 Current Release:
5915 Non-Debug Version: 92.9K Code, 25.0K Data, 117.9K Total
5916 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
5917
5918
5919 2) iASL Compiler/Disassembler and Tools:
5920
5921 iASL: Added the infrastructure and initial implementation of a integrated
5922 C-
5923 like preprocessor. This will simplify BIOS development process by
5924 eliminating
5925 the need for a separate preprocessing step during builds. On Windows, it
5926 also
5927 eliminates the need to install a separate C compiler. ACPICA BZ 761. Some
5928 features including full #define() macro support are still under
5929 development.
5930 These preprocessor directives are supported:
5931 #define
5932 #elif
5933 #else
5934 #endif
5935 #error
5936 #if
5937 #ifdef
5938 #ifndef
5939 #include
5940 #pragma message
5941 #undef
5942 #warning
5943 In addition, these new command line options are supported:
5944 -D <symbol> Define symbol for preprocessor use
5945 -li Create preprocessed output file (*.i)
5946 -P Preprocess only and create preprocessor output file (*.i)
5947
5948 Table Compiler: Fixed a problem where the equals operator within an
5949 expression
5950 did not work properly.
5951
5952 Updated iASL to use the current versions of Bison/Flex. Updated the
5953 Windows
5954 project file to invoke these tools from the standard location. ACPICA BZ
5955 904.
5956 Versions supported:
5957 Flex for Windows: V2.5.4
5958 Bison for Windows: V2.4.1
5959
5960 ----------------------------------------
5961 15 February 2012. Summary of changes for version 20120215:
5962
5963
5964 1) ACPICA Core Subsystem:
5965
5966 There have been some major changes to the sleep/wake support code, as
5967 described below (a - e).
5968
5969 a) The AcpiLeaveSleepState has been split into two interfaces, similar to
5970 AcpiEnterSleepStatePrep and AcpiEnterSleepState. The new interface is
5971 AcpiLeaveSleepStatePrep. This allows the host to perform actions between
5972 the
5973 time the _BFS method is called and the _WAK method is called. NOTE: all
5974 hosts
5975 must update their wake/resume code or else sleep/wake will not work
5976 properly.
5977 Rafael Wysocki.
5978
5979 b) In AcpiLeaveSleepState, now enable all runtime GPEs before calling the
5980 _WAK
5981 method. Some machines require that the GPEs are enabled before the _WAK
5982 method
5983 is executed. Thomas Renninger.
5984
5985 c) In AcpiLeaveSleepState, now always clear the WAK_STS (wake status)
5986 bit.
5987 Some BIOS code assumes that WAK_STS will be cleared on resume and use it
5988 to
5989 determine whether the system is rebooting or resuming. Matthew Garrett.
5990
5991 d) Move the invocations of _GTS (Going To Sleep) and _BFS (Back From
5992 Sleep) to
5993 match the ACPI specification requirement. Rafael Wysocki.
5994
5995 e) Implemented full support for the ACPI 5.0 SleepStatus and SleepControl
5996 registers within the V5 FADT. This support adds two new files:
5997 hardware/hwesleep.c implements the support for the new registers. Moved
5998 all
5999 sleep/wake external interfaces to hardware/hwxfsleep.c.
6000
6001
6002 Added a new OSL interface for ACPI table overrides,
6003 AcpiOsPhysicalTableOverride. This interface allows the host to override a
6004 table via a physical address, instead of the logical address required by
6005 AcpiOsTableOverride. This simplifies the host implementation. Initial
6006 implementation by Thomas Renninger. The ACPICA implementation creates a
6007 single
6008 shared function for table overrides that attempts both a logical and a
6009 physical override.
6010
6011 Expanded the OSL memory read/write interfaces to 64-bit data
6012 (AcpiOsReadMemory, AcpiOsWriteMemory.) This enables full 64-bit memory
6013 transfer support for GAS register structures passed to AcpiRead and
6014 AcpiWrite.
6015
6016 Implemented the ACPI_REDUCED_HARDWARE option to allow the creation of a
6017 custom
6018 build of ACPICA that supports only the ACPI 5.0 reduced hardware (SoC)
6019 model.
6020 See the ACPICA reference for details. ACPICA BZ 942. This option removes
6021 about
6022 10% of the code and 5% of the static data, and the following hardware
6023 ACPI
6024 features become unavailable:
6025 PM Event and Control registers
6026 SCI interrupt (and handler)
6027 Fixed Events
6028 General Purpose Events (GPEs)
6029 Global Lock
6030 ACPI PM timer
6031 FACS table (Waking vectors and Global Lock)
6032
6033 Updated the unix tarball directory structure to match the ACPICA git
6034 source
6035 tree. This ensures that the generic unix makefiles work properly (in
6036 generate/unix). Also updated the Linux makefiles to match. ACPICA BZ
6037 867.
6038
6039 Updated the return value of the _REV predefined method to integer value 5
6040 to
6041 reflect ACPI 5.0 support.
6042
6043 Moved the external ACPI PM timer interface prototypes to the public
6044 acpixf.h
6045 file where they belong.
6046
6047 Example Code and Data Size: These are the sizes for the OS-independent
6048 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6049 debug
6050 version of the code includes the debug output trace mechanism and has a
6051 much
6052 larger code and data size.
6053
6054 Previous Release:
6055 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
6056 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
6057 Current Release:
6058 Non-Debug Version: 93.0K Code, 25.0K Data, 118.0K Total
6059 Debug Version: 172.5K Code, 73.2K Data, 245.7K Total
6060
6061
6062 2) iASL Compiler/Disassembler and Tools:
6063
6064 Disassembler: Fixed a problem with the new ACPI 5.0 serial resource
6065 descriptors (I2C, SPI, UART) where the resource produce/consumer bit was
6066 incorrectly displayed.
6067
6068 AcpiHelp: Add display of ACPI/PNP device IDs that are defined in the ACPI
6069 specification.
6070
6071 ----------------------------------------
6072 11 January 2012. Summary of changes for version 20120111:
6073
6074
6075 1) ACPICA Core Subsystem:
6076
6077 Implemented a new mechanism to allow host device drivers to check for
6078 address
6079 range conflicts with ACPI Operation Regions. Both SystemMemory and
6080 SystemIO
6081 address spaces are supported. A new external interface,
6082 AcpiCheckAddressRange,
6083 allows drivers to check an address range against the ACPI namespace. See
6084 the
6085 ACPICA reference for additional details. Adds one new file,
6086 utilities/utaddress.c. Lin Ming, Bob Moore.
6087
6088 Fixed several issues with the ACPI 5.0 FADT support: Add the sleep
6089 Control
6090 and
6091 Status registers, update the ACPI 5.0 flags, and update internal data
6092 structures to handle an FADT larger than 256 bytes. The size of the ACPI
6093 5.0
6094 FADT is 268 bytes.
6095
6096 Updated all ACPICA copyrights and signons to 2012. Added the 2012
6097 copyright to
6098 all module headers and signons, including the standard Linux header. This
6099 affects virtually every file in the ACPICA core subsystem, iASL compiler,
6100 and
6101 all ACPICA utilities.
6102
6103 Example Code and Data Size: These are the sizes for the OS-independent
6104 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6105 debug
6106 version of the code includes the debug output trace mechanism and has a
6107 much
6108 larger code and data size.
6109
6110 Previous Release:
6111 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
6112 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
6113 Current Release:
6114 Non-Debug Version: 92.8K Code, 24.9K Data, 117.7K Total
6115 Debug Version: 171.7K Code, 72.9K Data, 244.5K Total
6116
6117
6118 2) iASL Compiler/Disassembler and Tools:
6119
6120 Disassembler: fixed a problem with the automatic resource tag generation
6121 support. Fixes a problem where the resource tags are inadvertently not
6122 constructed if the table being disassembled contains external references
6123 to
6124 control methods. Moved the actual construction of the tags to after the
6125 final
6126 namespace is constructed (after 2nd parse is invoked due to external
6127 control
6128 method references.) ACPICA BZ 941.
6129
6130 Table Compiler: Make all "generic" operators caseless. These are the
6131 operators
6132 like UINT8, String, etc. Making these caseless improves ease-of-use.
6133 ACPICA BZ
6134 934.
6135
6136 ----------------------------------------
6137 23 November 2011. Summary of changes for version 20111123:
6138
6139 0) ACPI 5.0 Support:
6140
6141 This release contains full support for the ACPI 5.0 specification, as
6142 summarized below.
6143
6144 Reduced Hardware Support:
6145 -------------------------
6146
6147 This support allows for ACPI systems without the usual ACPI hardware.
6148 This
6149 support is enabled by a flag in the revision 5 FADT. If it is set, ACPICA
6150 will
6151 not attempt to initialize or use any of the usual ACPI hardware. Note,
6152 when
6153 this flag is set, all of the following ACPI hardware is assumed to be not
6154 present and is not initialized or accessed:
6155
6156 General Purpose Events (GPEs)
6157 Fixed Events (PM1a/PM1b and PM Control)
6158 Power Management Timer and Console Buttons (power/sleep)
6159 Real-time Clock Alarm
6160 Global Lock
6161 System Control Interrupt (SCI)
6162 The FACS is assumed to be non-existent
6163
6164 ACPI Tables:
6165 ------------
6166
6167 All new tables and updates to existing tables are fully supported in the
6168 ACPICA headers (for use by device drivers), the disassembler, and the
6169 iASL
6170 Data Table Compiler. ACPI 5.0 defines these new tables:
6171
6172 BGRT /* Boot Graphics Resource Table */
6173 DRTM /* Dynamic Root of Trust for Measurement table */
6174 FPDT /* Firmware Performance Data Table */
6175 GTDT /* Generic Timer Description Table */
6176 MPST /* Memory Power State Table */
6177 PCCT /* Platform Communications Channel Table */
6178 PMTT /* Platform Memory Topology Table */
6179 RASF /* RAS Feature table */
6180
6181 Operation Regions/SpaceIDs:
6182 ---------------------------
6183
6184 All new operation regions are fully supported by the iASL compiler, the
6185 disassembler, and the ACPICA runtime code (for dispatch to region
6186 handlers.)
6187 The new operation region Space IDs are:
6188
6189 GeneralPurposeIo
6190 GenericSerialBus
6191
6192 Resource Descriptors:
6193 ---------------------
6194
6195 All new ASL resource descriptors are fully supported by the iASL
6196 compiler,
6197 the
6198 ASL/AML disassembler, and the ACPICA runtime Resource Manager code
6199 (including
6200 all new predefined resource tags). New descriptors are:
6201
6202 FixedDma
6203 GpioIo
6204 GpioInt
6205 I2cSerialBus
6206 SpiSerialBus
6207 UartSerialBus
6208
6209 ASL/AML Operators, New and Modified:
6210 ------------------------------------
6211
6212 One new operator is added, the Connection operator, which is used to
6213 associate
6214 a GeneralPurposeIo or GenericSerialBus resource descriptor with
6215 individual
6216 field objects within an operation region. Several new protocols are
6217 associated
6218 with the AccessAs operator. All are fully supported by the iASL compiler,
6219 disassembler, and runtime ACPICA AML interpreter:
6220
6221 Connection // Declare Field Connection
6222 attributes
6223 AccessAs: AttribBytes (n) // Read/Write N-Bytes Protocol
6224 AccessAs: AttribRawBytes (n) // Raw Read/Write N-Bytes
6225 Protocol
6226 AccessAs: AttribRawProcessBytes (n) // Raw Process Call Protocol
6227 RawDataBuffer // Data type for Vendor Data
6228 fields
6229
6230 Predefined ASL/AML Objects:
6231 ---------------------------
6232
6233 All new predefined objects/control-methods are supported by the iASL
6234 compiler
6235 and the ACPICA runtime validation/repair (arguments and return values.)
6236 New
6237 predefined names include the following:
6238
6239 Standard Predefined Names (Objects or Control Methods):
6240 _AEI, _CLS, _CPC, _CWS, _DEP,
6241 _DLM, _EVT, _GCP, _CRT, _GWS,
6242 _HRV, _PRE, _PSE, _SRT, _SUB.
6243
6244 Resource Tags (Names used to access individual fields within resource
6245 descriptors):
6246 _DBT, _DPL, _DRS, _END, _FLC,
6247 _IOR, _LIN, _MOD, _PAR, _PHA,
6248 _PIN, _PPI, _POL, _RXL, _SLV,
6249 _SPE, _STB, _TXL, _VEN.
6250
6251 ACPICA External Interfaces:
6252 ---------------------------
6253
6254 Several new interfaces have been defined for use by ACPI-related device
6255 drivers and other host OS services:
6256
6257 AcpiAcquireMutex and AcpiReleaseMutex: These interfaces allow the host OS
6258 to
6259 acquire and release AML mutexes that are defined in the DSDT/SSDT tables
6260 provided by the BIOS. They are intended to be used in conjunction with
6261 the
6262 ACPI 5.0 _DLM (Device Lock Method) in order to provide transaction-level
6263 mutual exclusion with the AML code/interpreter.
6264
6265 AcpiGetEventResources: Returns the (formatted) resource descriptors as
6266 defined
6267 by the ACPI 5.0 _AEI object (ACPI Event Information). This object
6268 provides
6269 resource descriptors associated with hardware-reduced platform events,
6270 similar
6271 to the AcpiGetCurrentResources interface.
6272
6273 Operation Region Handlers: For General Purpose IO and Generic Serial Bus
6274 operation regions, information about the Connection() object and any
6275 optional
6276 length information is passed to the region handler within the Context
6277 parameter.
6278
6279 AcpiBufferToResource: This interface converts a raw AML buffer containing
6280 a
6281 resource template or resource descriptor to the ACPI_RESOURCE internal
6282 format
6283 suitable for use by device drivers. Can be used by an operation region
6284 handler
6285 to convert the Connection() buffer object into a ACPI_RESOURCE.
6286
6287 Miscellaneous/Tools/TestSuites:
6288 -------------------------------
6289
6290 Support for extended _HID names (Four alpha characters instead of three).
6291 Support for ACPI 5.0 features in the AcpiExec and AcpiHelp utilities.
6292 Support for ACPI 5.0 features in the ASLTS test suite.
6293 Fully updated documentation (ACPICA and iASL reference documents.)
6294
6295 ACPI Table Definition Language:
6296 -------------------------------
6297
6298 Support for this language was implemented and released as a subsystem of
6299 the
6300 iASL compiler in 2010. (See the iASL compiler User Guide.)
6301
6302
6303 Non-ACPI 5.0 changes for this release:
6304 --------------------------------------
6305
6306 1) ACPICA Core Subsystem:
6307
6308 Fix a problem with operation region declarations where a failure can
6309 occur
6310 if
6311 the region name and an argument that evaluates to an object (such as the
6312 region address) are in different namespace scopes. Lin Ming, ACPICA BZ
6313 937.
6314
6315 Do not abort an ACPI table load if an invalid space ID is found within.
6316 This
6317 will be caught later if the offending method is executed. ACPICA BZ 925.
6318
6319 Fixed an issue with the FFixedHW space ID where the ID was not always
6320 recognized properly (Both ACPICA and iASL). ACPICA BZ 926.
6321
6322 Fixed a problem with the 32-bit generation of the unix-specific OSL
6323 (osunixxf.c). Lin Ming, ACPICA BZ 936.
6324
6325 Several changes made to enable generation with the GCC 4.6 compiler.
6326 ACPICA BZ
6327 935.
6328
6329 New error messages: Unsupported I/O requests (not 8/16/32 bit), and
6330 Index/Bank
6331 field registers out-of-range.
6332
6333 2) iASL Compiler/Disassembler and Tools:
6334
6335 iASL: Implemented the __PATH__ operator, which returns the full pathname
6336 of
6337 the current source file.
6338
6339 AcpiHelp: Automatically display expanded keyword information for all ASL
6340 operators.
6341
6342 Debugger: Add "Template" command to disassemble/dump resource template
6343 buffers.
6344
6345 Added a new master script to generate and execute the ASLTS test suite.
6346 Automatically handles 32- and 64-bit generation. See tests/aslts.sh
6347
6348 iASL: Fix problem with listing generation during processing of the
6349 Switch()
6350 operator where AML listing was disabled until the entire Switch block was
6351 completed.
6352
6353 iASL: Improve support for semicolon statement terminators. Fix "invalid
6354 character" message for some cases when the semicolon is used. Semicolons
6355 are
6356 now allowed after every <Term> grammar element. ACPICA BZ 927.
6357
6358 iASL: Fixed some possible aliasing warnings during generation. ACPICA BZ
6359 923.
6360
6361 Disassembler: Fix problem with disassembly of the DataTableRegion
6362 operator
6363 where an inadvertent "Unhandled deferred opcode" message could be
6364 generated.
6365
6366 3) Example Code and Data Size
6367
6368 These are the sizes for the OS-independent acpica.lib produced by the
6369 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6370 includes the debug output trace mechanism and has a much larger code and
6371 data
6372 size.
6373
6374 Previous Release:
6375 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6376 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6377 Current Release:
6378 Non-Debug Version: 92.3K Code, 24.9K Data, 117.2K Total
6379 Debug Version: 170.8K Code, 72.6K Data, 243.4K Total
6380
6381 ----------------------------------------
6382 22 September 2011. Summary of changes for version 20110922:
6383
6384 0) ACPI 5.0 News:
6385
6386 Support for ACPI 5.0 in ACPICA has been underway for several months and
6387 will
6388 be released at the same time that ACPI 5.0 is officially released.
6389
6390 The ACPI 5.0 specification is on track for release in the next few
6391 months.
6392
6393 1) ACPICA Core Subsystem:
6394
6395 Fixed a problem where the maximum sleep time for the Sleep() operator was
6396 intended to be limited to two seconds, but was inadvertently limited to
6397 20
6398 seconds instead.
6399
6400 Linux and Unix makefiles: Added header file dependencies to ensure
6401 correct
6402 generation of ACPICA core code and utilities. Also simplified the
6403 makefiles
6404 considerably through the use of the vpath variable to specify search
6405 paths.
6406 ACPICA BZ 924.
6407
6408 2) iASL Compiler/Disassembler and Tools:
6409
6410 iASL: Implemented support to check the access length for all fields
6411 created to
6412 access named Resource Descriptor fields. For example, if a resource field
6413 is
6414 defined to be two bits, a warning is issued if a CreateXxxxField() is
6415 used
6416 with an incorrect bit length. This is implemented for all current
6417 resource
6418 descriptor names. ACPICA BZ 930.
6419
6420 Disassembler: Fixed a byte ordering problem with the output of 24-bit and
6421 56-
6422 bit integers.
6423
6424 iASL: Fixed a couple of issues associated with variable-length package
6425 objects. 1) properly handle constants like One, Ones, Zero -- do not make
6426 a
6427 VAR_PACKAGE when these are used as a package length. 2) Allow the
6428 VAR_PACKAGE
6429 opcode (in addition to PACKAGE) when validating object types for
6430 predefined
6431 names.
6432
6433 iASL: Emit statistics for all output files (instead of just the ASL input
6434 and
6435 AML output). Includes listings, hex files, etc.
6436
6437 iASL: Added -G option to the table compiler to allow the compilation of
6438 custom
6439 ACPI tables. The only part of a table that is required is the standard
6440 36-
6441 byte
6442 ACPI header.
6443
6444 AcpiXtract: Ported to the standard ACPICA environment (with ACPICA
6445 headers),
6446 which also adds correct 64-bit support. Also, now all output filenames
6447 are
6448 completely lower case.
6449
6450 AcpiExec: Ignore any non-AML tables (tables other than DSDT or SSDT) when
6451 loading table files. A warning is issued for any such tables. The only
6452 exception is an FADT. This also fixes a possible fault when attempting to
6453 load
6454 non-AML tables. ACPICA BZ 932.
6455
6456 AcpiHelp: Added the AccessAs and Offset operators. Fixed a problem where
6457 a
6458 missing table terminator could cause a fault when using the -p option.
6459
6460 AcpiSrc: Fixed a possible divide-by-zero fault when generating file
6461 statistics.
6462
6463 3) Example Code and Data Size
6464
6465 These are the sizes for the OS-independent acpica.lib produced by the
6466 Microsoft Visual C++ 9.0 32-bit compiler. The debug version of the code
6467 includes the debug output trace mechanism and has a much larger code and
6468 data
6469 size.
6470
6471 Previous Release (VC 9.0):
6472 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6473 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6474 Current Release (VC 9.0):
6475 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6476 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6477
6478
6479 ----------------------------------------
6480 23 June 2011. Summary of changes for version 20110623:
6481
6482 1) ACPI CA Core Subsystem:
6483
6484 Updated the predefined name repair mechanism to not attempt repair of a
6485 _TSS
6486 return object if a _PSS object is present. We can only sort the _TSS
6487 return
6488 package if there is no _PSS within the same scope. This is because if
6489 _PSS
6490 is
6491 present, the ACPI specification dictates that the _TSS Power Dissipation
6492 field
6493 is to be ignored, and therefore some BIOSs leave garbage values in the
6494 _TSS
6495 Power field(s). In this case, it is best to just return the _TSS package
6496 as-
6497 is. Reported by, and fixed with assistance from Fenghua Yu.
6498
6499 Added an option to globally disable the control method return value
6500 validation
6501 and repair. This runtime option can be used to disable return value
6502 repair
6503 if
6504 this is causing a problem on a particular machine. Also added an option
6505 to
6506 AcpiExec (-dr) to set this disable flag.
6507
6508 All makefiles and project files: Major changes to improve generation of
6509 ACPICA
6510 tools. ACPICA BZ 912:
6511 Reduce default optimization levels to improve compatibility
6512 For Linux, add strict-aliasing=0 for gcc 4
6513 Cleanup and simplify use of command line defines
6514 Cleanup multithread library support
6515 Improve usage messages
6516
6517 Linux-specific header: update handling of THREAD_ID and pthread. For the
6518 32-
6519 bit case, improve casting to eliminate possible warnings, especially with
6520 the
6521 acpica tools.
6522
6523 Example Code and Data Size: These are the sizes for the OS-independent
6524 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6525 debug
6526 version of the code includes the debug output trace mechanism and has a
6527 much
6528 larger code and data size.
6529
6530 Previous Release (VC 9.0):
6531 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
6532 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6533 Current Release (VC 9.0):
6534 Non-Debug Version: 90.2K Code, 23.9K Data, 114.1K Total
6535 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6536
6537 2) iASL Compiler/Disassembler and Tools:
6538
6539 With this release, a new utility named "acpihelp" has been added to the
6540 ACPICA
6541 package. This utility summarizes the ACPI specification chapters for the
6542 ASL
6543 and AML languages. It generates under Linux/Unix as well as Windows, and
6544 provides the following functionality:
6545 Find/display ASL operator(s) -- with description and syntax.
6546 Find/display ASL keyword(s) -- with exact spelling and descriptions.
6547 Find/display ACPI predefined name(s) -- with description, number
6548 of arguments, and the return value data type.
6549 Find/display AML opcode name(s) -- with opcode, arguments, and
6550 grammar.
6551 Decode/display AML opcode -- with opcode name, arguments, and
6552 grammar.
6553
6554 Service Layers: Make multi-thread support configurable. Conditionally
6555 compile
6556 the multi-thread support so that threading libraries will not be linked
6557 if
6558 not
6559 necessary. The only tool that requires multi-thread support is AcpiExec.
6560
6561 iASL: Update yyerrror/AslCompilerError for "const" errors. Newer versions
6562 of
6563 Bison appear to want the interface to yyerror to be a const char * (or at
6564 least this is a problem when generating iASL on some systems.) ACPICA BZ
6565 923
6566 Pierre Lejeune.
6567
6568 Tools: Fix for systems where O_BINARY is not defined. Only used for
6569 Windows
6570 versions of the tools.
6571
6572 ----------------------------------------
6573 27 May 2011. Summary of changes for version 20110527:
6574
6575 1) ACPI CA Core Subsystem:
6576
6577 ASL Load() operator: Reinstate most restrictions on the incoming ACPI
6578 table
6579 signature. Now, only allow SSDT, OEMx, and a null signature. History:
6580 1) Originally, we checked the table signature for "SSDT" or "PSDT".
6581 (PSDT is now obsolete.)
6582 2) We added support for OEMx tables, signature "OEM" plus a fourth
6583 "don't care" character.
6584 3) Valid tables were encountered with a null signature, so we just
6585 gave up on validating the signature, (05/2008).
6586 4) We encountered non-AML tables such as the MADT, which caused
6587 interpreter errors and kernel faults. So now, we once again allow
6588 only SSDT, OEMx, and now, also a null signature. (05/2011).
6589
6590 Added the missing _TDL predefined name to the global name list in order
6591 to
6592 enable validation. Affects both the core ACPICA code and the iASL
6593 compiler.
6594
6595 Example Code and Data Size: These are the sizes for the OS-independent
6596 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6597 debug
6598 version of the code includes the debug output trace mechanism and has a
6599 much
6600 larger code and data size.
6601
6602 Previous Release (VC 9.0):
6603 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
6604 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
6605 Current Release (VC 9.0):
6606 Non-Debug Version: 90.1K Code, 23.9K Data, 114.0K Total
6607 Debug Version: 165.6K Code, 68.4K Data, 234.0K Total
6608
6609 2) iASL Compiler/Disassembler and Tools:
6610
6611 Debugger/AcpiExec: Implemented support for "complex" method arguments on
6612 the
6613 debugger command line. This adds support beyond simple integers --
6614 including
6615 Strings, Buffers, and Packages. Includes support for nested packages.
6616 Increased the default command line buffer size to accommodate these
6617 arguments.
6618 See the ACPICA reference for details and syntax. ACPICA BZ 917.
6619
6620 Debugger/AcpiExec: Implemented support for "default" method arguments for
6621 the
6622 Execute/Debug command. Now, the debugger will always invoke a control
6623 method
6624 with the required number of arguments -- even if the command line
6625 specifies
6626 none or insufficient arguments. It uses default integer values for any
6627 missing
6628 arguments. Also fixes a bug where only six method arguments maximum were
6629 supported instead of the required seven.
6630
6631 Debugger/AcpiExec: Add a maximum buffer length parameter to AcpiOsGetLine
6632 and
6633 also return status in order to prevent buffer overruns. See the ACPICA
6634 reference for details and syntax. ACPICA BZ 921
6635
6636 iASL: Cleaned up support for Berkeley yacc. A general cleanup of code and
6637 makefiles to simplify support for the two different but similar parser
6638 generators, bison and yacc.
6639
6640 Updated the generic unix makefile for gcc 4. The default gcc version is
6641 now
6642 expected to be 4 or greater, since options specific to gcc 4 are used.
6643
6644 ----------------------------------------
6645 13 April 2011. Summary of changes for version 20110413:
6646
6647 1) ACPI CA Core Subsystem:
6648
6649 Implemented support to execute a so-called "orphan" _REG method under the
6650 EC
6651 device. This change will force the execution of a _REG method underneath
6652 the
6653 EC
6654 device even if there is no corresponding operation region of type
6655 EmbeddedControl. Fixes a problem seen on some machines and apparently is
6656 compatible with Windows behavior. ACPICA BZ 875.
6657
6658 Added more predefined methods that are eligible for automatic NULL
6659 package
6660 element removal. This change adds another group of predefined names to
6661 the
6662 list
6663 of names that can be repaired by having NULL package elements dynamically
6664 removed. This group are those methods that return a single variable-
6665 length
6666 package containing simple data types such as integers, buffers, strings.
6667 This
6668 includes: _ALx, _BCL, _CID,_ DOD, _EDL, _FIX, _PCL, _PLD, _PMD, _PRx,
6669 _PSL,
6670 _Sx,
6671 and _TZD. ACPICA BZ 914.
6672
6673 Split and segregated all internal global lock functions to a new file,
6674 evglock.c.
6675
6676 Updated internal address SpaceID for DataTable regions. Moved this
6677 internal
6678 space
6679 id in preparation for ACPI 5.0 changes that will include some new space
6680 IDs.
6681 This
6682 change should not affect user/host code.
6683
6684 Example Code and Data Size: These are the sizes for the OS-independent
6685 acpica.lib
6686 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6687 version of
6688 the code includes the debug output trace mechanism and has a much larger
6689 code
6690 and
6691 data size.
6692
6693 Previous Release (VC 9.0):
6694 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
6695 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
6696 Current Release (VC 9.0):
6697 Non-Debug Version: 90.0K Code, 23.8K Data, 113.8K Total
6698 Debug Version: 164.5K Code, 68.0K Data, 232.5K Total
6699
6700 2) iASL Compiler/Disassembler and Tools:
6701
6702 iASL/DTC: Major update for new grammar features. Allow generic data types
6703 in
6704 custom ACPI tables. Field names are now optional. Any line can be split
6705 to
6706 multiple lines using the continuation char (\). Large buffers now use
6707 line-
6708 continuation character(s) and no colon on the continuation lines. See the
6709 grammar
6710 update in the iASL compiler reference. ACPI BZ 910,911. Lin Ming, Bob
6711 Moore.
6712
6713 iASL: Mark ASL "Return()" and the simple "Return" as "Null" return
6714 statements.
6715 Since the parser stuffs a "zero" as the return value for these statements
6716 (due
6717 to
6718 the underlying AML grammar), they were seen as "return with value" by the
6719 iASL
6720 semantic checking. They are now seen correctly as "null" return
6721 statements.
6722
6723 iASL: Check if a_REG declaration has a corresponding Operation Region.
6724 Adds a
6725 check for each _REG to ensure that there is in fact a corresponding
6726 operation
6727 region declaration in the same scope. If not, the _REG method is not very
6728 useful
6729 since it probably won't be executed. ACPICA BZ 915.
6730
6731 iASL/DTC: Finish support for expression evaluation. Added a new
6732 expression
6733 parser
6734 that implements c-style operator precedence and parenthesization. ACPICA
6735 bugzilla
6736 908.
6737
6738 Disassembler/DTC: Remove support for () and <> style comments in data
6739 tables.
6740 Now
6741 that DTC has full expression support, we don't want to have comment
6742 strings
6743 that
6744 start with a parentheses or a less-than symbol. Now, only the standard /*
6745 and
6746 //
6747 comments are supported, as well as the bracket [] comments.
6748
6749 AcpiXtract: Fix for RSDP and dynamic SSDT extraction. These tables have
6750 "unusual"
6751 headers in the acpidump file. Update the header validation to support
6752 these
6753 tables. Problem introduced in previous AcpiXtract version in the change
6754 to
6755 support "wrong checksum" error messages emitted by acpidump utility.
6756
6757 iASL: Add a * option to generate all template files (as a synonym for
6758 ALL)
6759 as
6760 in
6761 "iasl -T *" or "iasl -T ALL".
6762
6763 iASL/DTC: Do not abort compiler on fatal errors. We do not want to
6764 completely
6765 abort the compiler on "fatal" errors, simply should abort the current
6766 compile.
6767 This allows multiple compiles with a single (possibly wildcard) compiler
6768 invocation.
6769
6770 ----------------------------------------
6771 16 March 2011. Summary of changes for version 20110316:
6772
6773 1) ACPI CA Core Subsystem:
6774
6775 Fixed a problem caused by a _PRW method appearing at the namespace root
6776 scope
6777 during the setup of wake GPEs. A fault could occur if a _PRW directly
6778 under
6779 the
6780 root object was passed to the AcpiSetupGpeForWake interface. Lin Ming.
6781
6782 Implemented support for "spurious" Global Lock interrupts. On some
6783 systems, a
6784 global lock interrupt can occur without the pending flag being set. Upon
6785 a
6786 GL
6787 interrupt, we now ensure that a thread is actually waiting for the lock
6788 before
6789 signaling GL availability. Rafael Wysocki, Bob Moore.
6790
6791 Example Code and Data Size: These are the sizes for the OS-independent
6792 acpica.lib
6793 produced by the Microsoft Visual C++ 9.0 32-bit compiler. The debug
6794 version of
6795 the code includes the debug output trace mechanism and has a much larger
6796 code
6797 and
6798 data size.
6799
6800 Previous Release (VC 9.0):
6801 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
6802 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
6803 Current Release (VC 9.0):
6804 Non-Debug Version: 89.8K Code, 23.8K Data, 113.6K Total
6805 Debug Version: 164.2K Code, 67.9K Data, 232.1K Total
6806
6807 2) iASL Compiler/Disassembler and Tools:
6808
6809 Implemented full support for the "SLIC" ACPI table. Includes support in
6810 the
6811 header files, disassembler, table compiler, and template generator. Bob
6812 Moore,
6813 Lin Ming.
6814
6815 AcpiXtract: Correctly handle embedded comments and messages from
6816 AcpiDump.
6817 Apparently some or all versions of acpidump will occasionally emit a
6818 comment
6819 like
6820 "Wrong checksum", etc., into the dump file. This was causing problems for
6821 AcpiXtract. ACPICA BZ 905.
6822
6823 iASL: Fix the Linux makefile by removing an inadvertent double file
6824 inclusion.
6825 ACPICA BZ 913.
6826
6827 AcpiExec: Update installation of operation region handlers. Install one
6828 handler
6829 for a user-defined address space. This is used by the ASL test suite
6830 (ASLTS).
6831
6832 ----------------------------------------
6833 11 February 2011. Summary of changes for version 20110211:
6834
6835 1) ACPI CA Core Subsystem:
6836
6837 Added a mechanism to defer _REG methods for some early-installed
6838 handlers.
6839 Most user handlers should be installed before call to
6840 AcpiEnableSubsystem.
6841 However, Event handlers and region handlers should be installed after
6842 AcpiInitializeObjects. Override handlers for the "default" regions should
6843 be
6844 installed early, however. This change executes all _REG methods for the
6845 default regions (Memory/IO/PCI/DataTable) simultaneously to prevent any
6846 chicken/egg issues between them. ACPICA BZ 848.
6847
6848 Implemented an optimization for GPE detection. This optimization will
6849 simply
6850 ignore GPE registers that contain no enabled GPEs -- there is no need to
6851 read the register since this information is available internally. This
6852 becomes more important on machines with a large GPE space. ACPICA
6853 bugzilla
6854 884. Lin Ming. Suggestion from Joe Liu.
6855
6856 Removed all use of the highly unreliable FADT revision field. The
6857 revision
6858 number in the FADT has been found to be completely unreliable and cannot
6859 be
6860 trusted. Only the actual table length can be used to infer the version.
6861 This
6862 change updates the ACPICA core and the disassembler so that both no
6863 longer
6864 even look at the FADT version and instead depend solely upon the FADT
6865 length.
6866
6867 Fix an unresolved name issue for the no-debug and no-error-message source
6868 generation cases. The _AcpiModuleName was left undefined in these cases,
6869 but
6870 it is actually needed as a parameter to some interfaces. Define
6871 _AcpiModuleName as a null string in these cases. ACPICA Bugzilla 888.
6872
6873 Split several large files (makefiles and project files updated)
6874 utglobal.c -> utdecode.c
6875 dbcomds.c -> dbmethod.c dbnames.c
6876 dsopcode.c -> dsargs.c dscontrol.c
6877 dsload.c -> dsload2.c
6878 aslanalyze.c -> aslbtypes.c aslwalks.c
6879
6880 Example Code and Data Size: These are the sizes for the OS-independent
6881 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
6882 debug version of the code includes the debug output trace mechanism and
6883 has
6884 a much larger code and data size.
6885
6886 Previous Release (VC 9.0):
6887 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
6888 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
6889 Current Release (VC 9.0):
6890 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
6891 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
6892
6893 2) iASL Compiler/Disassembler and Tools:
6894
6895 iASL: Implemented the predefined macros __LINE__, __FILE__, and __DATE__.
6896 These are useful C-style macros with the standard definitions. ACPICA
6897 bugzilla 898.
6898
6899 iASL/DTC: Added support for integer expressions and labels. Support for
6900 full
6901 expressions for all integer fields in all ACPI tables. Support for labels
6902 in
6903 "generic" portions of tables such as UEFI. See the iASL reference manual.
6904
6905 Debugger: Added a command to display the status of global handlers. The
6906 "handlers" command will display op region, fixed event, and miscellaneous
6907 global handlers. installation status -- and for op regions, whether
6908 default
6909 or user-installed handler will be used.
6910
6911 iASL: Warn if reserved method incorrectly returns a value. Many
6912 predefined
6913 names are defined such that they do not return a value. If implemented as
6914 a
6915 method, issue a warning if such a name explicitly returns a value. ACPICA
6916 Bugzilla 855.
6917
6918 iASL: Added detection of GPE method name conflicts. Detects a conflict
6919 where
6920 there are two GPE methods of the form _Lxy and _Exy in the same scope.
6921 (For
6922 example, _L1D and _E1D in the same scope.) ACPICA bugzilla 848.
6923
6924 iASL/DTC: Fixed a couple input scanner issues with comments and line
6925 numbers. Comment remover could get confused and miss a comment ending.
6926 Fixed
6927 a problem with line counter maintenance.
6928
6929 iASL/DTC: Reduced the severity of some errors from fatal to error. There
6930 is
6931 no need to abort on simple errors within a field definition.
6932
6933 Debugger: Simplified the output of the help command. All help output now
6934 in
6935 a single screen, instead of help subcommands. ACPICA Bugzilla 897.
6936
6937 ----------------------------------------
6938 12 January 2011. Summary of changes for version 20110112:
6939
6940 1) ACPI CA Core Subsystem:
6941
6942 Fixed a race condition between method execution and namespace walks that
6943 can
6944 possibly cause a fault. The problem was apparently introduced in version
6945 20100528 as a result of a performance optimization that reduces the
6946 number
6947 of
6948 namespace walks upon method exit by using the delete_namespace_subtree
6949 function instead of the delete_namespace_by_owner function used
6950 previously.
6951 Bug is a missing namespace lock in the delete_namespace_subtree function.
6952 dana.myers (a] oracle.com
6953
6954 Fixed several issues and a possible fault with the automatic "serialized"
6955 method support. History: This support changes a method to "serialized" on
6956 the
6957 fly if the method generates an AE_ALREADY_EXISTS error, indicating the
6958 possibility that it cannot handle reentrancy. This fix repairs a couple
6959 of
6960 issues seen in the field, especially on machines with many cores:
6961
6962 1) Delete method children only upon the exit of the last thread,
6963 so as to not delete objects out from under other running threads
6964 (and possibly causing a fault.)
6965 2) Set the "serialized" bit for the method only upon the exit of the
6966 Last thread, so as to not cause deadlock when running threads
6967 attempt to exit.
6968 3) Cleanup the use of the AML "MethodFlags" and internal method flags
6969 so that there is no longer any confusion between the two.
6970
6971 Lin Ming, Bob Moore. Reported by dana.myers (a] oracle.com.
6972
6973 Debugger: Now lock the namespace for duration of a namespace dump.
6974 Prevents
6975 issues if the namespace is changing dynamically underneath the debugger.
6976 Especially affects temporary namespace nodes, since the debugger displays
6977 these also.
6978
6979 Updated the ordering of include files. The ACPICA headers should appear
6980 before any compiler-specific headers (stdio.h, etc.) so that acenv.h can
6981 set
6982 any necessary compiler-specific defines, etc. Affects the ACPI-related
6983 tools
6984 and utilities.
6985
6986 Updated all ACPICA copyrights and signons to 2011. Added the 2011
6987 copyright
6988 to all module headers and signons, including the Linux header. This
6989 affects
6990 virtually every file in the ACPICA core subsystem, iASL compiler, and all
6991 utilities.
6992
6993 Added project files for MS Visual Studio 2008 (VC++ 9.0). The original
6994 project files for VC++ 6.0 are now obsolete. New project files can be
6995 found
6996 under acpica/generate/msvc9. See acpica/generate/msvc9/readme.txt for
6997 details.
6998
6999 Example Code and Data Size: These are the sizes for the OS-independent
7000 acpica.lib produced by the Microsoft Visual C++ 9.0 32-bit compiler. The
7001 debug version of the code includes the debug output trace mechanism and
7002 has a
7003 much larger code and data size.
7004
7005 Previous Release (VC 6.0):
7006 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
7007 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
7008 Current Release (VC 9.0):
7009 Non-Debug Version: 89.7K Code, 23.7K Data, 113.4K Total
7010 Debug Version: 163.9K Code, 67.5K Data, 231.4K Total
7011
7012 2) iASL Compiler/Disassembler and Tools:
7013
7014 iASL: Added generic data types to the Data Table compiler. Add "generic"
7015 data
7016 types such as UINT32, String, Unicode, etc., to simplify the generation
7017 of
7018 platform-defined tables such as UEFI. Lin Ming.
7019
7020 iASL: Added listing support for the Data Table Compiler. Adds listing
7021 support
7022 (-l) to display actual binary output for each line of input code.
7023
7024 ----------------------------------------
7025 09 December 2010. Summary of changes for version 20101209:
7026
7027 1) ACPI CA Core Subsystem:
7028
7029 Completed the major overhaul of the GPE support code that was begun in
7030 July
7031 2010. Major features include: removal of _PRW execution in ACPICA (host
7032 executes _PRWs anyway), cleanup of "wake" GPE interfaces and processing,
7033 changes to existing interfaces, simplification of GPE handler operation,
7034 and
7035 a handful of new interfaces:
7036
7037 AcpiUpdateAllGpes
7038 AcpiFinishGpe
7039 AcpiSetupGpeForWake
7040 AcpiSetGpeWakeMask
7041 One new file, evxfgpe.c to consolidate all external GPE interfaces.
7042
7043 See the ACPICA Programmer Reference for full details and programming
7044 information. See the new section 4.4 "General Purpose Event (GPE)
7045 Support"
7046 for a full overview, and section 8.7 "ACPI General Purpose Event
7047 Management"
7048 for programming details. ACPICA BZ 858,870,877. Matthew Garrett, Lin
7049 Ming,
7050 Bob Moore, Rafael Wysocki.
7051
7052 Implemented a new GPE feature for Windows compatibility, the "Implicit
7053 Wake
7054 GPE Notify". This feature will automatically issue a Notify(2) on a
7055 device
7056 when a Wake GPE is received if there is no corresponding GPE method or
7057 handler. ACPICA BZ 870.
7058
7059 Fixed a problem with the Scope() operator during table parse and load
7060 phase.
7061 During load phase (table load or method execution), the scope operator
7062 should
7063 not enter the target into the namespace. Instead, it should open a new
7064 scope
7065 at the target location. Linux BZ 19462, ACPICA BZ 882.
7066
7067 Example Code and Data Size: These are the sizes for the OS-independent
7068 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7069 debug version of the code includes the debug output trace mechanism and
7070 has a
7071 much larger code and data size.
7072
7073 Previous Release:
7074 Non-Debug Version: 89.8K Code, 18.9K Data, 108.7K Total
7075 Debug Version: 166.6K Code, 52.1K Data, 218.7K Total
7076 Current Release:
7077 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7078 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7079
7080 2) iASL Compiler/Disassembler and Tools:
7081
7082 iASL: Relax the alphanumeric restriction on _CID strings. These strings
7083 are
7084 "bus-specific" per the ACPI specification, and therefore any characters
7085 are
7086 acceptable. The only checks that can be performed are for a null string
7087 and
7088 perhaps for a leading asterisk. ACPICA BZ 886.
7089
7090 iASL: Fixed a problem where a syntax error that caused a premature EOF
7091 condition on the source file emitted a very confusing error message. The
7092 premature EOF is now detected correctly. ACPICA BZ 891.
7093
7094 Disassembler: Decode the AccessSize within a Generic Address Structure
7095 (byte
7096 access, word access, etc.) Note, this field does not allow arbitrary bit
7097 access, the size is encoded as 1=byte, 2=word, 3=dword, and 4=qword.
7098
7099 New: AcpiNames utility - Example namespace dump utility. Shows an example
7100 of
7101 ACPICA configuration for a minimal namespace dump utility. Uses table and
7102 namespace managers, but no AML interpreter. Does not add any
7103 functionality
7104 over AcpiExec, it is a subset of AcpiExec. The purpose is to show how to
7105 partition and configure ACPICA. ACPICA BZ 883.
7106
7107 AML Debugger: Increased the debugger buffer size for method return
7108 objects.
7109 Was 4K, increased to 16K. Also enhanced error messages for debugger
7110 method
7111 execution, including the buffer overflow case.
7112
7113 ----------------------------------------
7114 13 October 2010. Summary of changes for version 20101013:
7115
7116 1) ACPI CA Core Subsystem:
7117
7118 Added support to clear the PCIEXP_WAKE event. When clearing ACPI events,
7119 now
7120 clear the PCIEXP_WAKE_STS bit in the ACPI PM1 Status Register, via
7121 HwClearAcpiStatus. Original change from Colin King. ACPICA BZ 880.
7122
7123 Changed the type of the predefined namespace object _TZ from ThermalZone
7124 to
7125 Device. This was found to be confusing to the host software that
7126 processes
7127 the various thermal zones, since _TZ is not really a ThermalZone.
7128 However,
7129 a
7130 Notify() can still be performed on it. ACPICA BZ 876. Suggestion from Rui
7131 Zhang.
7132
7133 Added Windows Vista SP2 to the list of supported _OSI strings. The actual
7134 string is "Windows 2006 SP2".
7135
7136 Eliminated duplicate code in AcpiUtExecute* functions. Now that the
7137 nsrepair
7138 code automatically repairs _HID-related strings, this type of code is no
7139 longer needed in Execute_HID, Execute_CID, and Execute_UID. ACPICA BZ
7140 878.
7141
7142 Example Code and Data Size: These are the sizes for the OS-independent
7143 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7144 debug version of the code includes the debug output trace mechanism and
7145 has a
7146 much larger code and data size.
7147
7148 Previous Release:
7149 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7150 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7151 Current Release:
7152 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7153 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7154
7155 2) iASL Compiler/Disassembler and Tools:
7156
7157 iASL: Implemented additional compile-time validation for _HID strings.
7158 The
7159 non-hex prefix (such as "PNP" or "ACPI") must be uppercase, and the
7160 length
7161 of
7162 the string must be exactly seven or eight characters. For both _HID and
7163 _CID
7164 strings, all characters must be alphanumeric. ACPICA BZ 874.
7165
7166 iASL: Allow certain "null" resource descriptors. Some BIOS code creates
7167 descriptors that are mostly or all zeros, with the expectation that they
7168 will
7169 be filled in at runtime. iASL now allows this as long as there is a
7170 "resource
7171 tag" (name) associated with the descriptor, which gives the ASL a handle
7172 needed to modify the descriptor. ACPICA BZ 873.
7173
7174 Added single-thread support to the generic Unix application OSL.
7175 Primarily
7176 for iASL support, this change removes the use of semaphores in the
7177 single-
7178 threaded ACPICA tools/applications - increasing performance. The
7179 _MULTI_THREADED option was replaced by the (reverse) ACPI_SINGLE_THREADED
7180 option. ACPICA BZ 879.
7181
7182 AcpiExec: several fixes for the 64-bit version. Adds XSDT support and
7183 support
7184 for 64-bit DSDT/FACS addresses in the FADT. Lin Ming.
7185
7186 iASL: Moved all compiler messages to a new file, aslmessages.h.
7187
7188 ----------------------------------------
7189 15 September 2010. Summary of changes for version 20100915:
7190
7191 1) ACPI CA Core Subsystem:
7192
7193 Removed the AcpiOsDerivePciId OSL interface. The various host
7194 implementations
7195 of this function were not OS-dependent and are now obsolete and can be
7196 removed from all host OSLs. This function has been replaced by
7197 AcpiHwDerivePciId, which is now part of the ACPICA core code.
7198 AcpiHwDerivePciId has been implemented without recursion. Adds one new
7199 module, hwpci.c. ACPICA BZ 857.
7200
7201 Implemented a dynamic repair for _HID and _CID strings. The following
7202 problems are now repaired at runtime: 1) Remove a leading asterisk in the
7203 string, and 2) the entire string is uppercased. Both repairs are in
7204 accordance with the ACPI specification and will simplify host driver
7205 code.
7206 ACPICA BZ 871.
7207
7208 The ACPI_THREAD_ID type is no longer configurable, internally it is now
7209 always UINT64. This simplifies the ACPICA code, especially any printf
7210 output.
7211 UINT64 is the only common data type for all thread_id types across all
7212 operating systems. It is now up to the host OSL to cast the native
7213 thread_id
7214 type to UINT64 before returning the value to ACPICA (via
7215 AcpiOsGetThreadId).
7216 Lin Ming, Bob Moore.
7217
7218 Added the ACPI_INLINE type to enhance the ACPICA configuration. The
7219 "inline"
7220 keyword is not standard across compilers, and this type allows inline to
7221 be
7222 configured on a per-compiler basis. Lin Ming.
7223
7224 Made the system global AcpiGbl_SystemAwakeAndRunning publicly
7225 available.
7226 Added an extern for this boolean in acpixf.h. Some hosts utilize this
7227 value
7228 during suspend/restore operations. ACPICA BZ 869.
7229
7230 All code that implements error/warning messages with the "ACPI:" prefix
7231 has
7232 been moved to a new module, utxferror.c.
7233
7234 The UINT64_OVERLAY was moved to utmath.c, which is the only module where
7235 it
7236 is used. ACPICA BZ 829. Lin Ming, Bob Moore.
7237
7238 Example Code and Data Size: These are the sizes for the OS-independent
7239 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7240 debug version of the code includes the debug output trace mechanism and
7241 has a
7242 much larger code and data size.
7243
7244 Previous Release:
7245 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
7246 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
7247 Current Release:
7248 Non-Debug Version: 89.9K Code, 19.0K Data, 108.9K Total
7249 Debug Version: 166.3K Code, 52.1K Data, 218.4K Total
7250
7251 2) iASL Compiler/Disassembler and Tools:
7252
7253 iASL/Disassembler: Write ACPI errors to stderr instead of the output
7254 file.
7255 This keeps the output files free of random error messages that may
7256 originate
7257 from within the namespace/interpreter code. Used this opportunity to
7258 merge
7259 all ACPI:-style messages into a single new module, utxferror.c. ACPICA BZ
7260 866. Lin Ming, Bob Moore.
7261
7262 Tools: update some printfs for ansi warnings on size_t. Handle width
7263 change
7264 of size_t on 32-bit versus 64-bit generations. Lin Ming.
7265
7266 ----------------------------------------
7267 06 August 2010. Summary of changes for version 20100806:
7268
7269 1) ACPI CA Core Subsystem:
7270
7271 Designed and implemented a new host interface to the _OSI support code.
7272 This
7273 will allow the host to dynamically add or remove multiple _OSI strings,
7274 as
7275 well as install an optional handler that is called for each _OSI
7276 invocation.
7277 Also added a new AML debugger command, 'osi' to display and modify the
7278 global
7279 _OSI string table, and test support in the AcpiExec utility. See the
7280 ACPICA
7281 reference manual for full details. Lin Ming, Bob Moore. ACPICA BZ 836.
7282 New Functions:
7283 AcpiInstallInterface - Add an _OSI string.
7284 AcpiRemoveInterface - Delete an _OSI string.
7285 AcpiInstallInterfaceHandler - Install optional _OSI handler.
7286 Obsolete Functions:
7287 AcpiOsValidateInterface - no longer used.
7288 New Files:
7289 source/components/utilities/utosi.c
7290
7291 Re-introduced the support to enable multi-byte transfers for Embedded
7292 Controller (EC) operation regions. A reported problem was found to be a
7293 bug
7294 in the host OS, not in the multi-byte support. Previously, the maximum
7295 data
7296 size passed to the EC operation region handler was a single byte. There
7297 are
7298 often EC Fields larger than one byte that need to be transferred, and it
7299 is
7300 useful for the EC driver to lock these as a single transaction. This
7301 change
7302 enables single transfers larger than 8 bits. This effectively changes the
7303 access to the EC space from ByteAcc to AnyAcc, and will probably require
7304 changes to the host OS Embedded Controller driver to enable 16/32/64/256-
7305 bit
7306 transfers in addition to 8-bit transfers. Alexey Starikovskiy, Lin Ming.
7307
7308 Fixed a problem with the prototype for AcpiOsReadPciConfiguration. The
7309 prototype in acpiosxf.h had the output value pointer as a (void *).
7310 It should be a (UINT64 *). This may affect some host OSL code.
7311
7312 Fixed a couple problems with the recently modified Linux makefiles for
7313 iASL
7314 and AcpiExec. These new makefiles place the generated object files in the
7315 local directory so that there can be no collisions between the files that
7316 are
7317 shared between them that are compiled with different options.
7318
7319 Example Code and Data Size: These are the sizes for the OS-independent
7320 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7321 debug version of the code includes the debug output trace mechanism and
7322 has a
7323 much larger code and data size.
7324
7325 Previous Release:
7326 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7327 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
7328 Current Release:
7329 Non-Debug Version: 89.1K Code, 19.0K Data, 108.1K Total
7330 Debug Version: 165.1K Code, 51.9K Data, 217.0K Total
7331
7332 2) iASL Compiler/Disassembler and Tools:
7333
7334 iASL/Disassembler: Added a new option (-da, "disassemble all") to load
7335 the
7336 namespace from and disassemble an entire group of AML files. Useful for
7337 loading all of the AML tables for a given machine (DSDT, SSDT1...SSDTn)
7338 and
7339 disassembling with one simple command. ACPICA BZ 865. Lin Ming.
7340
7341 iASL: Allow multiple invocations of -e option. This change allows
7342 multiple
7343 uses of -e on the command line: "-e ssdt1.dat -e ssdt2.dat". ACPICA BZ
7344 834.
7345 Lin Ming.
7346
7347 ----------------------------------------
7348 02 July 2010. Summary of changes for version 20100702:
7349
7350 1) ACPI CA Core Subsystem:
7351
7352 Implemented several updates to the recently added GPE reference count
7353 support. The model for "wake" GPEs is changing to give the host OS
7354 complete
7355 control of these GPEs. Eventually, the ACPICA core will not execute any
7356 _PRW
7357 methods, since the host already must execute them. Also, additional
7358 changes
7359 were made to help ensure that the reference counts are kept in proper
7360 synchronization with reality. Rafael J. Wysocki.
7361
7362 1) Ensure that GPEs are not enabled twice during initialization.
7363 2) Ensure that GPE enable masks stay in sync with the reference count.
7364 3) Do not inadvertently enable GPEs when writing GPE registers.
7365 4) Remove the internal wake reference counter and add new AcpiGpeWakeup
7366 interface. This interface will set or clear individual GPEs for wakeup.
7367 5) Remove GpeType argument from AcpiEnable and AcpiDisable. These
7368 interfaces
7369 are now used for "runtime" GPEs only.
7370
7371 Changed the behavior of the GPE install/remove handler interfaces. The
7372 GPE
7373 is
7374 no longer disabled during this process, as it was found to cause problems
7375 on
7376 some machines. Rafael J. Wysocki.
7377
7378 Reverted a change introduced in version 20100528 to enable Embedded
7379 Controller multi-byte transfers. This change was found to cause problems
7380 with
7381 Index Fields and possibly Bank Fields. It will be reintroduced when these
7382 problems have been resolved.
7383
7384 Fixed a problem with references to Alias objects within Package Objects.
7385 A
7386 reference to an Alias within the definition of a Package was not always
7387 resolved properly. Aliases to objects like Processors, Thermal zones,
7388 etc.
7389 were resolved to the actual object instead of a reference to the object
7390 as
7391 it
7392 should be. Package objects are only allowed to contain integer, string,
7393 buffer, package, and reference objects. Redhat bugzilla 608648.
7394
7395 Example Code and Data Size: These are the sizes for the OS-independent
7396 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7397 debug version of the code includes the debug output trace mechanism and
7398 has a
7399 much larger code and data size.
7400
7401 Previous Release:
7402 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7403 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
7404 Current Release:
7405 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7406 Debug Version: 164.0K Code, 51.5K Data, 215.5K Total
7407
7408 2) iASL Compiler/Disassembler and Tools:
7409
7410 iASL: Implemented a new compiler subsystem to allow definition and
7411 compilation of the non-AML ACPI tables such as FADT, MADT, SRAT, etc.
7412 These
7413 are called "ACPI Data Tables", and the new compiler is the "Data Table
7414 Compiler". This compiler is intended to simplify the existing error-prone
7415 process of creating these tables for the BIOS, as well as allowing the
7416 disassembly, modification, recompilation, and override of existing ACPI
7417 data
7418 tables. See the iASL User Guide for detailed information.
7419
7420 iASL: Implemented a new Template Generator option in support of the new
7421 Data
7422 Table Compiler. This option will create examples of all known ACPI tables
7423 that can be used as the basis for table development. See the iASL
7424 documentation and the -T option.
7425
7426 Disassembler and headers: Added support for the WDDT ACPI table (Watchdog
7427 Descriptor Table).
7428
7429 Updated the Linux makefiles for iASL and AcpiExec to place the generated
7430 object files in the local directory so that there can be no collisions
7431 between the shared files between them that are generated with different
7432 options.
7433
7434 Added support for Mac OS X in the Unix OSL used for iASL and AcpiExec.
7435 Use
7436 the #define __APPLE__ to enable this support.
7437
7438 ----------------------------------------
7439 28 May 2010. Summary of changes for version 20100528:
7440
7441 Note: The ACPI 4.0a specification was released on April 5, 2010 and is
7442 available at www.acpi.info. This is primarily an errata release.
7443
7444 1) ACPI CA Core Subsystem:
7445
7446 Undefined ACPI tables: We are looking for the definitions for the
7447 following
7448 ACPI tables that have been seen in the field: ATKG, IEIT, GSCI.
7449
7450 Implemented support to enable multi-byte transfers for Embedded
7451 Controller
7452 (EC) operation regions. Previously, the maximum data size passed to the
7453 EC
7454 operation region handler was a single byte. There are often EC Fields
7455 larger
7456 than one byte that need to be transferred, and it is useful for the EC
7457 driver
7458 to lock these as a single transaction. This change enables single
7459 transfers
7460 larger than 8 bits. This effectively changes the access to the EC space
7461 from
7462 ByteAcc to AnyAcc, and will probably require changes to the host OS
7463 Embedded
7464 Controller driver to enable 16/32/64/256-bit transfers in addition to 8-
7465 bit
7466 transfers. Alexey Starikovskiy, Lin Ming
7467
7468 Implemented a performance enhancement for namespace search and access.
7469 This
7470 change enhances the performance of namespace searches and walks by adding
7471 a
7472 backpointer to the parent in each namespace node. On large namespaces,
7473 this
7474 change can improve overall ACPI performance by up to 9X. Adding a pointer
7475 to
7476 each namespace node increases the overall size of the internal namespace
7477 by
7478 about 5%, since each namespace entry usually consists of both a namespace
7479 node and an ACPI operand object. However, this is the first growth of the
7480 namespace in ten years. ACPICA bugzilla 817. Alexey Starikovskiy.
7481
7482 Implemented a performance optimization that reduces the number of
7483 namespace
7484 walks. On control method exit, only walk the namespace if the method is
7485 known
7486 to have created namespace objects outside of its local scope. Previously,
7487 the
7488 entire namespace was traversed on each control method exit. This change
7489 can
7490 improve overall ACPI performance by up to 3X. Alexey Starikovskiy, Bob
7491 Moore.
7492
7493 Added support to truncate I/O addresses to 16 bits for Windows
7494 compatibility.
7495 Some ASL code has been seen in the field that inadvertently has bits set
7496 above bit 15. This feature is optional and is enabled if the BIOS
7497 requests
7498 any Windows OSI strings. It can also be enabled by the host OS. Matthew
7499 Garrett, Bob Moore.
7500
7501 Added support to limit the maximum time for the ASL Sleep() operator. To
7502 prevent accidental deep sleeps, limit the maximum time that Sleep() will
7503 actually sleep. Configurable, the default maximum is two seconds. ACPICA
7504 bugzilla 854.
7505
7506 Added run-time validation support for the _WDG and_WED Microsoft
7507 predefined
7508 methods. These objects are defined by "Windows Instrumentation", and are
7509 not
7510 part of the ACPI spec. ACPICA BZ 860.
7511
7512 Expanded all statistic counters used during namespace and device
7513 initialization from 16 to 32 bits in order to support very large
7514 namespaces.
7515
7516 Replaced all instances of %d in printf format specifiers with %u since
7517 nearly
7518 all integers in ACPICA are unsigned.
7519
7520 Fixed the exception namestring for AE_WAKE_ONLY_GPE. Was incorrectly
7521 returned
7522 as AE_NO_HANDLER.
7523
7524 Example Code and Data Size: These are the sizes for the OS-independent
7525 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7526 debug version of the code includes the debug output trace mechanism and
7527 has a
7528 much larger code and data size.
7529
7530 Previous Release:
7531 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
7532 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
7533 Current Release:
7534 Non-Debug Version: 88.3K Code, 18.8K Data, 107.1K Total
7535 Debug Version: 164.1K Code, 51.5K Data, 215.6K Total
7536
7537 2) iASL Compiler/Disassembler and Tools:
7538
7539 iASL: Added compiler support for the _WDG and_WED Microsoft predefined
7540 methods. These objects are defined by "Windows Instrumentation", and are
7541 not
7542 part of the ACPI spec. ACPICA BZ 860.
7543
7544 AcpiExec: added option to disable the memory tracking mechanism. The -dt
7545 option will disable the tracking mechanism, which improves performance
7546 considerably.
7547
7548 AcpiExec: Restructured the command line options into -d (disable) and -e
7549 (enable) options.
7550
7551 ----------------------------------------
7552 28 April 2010. Summary of changes for version 20100428:
7553
7554 1) ACPI CA Core Subsystem:
7555
7556 Implemented GPE support for dynamically loaded ACPI tables. For all GPEs,
7557 including FADT-based and GPE Block Devices, execute any _PRW methods in
7558 the
7559 new table, and process any _Lxx/_Exx GPE methods in the new table. Any
7560 runtime GPE that is referenced by an _Lxx/_Exx method in the new table is
7561 immediately enabled. Handles the FADT-defined GPEs as well as GPE Block
7562 Devices. Provides compatibility with other ACPI implementations. Two new
7563 files added, evgpeinit.c and evgpeutil.c. ACPICA BZ 833. Lin Ming, Bob
7564 Moore.
7565
7566 Fixed a regression introduced in version 20100331 within the table
7567 manager
7568 where initial table loading could fail. This was introduced in the fix
7569 for
7570 AcpiReallocateRootTable. Also, renamed some of fields in the table
7571 manager
7572 data structures to clarify their meaning and use.
7573
7574 Fixed a possible allocation overrun during internal object copy in
7575 AcpiUtCopySimpleObject. The original code did not correctly handle the
7576 case
7577 where the object to be copied was a namespace node. Lin Ming. ACPICA BZ
7578 847.
7579
7580 Updated the allocation dump routine, AcpiUtDumpAllocation and fixed a
7581 possible access beyond end-of-allocation. Also, now fully validate
7582 descriptor
7583 (size and type) before output. Lin Ming, Bob Moore. ACPICA BZ 847
7584
7585 Example Code and Data Size: These are the sizes for the OS-independent
7586 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7587 debug version of the code includes the debug output trace mechanism and
7588 has a
7589 much larger code and data size.
7590
7591 Previous Release:
7592 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
7593 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
7594 Current Release:
7595 Non-Debug Version: 88.4K Code, 18.8K Data, 107.2K Total
7596 Debug Version: 164.2K Code, 51.5K Data, 215.7K Total
7597
7598 2) iASL Compiler/Disassembler and Tools:
7599
7600 iASL: Implemented Min/Max/Len/Gran validation for address resource
7601 descriptors. This change implements validation for the address fields
7602 that
7603 are common to all address-type resource descriptors. These checks are
7604 implemented: Checks for valid Min/Max, length within the Min/Max window,
7605 valid granularity, Min/Max a multiple of granularity, and _MIF/_MAF as
7606 per
7607 table 6-40 in the ACPI 4.0a specification. Also split the large
7608 aslrestype1.c
7609 and aslrestype2.c files into five new files. ACPICA BZ 840.
7610
7611 iASL: Added support for the _Wxx predefined names. This support was
7612 missing
7613 and these names were not recognized by the compiler as valid predefined
7614 names. ACPICA BZ 851.
7615
7616 iASL: Added an error for all predefined names that are defined to return
7617 no
7618 value and thus must be implemented as Control Methods. These include all
7619 of
7620 the _Lxx, _Exx, _Wxx, and _Qxx names, as well as some other miscellaneous
7621 names such as _DIS, _INI, _IRC, _OFF, _ON, and _PSx. ACPICA BZ 850, 856.
7622
7623 iASL: Implemented the -ts option to emit hex AML data in ASL format, as
7624 an
7625 ASL Buffer. Allows ACPI tables to be easily included within ASL files, to
7626 be
7627 dynamically loaded via the Load() operator. Also cleaned up output for
7628 the
7629 -
7630 ta and -tc options. ACPICA BZ 853.
7631
7632 Tests: Added a new file with examples of extended iASL error checking.
7633 Demonstrates the advanced error checking ability of the iASL compiler.
7634 Available at tests/misc/badcode.asl.
7635
7636 ----------------------------------------
7637 31 March 2010. Summary of changes for version 20100331:
7638
7639 1) ACPI CA Core Subsystem:
7640
7641 Completed a major update for the GPE support in order to improve support
7642 for
7643 shared GPEs and to simplify both host OS and ACPICA code. Added a
7644 reference
7645 count mechanism to support shared GPEs that require multiple device
7646 drivers.
7647 Several external interfaces have changed. One external interface has been
7648 removed. One new external interface was added. Most of the GPE external
7649 interfaces now use the GPE spinlock instead of the events mutex (and the
7650 Flags parameter for many GPE interfaces has been removed.) See the
7651 updated
7652 ACPICA Programmer Reference for details. Matthew Garrett, Bob Moore,
7653 Rafael
7654 Wysocki. ACPICA BZ 831.
7655
7656 Changed:
7657 AcpiEnableGpe, AcpiDisableGpe, AcpiClearGpe, AcpiGetGpeStatus
7658 Removed:
7659 AcpiSetGpeType
7660 New:
7661 AcpiSetGpe
7662
7663 Implemented write support for DataTable operation regions. These regions
7664 are
7665 defined via the DataTableRegion() operator. Previously, only read support
7666 was
7667 implemented. The ACPI specification allows DataTableRegions to be
7668 read/write,
7669 however.
7670
7671 Implemented a new subsystem option to force a copy of the DSDT to local
7672 memory. Optionally copy the entire DSDT to local memory (instead of
7673 simply
7674 mapping it.) There are some (albeit very rare) BIOSs that corrupt or
7675 replace
7676 the original DSDT, creating the need for this option. Default is FALSE,
7677 do
7678 not copy the DSDT.
7679
7680 Implemented detection of a corrupted or replaced DSDT. This change adds
7681 support to detect a DSDT that has been corrupted and/or replaced from
7682 outside
7683 the OS (by firmware). This is typically catastrophic for the system, but
7684 has
7685 been seen on some machines. Once this problem has been detected, the DSDT
7686 copy option can be enabled via system configuration. Lin Ming, Bob Moore.
7687
7688 Fixed two problems with AcpiReallocateRootTable during the root table
7689 copy.
7690 When copying the root table to the new allocation, the length used was
7691 incorrect. The new size was used instead of the current table size,
7692 meaning
7693 too much data was copied. Also, the count of available slots for ACPI
7694 tables
7695 was not set correctly. Alexey Starikovskiy, Bob Moore.
7696
7697 Example Code and Data Size: These are the sizes for the OS-independent
7698 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7699 debug version of the code includes the debug output trace mechanism and
7700 has a
7701 much larger code and data size.
7702
7703 Previous Release:
7704 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
7705 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
7706 Current Release:
7707 Non-Debug Version: 87.9K Code, 18.6K Data, 106.5K Total
7708 Debug Version: 163.5K Code, 51.3K Data, 214.8K Total
7709
7710 2) iASL Compiler/Disassembler and Tools:
7711
7712 iASL: Implement limited typechecking for values returned from predefined
7713 control methods. The type of any returned static (unnamed) object is now
7714 validated. For example, Return(1). ACPICA BZ 786.
7715
7716 iASL: Fixed a predefined name object verification regression. Fixes a
7717 problem
7718 introduced in version 20100304. An error is incorrectly generated if a
7719 predefined name is declared as a static named object with a value defined
7720 using the keywords "Zero", "One", or "Ones". Lin Ming.
7721
7722 iASL: Added Windows 7 support for the -g option (get local ACPI tables)
7723 by
7724 reducing the requested registry access rights. ACPICA BZ 842.
7725
7726 Disassembler: fixed a possible fault when generating External()
7727 statements.
7728 Introduced in commit ae7d6fd: Properly handle externals with parent-
7729 prefix
7730 (carat). Fixes a string length allocation calculation. Lin Ming.
7731
7732 ----------------------------------------
7733 04 March 2010. Summary of changes for version 20100304:
7734
7735 1) ACPI CA Core Subsystem:
7736
7737 Fixed a possible problem with the AML Mutex handling function
7738 AcpiExReleaseMutex where the function could fault under the very rare
7739 condition when the interpreter has blocked, the interpreter lock is
7740 released,
7741 the interpreter is then reentered via the same thread, and attempts to
7742 acquire an AML mutex that was previously acquired. FreeBSD report 140979.
7743 Lin
7744 Ming.
7745
7746 Implemented additional configuration support for the AML "Debug Object".
7747 Output from the debug object can now be enabled via a global variable,
7748 AcpiGbl_EnableAmlDebugObject. This will assist with remote machine
7749 debugging.
7750 This debug output is now available in the release version of ACPICA
7751 instead
7752 of just the debug version. Also, the entire debug output module can now
7753 be
7754 configured out of the ACPICA build if desired. One new file added,
7755 executer/exdebug.c. Lin Ming, Bob Moore.
7756
7757 Added header support for the ACPI MCHI table (Management Controller Host
7758 Interface Table). This table was added in ACPI 4.0, but the defining
7759 document
7760 has only recently become available.
7761
7762 Standardized output of integer values for ACPICA warnings/errors. Always
7763 use
7764 0x prefix for hex output, always use %u for unsigned integer decimal
7765 output.
7766 Affects ACPI_INFO, ACPI_ERROR, ACPI_EXCEPTION, and ACPI_WARNING (about
7767 400
7768 invocations.) These invocations were converted from the original
7769 ACPI_DEBUG_PRINT invocations and were not consistent. ACPICA BZ 835.
7770
7771 Example Code and Data Size: These are the sizes for the OS-independent
7772 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7773 debug version of the code includes the debug output trace mechanism and
7774 has a
7775 much larger code and data size.
7776
7777 Previous Release:
7778 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
7779 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
7780 Current Release:
7781 Non-Debug Version: 87.5K Code, 18.4K Data, 105.9K Total
7782 Debug Version: 163.4K Code, 51.1K Data, 214.5K Total
7783
7784 2) iASL Compiler/Disassembler and Tools:
7785
7786 iASL: Implemented typechecking support for static (non-control method)
7787 predefined named objects that are declared with the Name() operator. For
7788 example, the type of this object is now validated to be of type Integer:
7789 Name(_BBN, 1). This change migrates the compiler to using the core
7790 predefined
7791 name table instead of maintaining a local version. Added a new file,
7792 aslpredef.c. ACPICA BZ 832.
7793
7794 Disassembler: Added support for the ACPI 4.0 MCHI table.
7795
7796 ----------------------------------------
7797 21 January 2010. Summary of changes for version 20100121:
7798
7799 1) ACPI CA Core Subsystem:
7800
7801 Added the 2010 copyright to all module headers and signons. This affects
7802 virtually every file in the ACPICA core subsystem, the iASL compiler, the
7803 tools/utilities, and the test suites.
7804
7805 Implemented a change to the AcpiGetDevices interface to eliminate
7806 unnecessary
7807 invocations of the _STA method. In the case where a specific _HID is
7808 requested, do not run _STA until a _HID match is found. This eliminates
7809 potentially dozens of _STA calls during a search for a particular
7810 device/HID,
7811 which in turn can improve boot times. ACPICA BZ 828. Lin Ming.
7812
7813 Implemented an additional repair for predefined method return values.
7814 Attempt
7815 to repair unexpected NULL elements within returned Package objects.
7816 Create
7817 an
7818 Integer of value zero, a NULL String, or a zero-length Buffer as
7819 appropriate.
7820 ACPICA BZ 818. Lin Ming, Bob Moore.
7821
7822 Removed the obsolete ACPI_INTEGER data type. This type was introduced as
7823 the
7824 code was migrated from ACPI 1.0 (with 32-bit AML integers) to ACPI 2.0
7825 (with
7826 64-bit AML integers). It is now obsolete and this change removes it from
7827 the
7828 ACPICA code base, replaced by UINT64. The original typedef has been
7829 retained
7830 for now for compatibility with existing device driver code. ACPICA BZ
7831 824.
7832
7833 Removed the unused UINT32_STRUCT type, and the obsolete Integer64 field
7834 in
7835 the parse tree object.
7836
7837 Added additional warning options for the gcc-4 generation. Updated the
7838 source
7839 accordingly. This includes some code restructuring to eliminate
7840 unreachable
7841 code, elimination of some gotos, elimination of unused return values,
7842 some
7843 additional casting, and removal of redundant declarations.
7844
7845 Example Code and Data Size: These are the sizes for the OS-independent
7846 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7847 debug version of the code includes the debug output trace mechanism and
7848 has a
7849 much larger code and data size.
7850
7851 Previous Release:
7852 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
7853 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
7854 Current Release:
7855 Non-Debug Version: 87.1K Code, 18.0K Data, 105.1K Total
7856 Debug Version: 163.5K Code, 50.9K Data, 214.4K Total
7857
7858 2) iASL Compiler/Disassembler and Tools:
7859
7860 No functional changes for this release.
7861
7862 ----------------------------------------
7863 14 December 2009. Summary of changes for version 20091214:
7864
7865 1) ACPI CA Core Subsystem:
7866
7867 Enhanced automatic data type conversions for predefined name repairs.
7868 This
7869 change expands the automatic repairs/conversions for predefined name
7870 return
7871 values to make Integers, Strings, and Buffers fully interchangeable.
7872 Also,
7873 a
7874 Buffer can be converted to a Package of Integers if necessary. The
7875 nsrepair.c
7876 module was completely restructured. Lin Ming, Bob Moore.
7877
7878 Implemented automatic removal of null package elements during predefined
7879 name
7880 repairs. This change will automatically remove embedded and trailing NULL
7881 package elements from returned package objects that are defined to
7882 contain
7883 a
7884 variable number of sub-packages. The driver is then presented with a
7885 package
7886 with no null elements to deal with. ACPICA BZ 819.
7887
7888 Implemented a repair for the predefined _FDE and _GTM names. The expected
7889 return value for both names is a Buffer of 5 DWORDs. This repair fixes
7890 two
7891 possible problems (both seen in the field), where a package of integers
7892 is
7893 returned, or a buffer of BYTEs is returned. With assistance from Jung-uk
7894 Kim.
7895
7896 Implemented additional module-level code support. This change will
7897 properly
7898 execute module-level code that is not at the root of the namespace (under
7899 a
7900 Device object, etc.). Now executes the code within the current scope
7901 instead
7902 of the root. ACPICA BZ 762. Lin Ming.
7903
7904 Fixed possible mutex acquisition errors when running _REG methods. Fixes
7905 a
7906 problem where mutex errors can occur when running a _REG method that is
7907 in
7908 the same scope as a method-defined operation region or an operation
7909 region
7910 under a module-level IF block. This type of code is rare, so the problem
7911 has
7912 not been seen before. ACPICA BZ 826. Lin Ming, Bob Moore.
7913
7914 Fixed a possible memory leak during module-level code execution. An
7915 object
7916 could be leaked for each block of executed module-level code if the
7917 interpreter slack mode is enabled This change deletes any implicitly
7918 returned
7919 object from the module-level code block. Lin Ming.
7920
7921 Removed messages for successful predefined repair(s). The repair
7922 mechanism
7923 was considered too wordy. Now, messages are only unconditionally emitted
7924 if
7925 the return object cannot be repaired. Existing messages for successful
7926 repairs were converted to ACPI_DEBUG_PRINT messages for now. ACPICA BZ
7927 827.
7928
7929 Example Code and Data Size: These are the sizes for the OS-independent
7930 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
7931 debug version of the code includes the debug output trace mechanism and
7932 has a
7933 much larger code and data size.
7934
7935 Previous Release:
7936 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
7937 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
7938 Current Release:
7939 Non-Debug Version: 87.0K Code, 18.0K Data, 105.0K Total
7940 Debug Version: 163.4K Code, 50.8K Data, 214.2K Total
7941
7942 2) iASL Compiler/Disassembler and Tools:
7943
7944 iASL: Fixed a regression introduced in 20091112 where intermediate .SRC
7945 files
7946 were no longer automatically removed at the termination of the compile.
7947
7948 acpiexec: Implemented the -f option to specify default region fill value.
7949 This option specifies the value used to initialize buffers that simulate
7950 operation regions. Default value is zero. Useful for debugging problems
7951 that
7952 depend on a specific initial value for a region or field.
7953
7954 ----------------------------------------
7955 12 November 2009. Summary of changes for version 20091112:
7956
7957 1) ACPI CA Core Subsystem:
7958
7959 Implemented a post-order callback to AcpiWalkNamespace. The existing
7960 interface only has a pre-order callback. This change adds an additional
7961 parameter for a post-order callback which will be more useful for bus
7962 scans.
7963 ACPICA BZ 779. Lin Ming. Updated the ACPICA Programmer Reference.
7964
7965 Modified the behavior of the operation region memory mapping cache for
7966 SystemMemory. Ensure that the memory mappings created for operation
7967 regions
7968 do not cross 4K page boundaries. Crossing a page boundary while mapping
7969 regions can cause kernel warnings on some hosts if the pages have
7970 different
7971 attributes. Such regions are probably BIOS bugs, and this is the
7972 workaround.
7973 Linux BZ 14445. Lin Ming.
7974
7975 Implemented an automatic repair for predefined methods that must return
7976 sorted lists. This change will repair (by sorting) packages returned by
7977 _ALR,
7978 _PSS, and _TSS. Drivers can now assume that the packages are correctly
7979 sorted
7980 and do not contain NULL package elements. Adds one new file,
7981 namespace/nsrepair2.c. ACPICA BZ 784. Lin Ming, Bob Moore.
7982
7983 Fixed a possible fault during predefined name validation if a return
7984 Package
7985 object contains NULL elements. Also adds a warning if a NULL element is
7986 followed by any non-null elements. ACPICA BZ 813, 814. Future enhancement
7987 may
7988 include repair or removal of all such NULL elements where possible.
7989
7990 Implemented additional module-level executable AML code support. This
7991 change
7992 will execute module-level code that is not at the root of the namespace
7993 (under a Device object, etc.) at table load time. Module-level executable
7994 AML
7995 code has been illegal since ACPI 2.0. ACPICA BZ 762. Lin Ming.
7996
7997 Implemented a new internal function to create Integer objects. This
7998 function
7999 simplifies miscellaneous object creation code. ACPICA BZ 823.
8000
8001 Reduced the severity of predefined repair messages, Warning to Info.
8002 Since
8003 the object was successfully repaired, a warning is too severe. Reduced to
8004 an
8005 info message for now. These messages may eventually be changed to debug-
8006 only.
8007 ACPICA BZ 812.
8008
8009 Example Code and Data Size: These are the sizes for the OS-independent
8010 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8011 debug version of the code includes the debug output trace mechanism and
8012 has a
8013 much larger code and data size.
8014
8015 Previous Release:
8016 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
8017 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
8018 Current Release:
8019 Non-Debug Version: 86.6K Code, 18.2K Data, 104.8K Total
8020 Debug Version: 162.7K Code, 50.8K Data, 213.5K Total
8021
8022 2) iASL Compiler/Disassembler and Tools:
8023
8024 iASL: Implemented Switch() with While(1) so that Break works correctly.
8025 This
8026 change correctly implements the Switch operator with a surrounding
8027 While(1)
8028 so that the Break operator works as expected. ACPICA BZ 461. Lin Ming.
8029
8030 iASL: Added a message if a package initializer list is shorter than
8031 package
8032 length. Adds a new remark for a Package() declaration if an initializer
8033 list
8034 exists, but is shorter than the declared length of the package. Although
8035 technically legal, this is probably a coding error and it is seen in the
8036 field. ACPICA BZ 815. Lin Ming, Bob Moore.
8037
8038 iASL: Fixed a problem where the compiler could fault after the maximum
8039 number
8040 of errors was reached (200).
8041
8042 acpixtract: Fixed a possible warning for pointer cast if the compiler
8043 warning
8044 level set very high.
8045
8046 ----------------------------------------
8047 13 October 2009. Summary of changes for version 20091013:
8048
8049 1) ACPI CA Core Subsystem:
8050
8051 Fixed a problem where an Operation Region _REG method could be executed
8052 more
8053 than once. If a custom address space handler is installed by the host
8054 before
8055 the "initialize operation regions" phase of the ACPICA initialization,
8056 any
8057 _REG methods for that address space could be executed twice. This change
8058 fixes the problem. ACPICA BZ 427. Lin Ming.
8059
8060 Fixed a possible memory leak for the Scope() ASL operator. When the exact
8061 invocation of "Scope(\)" is executed (change scope to root), one internal
8062 operand object was leaked. Lin Ming.
8063
8064 Implemented a run-time repair for the _MAT predefined method. If the _MAT
8065 return value is defined as a Field object in the AML, and the field
8066 size is less than or equal to the default width of an integer (32 or
8067 64),_MAT
8068 can incorrectly return an Integer instead of a Buffer. ACPICA now
8069 automatically repairs this problem. ACPICA BZ 810.
8070
8071 Implemented a run-time repair for the _BIF and _BIX predefined methods.
8072 The
8073 "OEM Information" field is often incorrectly returned as an Integer with
8074 value zero if the field is not supported by the platform. This is due to
8075 an
8076 ambiguity in the ACPI specification. The field should always be a string.
8077 ACPICA now automatically repairs this problem by returning a NULL string
8078 within the returned Package. ACPICA BZ 807.
8079
8080 Example Code and Data Size: These are the sizes for the OS-independent
8081 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8082 debug version of the code includes the debug output trace mechanism and
8083 has a
8084 much larger code and data size.
8085
8086 Previous Release:
8087 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
8088 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
8089 Current Release:
8090 Non-Debug Version: 85.8K Code, 18.0K Data, 103.8K Total
8091 Debug Version: 161.8K Code, 50.6K Data, 212.4K Total
8092
8093 2) iASL Compiler/Disassembler and Tools:
8094
8095 Disassembler: Fixed a problem where references to external symbols that
8096 contained one or more parent-prefixes (carats) were not handled
8097 correctly,
8098 possibly causing a fault. ACPICA BZ 806. Lin Ming.
8099
8100 Disassembler: Restructured the code so that all functions that handle
8101 external symbols are in a single module. One new file is added,
8102 common/dmextern.c.
8103
8104 AML Debugger: Added a max count argument for the Batch command (which
8105 executes multiple predefined methods within the namespace.)
8106
8107 iASL: Updated the compiler documentation (User Reference.) Available at
8108 http://www.acpica.org/documentation/. ACPICA BZ 750.
8109
8110 AcpiXtract: Updated for Lint and other formatting changes. Close all open
8111 files.
8112
8113 ----------------------------------------
8114 03 September 2009. Summary of changes for version 20090903:
8115
8116 1) ACPI CA Core Subsystem:
8117
8118 For Windows Vista compatibility, added the automatic execution of an _INI
8119 method located at the namespace root (\_INI). This method is executed at
8120 table load time. This support is in addition to the automatic execution
8121 of
8122 \_SB._INI. Lin Ming.
8123
8124 Fixed a possible memory leak in the interpreter for AML package objects
8125 if
8126 the package initializer list is longer than the defined size of the
8127 package.
8128 This apparently can only happen if the BIOS changes the package size on
8129 the
8130 fly (seen in a _PSS object), as ASL compilers do not allow this. The
8131 interpreter will truncate the package to the defined size (and issue an
8132 error
8133 message), but previously could leave the extra objects undeleted if they
8134 were
8135 pre-created during the argument processing (such is the case if the
8136 package
8137 consists of a number of sub-packages as in the _PSS.) ACPICA BZ 805.
8138
8139 Fixed a problem seen when a Buffer or String is stored to itself via ASL.
8140 This has been reported in the field. Previously, ACPICA would zero out
8141 the
8142 buffer/string. Now, the operation is treated as a noop. Provides Windows
8143 compatibility. ACPICA BZ 803. Lin Ming.
8144
8145 Removed an extraneous error message for ASL constructs of the form
8146 Store(LocalX,LocalX) when LocalX is uninitialized. These curious
8147 statements
8148 are seen in many BIOSs and are once again treated as NOOPs and no error
8149 is
8150 emitted when they are encountered. ACPICA BZ 785.
8151
8152 Fixed an extraneous warning message if a _DSM reserved method returns a
8153 Package object. _DSM can return any type of object, so validation on the
8154 return type cannot be performed. ACPICA BZ 802.
8155
8156 Example Code and Data Size: These are the sizes for the OS-independent
8157 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8158 debug version of the code includes the debug output trace mechanism and
8159 has a
8160 much larger code and data size.
8161
8162 Previous Release:
8163 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
8164 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
8165 Current Release:
8166 Non-Debug Version: 85.6K Code, 18.0K Data, 103.6K Total
8167 Debug Version: 161.7K Code, 50.9K Data, 212.6K Total
8168
8169 2) iASL Compiler/Disassembler and Tools:
8170
8171 iASL: Fixed a problem with the use of the Alias operator and Resource
8172 Templates. The correct alias is now constructed and no error is emitted.
8173 ACPICA BZ 738.
8174
8175 iASL: Implemented the -I option to specify additional search directories
8176 for
8177 include files. Allows multiple additional search paths for include files.
8178 Directories are searched in the order specified on the command line
8179 (after
8180 the local directory is searched.) ACPICA BZ 800.
8181
8182 iASL: Fixed a problem where the full pathname for include files was not
8183 emitted for warnings/errors. This caused the IDE support to not work
8184 properly. ACPICA BZ 765.
8185
8186 iASL: Implemented the -@ option to specify a Windows-style response file
8187 containing additional command line options. ACPICA BZ 801.
8188
8189 AcpiExec: Added support to load multiple AML files simultaneously (such
8190 as
8191 a
8192 DSDT and multiple SSDTs). Also added support for wildcards within the AML
8193 pathname. These features allow all machine tables to be easily loaded and
8194 debugged together. ACPICA BZ 804.
8195
8196 Disassembler: Added missing support for disassembly of HEST table Error
8197 Bank
8198 subtables.
8199
8200 ----------------------------------------
8201 30 July 2009. Summary of changes for version 20090730:
8202
8203 The ACPI 4.0 implementation for ACPICA is complete with this release.
8204
8205 1) ACPI CA Core Subsystem:
8206
8207 ACPI 4.0: Added header file support for all new and changed ACPI tables.
8208 Completely new tables are: IBFT, IVRS, MSCT, and WAET. Tables that are
8209 new
8210 for ACPI 4.0, but have previously been supported in ACPICA are: CPEP,
8211 BERT,
8212 EINJ, ERST, and HEST. Other newly supported tables are: UEFI and WDAT.
8213 There
8214 have been some ACPI 4.0 changes to other existing tables. Split the large
8215 actbl1.h header into the existing actbl2.h header. ACPICA BZ 774.
8216
8217 ACPI 4.0: Implemented predefined name validation for all new names. There
8218 are
8219 31 new names in ACPI 4.0. The predefined validation module was split into
8220 two
8221 files. The new file is namespace/nsrepair.c. ACPICA BZ 770.
8222
8223 Implemented support for so-called "module-level executable code". This is
8224 executable AML code that exists outside of any control method and is
8225 intended
8226 to be executed at table load time. Although illegal since ACPI 2.0, this
8227 type
8228 of code still exists and is apparently still being created. Blocks of
8229 this
8230 code are now detected and executed as intended. Currently, the code
8231 blocks
8232 must exist under either an If, Else, or While construct; these are the
8233 typical cases seen in the field. ACPICA BZ 762. Lin Ming.
8234
8235 Implemented an automatic dynamic repair for predefined names that return
8236 nested Package objects. This applies to predefined names that are defined
8237 to
8238 return a variable-length Package of sub-packages. If the number of sub-
8239 packages is one, BIOS code is occasionally seen that creates a simple
8240 single
8241 package with no sub-packages. This code attempts to fix the problem by
8242 wrapping a new package object around the existing package. These methods
8243 can
8244 be repaired: _ALR, _CSD, _HPX, _MLS, _PRT, _PSS, _TRT, and _TSS. ACPICA
8245 BZ
8246 790.
8247
8248 Fixed a regression introduced in 20090625 for the AcpiGetDevices
8249 interface.
8250 The _HID/_CID matching was broken and no longer matched IDs correctly.
8251 ACPICA
8252 BZ 793.
8253
8254 Fixed a problem with AcpiReset where the reset would silently fail if the
8255 register was one of the protected I/O ports. AcpiReset now bypasses the
8256 port
8257 validation mechanism. This may eventually be driven into the
8258 AcpiRead/Write
8259 interfaces.
8260
8261 Fixed a regression related to the recent update of the AcpiRead/Write
8262 interfaces. A sleep/suspend could fail if the optional PM2 Control
8263 register
8264 does not exist during an attempt to write the Bus Master Arbitration bit.
8265 (However, some hosts already delete the code that writes this bit, and
8266 the
8267 code may in fact be obsolete at this date.) ACPICA BZ 799.
8268
8269 Fixed a problem where AcpiTerminate could fault if inadvertently called
8270 twice
8271 in succession. ACPICA BZ 795.
8272
8273 Example Code and Data Size: These are the sizes for the OS-independent
8274 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8275 debug version of the code includes the debug output trace mechanism and
8276 has a
8277 much larger code and data size.
8278
8279 Previous Release:
8280 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
8281 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
8282 Current Release:
8283 Non-Debug Version: 85.5K Code, 18.0K Data, 103.5K Total
8284 Debug Version: 161.6K Code, 50.9K Data, 212.5K Total
8285
8286 2) iASL Compiler/Disassembler and Tools:
8287
8288 ACPI 4.0: Implemented disassembler support for all new ACPI tables and
8289 changes to existing tables. ACPICA BZ 775.
8290
8291 ----------------------------------------
8292 25 June 2009. Summary of changes for version 20090625:
8293
8294 The ACPI 4.0 Specification was released on June 16 and is available at
8295 www.acpi.info. ACPICA implementation of ACPI 4.0 is underway and will
8296 continue for the next few releases.
8297
8298 1) ACPI CA Core Subsystem:
8299
8300 ACPI 4.0: Implemented interpreter support for the IPMI operation region
8301 address space. Includes support for bi-directional data buffers and an
8302 IPMI
8303 address space handler (to be installed by an IPMI device driver.) ACPICA
8304 BZ
8305 773. Lin Ming.
8306
8307 ACPI 4.0: Added changes for existing ACPI tables - FACS and SRAT.
8308 Includes
8309 support in both the header files and the disassembler.
8310
8311 Completed a major update for the AcpiGetObjectInfo external interface.
8312 Changes include:
8313 - Support for variable, unlimited length HID, UID, and CID strings.
8314 - Support Processor objects the same as Devices (HID,UID,CID,ADR,STA,
8315 etc.)
8316 - Call the _SxW power methods on behalf of a device object.
8317 - Determine if a device is a PCI root bridge.
8318 - Change the ACPI_BUFFER parameter to ACPI_DEVICE_INFO.
8319 These changes will require an update to all callers of this interface.
8320 See
8321 the updated ACPICA Programmer Reference for details. One new source file
8322 has
8323 been added - utilities/utids.c. ACPICA BZ 368, 780.
8324
8325 Updated the AcpiRead and AcpiWrite external interfaces to support 64-bit
8326 transfers. The Value parameter has been extended from 32 bits to 64 bits
8327 in
8328 order to support new ACPI 4.0 tables. These changes will require an
8329 update
8330 to
8331 all callers of these interfaces. See the ACPICA Programmer Reference for
8332 details. ACPICA BZ 768.
8333
8334 Fixed several problems with AcpiAttachData. The handler was not invoked
8335 when
8336 the host node was deleted. The data sub-object was not automatically
8337 deleted
8338 when the host node was deleted. The interface to the handler had an
8339 unused
8340 parameter, this was removed. ACPICA BZ 778.
8341
8342 Enhanced the function that dumps ACPI table headers. All non-printable
8343 characters in the string fields are now replaced with '?' (Signature,
8344 OemId,
8345 OemTableId, and CompilerId.) ACPI tables with non-printable characters in
8346 these fields are occasionally seen in the field. ACPICA BZ 788.
8347
8348 Fixed a problem with predefined method repair code where the code that
8349 attempts to repair/convert an object of incorrect type is only executed
8350 on
8351 the first time the predefined method is called. The mechanism that
8352 disables
8353 warnings on subsequent calls was interfering with the repair mechanism.
8354 ACPICA BZ 781.
8355
8356 Fixed a possible memory leak in the predefined validation/repair code
8357 when
8358 a
8359 buffer is automatically converted to an expected string object.
8360
8361 Removed obsolete 16-bit files from the distribution and from the current
8362 git
8363 tree head. ACPICA BZ 776.
8364
8365 Example Code and Data Size: These are the sizes for the OS-independent
8366 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8367 debug version of the code includes the debug output trace mechanism and
8368 has a
8369 much larger code and data size.
8370
8371 Previous Release:
8372 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
8373 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
8374 Current Release:
8375 Non-Debug Version: 84.7K Code, 17.8K Data, 102.5K Total
8376 Debug Version: 160.5K Code, 50.6K Data, 211.1K Total
8377
8378 2) iASL Compiler/Disassembler and Tools:
8379
8380 ACPI 4.0: iASL and Disassembler - implemented support for the new IPMI
8381 operation region keyword. ACPICA BZ 771, 772. Lin Ming.
8382
8383 ACPI 4.0: iASL - implemented compile-time validation support for all new
8384 predefined names and control methods (31 total). ACPICA BZ 769.
8385
8386 ----------------------------------------
8387 21 May 2009. Summary of changes for version 20090521:
8388
8389 1) ACPI CA Core Subsystem:
8390
8391 Disabled the preservation of the SCI enable bit in the PM1 control
8392 register.
8393 The SCI enable bit (bit 0, SCI_EN) is defined by the ACPI specification
8394 to
8395 be
8396 a "preserved" bit - "OSPM always preserves this bit position", section
8397 4.7.3.2.1. However, some machines fail if this bit is in fact preserved
8398 because the bit needs to be explicitly set by the OS as a workaround. No
8399 machines fail if the bit is not preserved. Therefore, ACPICA no longer
8400 attempts to preserve this bit.
8401
8402 Fixed a problem in AcpiRsGetPciRoutingTableLength where an invalid or
8403 incorrectly formed _PRT package could cause a fault. Added validation to
8404 ensure that each package element is actually a sub-package.
8405
8406 Implemented a new interface to install or override a single control
8407 method,
8408 AcpiInstallMethod. This interface is useful when debugging in order to
8409 repair
8410 an existing method or to install a missing method without having to
8411 override
8412 the entire ACPI table. See the ACPICA Programmer Reference for use and
8413 examples. Lin Ming, Bob Moore.
8414
8415 Fixed several reference count issues with the DdbHandle object that is
8416 created from a Load or LoadTable operator. Prevent premature deletion of
8417 the
8418 object. Also, mark the object as invalid once the table has been
8419 unloaded.
8420 This is needed because the handle itself may not be deleted after the
8421 table
8422 unload, depending on whether it has been stored in a named object by the
8423 caller. Lin Ming.
8424
8425 Fixed a problem with Mutex Sync Levels. Fixed a problem where if multiple
8426 mutexes of the same sync level are acquired but then not released in
8427 strict
8428 opposite order, the internally maintained Current Sync Level becomes
8429 confused
8430 and can cause subsequent execution errors. ACPICA BZ 471.
8431
8432 Changed the allowable release order for ASL mutex objects. The ACPI 4.0
8433 specification has been changed to make the SyncLevel for mutex objects
8434 more
8435 useful. When releasing a mutex, the SyncLevel of the mutex must now be
8436 the
8437 same as the current sync level. This makes more sense than the previous
8438 rule
8439 (SyncLevel less than or equal). This change updates the code to match the
8440 specification.
8441
8442 Fixed a problem with the local version of the AcpiOsPurgeCache function.
8443 The
8444 (local) cache must be locked during all cache object deletions. Andrew
8445 Baumann.
8446
8447 Updated the Load operator to use operation region interfaces. This
8448 replaces
8449 direct memory mapping with region access calls. Now, all region accesses
8450 go
8451 through the installed region handler as they should.
8452
8453 Simplified and optimized the NsGetNextNode function. Reduced parameter
8454 count
8455 and reduced code for this frequently used function.
8456
8457 Example Code and Data Size: These are the sizes for the OS-independent
8458 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8459 debug version of the code includes the debug output trace mechanism and
8460 has a
8461 much larger code and data size.
8462
8463 Previous Release:
8464 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
8465 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
8466 Current Release:
8467 Non-Debug Version: 83.4K Code, 17.5K Data, 100.9K Total
8468 Debug Version: 158.9K Code, 50.0K Data, 208.9K Total
8469
8470 2) iASL Compiler/Disassembler and Tools:
8471
8472 Disassembler: Fixed some issues with DMAR, HEST, MADT tables. Some
8473 problems
8474 with sub-table disassembly and handling invalid sub-tables. Attempt
8475 recovery
8476 after an invalid sub-table ID.
8477
8478 ----------------------------------------
8479 22 April 2009. Summary of changes for version 20090422:
8480
8481 1) ACPI CA Core Subsystem:
8482
8483 Fixed a compatibility issue with the recently released I/O port
8484 protection
8485 mechanism. For windows compatibility, 1) On a port protection violation,
8486 simply ignore the request and do not return an exception (allow the
8487 control
8488 method to continue execution.) 2) If only part of the request overlaps a
8489 protected port, read/write the individual ports that are not protected.
8490 Linux
8491 BZ 13036. Lin Ming
8492
8493 Enhanced the execution of the ASL/AML BreakPoint operator so that it
8494 actually
8495 breaks into the AML debugger if the debugger is present. This matches the
8496 ACPI-defined behavior.
8497
8498 Fixed several possible warnings related to the use of the configurable
8499 ACPI_THREAD_ID. This type can now be configured as either an integer or a
8500 pointer with no warnings. Also fixes several warnings in printf-like
8501 statements for the 64-bit build when the type is configured as a pointer.
8502 ACPICA BZ 766, 767.
8503
8504 Fixed a number of possible warnings when compiling with gcc 4+ (depending
8505 on
8506 warning options.) Examples include printf formats, aliasing, unused
8507 globals,
8508 missing prototypes, missing switch default statements, use of non-ANSI
8509 library functions, use of non-ANSI constructs. See generate/unix/Makefile
8510 for
8511 a list of warning options used with gcc 3 and 4. ACPICA BZ 735.
8512
8513 Example Code and Data Size: These are the sizes for the OS-independent
8514 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8515 debug version of the code includes the debug output trace mechanism and
8516 has a
8517 much larger code and data size.
8518
8519 Previous Release:
8520 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
8521 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
8522 Current Release:
8523 Non-Debug Version: 82.8K Code, 17.5K Data, 100.3K Total
8524 Debug Version: 158.0K Code, 49.9K Data, 207.9K Total
8525
8526 2) iASL Compiler/Disassembler and Tools:
8527
8528 iASL: Fixed a generation warning from Bison 2.3 and fixed several
8529 warnings
8530 on
8531 the 64-bit build.
8532
8533 iASL: Fixed a problem where the Unix/Linux versions of the compiler could
8534 not
8535 correctly digest Windows/DOS formatted files (with CR/LF).
8536
8537 iASL: Added a new option for "quiet mode" (-va) that produces only the
8538 compilation summary, not individual errors and warnings. Useful for large
8539 batch compilations.
8540
8541 AcpiExec: Implemented a new option (-z) to enable a forced
8542 semaphore/mutex
8543 timeout that can be used to detect hang conditions during execution of
8544 AML
8545 code (includes both internal semaphores and AML-defined mutexes and
8546 events.)
8547
8548 Added new makefiles for the generation of acpica in a generic unix-like
8549 environment. These makefiles are intended to generate the acpica tools
8550 and
8551 utilities from the original acpica git source tree structure.
8552
8553 Test Suites: Updated and cleaned up the documentation files. Updated the
8554 copyrights to 2009, affecting all source files. Use the new version of
8555 iASL
8556 with quiet mode. Increased the number of available semaphores in the
8557 Windows
8558 OSL, allowing the aslts to execute fully on Windows. For the Unix OSL,
8559 added
8560 an alternate implementation of the semaphore timeout to allow aslts to
8561 execute fully on Cygwin.
8562
8563 ----------------------------------------
8564 20 March 2009. Summary of changes for version 20090320:
8565
8566 1) ACPI CA Core Subsystem:
8567
8568 Fixed a possible race condition between AcpiWalkNamespace and dynamic
8569 table
8570 unloads. Added a reader/writer locking mechanism to allow multiple
8571 concurrent
8572 namespace walks (readers), but block a dynamic table unload until it can
8573 gain
8574 exclusive write access to the namespace. This fixes a problem where a
8575 table
8576 unload could (possibly catastrophically) delete the portion of the
8577 namespace
8578 that is currently being examined by a walk. Adds a new file, utlock.c,
8579 that
8580 implements the reader/writer lock mechanism. ACPICA BZ 749.
8581
8582 Fixed a regression introduced in version 20090220 where a change to the
8583 FADT
8584 handling could cause the ACPICA subsystem to access non-existent I/O
8585 ports.
8586
8587 Modified the handling of FADT register and table (FACS/DSDT) addresses.
8588 The
8589 FADT can contain both 32-bit and 64-bit versions of these addresses.
8590 Previously, the 64-bit versions were favored, meaning that if both 32 and
8591 64
8592 versions were valid, but not equal, the 64-bit version was used. This was
8593 found to cause some machines to fail. Now, in this case, the 32-bit
8594 version
8595 is used instead. This now matches the Windows behavior.
8596
8597 Implemented a new mechanism to protect certain I/O ports. Provides
8598 Microsoft
8599 compatibility and protects the standard PC I/O ports from access via AML
8600 code. Adds a new file, hwvalid.c
8601
8602 Fixed a possible extraneous warning message from the FADT support. The
8603 message warns of a 32/64 length mismatch between the legacy and GAS
8604 definitions for a register.
8605
8606 Removed the obsolete AcpiOsValidateAddress OSL interface. This interface
8607 is
8608 made obsolete by the port protection mechanism above. It was previously
8609 used
8610 to validate the entire address range of an operation region, which could
8611 be
8612 incorrect if the range included illegal ports, but fields within the
8613 operation region did not actually access those ports. Validation is now
8614 performed on a per-field basis instead of the entire region.
8615
8616 Modified the handling of the PM1 Status Register ignored bit (bit 11.)
8617 Ignored bits must be "preserved" according to the ACPI spec. Usually,
8618 this
8619 means a read/modify/write when writing to the register. However, for
8620 status
8621 registers, writing a one means clear the event. Writing a zero means
8622 preserve
8623 the event (do not clear.) This behavior is clarified in the ACPI 4.0
8624 spec,
8625 and the ACPICA code now simply always writes a zero to the ignored bit.
8626
8627 Modified the handling of ignored bits for the PM1 A/B Control Registers.
8628 As
8629 per the ACPI specification, for the control registers, preserve
8630 (read/modify/write) all bits that are defined as either reserved or
8631 ignored.
8632
8633 Updated the handling of write-only bits in the PM1 A/B Control Registers.
8634 When reading the register, zero the write-only bits as per the ACPI spec.
8635 ACPICA BZ 443. Lin Ming.
8636
8637 Removed "Linux" from the list of supported _OSI strings. Linux no longer
8638 wants to reply true to this request. The Windows strings are the only
8639 paths
8640 through the AML that are tested and known to work properly.
8641
8642 Previous Release:
8643 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
8644 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
8645 Current Release:
8646 Non-Debug Version: 82.6K Code, 17.6K Data, 100.2K Total
8647 Debug Version: 157.7K Code, 49.9K Data, 207.6K Total
8648
8649 2) iASL Compiler/Disassembler and Tools:
8650
8651 Acpiexec: Split the large aeexec.c file into two new files, aehandlers.c
8652 and
8653 aetables.c
8654
8655 ----------------------------------------
8656 20 February 2009. Summary of changes for version 20090220:
8657
8658 1) ACPI CA Core Subsystem:
8659
8660 Optimized the ACPI register locking. Removed locking for reads from the
8661 ACPI
8662 bit registers in PM1 Status, Enable, Control, and PM2 Control. The lock
8663 is
8664 not required when reading the single-bit registers. The
8665 AcpiGetRegisterUnlocked function is no longer needed and has been
8666 removed.
8667 This will improve performance for reads on these registers. ACPICA BZ
8668 760.
8669
8670 Fixed the parameter validation for AcpiRead/Write. Now return
8671 AE_BAD_PARAMETER if the input register pointer is null, and
8672 AE_BAD_ADDRESS
8673 if
8674 the register has an address of zero. Previously, these cases simply
8675 returned
8676 AE_OK. For optional registers such as PM1B status/enable/control, the
8677 caller
8678 should check for a valid register address before calling. ACPICA BZ 748.
8679
8680 Renamed the external ACPI bit register access functions. Renamed
8681 AcpiGetRegister and AcpiSetRegister to clarify the purpose of these
8682 functions. The new names are AcpiReadBitRegister and
8683 AcpiWriteBitRegister.
8684 Also, restructured the code for these functions by simplifying the code
8685 path
8686 and condensing duplicate code to reduce code size.
8687
8688 Added new functions to transparently handle the possibly split PM1 A/B
8689 registers. AcpiHwReadMultiple and AcpiHwWriteMultiple. These two
8690 functions
8691 now handle the split registers for PM1 Status, Enable, and Control.
8692 ACPICA
8693 BZ
8694 746.
8695
8696 Added a function to handle the PM1 control registers,
8697 AcpiHwWritePm1Control.
8698 This function writes both of the PM1 control registers (A/B). These
8699 registers
8700 are different than the PM1 A/B status and enable registers in that
8701 different
8702 values can be written to the A/B registers. Most notably, the SLP_TYP
8703 bits
8704 can be different, as per the values returned from the _Sx predefined
8705 methods.
8706
8707 Removed an extra register write within AcpiHwClearAcpiStatus. This
8708 function
8709 was writing an optional PM1B status register twice. The existing call to
8710 the
8711 low-level AcpiHwRegisterWrite automatically handles a possibly split PM1
8712 A/B
8713 register. ACPICA BZ 751.
8714
8715 Split out the PM1 Status registers from the FADT. Added new globals for
8716 these
8717 registers (A/B), similar to the way the PM1 Enable registers are handled.
8718 Instead of overloading the FADT Event Register blocks. This makes the
8719 code
8720 clearer and less prone to error.
8721
8722 Fixed the warning message for when the platform contains too many ACPI
8723 tables
8724 for the default size of the global root table data structure. The
8725 calculation
8726 for the truncation value was incorrect.
8727
8728 Removed the ACPI_GET_OBJECT_TYPE macro. Removed all instances of this
8729 obsolete macro, since it is now a simple reference to ->common.type.
8730 There
8731 were about 150 invocations of the macro across 41 files. ACPICA BZ 755.
8732
8733 Removed the redundant ACPI_BITREG_SLEEP_TYPE_B. This type is the same as
8734 TYPE_A. Removed this and all related instances. Renamed SLEEP_TYPE_A to
8735 simply SLEEP_TYPE. ACPICA BZ 754.
8736
8737 Conditionally compile the AcpiSetFirmwareWakingVector64 function. This
8738 function is only needed on 64-bit host operating systems and is thus not
8739 included for 32-bit hosts.
8740
8741 Debug output: print the input and result for invocations of the _OSI
8742 reserved
8743 control method via the ACPI_LV_INFO debug level. Also, reduced some of
8744 the
8745 verbosity of this debug level. Len Brown.
8746
8747 Example Code and Data Size: These are the sizes for the OS-independent
8748 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8749 debug version of the code includes the debug output trace mechanism and
8750 has a
8751 much larger code and data size.
8752
8753 Previous Release:
8754 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
8755 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
8756 Current Release:
8757 Non-Debug Version: 82.0K Code, 17.5K Data, 99.5K Total
8758 Debug Version: 156.9K Code, 49.8K Data, 206.7K Total
8759
8760 2) iASL Compiler/Disassembler and Tools:
8761
8762 Disassembler: Decode the FADT PM_Profile field. Emit ascii names for the
8763 various legal performance profiles.
8764
8765 ----------------------------------------
8766 23 January 2009. Summary of changes for version 20090123:
8767
8768 1) ACPI CA Core Subsystem:
8769
8770 Added the 2009 copyright to all module headers and signons. This affects
8771 virtually every file in the ACPICA core subsystem, the iASL compiler, and
8772 the tools/utilities.
8773
8774 Implemented a change to allow the host to override any ACPI table,
8775 including
8776 dynamically loaded tables. Previously, only the DSDT could be replaced by
8777 the
8778 host. With this change, the AcpiOsTableOverride interface is called for
8779 each
8780 table found in the RSDT/XSDT during ACPICA initialization, and also
8781 whenever
8782 a table is dynamically loaded via the AML Load operator.
8783
8784 Updated FADT flag definitions, especially the Boot Architecture flags.
8785
8786 Debugger: For the Find command, automatically pad the input ACPI name
8787 with
8788 underscores if the name is shorter than 4 characters. This enables a
8789 match
8790 with the actual namespace entry which is itself padded with underscores.
8791
8792 Example Code and Data Size: These are the sizes for the OS-independent
8793 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8794 debug version of the code includes the debug output trace mechanism and
8795 has a
8796 much larger code and data size.
8797
8798 Previous Release:
8799 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
8800 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
8801 Current Release:
8802 Non-Debug Version: 82.3K Code, 17.5K Data, 99.8K Total
8803 Debug Version: 157.3K Code, 49.8K Data, 207.1K Total
8804
8805 2) iASL Compiler/Disassembler and Tools:
8806
8807 Fix build error under Bison-2.4.
8808
8809 Dissasembler: Enhanced FADT support. Added decoding of the Boot
8810 Architecture
8811 flags. Now decode all flags, regardless of the FADT version. Flag output
8812 includes the FADT version which first defined each flag.
8813
8814 The iASL -g option now dumps the RSDT to a file (in addition to the FADT
8815 and
8816 DSDT). Windows only.
8817
8818 ----------------------------------------
8819 04 December 2008. Summary of changes for version 20081204:
8820
8821 1) ACPI CA Core Subsystem:
8822
8823 The ACPICA Programmer Reference has been completely updated and revamped
8824 for
8825 this release. This includes updates to the external interfaces, OSL
8826 interfaces, the overview sections, and the debugger reference.
8827
8828 Several new ACPICA interfaces have been implemented and documented in the
8829 programmer reference:
8830 AcpiReset - Writes the reset value to the FADT-defined reset register.
8831 AcpiDisableAllGpes - Disable all available GPEs.
8832 AcpiEnableAllRuntimeGpes - Enable all available runtime GPEs.
8833 AcpiGetGpeDevice - Get the GPE block device associated with a GPE.
8834 AcpiGbl_CurrentGpeCount - Tracks the current number of available GPEs.
8835 AcpiRead - Low-level read ACPI register (was HwLowLevelRead.)
8836 AcpiWrite - Low-level write ACPI register (was HwLowLevelWrite.)
8837
8838 Most of the public ACPI hardware-related interfaces have been moved to a
8839 new
8840 file, components/hardware/hwxface.c
8841
8842 Enhanced the FADT parsing and low-level ACPI register access: The ACPI
8843 register lengths within the FADT are now used, and the low level ACPI
8844 register access no longer hardcodes the ACPI register lengths. Given that
8845 there may be some risk in actually trusting the FADT register lengths, a
8846 run-
8847 time option was added to fall back to the default hardcoded lengths if
8848 the
8849 FADT proves to contain incorrect values - UseDefaultRegisterWidths. This
8850 option is set to true for now, and a warning is issued if a suspicious
8851 FADT
8852 register length is overridden with the default value.
8853
8854 Fixed a reference count issue in NsRepairObject. This problem was
8855 introduced
8856 in version 20081031 as part of a fix to repair Buffer objects within
8857 Packages. Lin Ming.
8858
8859 Added semaphore support to the Linux/Unix application OS-services layer
8860 (OSL). ACPICA BZ 448. Lin Ming.
8861
8862 Added the ACPI_MUTEX_TYPE configuration option to select whether mutexes
8863 will
8864 be implemented in the OSL, or will binary semaphores be used instead.
8865
8866 Example Code and Data Size: These are the sizes for the OS-independent
8867 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8868 debug version of the code includes the debug output trace mechanism and
8869 has a
8870 much larger code and data size.
8871
8872 Previous Release:
8873 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
8874 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
8875 Current Release:
8876 Non-Debug Version: 82.3K Code, 17.4K Data, 99.7K Total
8877 Debug Version: 157.1K Code, 49.7K Data, 206.8K Total
8878
8879 2) iASL Compiler/Disassembler and Tools:
8880
8881 iASL: Completed the '-e' option to include additional ACPI tables in
8882 order
8883 to
8884 aid with disassembly and External statement generation. ACPICA BZ 742.
8885 Lin
8886 Ming.
8887
8888 iASL: Removed the "named object in while loop" error. The compiler cannot
8889 determine how many times a loop will execute. ACPICA BZ 730.
8890
8891 Disassembler: Implemented support for FADT revision 2 (MS extension).
8892 ACPICA
8893 BZ 743.
8894
8895 Disassembler: Updates for several ACPI data tables (HEST, EINJ, and
8896 MCFG).
8897
8898 ----------------------------------------
8899 31 October 2008. Summary of changes for version 20081031:
8900
8901 1) ACPI CA Core Subsystem:
8902
8903 Restructured the ACPICA header files into public/private. acpi.h now
8904 includes
8905 only the "public" acpica headers. All other acpica headers are "private"
8906 and
8907 should not be included by acpica users. One new file, accommon.h is used
8908 to
8909 include the commonly used private headers for acpica code generation.
8910 Future
8911 plans include moving all private headers to a new subdirectory.
8912
8913 Implemented an automatic Buffer->String return value conversion for
8914 predefined ACPI methods. For these methods (such as _BIF), added
8915 automatic
8916 conversion for return objects that are required to be a String, but a
8917 Buffer
8918 was found instead. This can happen when reading string battery data from
8919 an
8920 operation region, because it used to be difficult to convert the data
8921 from
8922 buffer to string from within the ASL. Ensures that the host OS is
8923 provided
8924 with a valid null-terminated string. Linux BZ 11822.
8925
8926 Updated the FACS waking vector interfaces. Split
8927 AcpiSetFirmwareWakingVector
8928 into two: one for the 32-bit vector, another for the 64-bit vector. This
8929 is
8930 required because the host OS must setup the wake much differently for
8931 each
8932 vector (real vs. protected mode, etc.) and the interface itself should
8933 not
8934 be
8935 deciding which vector to use. Also, eliminated the
8936 GetFirmwareWakingVector
8937 interface, as it served no purpose (only the firmware reads the vector,
8938 OS
8939 only writes the vector.) ACPICA BZ 731.
8940
8941 Implemented a mechanism to escape infinite AML While() loops. Added a
8942 loop
8943 counter to force exit from AML While loops if the count becomes too
8944 large.
8945 This can occur in poorly written AML when the hardware does not respond
8946 within a while loop and the loop does not implement a timeout. The
8947 maximum
8948 loop count is configurable. A new exception code is returned when a loop
8949 is
8950 broken, AE_AML_INFINITE_LOOP. Alexey Starikovskiy, Bob Moore.
8951
8952 Optimized the execution of AML While loops. Previously, a control state
8953 object was allocated and freed for each execution of the loop. The
8954 optimization is to simply reuse the control state for each iteration.
8955 This
8956 speeds up the raw loop execution time by about 5%.
8957
8958 Enhanced the implicit return mechanism. For Windows compatibility, return
8959 an
8960 implicit integer of value zero for methods that contain no executable
8961 code.
8962 Such methods are seen in the field as stubs (presumably), and can cause
8963 drivers to fail if they expect a return value. Lin Ming.
8964
8965 Allow multiple backslashes as root prefixes in namepaths. In a fully
8966 qualified namepath, allow multiple backslash prefixes. This can happen
8967 (and
8968 is seen in the field) because of the use of a double-backslash in strings
8969 (since backslash is the escape character) causing confusion. ACPICA BZ
8970 739
8971 Lin Ming.
8972
8973 Emit a warning if two different FACS or DSDT tables are discovered in the
8974 FADT. Checks if there are two valid but different addresses for the FACS
8975 and
8976 DSDT within the FADT (mismatch between the 32-bit and 64-bit fields.)
8977
8978 Consolidated the method argument count validation code. Merged the code
8979 that
8980 validates control method argument counts into the predefined validation
8981 module. Eliminates possible multiple warnings for incorrect argument
8982 counts.
8983
8984 Implemented ACPICA example code. Includes code for ACPICA initialization,
8985 handler installation, and calling a control method. Available at
8986 source/tools/examples.
8987
8988 Added a global pointer for FACS table to simplify internal FACS access.
8989 Use
8990 the global pointer instead of using AcpiGetTableByIndex for each FACS
8991 access.
8992 This simplifies the code for the Global Lock and the Firmware Waking
8993 Vector(s).
8994
8995 Example Code and Data Size: These are the sizes for the OS-independent
8996 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
8997 debug version of the code includes the debug output trace mechanism and
8998 has a
8999 much larger code and data size.
9000
9001 Previous Release:
9002 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
9003 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
9004 Current Release:
9005 Non-Debug Version: 81.7K Code, 17.3K Data, 99.0K Total
9006 Debug Version: 156.4K Code, 49.4K Data, 205.8K Total
9007
9008 2) iASL Compiler/Disassembler and Tools:
9009
9010 iASL: Improved disassembly of external method calls. Added the -e option
9011 to
9012 allow the inclusion of additional ACPI tables to help with the
9013 disassembly
9014 of
9015 method invocations and the generation of external declarations during the
9016 disassembly. Certain external method invocations cannot be disassembled
9017 properly without the actual declaration of the method. Use the -e option
9018 to
9019 include the table where the external method(s) are actually declared.
9020 Most
9021 useful for disassembling SSDTs that make method calls back to the master
9022 DSDT. Lin Ming. Example: To disassemble an SSDT with calls to DSDT: iasl
9023 -d
9024 -e dsdt.aml ssdt1.aml
9025
9026 iASL: Fix to allow references to aliases within ASL namepaths. Fixes a
9027 problem where the use of an alias within a namepath would result in a not
9028 found error or cause the compiler to fault. Also now allows forward
9029 references from the Alias operator itself. ACPICA BZ 738.
9030
9031 ----------------------------------------
9032 26 September 2008. Summary of changes for version 20080926:
9033
9034 1) ACPI CA Core Subsystem:
9035
9036 Designed and implemented a mechanism to validate predefined ACPI methods
9037 and
9038 objects. This code validates the predefined ACPI objects (objects whose
9039 names
9040 start with underscore) that appear in the namespace, at the time they are
9041 evaluated. The argument count and the type of the returned object are
9042 validated against the ACPI specification. The purpose of this validation
9043 is
9044 to detect problems with the BIOS-implemented predefined ACPI objects
9045 before
9046 the results are returned to the ACPI-related drivers. Future enhancements
9047 may
9048 include actual repair of incorrect return objects where possible. Two new
9049 files are nspredef.c and acpredef.h.
9050
9051 Fixed a fault in the AML parser if a memory allocation fails during the
9052 Op
9053 completion routine AcpiPsCompleteThisOp. Lin Ming. ACPICA BZ 492.
9054
9055 Fixed an issue with implicit return compatibility. This change improves
9056 the
9057 implicit return mechanism to be more compatible with the MS interpreter.
9058 Lin
9059 Ming, ACPICA BZ 349.
9060
9061 Implemented support for zero-length buffer-to-string conversions. Allow
9062 zero
9063 length strings during interpreter buffer-to-string conversions. For
9064 example,
9065 during the ToDecimalString and ToHexString operators, as well as implicit
9066 conversions. Fiodor Suietov, ACPICA BZ 585.
9067
9068 Fixed two possible memory leaks in the error exit paths of
9069 AcpiUtUpdateObjectReference and AcpiUtWalkPackageTree. These functions
9070 are
9071 similar in that they use a stack of state objects in order to eliminate
9072 recursion. The stack must be fully unwound and deallocated if an error
9073 occurs. Lin Ming. ACPICA BZ 383.
9074
9075 Removed the unused ACPI_BITREG_WAKE_ENABLE definition and entry in the
9076 global
9077 ACPI register table. This bit does not exist and is unused. Lin Ming, Bob
9078 Moore ACPICA BZ 442.
9079
9080 Removed the obsolete version number in module headers. Removed the
9081 "$Revision" number that appeared in each module header. This version
9082 number
9083 was useful under SourceSafe and CVS, but has no meaning under git. It is
9084 not
9085 only incorrect, it could also be misleading.
9086
9087 Example Code and Data Size: These are the sizes for the OS-independent
9088 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9089 debug version of the code includes the debug output trace mechanism and
9090 has a
9091 much larger code and data size.
9092
9093 Previous Release:
9094 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9095 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
9096 Current Release:
9097 Non-Debug Version: 81.2K Code, 17.0K Data, 98.2K Total
9098 Debug Version: 155.8K Code, 49.1K Data, 204.9K Total
9099
9100 ----------------------------------------
9101 29 August 2008. Summary of changes for version 20080829:
9102
9103 1) ACPI CA Core Subsystem:
9104
9105 Completed a major cleanup of the internal ACPI_OPERAND_OBJECT of type
9106 Reference. Changes include the elimination of cheating on the Object
9107 field
9108 for the DdbHandle subtype, addition of a reference class field to
9109 differentiate the various reference types (instead of an AML opcode), and
9110 the
9111 cleanup of debug output for this object. Lin Ming, Bob Moore. BZ 723
9112
9113 Reduce an error to a warning for an incorrect method argument count.
9114 Previously aborted with an error if too few arguments were passed to a
9115 control method via the external ACPICA interface. Now issue a warning
9116 instead
9117 and continue. Handles the case where the method inadvertently declares
9118 too
9119 many arguments, but does not actually use the extra ones. Applies mainly
9120 to
9121 the predefined methods. Lin Ming. Linux BZ 11032.
9122
9123 Disallow the evaluation of named object types with no intrinsic value.
9124 Return
9125 AE_TYPE for objects that have no value and therefore evaluation is
9126 undefined:
9127 Device, Event, Mutex, Region, Thermal, and Scope. Previously, evaluation
9128 of
9129 these types were allowed, but an exception would be generated at some
9130 point
9131 during the evaluation. Now, the error is generated up front.
9132
9133 Fixed a possible memory leak in the AcpiNsGetExternalPathname function
9134 (nsnames.c). Fixes a leak in the error exit path.
9135
9136 Removed the obsolete debug levels ACPI_DB_WARN and ACPI_DB_ERROR. These
9137 debug
9138 levels were made obsolete by the ACPI_WARNING, ACPI_ERROR, and
9139 ACPI_EXCEPTION
9140 interfaces. Also added ACPI_DB_EVENTS to correspond with the existing
9141 ACPI_LV_EVENTS.
9142
9143 Removed obsolete and/or unused exception codes from the acexcep.h header.
9144 There is the possibility that certain device drivers may be affected if
9145 they
9146 use any of these exceptions.
9147
9148 The ACPICA documentation has been added to the public git source tree,
9149 under
9150 acpica/documents. Included are the ACPICA programmer reference, the iASL
9151 compiler reference, and the changes.txt release logfile.
9152
9153 Example Code and Data Size: These are the sizes for the OS-independent
9154 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9155 debug version of the code includes the debug output trace mechanism and
9156 has a
9157 much larger code and data size.
9158
9159 Previous Release:
9160 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9161 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
9162 Current Release:
9163 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9164 Debug Version: 153.7K Code, 48.2K Data, 201.9K Total
9165
9166 2) iASL Compiler/Disassembler and Tools:
9167
9168 Allow multiple argument counts for the predefined _SCP method. ACPI 3.0
9169 defines _SCP with 3 arguments. Previous versions defined it with only 1
9170 argument. iASL now allows both definitions.
9171
9172 iASL/disassembler: avoid infinite loop on bad ACPI tables. Check for
9173 zero-
9174 length subtables when disassembling ACPI tables. Also fixed a couple of
9175 errors where a full 16-bit table type field was not extracted from the
9176 input
9177 properly.
9178
9179 acpisrc: Improve comment counting mechanism for generating source code
9180 statistics. Count first and last lines of multi-line comments as
9181 whitespace,
9182 not comment lines. Handle Linux legal header in addition to standard
9183 acpica
9184 header.
9185
9186 ----------------------------------------
9187
9188 29 July 2008. Summary of changes for version 20080729:
9189
9190 1) ACPI CA Core Subsystem:
9191
9192 Fix a possible deadlock in the GPE dispatch. Remove call to
9193 AcpiHwDisableAllGpes during wake in AcpiEvGpeDispatch. This call will
9194 attempt
9195 to acquire the GPE lock but can deadlock since the GPE lock is already
9196 held
9197 at dispatch time. This code was introduced in version 20060831 as a
9198 response
9199 to Linux BZ 6881 and has since been removed from Linux.
9200
9201 Add a function to dereference returned reference objects. Examines the
9202 return
9203 object from a call to AcpiEvaluateObject. Any Index or RefOf references
9204 are
9205 automatically dereferenced in an attempt to return something useful
9206 (these
9207 reference types cannot be converted into an external ACPI_OBJECT.)
9208 Provides
9209 MS compatibility. Lin Ming, Bob Moore. Linux BZ 11105
9210
9211 x2APIC support: changes for MADT and SRAT ACPI tables. There are 2 new
9212 subtables for the MADT and one new subtable for the SRAT. Includes
9213 disassembler and AcpiSrc support. Data from the Intel 64 Architecture
9214 x2APIC
9215 Specification, June 2008.
9216
9217 Additional error checking for pathname utilities. Add error check after
9218 all
9219 calls to AcpiNsGetPathnameLength. Add status return from
9220 AcpiNsBuildExternalPath and check after all calls. Add parameter
9221 validation
9222 to AcpiUtInitializeBuffer. Reported by and initial patch by Ingo Molnar.
9223
9224 Return status from the global init function AcpiUtGlobalInitialize. This
9225 is
9226 used by both the kernel subsystem and the utilities such as iASL
9227 compiler.
9228 The function could possibly fail when the caches are initialized. Yang
9229 Yi.
9230
9231 Add a function to decode reference object types to strings. Created for
9232 improved error messages.
9233
9234 Improve object conversion error messages. Better error messages during
9235 object
9236 conversion from internal to the external ACPI_OBJECT. Used for external
9237 calls
9238 to AcpiEvaluateObject.
9239
9240 Example Code and Data Size: These are the sizes for the OS-independent
9241 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9242 debug version of the code includes the debug output trace mechanism and
9243 has a
9244 much larger code and data size.
9245
9246 Previous Release:
9247 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
9248 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
9249 Current Release:
9250 Non-Debug Version: 79.7K Code, 16.4K Data, 96.1K Total
9251 Debug Version: 153.9K Code, 48.4K Data, 202.3K Total
9252
9253 2) iASL Compiler/Disassembler and Tools:
9254
9255 Debugger: fix a possible hang when evaluating non-methods. Fixes a
9256 problem
9257 introduced in version 20080701. If the object being evaluated (via
9258 execute
9259 command) is not a method, the debugger can hang while trying to obtain
9260 non-
9261 existent parameters.
9262
9263 iASL: relax error for using reserved "_T_x" identifiers. These names can
9264 appear in a disassembled ASL file if they were emitted by the original
9265 compiler. Instead of issuing an error or warning and forcing the user to
9266 manually change these names, issue a remark instead.
9267
9268 iASL: error if named object created in while loop. Emit an error if any
9269 named
9270 object is created within a While loop. If allowed, this code will
9271 generate
9272 a
9273 run-time error on the second iteration of the loop when an attempt is
9274 made
9275 to
9276 create the same named object twice. ACPICA bugzilla 730.
9277
9278 iASL: Support absolute pathnames for include files. Add support for
9279 absolute
9280 pathnames within the Include operator. previously, only relative
9281 pathnames
9282 were supported.
9283
9284 iASL: Enforce minimum 1 interrupt in interrupt macro and Resource
9285 Descriptor.
9286 The ACPI spec requires one interrupt minimum. BZ 423
9287
9288 iASL: Handle a missing ResourceSource arg, with a present SourceIndex.
9289 Handles the case for the Interrupt Resource Descriptor where
9290 the ResourceSource argument is omitted but ResourceSourceIndex
9291 is present. Now leave room for the Index. BZ 426
9292
9293 iASL: Prevent error message if CondRefOf target does not exist. Fixes
9294 cases
9295 where an error message is emitted if the target does not exist. BZ 516
9296
9297 iASL: Fix broken -g option (get Windows ACPI tables). Fixes the -g option
9298 (get ACPI tables on Windows). This was apparently broken in version
9299 20070919.
9300
9301 AcpiXtract: Handle EOF while extracting data. Correctly handle the case
9302 where
9303 the EOF happens immediately after the last table in the input file. Print
9304 completion message. Previously, no message was displayed in this case.
9305
9306 ----------------------------------------
9307 01 July 2008. Summary of changes for version 20080701:
9308
9309 0) Git source tree / acpica.org
9310
9311 Fixed a problem where a git-clone from http would not transfer the entire
9312 source tree.
9313
9314 1) ACPI CA Core Subsystem:
9315
9316 Implemented a "careful" GPE disable in AcpiEvDisableGpe, only modify one
9317 enable bit. Now performs a read-change-write of the enable register
9318 instead
9319 of simply writing out the cached enable mask. This will prevent
9320 inadvertent
9321 enabling of GPEs if a rogue GPE is received during initialization (before
9322 GPE
9323 handlers are installed.)
9324
9325 Implemented a copy for dynamically loaded tables. Previously, dynamically
9326 loaded tables were simply mapped - but on some machines this memory is
9327 corrupted after suspend. Now copy the table to a local buffer. For the
9328 OpRegion case, added checksum verify. Use the table length from the table
9329 header, not the region length. For the Buffer case, use the table length
9330 also. Dennis Noordsij, Bob Moore. BZ 10734
9331
9332 Fixed a problem where the same ACPI table could not be dynamically loaded
9333 and
9334 unloaded more than once. Without this change, a table cannot be loaded
9335 again
9336 once it has been loaded/unloaded one time. The current mechanism does not
9337 unregister a table upon an unload. During a load, if the same table is
9338 found,
9339 this no longer returns an exception. BZ 722
9340
9341 Fixed a problem where the wrong descriptor length was calculated for the
9342 EndTag descriptor in 64-bit mode. The "minimal" descriptors such as
9343 EndTag
9344 are calculated as 12 bytes long, but the actual length in the internal
9345 descriptor is 16 because of the round-up to 8 on the 64-bit build.
9346 Reported
9347 by Linn Crosetto. BZ 728
9348
9349 Fixed a possible memory leak in the Unload operator. The DdbHandle
9350 returned
9351 by Load() did not have its reference count decremented during unload,
9352 leading
9353 to a memory leak. Lin Ming. BZ 727
9354
9355 Fixed a possible memory leak when deleting thermal/processor objects. Any
9356 associated notify handlers (and objects) were not being deleted. Fiodor
9357 Suietov. BZ 506
9358
9359 Fixed the ordering of the ASCII names in the global mutex table to match
9360 the
9361 actual mutex IDs. Used by AcpiUtGetMutexName, a function used for debug
9362 only.
9363 Vegard Nossum. BZ 726
9364
9365 Enhanced the AcpiGetObjectInfo interface to return the number of required
9366 arguments if the object is a control method. Added this call to the
9367 debugger
9368 so the proper number of default arguments are passed to a method. This
9369 prevents a warning when executing methods from AcpiExec.
9370
9371 Added a check for an invalid handle in AcpiGetObjectInfo. Return
9372 AE_BAD_PARAMETER if input handle is invalid. BZ 474
9373
9374 Fixed an extraneous warning from exconfig.c on the 64-bit build.
9375
9376 Example Code and Data Size: These are the sizes for the OS-independent
9377 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9378 debug version of the code includes the debug output trace mechanism and
9379 has a
9380 much larger code and data size.
9381
9382 Previous Release:
9383 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
9384 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
9385 Current Release:
9386 Non-Debug Version: 79.6K Code, 16.2K Data, 95.8K Total
9387 Debug Version: 153.5K Code, 48.2K Data, 201.7K Total
9388
9389 2) iASL Compiler/Disassembler and Tools:
9390
9391 iASL: Added two missing ACPI reserved names. Added _MTP and _ASZ, both
9392 resource descriptor names.
9393
9394 iASL: Detect invalid ASCII characters in input (windows version). Removed
9395 the
9396 "-CF" flag from the flex compile, enables correct detection of non-ASCII
9397 characters in the input. BZ 441
9398
9399 iASL: Eliminate warning when result of LoadTable is not used. Eliminate
9400 the
9401 "result of operation not used" warning when the DDB handle returned from
9402 LoadTable is not used. The warning is not needed. BZ 590
9403
9404 AcpiExec: Add support for dynamic table load/unload. Now calls _CFG
9405 method
9406 to
9407 pass address of table to the AML. Added option to disable OpRegion
9408 simulation
9409 to allow creation of an OpRegion with a real address that was passed to
9410 _CFG.
9411 All of this allows testing of the Load and Unload operators from
9412 AcpiExec.
9413
9414 Debugger: update tables command for unloaded tables. Handle unloaded
9415 tables
9416 and use the standard table header output routine.
9417
9418 ----------------------------------------
9419 09 June 2008. Summary of changes for version 20080609:
9420
9421 1) ACPI CA Core Subsystem:
9422
9423 Implemented a workaround for reversed _PRT entries. A significant number
9424 of
9425 BIOSs erroneously reverse the _PRT SourceName and the SourceIndex. This
9426 change dynamically detects and repairs this problem. Provides
9427 compatibility
9428 with MS ACPI. BZ 6859
9429
9430 Simplified the internal ACPI hardware interfaces to eliminate the locking
9431 flag parameter from Register Read/Write. Added a new external interface,
9432 AcpiGetRegisterUnlocked.
9433
9434 Fixed a problem where the invocation of a GPE control method could hang.
9435 This
9436 was a regression introduced in 20080514. The new method argument count
9437 validation mechanism can enter an infinite loop when a GPE method is
9438 dispatched. Problem fixed by removing the obsolete code that passed GPE
9439 block
9440 information to the notify handler via the control method parameter
9441 pointer.
9442
9443 Fixed a problem where the _SST execution status was incorrectly returned
9444 to
9445 the caller of AcpiEnterSleepStatePrep. This was a regression introduced
9446 in
9447 20080514. _SST is optional and a NOT_FOUND exception should never be
9448 returned. BZ 716
9449
9450 Fixed a problem where a deleted object could be accessed from within the
9451 AML
9452 parser. This was a regression introduced in version 20080123 as a fix for
9453 the
9454 Unload operator. Lin Ming. BZ 10669
9455
9456 Cleaned up the debug operand dump mechanism. Eliminated unnecessary
9457 operands
9458 and eliminated the use of a negative index in a loop. Operands are now
9459 displayed in the correct order, not backwards. This also fixes a
9460 regression
9461 introduced in 20080514 on 64-bit systems where the elimination of
9462 ACPI_NATIVE_UINT caused the negative index to go large and positive. BZ
9463 715
9464
9465 Fixed a possible memory leak in EvPciConfigRegionSetup where the error
9466 exit
9467 path did not delete a locally allocated structure.
9468
9469 Updated definitions for the DMAR and SRAT tables to synchronize with the
9470 current specifications. Includes disassembler support.
9471
9472 Fixed a problem in the mutex debug code (in utmutex.c) where an incorrect
9473 loop termination value was used. Loop terminated on iteration early,
9474 missing
9475 one mutex. Linn Crosetto
9476
9477 Example Code and Data Size: These are the sizes for the OS-independent
9478 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9479 debug version of the code includes the debug output trace mechanism and
9480 has a
9481 much larger code and data size.
9482
9483 Previous Release:
9484 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
9485 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
9486 Current Release:
9487 Non-Debug Version: 79.3K Code, 16.2K Data, 95.5K Total
9488 Debug Version: 153.0K Code, 48.2K Data, 201.2K Total
9489
9490 2) iASL Compiler/Disassembler and Tools:
9491
9492 Disassembler: Implemented support for EisaId() within _CID objects. Now
9493 disassemble integer _CID objects back to EisaId invocations, including
9494 multiple integers within _CID packages. Includes single-step support for
9495 debugger also.
9496
9497 Disassembler: Added support for DMAR and SRAT table definition changes.
9498
9499 ----------------------------------------
9500 14 May 2008. Summary of changes for version 20080514:
9501
9502 1) ACPI CA Core Subsystem:
9503
9504 Fixed a problem where GPEs were enabled too early during the ACPICA
9505 initialization. This could lead to "handler not installed" errors on some
9506 machines. Moved GPE enable until after _REG/_STA/_INI methods are run.
9507 This
9508 ensures that all operation regions and devices throughout the namespace
9509 have
9510 been initialized before GPEs are enabled. Alexey Starikovskiy, BZ 9916.
9511
9512 Implemented a change to the enter sleep code. Moved execution of the _GTS
9513 method to just before setting sleep enable bit. The execution was moved
9514 from
9515 AcpiEnterSleepStatePrep to AcpiEnterSleepState. _GTS is now executed
9516 immediately before the SLP_EN bit is set, as per the ACPI specification.
9517 Luming Yu, BZ 1653.
9518
9519 Implemented a fix to disable unknown GPEs (2nd version). Now always
9520 disable
9521 the GPE, even if ACPICA thinks that that it is already disabled. It is
9522 possible that the AML or some other code has enabled the GPE unbeknownst
9523 to
9524 the ACPICA code.
9525
9526 Fixed a problem with the Field operator where zero-length fields would
9527 return
9528 an AE_AML_NO_OPERAND exception during table load. Fix enables zero-length
9529 ASL
9530 field declarations in Field(), BankField(), and IndexField(). BZ 10606.
9531
9532 Implemented a fix for the Load operator, now load the table at the
9533 namespace
9534 root. This reverts a change introduced in version 20071019. The table is
9535 now
9536 loaded at the namespace root even though this goes against the ACPI
9537 specification. This provides compatibility with other ACPI
9538 implementations.
9539 The ACPI specification will be updated to reflect this in ACPI 4.0. Lin
9540 Ming.
9541
9542 Fixed a problem where ACPICA would not Load() tables with unusual
9543 signatures.
9544 Now ignore ACPI table signature for Load() operator. Only "SSDT" is
9545 acceptable to the ACPI spec, but tables are seen with OEMx and null sigs.
9546 Therefore, signature validation is worthless. Apparently MS ACPI accepts
9547 such
9548 signatures, ACPICA must be compatible. BZ 10454.
9549
9550 Fixed a possible negative array index in AcpiUtValidateException. Added
9551 NULL
9552 fields to the exception string arrays to eliminate a -1 subtraction on
9553 the
9554 SubStatus field.
9555
9556 Updated the debug tracking macros to reduce overall code and data size.
9557 Changed ACPI_MODULE_NAME and ACPI_FUNCTION_NAME to use arrays of strings
9558 instead of pointers to static strings. Jan Beulich and Bob Moore.
9559
9560 Implemented argument count checking in control method invocation via
9561 AcpiEvaluateObject. Now emit an error if too few arguments, warning if
9562 too
9563 many. This applies only to extern programmatic control method execution,
9564 not
9565 method-to-method calls within the AML. Lin Ming.
9566
9567 Eliminated the ACPI_NATIVE_UINT type across all ACPICA code. This type is
9568 no
9569 longer needed, especially with the removal of 16-bit support. It was
9570 replaced
9571 mostly with UINT32, but also ACPI_SIZE where a type that changes 32/64
9572 bit
9573 on
9574 32/64-bit platforms is required.
9575
9576 Added the C const qualifier for appropriate string constants -- mostly
9577 MODULE_NAME and printf format strings. Jan Beulich.
9578
9579 Example Code and Data Size: These are the sizes for the OS-independent
9580 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9581 debug version of the code includes the debug output trace mechanism and
9582 has a
9583 much larger code and data size.
9584
9585 Previous Release:
9586 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
9587 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
9588 Current Release:
9589 Non-Debug Version: 79.5K Code, 16.2K Data, 95.7K Total
9590 Debug Version: 153.3K Code, 48.3K Data, 201.6K Total
9591
9592 2) iASL Compiler/Disassembler and Tools:
9593
9594 Implemented ACPI table revision ID validation in the disassembler. Zero
9595 is
9596 always invalid. For DSDTs, the ID controls the interpreter integer width.
9597 1
9598 means 32-bit and this is unusual. 2 or greater is 64-bit.
9599
9600 ----------------------------------------
9601 21 March 2008. Summary of changes for version 20080321:
9602
9603 1) ACPI CA Core Subsystem:
9604
9605 Implemented an additional change to the GPE support in order to suppress
9606 spurious or stray GPEs. The AcpiEvDisableGpe function will now
9607 permanently
9608 disable incoming GPEs that are neither enabled nor disabled -- meaning
9609 that
9610 the GPE is unknown to the system. This should prevent future interrupt
9611 floods
9612 from that GPE. BZ 6217 (Zhang Rui)
9613
9614 Fixed a problem where NULL package elements were not returned to the
9615 AcpiEvaluateObject interface correctly. The element was simply ignored
9616 instead of returning a NULL ACPI_OBJECT package element, potentially
9617 causing
9618 a buffer overflow and/or confusing the caller who expected a fixed number
9619 of
9620 elements. BZ 10132 (Lin Ming, Bob Moore)
9621
9622 Fixed a problem with the CreateField, CreateXXXField (Bit, Byte, Word,
9623 Dword,
9624 Qword), Field, BankField, and IndexField operators when invoked from
9625 inside
9626 an executing control method. In this case, these operators created
9627 namespace
9628 nodes that were incorrectly left marked as permanent nodes instead of
9629 temporary nodes. This could cause a problem if there is race condition
9630 between an exiting control method and a running namespace walk. (Reported
9631 by
9632 Linn Crosetto)
9633
9634 Fixed a problem where the CreateField and CreateXXXField operators would
9635 incorrectly allow duplicate names (the name of the field) with no
9636 exception
9637 generated.
9638
9639 Implemented several changes for Notify handling. Added support for new
9640 Notify
9641 values (ACPI 2.0+) and improved the Notify debug output. Notify on
9642 PowerResource objects is no longer allowed, as per the ACPI
9643 specification.
9644 (Bob Moore, Zhang Rui)
9645
9646 All Reference Objects returned via the AcpiEvaluateObject interface are
9647 now
9648 marked as type "REFERENCE" instead of "ANY". The type ANY is now reserved
9649 for
9650 NULL objects - either NULL package elements or unresolved named
9651 references.
9652
9653 Fixed a problem where an extraneous debug message was produced for
9654 package
9655 objects (when debugging enabled). The message "Package List length larger
9656 than NumElements count" is now produced in the correct case, and is now
9657 an
9658 error message rather than a debug message. Added a debug message for the
9659 opposite case, where NumElements is larger than the Package List (the
9660 package
9661 will be padded out with NULL elements as per the ACPI spec.)
9662
9663 Implemented several improvements for the output of the ASL "Debug" object
9664 to
9665 clarify and keep all data for a given object on one output line.
9666
9667 Fixed two size calculation issues with the variable-length Start
9668 Dependent
9669 resource descriptor.
9670
9671 Example Code and Data Size: These are the sizes for the OS-independent
9672 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9673 debug version of the code includes the debug output trace mechanism and
9674 has
9675 a much larger code and data size.
9676
9677 Previous Release:
9678 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
9679 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
9680 Current Release:
9681 Non-Debug Version: 80.0K Code, 17.4K Data, 97.4K Total
9682 Debug Version: 159.4K Code, 64.4K Data, 223.8K Total
9683
9684 2) iASL Compiler/Disassembler and Tools:
9685
9686 Fixed a problem with the use of the Switch operator where execution of
9687 the
9688 containing method by multiple concurrent threads could cause an
9689 AE_ALREADY_EXISTS exception. This is caused by the fact that there is no
9690 actual Switch opcode, it must be simulated with local named temporary
9691 variables and if/else pairs. The solution chosen was to mark any method
9692 that
9693 uses Switch as Serialized, thus preventing multiple thread entries. BZ
9694 469.
9695
9696 ----------------------------------------
9697 13 February 2008. Summary of changes for version 20080213:
9698
9699 1) ACPI CA Core Subsystem:
9700
9701 Implemented another MS compatibility design change for GPE/Notify
9702 handling.
9703 GPEs are now cleared/enabled asynchronously to allow all pending notifies
9704 to
9705 complete first. It is expected that the OSL will queue the enable request
9706 behind all pending notify requests (may require changes to the local host
9707 OSL
9708 in AcpiOsExecute). Alexey Starikovskiy.
9709
9710 Fixed a problem where buffer and package objects passed as arguments to a
9711 control method via the external AcpiEvaluateObject interface could cause
9712 an
9713 AE_AML_INTERNAL exception depending on the order and type of operators
9714 executed by the target control method.
9715
9716 Fixed a problem where resource descriptor size optimization could cause a
9717 problem when a _CRS resource template is passed to a _SRS method. The
9718 _SRS
9719 resource template must use the same descriptors (with the same size) as
9720 returned from _CRS. This change affects the following resource
9721 descriptors:
9722 IRQ / IRQNoFlags and StartDependendentFn / StartDependentFnNoPri. (BZ
9723 9487)
9724
9725 Fixed a problem where a CopyObject to RegionField, BankField, and
9726 IndexField
9727 objects did not perform an implicit conversion as it should. These types
9728 must
9729 retain their initial type permanently as per the ACPI specification.
9730 However,
9731 a CopyObject to all other object types should not perform an implicit
9732 conversion, as per the ACPI specification. (Lin Ming, Bob Moore) BZ 388
9733
9734 Fixed a problem with the AcpiGetDevices interface where the mechanism to
9735 match device CIDs did not examine the entire list of available CIDs, but
9736 instead aborted on the first non-matching CID. Andrew Patterson.
9737
9738 Fixed a regression introduced in version 20071114. The ACPI_HIDWORD macro
9739 was
9740 inadvertently changed to return a 16-bit value instead of a 32-bit value,
9741 truncating the upper dword of a 64-bit value. This macro is only used to
9742 display debug output, so no incorrect calculations were made. Also,
9743 reimplemented the macro so that a 64-bit shift is not performed by
9744 inefficient compilers.
9745
9746 Added missing va_end statements that should correspond with each va_start
9747 statement.
9748
9749 Example Code and Data Size: These are the sizes for the OS-independent
9750 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9751 debug version of the code includes the debug output trace mechanism and
9752 has
9753 a much larger code and data size.
9754
9755 Previous Release:
9756 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
9757 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
9758 Current Release:
9759 Non-Debug Version: 79.7K Code, 17.3K Data, 97.0K Total
9760 Debug Version: 158.9K Code, 64.0K Data, 222.9K Total
9761
9762 2) iASL Compiler/Disassembler and Tools:
9763
9764 Implemented full disassembler support for the following new ACPI tables:
9765 BERT, EINJ, and ERST. Implemented partial disassembler support for the
9766 complicated HEST table. These tables support the Windows Hardware Error
9767 Architecture (WHEA).
9768
9769 ----------------------------------------
9770 23 January 2008. Summary of changes for version 20080123:
9771
9772 1) ACPI CA Core Subsystem:
9773
9774 Added the 2008 copyright to all module headers and signons. This affects
9775 virtually every file in the ACPICA core subsystem, the iASL compiler, and
9776 the tools/utilities.
9777
9778 Fixed a problem with the SizeOf operator when used with Package and
9779 Buffer
9780 objects. These objects have deferred execution for some arguments, and
9781 the
9782 execution is now completed before the SizeOf is executed. This problem
9783 caused
9784 unexpected AE_PACKAGE_LIMIT errors on some systems (Lin Ming, Bob Moore)
9785 BZ
9786 9558
9787
9788 Implemented an enhancement to the interpreter "slack mode". In the
9789 absence
9790 of
9791 an explicit return or an implicitly returned object from the last
9792 executed
9793 opcode, a control method will now implicitly return an integer of value 0
9794 for
9795 Microsoft compatibility. (Lin Ming) BZ 392
9796
9797 Fixed a problem with the Load operator where an exception was not
9798 returned
9799 in
9800 the case where the table is already loaded. (Lin Ming) BZ 463
9801
9802 Implemented support for the use of DDBHandles as an Indexed Reference, as
9803 per
9804 the ACPI spec. (Lin Ming) BZ 486
9805
9806 Implemented support for UserTerm (Method invocation) for the Unload
9807 operator
9808 as per the ACPI spec. (Lin Ming) BZ 580
9809
9810 Fixed a problem with the LoadTable operator where the OemId and
9811 OemTableId
9812 input strings could cause unexpected failures if they were shorter than
9813 the
9814 maximum lengths allowed. (Lin Ming, Bob Moore) BZ 576
9815
9816 Implemented support for UserTerm (Method invocation) for the Unload
9817 operator
9818 as per the ACPI spec. (Lin Ming) BZ 580
9819
9820 Implemented header file support for new ACPI tables - BERT, ERST, EINJ,
9821 HEST,
9822 IBFT, UEFI, WDAT. Disassembler support is forthcoming.
9823
9824 Example Code and Data Size: These are the sizes for the OS-independent
9825 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9826 debug version of the code includes the debug output trace mechanism and
9827 has
9828 a much larger code and data size.
9829
9830 Previous Release:
9831 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
9832 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
9833 Current Release:
9834 Non-Debug Version: 79.5K Code, 17.2K Data, 96.7K Total
9835 Debug Version: 159.0K Code, 63.8K Data, 222.8K Total
9836
9837 2) iASL Compiler/Disassembler and Tools:
9838
9839 Implemented support in the disassembler for checksum validation on
9840 incoming
9841 binary DSDTs and SSDTs. If incorrect, a message is displayed within the
9842 table
9843 header dump at the start of the disassembly.
9844
9845 Implemented additional debugging information in the namespace listing
9846 file
9847 created during compilation. In addition to the namespace hierarchy, the
9848 full
9849 pathname to each namespace object is displayed.
9850
9851 Fixed a problem with the disassembler where invalid ACPI tables could
9852 cause
9853 faults or infinite loops.
9854
9855 Fixed an unexpected parse error when using the optional "parameter types"
9856 list in a control method declaration. (Lin Ming) BZ 397
9857
9858 Fixed a problem where two External declarations with the same name did
9859 not
9860 cause an error (Lin Ming) BZ 509
9861
9862 Implemented support for full TermArgs (adding Argx, Localx and method
9863 invocation) for the ParameterData parameter to the LoadTable operator.
9864 (Lin
9865 Ming) BZ 583,587
9866
9867 ----------------------------------------
9868 19 December 2007. Summary of changes for version 20071219:
9869
9870 1) ACPI CA Core Subsystem:
9871
9872 Implemented full support for deferred execution for the TermArg string
9873 arguments for DataTableRegion. This enables forward references and full
9874 operand resolution for the three string arguments. Similar to
9875 OperationRegion
9876 deferred argument execution.) Lin Ming. BZ 430
9877
9878 Implemented full argument resolution support for the BankValue argument
9879 to
9880 BankField. Previously, only constants were supported, now any TermArg may
9881 be
9882 used. Lin Ming BZ 387, 393
9883
9884 Fixed a problem with AcpiGetDevices where the search of a branch of the
9885 device tree could be terminated prematurely. In accordance with the ACPI
9886 specification, the search down the current branch is terminated if a
9887 device
9888 is both not present and not functional (instead of just not present.)
9889 Yakui
9890 Zhao.
9891
9892 Fixed a problem where "unknown" GPEs could be allowed to fire repeatedly
9893 if
9894 the underlying AML code changed the GPE enable registers. Now, any
9895 unknown
9896 incoming GPE (no _Lxx/_Exx method and not the EC GPE) is immediately
9897 disabled
9898 instead of simply ignored. Rui Zhang.
9899
9900 Fixed a problem with Index Fields where the Index register was
9901 incorrectly
9902 limited to a maximum of 32 bits. Now any size may be used.
9903
9904 Fixed a couple memory leaks associated with "implicit return" objects
9905 when
9906 the AML Interpreter slack mode is enabled. Lin Ming BZ 349
9907
9908 Example Code and Data Size: These are the sizes for the OS-independent
9909 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9910 debug version of the code includes the debug output trace mechanism and
9911 has
9912 a much larger code and data size.
9913
9914 Previous Release:
9915 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
9916 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
9917 Current Release:
9918 Non-Debug Version: 79.3K Code, 17.2K Data, 96.5K Total
9919 Debug Version: 158.6K Code, 63.8K Data, 222.4K Total
9920
9921 ----------------------------------------
9922 14 November 2007. Summary of changes for version 20071114:
9923
9924 1) ACPI CA Core Subsystem:
9925
9926 Implemented event counters for each of the Fixed Events, the ACPI SCI
9927 (interrupt) itself, and control methods executed. Named
9928 AcpiFixedEventCount[], AcpiSciCount, and AcpiMethodCount respectively.
9929 These
9930 should be useful for debugging and statistics.
9931
9932 Implemented a new external interface, AcpiGetStatistics, to retrieve the
9933 contents of the various event counters. Returns the current values for
9934 AcpiSciCount, AcpiGpeCount, the AcpiFixedEventCount array, and
9935 AcpiMethodCount. The interface can be expanded in the future if new
9936 counters
9937 are added. Device drivers should use this interface rather than access
9938 the
9939 counters directly.
9940
9941 Fixed a problem with the FromBCD and ToBCD operators. With some
9942 compilers,
9943 the ShortDivide function worked incorrectly, causing problems with the
9944 BCD
9945 functions with large input values. A truncation from 64-bit to 32-bit
9946 inadvertently occurred. Internal BZ 435. Lin Ming
9947
9948 Fixed a problem with Index references passed as method arguments.
9949 References
9950 passed as arguments to control methods were dereferenced immediately
9951 (before
9952 control was passed to the called method). The references are now
9953 correctly
9954 passed directly to the called method. BZ 5389. Lin Ming
9955
9956 Fixed a problem with CopyObject used in conjunction with the Index
9957 operator.
9958 The reference was incorrectly dereferenced before the copy. The reference
9959 is
9960 now correctly copied. BZ 5391. Lin Ming
9961
9962 Fixed a problem with Control Method references within Package objects.
9963 These
9964 references are now correctly generated. This completes the package
9965 construction overhaul that began in version 20071019.
9966
9967 Example Code and Data Size: These are the sizes for the OS-independent
9968 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
9969 debug version of the code includes the debug output trace mechanism and
9970 has
9971 a much larger code and data size.
9972
9973 Previous Release:
9974 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
9975 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
9976 Current Release:
9977 Non-Debug Version: 79.0K Code, 17.2K Data, 96.2K Total
9978 Debug Version: 157.9K Code, 63.6K Data, 221.5K Total
9979
9980
9981 2) iASL Compiler/Disassembler and Tools:
9982
9983 The AcpiExec utility now installs handlers for all of the predefined
9984 Operation Region types. New types supported are: PCI_Config, CMOS, and
9985 PCIBARTarget.
9986
9987 Fixed a problem with the 64-bit version of AcpiExec where the extended
9988 (64-
9989 bit) address fields for the DSDT and FACS within the FADT were not being
9990 used, causing truncation of the upper 32-bits of these addresses. Lin
9991 Ming
9992 and Bob Moore
9993
9994 ----------------------------------------
9995 19 October 2007. Summary of changes for version 20071019:
9996
9997 1) ACPI CA Core Subsystem:
9998
9999 Fixed a problem with the Alias operator when the target of the alias is a
10000 named ASL operator that opens a new scope -- Scope, Device,
10001 PowerResource,
10002 Processor, and ThermalZone. In these cases, any children of the original
10003 operator could not be accessed via the alias, potentially causing
10004 unexpected
10005 AE_NOT_FOUND exceptions. (BZ 9067)
10006
10007 Fixed a problem with the Package operator where all named references were
10008 created as object references and left otherwise unresolved. According to
10009 the
10010 ACPI specification, a Package can only contain Data Objects or references
10011 to
10012 control methods. The implication is that named references to Data Objects
10013 (Integer, Buffer, String, Package, BufferField, Field) should be resolved
10014 immediately upon package creation. This is the approach taken with this
10015 change. References to all other named objects (Methods, Devices, Scopes,
10016 etc.) are all now properly created as reference objects. (BZ 5328)
10017
10018 Reverted a change to Notify handling that was introduced in version
10019 20070508. This version changed the Notify handling from asynchronous to
10020 fully synchronous (Device driver Notify handling with respect to the
10021 Notify
10022 ASL operator). It was found that this change caused more problems than it
10023 solved and was removed by most users.
10024
10025 Fixed a problem with the Increment and Decrement operators where the type
10026 of
10027 the target object could be unexpectedly and incorrectly changed. (BZ 353)
10028 Lin Ming.
10029
10030 Fixed a problem with the Load and LoadTable operators where the table
10031 location within the namespace was ignored. Instead, the table was always
10032 loaded into the root or current scope. Lin Ming.
10033
10034 Fixed a problem with the Load operator when loading a table from a buffer
10035 object. The input buffer was prematurely zeroed and/or deleted. (BZ 577)
10036
10037 Fixed a problem with the Debug object where a store of a DdbHandle
10038 reference
10039 object to the Debug object could cause a fault.
10040
10041 Added a table checksum verification for the Load operator, in the case
10042 where
10043 the load is from a buffer. (BZ 578).
10044
10045 Implemented additional parameter validation for the LoadTable operator.
10046 The
10047 length of the input strings SignatureString, OemIdString, and OemTableId
10048 are
10049 now checked for maximum lengths. (BZ 582) Lin Ming.
10050
10051 Example Code and Data Size: These are the sizes for the OS-independent
10052 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10053 debug version of the code includes the debug output trace mechanism and
10054 has
10055 a much larger code and data size.
10056
10057 Previous Release:
10058 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
10059 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
10060 Current Release:
10061 Non-Debug Version: 78.8K Code, 17.2K Data, 96.0K Total
10062 Debug Version: 157.2K Code, 63.4K Data, 220.6K Total
10063
10064
10065 2) iASL Compiler/Disassembler:
10066
10067 Fixed a problem where if a single file was specified and the file did not
10068 exist, no error message was emitted. (Introduced with wildcard support in
10069 version 20070917.)
10070
10071 ----------------------------------------
10072 19 September 2007. Summary of changes for version 20070919:
10073
10074 1) ACPI CA Core Subsystem:
10075
10076 Designed and implemented new external interfaces to install and remove
10077 handlers for ACPI table-related events. Current events that are defined
10078 are
10079 LOAD and UNLOAD. These interfaces allow the host to track ACPI tables as
10080 they are dynamically loaded and unloaded. See AcpiInstallTableHandler and
10081 AcpiRemoveTableHandler. (Lin Ming and Bob Moore)
10082
10083 Fixed a problem where the use of the AcpiGbl_AllMethodsSerialized flag
10084 (acpi_serialized option on Linux) could cause some systems to hang during
10085 initialization. (Bob Moore) BZ 8171
10086
10087 Fixed a problem where objects of certain types (Device, ThermalZone,
10088 Processor, PowerResource) can be not found if they are declared and
10089 referenced from within the same control method (Lin Ming) BZ 341
10090
10091 Example Code and Data Size: These are the sizes for the OS-independent
10092 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10093 debug version of the code includes the debug output trace mechanism and
10094 has
10095 a much larger code and data size.
10096
10097 Previous Release:
10098 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
10099 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
10100 Current Release:
10101 Non-Debug Version: 78.5K Code, 17.1K Data, 95.6K Total
10102 Debug Version: 156.7K Code, 63.2K Data, 219.9K Total
10103
10104
10105 2) iASL Compiler/Disassembler:
10106
10107 Implemented support to allow multiple files to be compiled/disassembled
10108 in
10109 a
10110 single invocation. This includes command line wildcard support for both
10111 the
10112 Windows and Unix versions of the compiler. This feature simplifies the
10113 disassembly and compilation of multiple ACPI tables in a single
10114 directory.
10115
10116 ----------------------------------------
10117 08 May 2007. Summary of changes for version 20070508:
10118
10119 1) ACPI CA Core Subsystem:
10120
10121 Implemented a Microsoft compatibility design change for the handling of
10122 the
10123 Notify AML operator. Previously, notify handlers were dispatched and
10124 executed completely asynchronously in a deferred thread. The new design
10125 still executes the notify handlers in a different thread, but the
10126 original
10127 thread that executed the Notify() now waits at a synchronization point
10128 for
10129 the notify handler to complete. Some machines depend on a synchronous
10130 Notify
10131 operator in order to operate correctly.
10132
10133 Implemented support to allow Package objects to be passed as method
10134 arguments to the external AcpiEvaluateObject interface. Previously, this
10135 would return the AE_NOT_IMPLEMENTED exception. This feature had not been
10136 implemented since there were no reserved control methods that required it
10137 until recently.
10138
10139 Fixed a problem with the internal FADT conversion where ACPI 1.0 FADTs
10140 that
10141 contained invalid non-zero values in reserved fields could cause later
10142 failures because these fields have meaning in later revisions of the
10143 FADT.
10144 For incoming ACPI 1.0 FADTs, these fields are now always zeroed. (The
10145 fields
10146 are: Preferred_PM_Profile, PSTATE_CNT, CST_CNT, and IAPC_BOOT_FLAGS.)
10147
10148 Fixed a problem where the Global Lock handle was not properly updated if
10149 a
10150 thread that acquired the Global Lock via executing AML code then
10151 attempted
10152 to acquire the lock via the AcpiAcquireGlobalLock interface. Reported by
10153 Joe
10154 Liu.
10155
10156 Fixed a problem in AcpiEvDeleteGpeXrupt where the global interrupt list
10157 could be corrupted if the interrupt being removed was at the head of the
10158 list. Reported by Linn Crosetto.
10159
10160 Example Code and Data Size: These are the sizes for the OS-independent
10161 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10162 debug version of the code includes the debug output trace mechanism and
10163 has
10164 a much larger code and data size.
10165
10166 Previous Release:
10167 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10168 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
10169 Current Release:
10170 Non-Debug Version: 78.3K Code, 17.0K Data, 95.3K Total
10171 Debug Version: 156.3K Code, 63.1K Data, 219.4K Total
10172
10173 ----------------------------------------
10174 20 March 2007. Summary of changes for version 20070320:
10175
10176 1) ACPI CA Core Subsystem:
10177
10178 Implemented a change to the order of interpretation and evaluation of AML
10179 operand objects within the AML interpreter. The interpreter now evaluates
10180 operands in the order that they appear in the AML stream (and the
10181 corresponding ASL code), instead of in the reverse order (after the
10182 entire
10183 operand list has been parsed). The previous behavior caused several
10184 subtle
10185 incompatibilities with the Microsoft AML interpreter as well as being
10186 somewhat non-intuitive. BZ 7871, local BZ 263. Valery Podrezov.
10187
10188 Implemented a change to the ACPI Global Lock support. All interfaces to
10189 the
10190 global lock now allow the same thread to acquire the lock multiple times.
10191 This affects the AcpiAcquireGlobalLock external interface to the global
10192 lock
10193 as well as the internal use of the global lock to support AML fields -- a
10194 control method that is holding the global lock can now simultaneously
10195 access
10196 AML fields that require global lock protection. Previously, in both
10197 cases,
10198 this would have resulted in an AE_ALREADY_ACQUIRED exception. The change
10199 to
10200 AcpiAcquireGlobalLock is of special interest to drivers for the Embedded
10201 Controller. There is no change to the behavior of the AML Acquire
10202 operator,
10203 as this can already be used to acquire a mutex multiple times by the same
10204 thread. BZ 8066. With assistance from Alexey Starikovskiy.
10205
10206 Fixed a problem where invalid objects could be referenced in the AML
10207 Interpreter after error conditions. During operand evaluation, ensure
10208 that
10209 the internal "Return Object" field is cleared on error and only valid
10210 pointers are stored there. Caused occasional access to deleted objects
10211 that
10212 resulted in "large reference count" warning messages. Valery Podrezov.
10213
10214 Fixed a problem where an AE_STACK_OVERFLOW internal exception could occur
10215 on
10216 deeply nested control method invocations. BZ 7873, local BZ 487. Valery
10217 Podrezov.
10218
10219 Fixed an internal problem with the handling of result objects on the
10220 interpreter result stack. BZ 7872. Valery Podrezov.
10221
10222 Removed obsolete code that handled the case where AML_NAME_OP is the
10223 target
10224 of a reference (Reference.Opcode). This code was no longer necessary. BZ
10225 7874. Valery Podrezov.
10226
10227 Removed obsolete ACPI_NO_INTEGER64_SUPPORT from two header files. This
10228 was
10229 a
10230 remnant from the previously discontinued 16-bit support.
10231
10232 Example Code and Data Size: These are the sizes for the OS-independent
10233 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10234 debug version of the code includes the debug output trace mechanism and
10235 has
10236 a much larger code and data size.
10237
10238 Previous Release:
10239 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10240 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10241 Current Release:
10242 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10243 Debug Version: 155.9K Code, 63.1K Data, 219.0K Total
10244
10245 ----------------------------------------
10246 26 January 2007. Summary of changes for version 20070126:
10247
10248 1) ACPI CA Core Subsystem:
10249
10250 Added the 2007 copyright to all module headers and signons. This affects
10251 virtually every file in the ACPICA core subsystem, the iASL compiler, and
10252 the utilities.
10253
10254 Implemented a fix for an incorrect parameter passed to AcpiTbDeleteTable
10255 during a table load. A bad pointer was passed in the case where the DSDT
10256 is
10257 overridden, causing a fault in this case.
10258
10259 Example Code and Data Size: These are the sizes for the OS-independent
10260 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10261 debug version of the code includes the debug output trace mechanism and
10262 has
10263 a much larger code and data size.
10264
10265 Previous Release:
10266 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10267 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10268 Current Release:
10269 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10270 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10271
10272 ----------------------------------------
10273 15 December 2006. Summary of changes for version 20061215:
10274
10275 1) ACPI CA Core Subsystem:
10276
10277 Support for 16-bit ACPICA has been completely removed since it is no
10278 longer
10279 necessary and it clutters the code. All 16-bit macros, types, and
10280 conditional compiles have been removed, cleaning up and simplifying the
10281 code
10282 across the entire subsystem. DOS support is no longer needed since the
10283 bootable Linux firmware kit is now available.
10284
10285 The handler for the Global Lock is now removed during AcpiTerminate to
10286 enable a clean subsystem restart, via the implementation of the
10287 AcpiEvRemoveGlobalLockHandler function. (With assistance from Joel Bretz,
10288 HP)
10289
10290 Implemented enhancements to the multithreading support within the
10291 debugger
10292 to enable improved multithreading debugging and evaluation of the
10293 subsystem.
10294 (Valery Podrezov)
10295
10296 Debugger: Enhanced the Statistics/Memory command to emit the total
10297 (maximum)
10298 memory used during the execution, as well as the maximum memory consumed
10299 by
10300 each of the various object types. (Valery Podrezov)
10301
10302 Example Code and Data Size: These are the sizes for the OS-independent
10303 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10304 debug version of the code includes the debug output trace mechanism and
10305 has
10306 a much larger code and data size.
10307
10308 Previous Release:
10309 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
10310 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
10311 Current Release:
10312 Non-Debug Version: 78.0K Code, 17.1K Data, 95.1K Total
10313 Debug Version: 155.8K Code, 63.3K Data, 219.1K Total
10314
10315
10316 2) iASL Compiler/Disassembler and Tools:
10317
10318 AcpiExec: Implemented a new option (-m) to display full memory use
10319 statistics upon subsystem/program termination. (Valery Podrezov)
10320
10321 ----------------------------------------
10322 09 November 2006. Summary of changes for version 20061109:
10323
10324 1) ACPI CA Core Subsystem:
10325
10326 Optimized the Load ASL operator in the case where the source operand is
10327 an
10328 operation region. Simply map the operation region memory, instead of
10329 performing a bytewise read. (Region must be of type SystemMemory, see
10330 below.)
10331
10332 Fixed the Load ASL operator for the case where the source operand is a
10333 region field. A buffer object is also allowed as the source operand. BZ
10334 480
10335
10336 Fixed a problem where the Load ASL operator allowed the source operand to
10337 be
10338 an operation region of any type. It is now restricted to regions of type
10339 SystemMemory, as per the ACPI specification. BZ 481
10340
10341 Additional cleanup and optimizations for the new Table Manager code.
10342
10343 AcpiEnable will now fail if all of the required ACPI tables are not
10344 loaded
10345 (FADT, FACS, DSDT). BZ 477
10346
10347 Added #pragma pack(8/4) to acobject.h to ensure that the structures in
10348 this
10349 header are always compiled as aligned. The ACPI_OPERAND_OBJECT has been
10350 manually optimized to be aligned and will not work if it is byte-packed.
10351
10352 Example Code and Data Size: These are the sizes for the OS-independent
10353 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10354 debug version of the code includes the debug output trace mechanism and
10355 has
10356 a much larger code and data size.
10357
10358 Previous Release:
10359 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
10360 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
10361 Current Release:
10362 Non-Debug Version: 77.9K Code, 17.0K Data, 94.9K Total
10363 Debug Version: 155.2K Code, 63.1K Data, 218.3K Total
10364
10365
10366 2) iASL Compiler/Disassembler and Tools:
10367
10368 Fixed a problem where the presence of the _OSI predefined control method
10369 within complex expressions could cause an internal compiler error.
10370
10371 AcpiExec: Implemented full region support for multiple address spaces.
10372 SpaceId is now part of the REGION object. BZ 429
10373
10374 ----------------------------------------
10375 11 October 2006. Summary of changes for version 20061011:
10376
10377 1) ACPI CA Core Subsystem:
10378
10379 Completed an AML interpreter performance enhancement for control method
10380 execution. Previously a 2-pass parse/execution, control methods are now
10381 completely parsed and executed in a single pass. This improves overall
10382 interpreter performance by ~25%, reduces code size, and reduces CPU stack
10383 use. (Valery Podrezov + interpreter changes in version 20051202 that
10384 eliminated namespace loading during the pass one parse.)
10385
10386 Implemented _CID support for PCI Root Bridge detection. If the _HID does
10387 not
10388 match the predefined PCI Root Bridge IDs, the _CID list (if present) is
10389 now
10390 obtained and also checked for an ID match.
10391
10392 Implemented additional support for the PCI _ADR execution: upsearch until
10393 a
10394 device scope is found before executing _ADR. This allows PCI_Config
10395 operation regions to be declared locally within control methods
10396 underneath
10397 PCI device objects.
10398
10399 Fixed a problem with a possible race condition between threads executing
10400 AcpiWalkNamespace and the AML interpreter. This condition was removed by
10401 modifying AcpiWalkNamespace to (by default) ignore all temporary
10402 namespace
10403 entries created during any concurrent control method execution. An
10404 additional namespace race condition is known to exist between
10405 AcpiWalkNamespace and the Load/Unload ASL operators and is still under
10406 investigation.
10407
10408 Restructured the AML ParseLoop function, breaking it into several
10409 subfunctions in order to reduce CPU stack use and improve
10410 maintainability.
10411 (Mikhail Kouzmich)
10412
10413 AcpiGetHandle: Fix for parameter validation to detect invalid
10414 combinations
10415 of prefix handle and pathname. BZ 478
10416
10417 Example Code and Data Size: These are the sizes for the OS-independent
10418 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10419 debug version of the code includes the debug output trace mechanism and
10420 has
10421 a much larger code and data size.
10422
10423 Previous Release:
10424 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10425 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
10426 Current Release:
10427 Non-Debug Version: 78.1K Code, 17.1K Data, 95.2K Total
10428 Debug Version: 155.4K Code, 63.1K Data, 218.5K Total
10429
10430 2) iASL Compiler/Disassembler and Tools:
10431
10432 Ported the -g option (get local ACPI tables) to the new ACPICA Table
10433 Manager
10434 to restore original behavior.
10435
10436 ----------------------------------------
10437 27 September 2006. Summary of changes for version 20060927:
10438
10439 1) ACPI CA Core Subsystem:
10440
10441 Removed the "Flags" parameter from AcpiGetRegister and AcpiSetRegister.
10442 These functions now use a spinlock for mutual exclusion and the interrupt
10443 level indication flag is not needed.
10444
10445 Fixed a problem with the Global Lock where the lock could appear to be
10446 obtained before it is actually obtained. The global lock semaphore was
10447 inadvertently created with one unit instead of zero units. (BZ 464)
10448 Fiodor
10449 Suietov.
10450
10451 Fixed a possible memory leak and fault in AcpiExResolveObjectToValue
10452 during
10453 a read from a buffer or region field. (BZ 458) Fiodor Suietov.
10454
10455 Example Code and Data Size: These are the sizes for the OS-independent
10456 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10457 debug version of the code includes the debug output trace mechanism and
10458 has
10459 a much larger code and data size.
10460
10461 Previous Release:
10462 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10463 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
10464 Current Release:
10465 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10466 Debug Version: 154.6K Code, 63.0K Data, 217.6K Total
10467
10468
10469 2) iASL Compiler/Disassembler and Tools:
10470
10471 Fixed a compilation problem with the pre-defined Resource Descriptor
10472 field
10473 names where an "object does not exist" error could be incorrectly
10474 generated
10475 if the parent ResourceTemplate pathname places the template within a
10476 different namespace scope than the current scope. (BZ 7212)
10477
10478 Fixed a problem where the compiler could hang after syntax errors
10479 detected
10480 in an ElseIf construct. (BZ 453)
10481
10482 Fixed a problem with the AmlFilename parameter to the DefinitionBlock()
10483 operator. An incorrect output filename was produced when this parameter
10484 was
10485 a null string (""). Now, the original input filename is used as the AML
10486 output filename, with an ".aml" extension.
10487
10488 Implemented a generic batch command mode for the AcpiExec utility
10489 (execute
10490 any AML debugger command) (Valery Podrezov).
10491
10492 ----------------------------------------
10493 12 September 2006. Summary of changes for version 20060912:
10494
10495 1) ACPI CA Core Subsystem:
10496
10497 Enhanced the implementation of the "serialized mode" of the interpreter
10498 (enabled via the AcpiGbl_AllMethodsSerialized flag.) When this mode is
10499 specified, instead of creating a serialization semaphore per control
10500 method,
10501 the interpreter lock is simply no longer released before a blocking
10502 operation during control method execution. This effectively makes the AML
10503 Interpreter single-threaded. The overhead of a semaphore per-method is
10504 eliminated.
10505
10506 Fixed a regression where an error was no longer emitted if a control
10507 method
10508 attempts to create 2 objects of the same name. This once again returns
10509 AE_ALREADY_EXISTS. When this exception occurs, it invokes the mechanism
10510 that
10511 will dynamically serialize the control method to possible prevent future
10512 errors. (BZ 440)
10513
10514 Integrated a fix for a problem with PCI Express HID detection in the PCI
10515 Config Space setup procedure. (BZ 7145)
10516
10517 Moved all FADT-related functions to a new file, tbfadt.c. Eliminated the
10518 AcpiHwInitialize function - the FADT registers are now validated when the
10519 table is loaded.
10520
10521 Added two new warnings during FADT verification - 1) if the FADT is
10522 larger
10523 than the largest known FADT version, and 2) if there is a mismatch
10524 between
10525 a
10526 32-bit block address and the 64-bit X counterpart (when both are non-
10527 zero.)
10528
10529 Example Code and Data Size: These are the sizes for the OS-independent
10530 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10531 debug version of the code includes the debug output trace mechanism and
10532 has
10533 a much larger code and data size.
10534
10535 Previous Release:
10536 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
10537 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
10538 Current Release:
10539 Non-Debug Version: 77.9K Code, 17.1K Data, 95.0K Total
10540 Debug Version: 154.7K Code, 63.0K Data, 217.7K Total
10541
10542
10543 2) iASL Compiler/Disassembler and Tools:
10544
10545 Fixed a problem with the implementation of the Switch() operator where
10546 the
10547 temporary variable was declared too close to the actual Switch, instead
10548 of
10549 at method level. This could cause a problem if the Switch() operator is
10550 within a while loop, causing an error on the second iteration. (BZ 460)
10551
10552 Disassembler - fix for error emitted for unknown type for target of scope
10553 operator. Now, ignore it and continue.
10554
10555 Disassembly of an FADT now verifies the input FADT and reports any errors
10556 found. Fix for proper disassembly of full-sized (ACPI 2.0) FADTs.
10557
10558 Disassembly of raw data buffers with byte initialization data now
10559 prefixes
10560 each output line with the current buffer offset.
10561
10562 Disassembly of ASF! table now includes all variable-length data fields at
10563 the end of some of the subtables.
10564
10565 The disassembler now emits a comment if a buffer appears to be a
10566 ResourceTemplate, but cannot be disassembled as such because the EndTag
10567 does
10568 not appear at the very end of the buffer.
10569
10570 AcpiExec - Added the "-t" command line option to enable the serialized
10571 mode
10572 of the AML interpreter.
10573
10574 ----------------------------------------
10575 31 August 2006. Summary of changes for version 20060831:
10576
10577 1) ACPI CA Core Subsystem:
10578
10579 Miscellaneous fixes for the Table Manager:
10580 - Correctly initialize internal common FADT for all 64-bit "X" fields
10581 - Fixed a couple table mapping issues during table load
10582 - Fixed a couple alignment issues for IA64
10583 - Initialize input array to zero in AcpiInitializeTables
10584 - Additional parameter validation for AcpiGetTable, AcpiGetTableHeader,
10585 AcpiGetTableByIndex
10586
10587 Change for GPE support: when a "wake" GPE is received, all wake GPEs are
10588 now
10589 immediately disabled to prevent the waking GPE from firing again and to
10590 prevent other wake GPEs from interrupting the wake process.
10591
10592 Added the AcpiGpeCount global that tracks the number of processed GPEs,
10593 to
10594 be used for debugging systems with a large number of ACPI interrupts.
10595
10596 Implemented support for the "DMAR" ACPI table (DMA Redirection Table) in
10597 both the ACPICA headers and the disassembler.
10598
10599 Example Code and Data Size: These are the sizes for the OS-independent
10600 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10601 debug version of the code includes the debug output trace mechanism and
10602 has
10603 a much larger code and data size.
10604
10605 Previous Release:
10606 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
10607 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
10608 Current Release:
10609 Non-Debug Version: 77.9K Code, 16.7K Data, 94.6K Total
10610 Debug Version: 154.9K Code, 62.6K Data, 217.5K Total
10611
10612
10613 2) iASL Compiler/Disassembler and Tools:
10614
10615 Disassembler support for the DMAR ACPI table.
10616
10617 ----------------------------------------
10618 23 August 2006. Summary of changes for version 20060823:
10619
10620 1) ACPI CA Core Subsystem:
10621
10622 The Table Manager component has been completely redesigned and
10623 reimplemented. The new design is much simpler, and reduces the overall
10624 code
10625 and data size of the kernel-resident ACPICA by approximately 5%. Also, it
10626 is
10627 now possible to obtain the ACPI tables very early during kernel
10628 initialization, even before dynamic memory management is initialized.
10629 (Alexey Starikovskiy, Fiodor Suietov, Bob Moore)
10630
10631 Obsolete ACPICA interfaces:
10632
10633 - AcpiGetFirmwareTable: Use AcpiGetTable instead (works at early kernel
10634 init
10635 time).
10636 - AcpiLoadTable: Not needed.
10637 - AcpiUnloadTable: Not needed.
10638
10639 New ACPICA interfaces:
10640
10641 - AcpiInitializeTables: Must be called before the table manager can be
10642 used.
10643 - AcpiReallocateRootTable: Used to transfer the root table to dynamically
10644 allocated memory after it becomes available.
10645 - AcpiGetTableByIndex: Allows the host to easily enumerate all ACPI
10646 tables
10647 in the RSDT/XSDT.
10648
10649 Other ACPICA changes:
10650
10651 - AcpiGetTableHeader returns the actual mapped table header, not a copy.
10652 Use
10653 AcpiOsUnmapMemory to free this mapping.
10654 - AcpiGetTable returns the actual mapped table. The mapping is managed
10655 internally and must not be deleted by the caller. Use of this interface
10656 causes no additional dynamic memory allocation.
10657 - AcpiFindRootPointer: Support for physical addressing has been
10658 eliminated,
10659 it appeared to be unused.
10660 - The interface to AcpiOsMapMemory has changed to be consistent with the
10661 other allocation interfaces.
10662 - The interface to AcpiOsGetRootPointer has changed to eliminate
10663 unnecessary
10664 parameters.
10665 - ACPI_PHYSICAL_ADDRESS is now 32 bits on 32-bit platforms, 64 bits on
10666 64-
10667 bit platforms. Was previously 64 bits on all platforms.
10668 - The interface to the ACPI Global Lock acquire/release macros have
10669 changed
10670 slightly since ACPICA no longer keeps a local copy of the FACS with a
10671 constructed pointer to the actual global lock.
10672
10673 Porting to the new table manager:
10674
10675 - AcpiInitializeTables: Must be called once, and can be called anytime
10676 during the OS initialization process. It allows the host to specify an
10677 area
10678 of memory to be used to store the internal version of the RSDT/XSDT (root
10679 table). This allows the host to access ACPI tables before memory
10680 management
10681 is initialized and running.
10682 - AcpiReallocateRootTable: Can be called after memory management is
10683 running
10684 to copy the root table to a dynamically allocated array, freeing up the
10685 scratch memory specified in the call to AcpiInitializeTables.
10686 - AcpiSubsystemInitialize: This existing interface is independent of the
10687 Table Manager, and does not have to be called before the Table Manager
10688 can
10689 be used, it only must be called before the rest of ACPICA can be used.
10690 - ACPI Tables: Some changes have been made to the names and structure of
10691 the
10692 actbl.h and actbl1.h header files and may require changes to existing
10693 code.
10694 For example, bitfields have been completely removed because of their lack
10695 of
10696 portability across C compilers.
10697 - Update interfaces to the Global Lock acquire/release macros if local
10698 versions are used. (see acwin.h)
10699
10700 Obsolete files: tbconvrt.c, tbget.c, tbgetall.c, tbrsdt.c
10701
10702 New files: tbfind.c
10703
10704 Example Code and Data Size: These are the sizes for the OS-independent
10705 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10706 debug version of the code includes the debug output trace mechanism and
10707 has
10708 a much larger code and data size.
10709
10710 Previous Release:
10711 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
10712 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
10713 Current Release:
10714 Non-Debug Version: 77.8K Code, 16.5K Data, 94.3K Total
10715 Debug Version: 154.6K Code, 62.3K Data, 216.9K Total
10716
10717
10718 2) iASL Compiler/Disassembler and Tools:
10719
10720 No changes for this release.
10721
10722 ----------------------------------------
10723 21 July 2006. Summary of changes for version 20060721:
10724
10725 1) ACPI CA Core Subsystem:
10726
10727 The full source code for the ASL test suite used to validate the iASL
10728 compiler and the ACPICA core subsystem is being released with the ACPICA
10729 source for the first time. The source is contained in a separate package
10730 and
10731 consists of over 1100 files that exercise all ASL/AML operators. The
10732 package
10733 should appear on the Intel/ACPI web site shortly. (Valery Podrezov,
10734 Fiodor
10735 Suietov)
10736
10737 Completed a new design and implementation for support of the ACPI Global
10738 Lock. On the OS side, the global lock is now treated as a standard AML
10739 mutex. Previously, multiple OS threads could "acquire" the global lock
10740 simultaneously. However, this could cause the BIOS to be starved out of
10741 the
10742 lock - especially in cases such as the Embedded Controller driver where
10743 there is a tight coupling between the OS and the BIOS.
10744
10745 Implemented an optimization for the ACPI Global Lock interrupt mechanism.
10746 The Global Lock interrupt handler no longer queues the execution of a
10747 separate thread to signal the global lock semaphore. Instead, the
10748 semaphore
10749 is signaled directly from the interrupt handler.
10750
10751 Implemented support within the AML interpreter for package objects that
10752 contain a larger AML length (package list length) than the package
10753 element
10754 count. In this case, the length of the package is truncated to match the
10755 package element count. Some BIOS code apparently modifies the package
10756 length
10757 on the fly, and this change supports this behavior. Provides
10758 compatibility
10759 with the MS AML interpreter. (With assistance from Fiodor Suietov)
10760
10761 Implemented a temporary fix for the BankValue parameter of a Bank Field
10762 to
10763 support all constant values, now including the Zero and One opcodes.
10764 Evaluation of this parameter must eventually be converted to a full
10765 TermArg
10766 evaluation. A not-implemented error is now returned (temporarily) for
10767 non-
10768 constant values for this parameter.
10769
10770 Fixed problem reports (Fiodor Suietov) integrated:
10771 - Fix for premature object deletion after CopyObject on Operation Region
10772 (BZ
10773 350)
10774
10775 Example Code and Data Size: These are the sizes for the OS-independent
10776 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10777 debug version of the code includes the debug output trace mechanism and
10778 has
10779 a much larger code and data size.
10780
10781 Previous Release:
10782 Non-Debug Version: 80.7K Code, 18.0K Data, 98.7K Total
10783 Debug Version: 160.9K Code, 65.1K Data, 226.0K Total
10784 Current Release:
10785 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
10786 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
10787
10788
10789 2) iASL Compiler/Disassembler and Tools:
10790
10791 No changes for this release.
10792
10793 ----------------------------------------
10794 07 July 2006. Summary of changes for version 20060707:
10795
10796 1) ACPI CA Core Subsystem:
10797
10798 Added the ACPI_PACKED_POINTERS_NOT_SUPPORTED macro to support C compilers
10799 that do not allow the initialization of address pointers within packed
10800 structures - even though the hardware itself may support misaligned
10801 transfers. Some of the debug data structures are packed by default to
10802 minimize size.
10803
10804 Added an error message for the case where AcpiOsGetThreadId() returns
10805 zero.
10806 A non-zero value is required by the core ACPICA code to ensure the proper
10807 operation of AML mutexes and recursive control methods.
10808
10809 The DSDT is now the only ACPI table that determines whether the AML
10810 interpreter is in 32-bit or 64-bit mode. Not really a functional change,
10811 but
10812 the hooks for per-table 32/64 switching have been removed from the code.
10813 A
10814 clarification to the ACPI specification is forthcoming in ACPI 3.0B.
10815
10816 Fixed a possible leak of an OwnerID in the error path of
10817 AcpiTbInitTableDescriptor (tbinstal.c), and migrated all table OwnerID
10818 deletion to a single place in AcpiTbUninstallTable to correct possible
10819 leaks
10820 when using the AcpiTbDeleteTablesByType interface (with assistance from
10821 Lance Ortiz.)
10822
10823 Fixed a problem with Serialized control methods where the semaphore
10824 associated with the method could be over-signaled after multiple method
10825 invocations.
10826
10827 Fixed two issues with the locking of the internal namespace data
10828 structure.
10829 Both the Unload() operator and AcpiUnloadTable interface now lock the
10830 namespace during the namespace deletion associated with the table unload
10831 (with assistance from Linn Crosetto.)
10832
10833 Fixed problem reports (Valery Podrezov) integrated:
10834 - Eliminate unnecessary memory allocation for CreateXxxxField (BZ 5426)
10835
10836 Fixed problem reports (Fiodor Suietov) integrated:
10837 - Incomplete cleanup branches in AcpiTbGetTableRsdt (BZ 369)
10838 - On Address Space handler deletion, needless deactivation call (BZ 374)
10839 - AcpiRemoveAddressSpaceHandler: validate Device handle parameter (BZ
10840 375)
10841 - Possible memory leak, Notify sub-objects of Processor, Power,
10842 ThermalZone
10843 (BZ 376)
10844 - AcpiRemoveAddressSpaceHandler: validate Handler parameter (BZ 378)
10845 - Minimum Length of RSDT should be validated (BZ 379)
10846 - AcpiRemoveNotifyHandler: return AE_NOT_EXIST if Processor Obj has no
10847 Handler (BZ (380)
10848 - AcpiUnloadTable: return AE_NOT_EXIST if no table of specified type
10849 loaded
10850 (BZ 381)
10851
10852 Example Code and Data Size: These are the sizes for the OS-independent
10853 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10854 debug version of the code includes the debug output trace mechanism and
10855 has
10856 a much larger code and data size.
10857
10858 Previous Release:
10859 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
10860 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
10861 Current Release:
10862 Non-Debug Version: 80.7K Code, 17.9K Data, 98.6K Total
10863 Debug Version: 161.0K Code, 65.1K Data, 226.1K Total
10864
10865
10866 2) iASL Compiler/Disassembler and Tools:
10867
10868 Fixed problem reports:
10869 Compiler segfault when ASL contains a long (>1024) String declaration (BZ
10870 436)
10871
10872 ----------------------------------------
10873 23 June 2006. Summary of changes for version 20060623:
10874
10875 1) ACPI CA Core Subsystem:
10876
10877 Implemented a new ACPI_SPINLOCK type for the OSL lock interfaces. This
10878 allows the type to be customized to the host OS for improved efficiency
10879 (since a spinlock is usually a very small object.)
10880
10881 Implemented support for "ignored" bits in the ACPI registers. According
10882 to
10883 the ACPI specification, these bits should be preserved when writing the
10884 registers via a read/modify/write cycle. There are 3 bits preserved in
10885 this
10886 manner: PM1_CONTROL[0] (SCI_EN), PM1_CONTROL[9], and PM1_STATUS[11].
10887
10888 Implemented the initial deployment of new OSL mutex interfaces. Since
10889 some
10890 host operating systems have separate mutex and semaphore objects, this
10891 feature was requested. The base code now uses mutexes (and the new mutex
10892 interfaces) wherever a binary semaphore was used previously. However, for
10893 the current release, the mutex interfaces are defined as macros to map
10894 them
10895 to the existing semaphore interfaces. Therefore, no OSL changes are
10896 required
10897 at this time. (See acpiosxf.h)
10898
10899 Fixed several problems with the support for the control method SyncLevel
10900 parameter. The SyncLevel now works according to the ACPI specification
10901 and
10902 in concert with the Mutex SyncLevel parameter, since the current
10903 SyncLevel
10904 is a property of the executing thread. Mutual exclusion for control
10905 methods
10906 is now implemented with a mutex instead of a semaphore.
10907
10908 Fixed three instances of the use of the C shift operator in the bitfield
10909 support code (exfldio.c) to avoid the use of a shift value larger than
10910 the
10911 target data width. The behavior of C compilers is undefined in this case
10912 and
10913 can cause unpredictable results, and therefore the case must be detected
10914 and
10915 avoided. (Fiodor Suietov)
10916
10917 Added an info message whenever an SSDT or OEM table is loaded dynamically
10918 via the Load() or LoadTable() ASL operators. This should improve
10919 debugging
10920 capability since it will show exactly what tables have been loaded
10921 (beyond
10922 the tables present in the RSDT/XSDT.)
10923
10924 Example Code and Data Size: These are the sizes for the OS-independent
10925 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10926 debug version of the code includes the debug output trace mechanism and
10927 has
10928 a much larger code and data size.
10929
10930 Previous Release:
10931 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
10932 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
10933 Current Release:
10934 Non-Debug Version: 80.5K Code, 17.8K Data, 98.3K Total
10935 Debug Version: 160.8K Code, 64.8K Data, 225.6K Total
10936
10937
10938 2) iASL Compiler/Disassembler and Tools:
10939
10940 No changes for this release.
10941
10942 ----------------------------------------
10943 08 June 2006. Summary of changes for version 20060608:
10944
10945 1) ACPI CA Core Subsystem:
10946
10947 Converted the locking mutex used for the ACPI hardware to a spinlock.
10948 This
10949 change should eliminate all problems caused by attempting to acquire a
10950 semaphore at interrupt level, and it means that all ACPICA external
10951 interfaces that directly access the ACPI hardware can be safely called
10952 from
10953 interrupt level. OSL code that implements the semaphore interfaces should
10954 be
10955 able to eliminate any workarounds for being called at interrupt level.
10956
10957 Fixed a regression introduced in 20060526 where the ACPI device
10958 initialization could be prematurely aborted with an AE_NOT_FOUND if a
10959 device
10960 did not have an optional _INI method.
10961
10962 Fixed an IndexField issue where a write to the Data Register should be
10963 limited in size to the AccessSize (width) of the IndexField itself. (BZ
10964 433,
10965 Fiodor Suietov)
10966
10967 Fixed problem reports (Valery Podrezov) integrated:
10968 - Allow store of ThermalZone objects to Debug object (BZ 5369/5370)
10969
10970 Fixed problem reports (Fiodor Suietov) integrated:
10971 - AcpiGetTableHeader doesn't handle multiple instances correctly (BZ 364)
10972
10973 Removed four global mutexes that were obsolete and were no longer being
10974 used.
10975
10976 Example Code and Data Size: These are the sizes for the OS-independent
10977 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
10978 debug version of the code includes the debug output trace mechanism and
10979 has
10980 a much larger code and data size.
10981
10982 Previous Release:
10983 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
10984 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
10985 Current Release:
10986 Non-Debug Version: 80.0K Code, 17.6K Data, 97.6K Total
10987 Debug Version: 160.2K Code, 64.7K Data, 224.9K Total
10988
10989
10990 2) iASL Compiler/Disassembler and Tools:
10991
10992 Fixed a fault when using -g option (get tables from registry) on Windows
10993 machines.
10994
10995 Fixed problem reports integrated:
10996 - Generate error if CreateField NumBits parameter is zero. (BZ 405)
10997 - Fault if Offset/Length in Field unit is very large (BZ 432, Fiodor
10998 Suietov)
10999 - Global table revision override (-r) is ignored (BZ 413)
11000
11001 ----------------------------------------
11002 26 May 2006. Summary of changes for version 20060526:
11003
11004 1) ACPI CA Core Subsystem:
11005
11006 Restructured, flattened, and simplified the internal interfaces for
11007 namespace object evaluation - resulting in smaller code, less CPU stack
11008 use,
11009 and fewer interfaces. (With assistance from Mikhail Kouzmich)
11010
11011 Fixed a problem with the CopyObject operator where the first parameter
11012 was
11013 not typed correctly for the parser, interpreter, compiler, and
11014 disassembler.
11015 Caused various errors and unexpected behavior.
11016
11017 Fixed a problem where a ShiftLeft or ShiftRight of more than 64 bits
11018 produced incorrect results with some C compilers. Since the behavior of C
11019 compilers when the shift value is larger than the datatype width is
11020 apparently not well defined, the interpreter now detects this condition
11021 and
11022 simply returns zero as expected in all such cases. (BZ 395)
11023
11024 Fixed problem reports (Valery Podrezov) integrated:
11025 - Update String-to-Integer conversion to match ACPI 3.0A spec (BZ 5329)
11026 - Allow interpreter to handle nested method declarations (BZ 5361)
11027
11028 Fixed problem reports (Fiodor Suietov) integrated:
11029 - AcpiTerminate doesn't free debug memory allocation list objects (BZ
11030 355)
11031 - After Core Subsystem shutdown, AcpiSubsystemStatus returns AE_OK (BZ
11032 356)
11033 - AcpiOsUnmapMemory for RSDP can be invoked inconsistently (BZ 357)
11034 - Resource Manager should return AE_TYPE for non-device objects (BZ 358)
11035 - Incomplete cleanup branch in AcpiNsEvaluateRelative (BZ 359)
11036 - Use AcpiOsFree instead of ACPI_FREE in AcpiRsSetSrsMethodData (BZ 360)
11037 - Incomplete cleanup branch in AcpiPsParseAml (BZ 361)
11038 - Incomplete cleanup branch in AcpiDsDeleteWalkState (BZ 362)
11039 - AcpiGetTableHeader returns AE_NO_ACPI_TABLES until DSDT is loaded (BZ
11040 365)
11041 - Status of the Global Initialization Handler call not used (BZ 366)
11042 - Incorrect object parameter to Global Initialization Handler (BZ 367)
11043
11044 Example Code and Data Size: These are the sizes for the OS-independent
11045 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11046 debug version of the code includes the debug output trace mechanism and
11047 has
11048 a much larger code and data size.
11049
11050 Previous Release:
11051 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
11052 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
11053 Current Release:
11054 Non-Debug Version: 80.0K Code, 17.7K Data, 97.7K Total
11055 Debug Version: 160.3K Code, 64.9K Data, 225.2K Total
11056
11057
11058 2) iASL Compiler/Disassembler and Tools:
11059
11060 Modified the parser to allow the names IO, DMA, and IRQ to be used as
11061 namespace identifiers with no collision with existing resource descriptor
11062 macro names. This provides compatibility with other ASL compilers and is
11063 most useful for disassembly/recompilation of existing tables without
11064 parse
11065 errors. (With assistance from Thomas Renninger)
11066
11067 Disassembler: fixed an incorrect disassembly problem with the
11068 DataTableRegion and CopyObject operators. Fixed a possible fault during
11069 disassembly of some Alias operators.
11070
11071 ----------------------------------------
11072 12 May 2006. Summary of changes for version 20060512:
11073
11074 1) ACPI CA Core Subsystem:
11075
11076 Replaced the AcpiOsQueueForExecution interface with a new interface named
11077 AcpiOsExecute. The major difference is that the new interface does not
11078 have
11079 a Priority parameter, this appeared to be useless and has been replaced
11080 by
11081 a
11082 Type parameter. The Type tells the host what type of execution is being
11083 requested, such as global lock handler, notify handler, GPE handler, etc.
11084 This allows the host to queue and execute the request as appropriate for
11085 the
11086 request type, possibly using different work queues and different
11087 priorities
11088 for the various request types. This enables fixes for multithreading
11089 deadlock problems such as BZ #5534, and will require changes to all
11090 existing
11091 OS interface layers. (Alexey Starikovskiy and Bob Moore)
11092
11093 Fixed a possible memory leak associated with the support for the so-
11094 called
11095 "implicit return" ACPI extension. Reported by FreeBSD, BZ #6514. (Fiodor
11096 Suietov)
11097
11098 Fixed a problem with the Load() operator where a table load from an
11099 operation region could overwrite an internal table buffer by up to 7
11100 bytes
11101 and cause alignment faults on IPF systems. (With assistance from Luming
11102 Yu)
11103
11104 Example Code and Data Size: These are the sizes for the OS-independent
11105 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11106 debug version of the code includes the debug output trace mechanism and
11107 has
11108 a much larger code and data size.
11109
11110 Previous Release:
11111 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
11112 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
11113 Current Release:
11114 Non-Debug Version: 79.8K Code, 17.7K Data, 97.5K Total
11115 Debug Version: 160.5K Code, 65.1K Data, 225.6K Total
11116
11117
11118
11119 2) iASL Compiler/Disassembler and Tools:
11120
11121 Disassembler: Implemented support to cross reference the internal
11122 namespace
11123 and automatically generate ASL External() statements for symbols not
11124 defined
11125 within the current table being disassembled. This will simplify the
11126 disassembly and recompilation of interdependent tables such as SSDTs
11127 since
11128 these statements will no longer have to be added manually.
11129
11130 Disassembler: Implemented experimental support to automatically detect
11131 invocations of external control methods and generate appropriate
11132 External()
11133 statements. This is problematic because the AML cannot be correctly
11134 parsed
11135 until the number of arguments for each control method is known.
11136 Currently,
11137 standalone method invocations and invocations as the source operand of a
11138 Store() statement are supported.
11139
11140 Disassembler: Implemented support for the ASL pseudo-operators LNotEqual,
11141 LLessEqual, and LGreaterEqual. Previously disassembled as LNot(LEqual()),
11142 LNot(LGreater()), and LNot(LLess()), this makes the disassembled ASL code
11143 more readable and likely closer to the original ASL source.
11144
11145 ----------------------------------------
11146 21 April 2006. Summary of changes for version 20060421:
11147
11148 1) ACPI CA Core Subsystem:
11149
11150 Removed a device initialization optimization introduced in 20051216 where
11151 the _STA method was not run unless an _INI was also present for the same
11152 device. This optimization could cause problems because it could allow
11153 _INI
11154 methods to be run within a not-present device subtree. (If a not-present
11155 device had no _INI, _STA would not be run, the not-present status would
11156 not
11157 be discovered, and the children of the device would be incorrectly
11158 traversed.)
11159
11160 Implemented a new _STA optimization where namespace subtrees that do not
11161 contain _INI are identified and ignored during device initialization.
11162 Selectively running _STA can significantly improve boot time on large
11163 machines (with assistance from Len Brown.)
11164
11165 Implemented support for the device initialization case where the returned
11166 _STA flags indicate a device not-present but functioning. In this case,
11167 _INI
11168 is not run, but the device children are examined for presence, as per the
11169 ACPI specification.
11170
11171 Implemented an additional change to the IndexField support in order to
11172 conform to MS behavior. The value written to the Index Register is not
11173 simply a byte offset, it is a byte offset in units of the access width of
11174 the parent Index Field. (Fiodor Suietov)
11175
11176 Defined and deployed a new OSL interface, AcpiOsValidateAddress. This
11177 interface is called during the creation of all AML operation regions, and
11178 allows the host OS to exert control over what addresses it will allow the
11179 AML code to access. Operation Regions whose addresses are disallowed will
11180 cause a runtime exception when they are actually accessed (will not
11181 affect
11182 or abort table loading.) See oswinxf or osunixxf for an example
11183 implementation.
11184
11185 Defined and deployed a new OSL interface, AcpiOsValidateInterface. This
11186 interface allows the host OS to match the various "optional"
11187 interface/behavior strings for the _OSI predefined control method as
11188 appropriate (with assistance from Bjorn Helgaas.) See oswinxf or osunixxf
11189 for an example implementation.
11190
11191 Restructured and corrected various problems in the exception handling
11192 code
11193 paths within DsCallControlMethod and DsTerminateControlMethod in dsmethod
11194 (with assistance from Takayoshi Kochi.)
11195
11196 Modified the Linux source converter to ignore quoted string literals
11197 while
11198 converting identifiers from mixed to lower case. This will correct
11199 problems
11200 with the disassembler and other areas where such strings must not be
11201 modified.
11202
11203 The ACPI_FUNCTION_* macros no longer require quotes around the function
11204 name. This allows the Linux source converter to convert the names, now
11205 that
11206 the converter ignores quoted strings.
11207
11208 Example Code and Data Size: These are the sizes for the OS-independent
11209 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11210 debug version of the code includes the debug output trace mechanism and
11211 has
11212 a much larger code and data size.
11213
11214 Previous Release:
11215
11216 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
11217 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
11218 Current Release:
11219 Non-Debug Version: 79.7K Code, 17.7K Data, 97.4K Total
11220 Debug Version: 160.1K Code, 65.2K Data, 225.3K Total
11221
11222
11223 2) iASL Compiler/Disassembler and Tools:
11224
11225 Implemented 3 new warnings for iASL, and implemented multiple warning
11226 levels
11227 (w2 flag).
11228
11229 1) Ignored timeouts: If the TimeoutValue parameter to Wait or Acquire is
11230 not
11231 WAIT_FOREVER (0xFFFF) and the code does not examine the return value to
11232 check for the possible timeout, a warning is issued.
11233
11234 2) Useless operators: If an ASL operator does not specify an optional
11235 target
11236 operand and it also does not use the function return value from the
11237 operator, a warning is issued since the operator effectively does
11238 nothing.
11239
11240 3) Unreferenced objects: If a namespace object is created, but never
11241 referenced, a warning is issued. This is a warning level 2 since there
11242 are
11243 cases where this is ok, such as when a secondary table is loaded that
11244 uses
11245 the unreferenced objects. Even so, care is taken to only flag objects
11246 that
11247 don't look like they will ever be used. For example, the reserved methods
11248 (starting with an underscore) are usually not referenced because it is
11249 expected that the OS will invoke them.
11250
11251 ----------------------------------------
11252 31 March 2006. Summary of changes for version 20060331:
11253
11254 1) ACPI CA Core Subsystem:
11255
11256 Implemented header file support for the following additional ACPI tables:
11257 ASF!, BOOT, CPEP, DBGP, MCFG, SPCR, SPMI, TCPA, and WDRT. With this
11258 support,
11259 all current and known ACPI tables are now defined in the ACPICA headers
11260 and
11261 are available for use by device drivers and other software.
11262
11263 Implemented support to allow tables that contain ACPI names with invalid
11264 characters to be loaded. Previously, this would cause the table load to
11265 fail, but since there are several known cases of such tables on existing
11266 machines, this change was made to enable ACPI support for them. Also,
11267 this
11268 matches the behavior of the Microsoft ACPI implementation.
11269
11270 Fixed a couple regressions introduced during the memory optimization in
11271 the
11272 20060317 release. The namespace node definition required additional
11273 reorganization and an internal datatype that had been changed to 8-bit
11274 was
11275 restored to 32-bit. (Valery Podrezov)
11276
11277 Fixed a problem where a null pointer passed to AcpiUtDeleteGenericState
11278 could be passed through to AcpiOsReleaseObject which is unexpected. Such
11279 null pointers are now trapped and ignored, matching the behavior of the
11280 previous implementation before the deployment of AcpiOsReleaseObject.
11281 (Valery Podrezov, Fiodor Suietov)
11282
11283 Fixed a memory mapping leak during the deletion of a SystemMemory
11284 operation
11285 region where a cached memory mapping was not deleted. This became a
11286 noticeable problem for operation regions that are defined within
11287 frequently
11288 used control methods. (Dana Meyers)
11289
11290 Reorganized the ACPI table header files into two main files: one for the
11291 ACPI tables consumed by the ACPICA core, and another for the
11292 miscellaneous
11293 ACPI tables that are consumed by the drivers and other software. The
11294 various
11295 FADT definitions were merged into one common section and three different
11296 tables (ACPI 1.0, 1.0+, and 2.0)
11297
11298 Example Code and Data Size: These are the sizes for the OS-independent
11299 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler. The
11300 debug version of the code includes the debug output trace mechanism and
11301 has
11302 a much larger code and data size.
11303
11304 Previous Release:
11305 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
11306 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
11307 Current Release:
11308 Non-Debug Version: 81.1K Code, 17.7K Data, 98.8K Total
11309 Debug Version: 158.9K Code, 64.9K Data, 223.8K Total
11310
11311
11312 2) iASL Compiler/Disassembler and Tools:
11313
11314 Disassembler: Implemented support to decode and format all non-AML ACPI
11315 tables (tables other than DSDTs and SSDTs.) This includes the new tables
11316 added to the ACPICA headers, therefore all current and known ACPI tables
11317 are
11318 supported.
11319
11320 Disassembler: The change to allow ACPI names with invalid characters also
11321 enables the disassembly of such tables. Invalid characters within names
11322 are
11323 changed to '*' to make the name printable; the iASL compiler will still
11324 generate an error for such names, however, since this is an invalid ACPI
11325 character.
11326
11327 Implemented an option for AcpiXtract (-a) to extract all tables found in
11328 the
11329 input file. The default invocation extracts only the DSDTs and SSDTs.
11330
11331 Fixed a couple of gcc generation issues for iASL and AcpiExec and added a
11332 makefile for the AcpiXtract utility.
11333
11334 ----------------------------------------
11335 17 March 2006. Summary of changes for version 20060317:
11336
11337 1) ACPI CA Core Subsystem:
11338
11339 Implemented the use of a cache object for all internal namespace nodes.
11340 Since there are about 1000 static nodes in a typical system, this will
11341 decrease memory use for cache implementations that minimize per-
11342 allocation
11343 overhead (such as a slab allocator.)
11344
11345 Removed the reference count mechanism for internal namespace nodes, since
11346 it
11347 was deemed unnecessary. This reduces the size of each namespace node by
11348 about 5%-10% on all platforms. Nodes are now 20 bytes for the 32-bit
11349 case,
11350 and 32 bytes for the 64-bit case.
11351
11352 Optimized several internal data structures to reduce object size on 64-
11353 bit
11354 platforms by packing data within the 64-bit alignment. This includes the
11355 frequently used ACPI_OPERAND_OBJECT, of which there can be ~1000 static
11356 instances corresponding to the namespace objects.
11357
11358 Added two new strings for the predefined _OSI method: "Windows 2001.1
11359 SP1"
11360 and "Windows 2006".
11361
11362 Split the allocation tracking mechanism out to a separate file, from
11363 utalloc.c to uttrack.c. This mechanism appears to be only useful for
11364 application-level code. Kernels may wish to not include uttrack.c in
11365 distributions.
11366
11367 Removed all remnants of the obsolete ACPI_REPORT_* macros and the
11368 associated
11369 code. (These macros have been replaced by the ACPI_ERROR and ACPI_WARNING
11370 macros.)
11371
11372 Code and Data Size: These are the sizes for the acpica.lib produced by
11373 the
11374 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11375 ACPI
11376 driver or OSPM code. The debug version of the code includes the debug
11377 output
11378 trace mechanism and has a much larger code and data size. Note that these
11379 values will vary depending on the efficiency of the compiler and the
11380 compiler options used during generation.
11381
11382 Previous Release:
11383 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11384 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
11385 Current Release:
11386 Non-Debug Version: 80.9K Code, 17.7K Data, 98.6K Total
11387 Debug Version: 158.7K Code, 64.8K Data, 223.5K Total
11388
11389
11390 2) iASL Compiler/Disassembler and Tools:
11391
11392 Implemented an ANSI C version of the acpixtract utility. This version
11393 will
11394 automatically extract the DSDT and all SSDTs from the input acpidump text
11395 file and dump the binary output to separate files. It can also display a
11396 summary of the input file including the headers for each table found and
11397 will extract any single ACPI table, with any signature. (See
11398 source/tools/acpixtract)
11399
11400 ----------------------------------------
11401 10 March 2006. Summary of changes for version 20060310:
11402
11403 1) ACPI CA Core Subsystem:
11404
11405 Tagged all external interfaces to the subsystem with the new
11406 ACPI_EXPORT_SYMBOL macro. This macro can be defined as necessary to
11407 assist
11408 kernel integration. For Linux, the macro resolves to the EXPORT_SYMBOL
11409 macro. The default definition is NULL.
11410
11411 Added the ACPI_THREAD_ID type for the return value from
11412 AcpiOsGetThreadId.
11413 This allows the host to define this as necessary to simplify kernel
11414 integration. The default definition is ACPI_NATIVE_UINT.
11415
11416 Fixed two interpreter problems related to error processing, the deletion
11417 of
11418 objects, and placing invalid pointers onto the internal operator result
11419 stack. BZ 6028, 6151 (Valery Podrezov)
11420
11421 Increased the reference count threshold where a warning is emitted for
11422 large
11423 reference counts in order to eliminate unnecessary warnings on systems
11424 with
11425 large namespaces (especially 64-bit.) Increased the value from 0x400 to
11426 0x800.
11427
11428 Due to universal disagreement as to the meaning of the 'c' in the
11429 calloc()
11430 function, the ACPI_MEM_CALLOCATE macro has been renamed to
11431 ACPI_ALLOCATE_ZEROED so that the purpose of the interface is 'clear'.
11432 ACPI_MEM_ALLOCATE and ACPI_MEM_FREE are renamed to ACPI_ALLOCATE and
11433 ACPI_FREE.
11434
11435 Code and Data Size: These are the sizes for the acpica.lib produced by
11436 the
11437 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11438 ACPI
11439 driver or OSPM code. The debug version of the code includes the debug
11440 output
11441 trace mechanism and has a much larger code and data size. Note that these
11442 values will vary depending on the efficiency of the compiler and the
11443 compiler options used during generation.
11444
11445 Previous Release:
11446 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
11447 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
11448 Current Release:
11449 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11450 Debug Version: 161.6K Code, 65.7K Data, 227.3K Total
11451
11452
11453 2) iASL Compiler/Disassembler:
11454
11455 Disassembler: implemented support for symbolic resource descriptor
11456 references. If a CreateXxxxField operator references a fixed offset
11457 within
11458 a
11459 resource descriptor, a name is assigned to the descriptor and the offset
11460 is
11461 translated to the appropriate resource tag and pathname. The addition of
11462 this support brings the disassembled code very close to the original ASL
11463 source code and helps eliminate run-time errors when the disassembled
11464 code
11465 is modified (and recompiled) in such a way as to invalidate the original
11466 fixed offsets.
11467
11468 Implemented support for a Descriptor Name as the last parameter to the
11469 ASL
11470 Register() macro. This parameter was inadvertently left out of the ACPI
11471 specification, and will be added for ACPI 3.0b.
11472
11473 Fixed a problem where the use of the "_OSI" string (versus the full path
11474 "\_OSI") caused an internal compiler error. ("No back ptr to op")
11475
11476 Fixed a problem with the error message that occurs when an invalid string
11477 is
11478 used for a _HID object (such as one with an embedded asterisk:
11479 "*PNP010A".)
11480 The correct message is now displayed.
11481
11482 ----------------------------------------
11483 17 February 2006. Summary of changes for version 20060217:
11484
11485 1) ACPI CA Core Subsystem:
11486
11487 Implemented a change to the IndexField support to match the behavior of
11488 the
11489 Microsoft AML interpreter. The value written to the Index register is now
11490 a
11491 byte offset, no longer an index based upon the width of the Data
11492 register.
11493 This should fix IndexField problems seen on some machines where the Data
11494 register is not exactly one byte wide. The ACPI specification will be
11495 clarified on this point.
11496
11497 Fixed a problem where several resource descriptor types could overrun the
11498 internal descriptor buffer due to size miscalculation: VendorShort,
11499 VendorLong, and Interrupt. This was noticed on IA64 machines, but could
11500 affect all platforms.
11501
11502 Fixed a problem where individual resource descriptors were misaligned
11503 within
11504 the internal buffer, causing alignment faults on IA64 platforms.
11505
11506 Code and Data Size: These are the sizes for the acpica.lib produced by
11507 the
11508 Microsoft Visual C++ 6.0 32-bit compiler. The values do not include any
11509 ACPI
11510 driver or OSPM code. The debug version of the code includes the debug
11511 output
11512 trace mechanism and has a much larger code and data size. Note that these
11513 values will vary depending on the efficiency of the compiler and the
11514 compiler options used during generation.
11515
11516 Previous Release:
11517 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11518 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
11519 Current Release:
11520 Non-Debug Version: 81.0K Code, 17.8K Data, 98.8K Total
11521 Debug Version: 161.4K Code, 65.7K Data, 227.1K Total
11522
11523
11524 2) iASL Compiler/Disassembler:
11525
11526 Implemented support for new reserved names: _WDG and _WED are Microsoft
11527 extensions for Windows Instrumentation Management, _TDL is a new ACPI-
11528 defined method (Throttling Depth Limit.)
11529
11530 Fixed a problem where a zero-length VendorShort or VendorLong resource
11531 descriptor was incorrectly emitted as a descriptor of length one.
11532
11533 ----------------------------------------
11534 10 February 2006. Summary of changes for version 20060210:
11535
11536 1) ACPI CA Core Subsystem:
11537
11538 Removed a couple of extraneous ACPI_ERROR messages that appeared during
11539 normal execution. These became apparent after the conversion from
11540 ACPI_DEBUG_PRINT.
11541
11542 Fixed a problem where the CreateField operator could hang if the BitIndex
11543 or
11544 NumBits parameter referred to a named object. (Valery Podrezov, BZ 5359)
11545
11546 Fixed a problem where a DeRefOf operation on a buffer object incorrectly
11547 failed with an exception. This also fixes a couple of related RefOf and
11548 DeRefOf issues. (Valery Podrezov, BZ 5360/5392/5387)
11549
11550 Fixed a problem where the AE_BUFFER_LIMIT exception was returned instead
11551 of
11552 AE_STRING_LIMIT on an out-of-bounds Index() operation. (Valery Podrezov,
11553 BZ
11554 5480)
11555
11556 Implemented a memory cleanup at the end of the execution of each
11557 iteration
11558 of an AML While() loop, preventing the accumulation of outstanding
11559 objects.
11560 (Valery Podrezov, BZ 5427)
11561
11562 Eliminated a chunk of duplicate code in the object resolution code.
11563 (Valery
11564 Podrezov, BZ 5336)
11565
11566 Fixed several warnings during the 64-bit code generation.
11567
11568 The AcpiSrc source code conversion tool now inserts one line of
11569 whitespace
11570 after an if() statement that is followed immediately by a comment,
11571 improving
11572 readability of the Linux code.
11573
11574 Code and Data Size: The current and previous library sizes for the core
11575 subsystem are shown below. These are the code and data sizes for the
11576 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11577 These
11578 values do not include any ACPI driver or OSPM code. The debug version of
11579 the
11580 code includes the debug output trace mechanism and has a much larger code
11581 and data size. Note that these values will vary depending on the
11582 efficiency
11583 of the compiler and the compiler options used during generation.
11584
11585 Previous Release:
11586 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
11587 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
11588 Current Release:
11589 Non-Debug Version: 81.1K Code, 17.8K Data, 98.9K Total
11590 Debug Version: 161.3K Code, 65.6K Data, 226.9K Total
11591
11592
11593 2) iASL Compiler/Disassembler:
11594
11595 Fixed a problem with the disassembly of a BankField operator with a
11596 complex
11597 expression for the BankValue parameter.
11598
11599 ----------------------------------------
11600 27 January 2006. Summary of changes for version 20060127:
11601
11602 1) ACPI CA Core Subsystem:
11603
11604 Implemented support in the Resource Manager to allow unresolved
11605 namestring
11606 references within resource package objects for the _PRT method. This
11607 support
11608 is in addition to the previously implemented unresolved reference support
11609 within the AML parser. If the interpreter slack mode is enabled, these
11610 unresolved references will be passed through to the caller as a NULL
11611 package
11612 entry.
11613
11614 Implemented and deployed new macros and functions for error and warning
11615 messages across the subsystem. These macros are simpler and generate less
11616 code than their predecessors. The new macros ACPI_ERROR, ACPI_EXCEPTION,
11617 ACPI_WARNING, and ACPI_INFO replace the ACPI_REPORT_* macros. The older
11618 macros remain defined to allow ACPI drivers time to migrate to the new
11619 macros.
11620
11621 Implemented the ACPI_CPU_FLAGS type to simplify host OS integration of
11622 the
11623 Acquire/Release Lock OSL interfaces.
11624
11625 Fixed a problem where Alias ASL operators are sometimes not correctly
11626 resolved, in both the interpreter and the iASL compiler.
11627
11628 Fixed several problems with the implementation of the
11629 ConcatenateResTemplate
11630 ASL operator. As per the ACPI specification, zero length buffers are now
11631 treated as a single EndTag. One-length buffers always cause a fatal
11632 exception. Non-zero length buffers that do not end with a full 2-byte
11633 EndTag
11634 cause a fatal exception.
11635
11636 Fixed a possible structure overwrite in the AcpiGetObjectInfo external
11637 interface. (With assistance from Thomas Renninger)
11638
11639 Code and Data Size: The current and previous library sizes for the core
11640 subsystem are shown below. These are the code and data sizes for the
11641 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11642 These
11643 values do not include any ACPI driver or OSPM code. The debug version of
11644 the
11645 code includes the debug output trace mechanism and has a much larger code
11646 and data size. Note that these values will vary depending on the
11647 efficiency
11648 of the compiler and the compiler options used during generation.
11649
11650 Previous Release:
11651 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
11652 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
11653 Current Release:
11654 Non-Debug Version: 81.0K Code, 17.9K Data, 98.9K Total
11655 Debug Version: 161.3K Code, 65.7K Data, 227.0K Total
11656
11657
11658 2) iASL Compiler/Disassembler:
11659
11660 Fixed an internal error that was generated for any forward references to
11661 ASL
11662 Alias objects.
11663
11664 ----------------------------------------
11665 13 January 2006. Summary of changes for version 20060113:
11666
11667 1) ACPI CA Core Subsystem:
11668
11669 Added 2006 copyright to all module headers and signons. This affects
11670 virtually every file in the ACPICA core subsystem, iASL compiler, and the
11671 utilities.
11672
11673 Enhanced the ACPICA error reporting in order to simplify user migration
11674 to
11675 the non-debug version of ACPICA. Replaced all instances of the
11676 ACPI_DEBUG_PRINT macro invoked at the ACPI_DB_ERROR and ACPI_DB_WARN
11677 debug
11678 levels with the ACPI_REPORT_ERROR and ACPI_REPORT_WARNING macros,
11679 respectively. This preserves all error and warning messages in the non-
11680 debug
11681 version of the ACPICA code (this has been referred to as the "debug lite"
11682 option.) Over 200 cases were converted to create a total of over 380
11683 error/warning messages across the ACPICA code. This increases the code
11684 and
11685 data size of the default non-debug version of the code somewhat (about
11686 13K),
11687 but all error/warning reporting may be disabled if desired (and code
11688 eliminated) by specifying the ACPI_NO_ERROR_MESSAGES compile-time
11689 configuration option. The size of the debug version of ACPICA remains
11690 about
11691 the same.
11692
11693 Fixed a memory leak within the AML Debugger "Set" command. One object was
11694 not properly deleted for every successful invocation of the command.
11695
11696 Code and Data Size: The current and previous library sizes for the core
11697 subsystem are shown below. These are the code and data sizes for the
11698 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11699 These
11700 values do not include any ACPI driver or OSPM code. The debug version of
11701 the
11702 code includes the debug output trace mechanism and has a much larger code
11703 and data size. Note that these values will vary depending on the
11704 efficiency
11705 of the compiler and the compiler options used during generation.
11706
11707 Previous Release:
11708 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
11709 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
11710 Current Release:
11711 Non-Debug Version: 83.1K Code, 18.4K Data, 101.5K Total
11712 Debug Version: 163.2K Code, 66.2K Data, 229.4K Total
11713
11714
11715 2) iASL Compiler/Disassembler:
11716
11717 The compiler now officially supports the ACPI 3.0a specification that was
11718 released on December 30, 2005. (Specification is available at
11719 www.acpi.info)
11720
11721 ----------------------------------------
11722 16 December 2005. Summary of changes for version 20051216:
11723
11724 1) ACPI CA Core Subsystem:
11725
11726 Implemented optional support to allow unresolved names within ASL Package
11727 objects. A null object is inserted in the package when a named reference
11728 cannot be located in the current namespace. Enabled via the interpreter
11729 slack flag, this should eliminate AE_NOT_FOUND exceptions seen on
11730 machines
11731 that contain such code.
11732
11733 Implemented an optimization to the initialization sequence that can
11734 improve
11735 boot time. During ACPI device initialization, the _STA method is now run
11736 if
11737 and only if the _INI method exists. The _STA method is used to determine
11738 if
11739 the device is present; An _INI can only be run if _STA returns present,
11740 but
11741 it is a waste of time to run the _STA method if the _INI does not exist.
11742 (Prototype and assistance from Dong Wei)
11743
11744 Implemented use of the C99 uintptr_t for the pointer casting macros if it
11745 is
11746 available in the current compiler. Otherwise, the default (void *) cast
11747 is
11748 used as before.
11749
11750 Fixed some possible memory leaks found within the execution path of the
11751 Break, Continue, If, and CreateField operators. (Valery Podrezov)
11752
11753 Fixed a problem introduced in the 20051202 release where an exception is
11754 generated during method execution if a control method attempts to declare
11755 another method.
11756
11757 Moved resource descriptor string constants that are used by both the AML
11758 disassembler and AML debugger to the common utilities directory so that
11759 these components are independent.
11760
11761 Implemented support in the AcpiExec utility (-e switch) to globally
11762 ignore
11763 exceptions during control method execution (method is not aborted.)
11764
11765 Added the rsinfo.c source file to the AcpiExec makefile for Linux/Unix
11766 generation.
11767
11768 Code and Data Size: The current and previous library sizes for the core
11769 subsystem are shown below. These are the code and data sizes for the
11770 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11771 These
11772 values do not include any ACPI driver or OSPM code. The debug version of
11773 the
11774 code includes the debug output trace mechanism and has a much larger code
11775 and data size. Note that these values will vary depending on the
11776 efficiency
11777 of the compiler and the compiler options used during generation.
11778
11779 Previous Release:
11780 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
11781 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
11782 Current Release:
11783 Non-Debug Version: 76.6K Code, 12.3K Data, 88.9K Total
11784 Debug Version: 163.7K Code, 67.5K Data, 231.2K Total
11785
11786
11787 2) iASL Compiler/Disassembler:
11788
11789 Fixed a problem where a CPU stack overflow fault could occur if a
11790 recursive
11791 method call was made from within a Return statement.
11792
11793 ----------------------------------------
11794 02 December 2005. Summary of changes for version 20051202:
11795
11796 1) ACPI CA Core Subsystem:
11797
11798 Modified the parsing of control methods to no longer create namespace
11799 objects during the first pass of the parse. Objects are now created only
11800 during the execute phase, at the moment the namespace creation operator
11801 is
11802 encountered in the AML (Name, OperationRegion, CreateByteField, etc.)
11803 This
11804 should eliminate ALREADY_EXISTS exceptions seen on some machines where
11805 reentrant control methods are protected by an AML mutex. The mutex will
11806 now
11807 correctly block multiple threads from attempting to create the same
11808 object
11809 more than once.
11810
11811 Increased the number of available Owner Ids for namespace object tracking
11812 from 32 to 255. This should eliminate the OWNER_ID_LIMIT exceptions seen
11813 on
11814 some machines with a large number of ACPI tables (either static or
11815 dynamic).
11816
11817 Fixed a problem with the AcpiExec utility where a fault could occur when
11818 the
11819 -b switch (batch mode) is used.
11820
11821 Enhanced the namespace dump routine to output the owner ID for each
11822 namespace object.
11823
11824 Code and Data Size: The current and previous library sizes for the core
11825 subsystem are shown below. These are the code and data sizes for the
11826 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11827 These
11828 values do not include any ACPI driver or OSPM code. The debug version of
11829 the
11830 code includes the debug output trace mechanism and has a much larger code
11831 and data size. Note that these values will vary depending on the
11832 efficiency
11833 of the compiler and the compiler options used during generation.
11834
11835 Previous Release:
11836 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
11837 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11838 Current Release:
11839 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
11840 Debug Version: 163.2K Code, 67.4K Data, 230.6K Total
11841
11842
11843 2) iASL Compiler/Disassembler:
11844
11845 Fixed a parse error during compilation of certain Switch/Case constructs.
11846 To
11847 simplify the parse, the grammar now allows for multiple Default
11848 statements
11849 and this error is now detected and flagged during the analysis phase.
11850
11851 Disassembler: The disassembly now includes the contents of the original
11852 table header within a comment at the start of the file. This includes the
11853 name and version of the original ASL compiler.
11854
11855 ----------------------------------------
11856 17 November 2005. Summary of changes for version 20051117:
11857
11858 1) ACPI CA Core Subsystem:
11859
11860 Fixed a problem in the AML parser where the method thread count could be
11861 decremented below zero if any errors occurred during the method parse
11862 phase.
11863 This should eliminate AE_AML_METHOD_LIMIT exceptions seen on some
11864 machines.
11865 This also fixed a related regression with the mechanism that detects and
11866 corrects methods that cannot properly handle reentrancy (related to the
11867 deployment of the new OwnerId mechanism.)
11868
11869 Eliminated the pre-parsing of control methods (to detect errors) during
11870 table load. Related to the problem above, this was causing unwind issues
11871 if
11872 any errors occurred during the parse, and it seemed to be overkill. A
11873 table
11874 load should not be aborted if there are problems with any single control
11875 method, thus rendering this feature rather pointless.
11876
11877 Fixed a problem with the new table-driven resource manager where an
11878 internal
11879 buffer overflow could occur for small resource templates.
11880
11881 Implemented a new external interface, AcpiGetVendorResource. This
11882 interface
11883 will find and return a vendor-defined resource descriptor within a _CRS
11884 or
11885 _PRS method via an ACPI 3.0 UUID match. With assistance from Bjorn
11886 Helgaas.
11887
11888 Removed the length limit (200) on string objects as per the upcoming ACPI
11889 3.0A specification. This affects the following areas of the interpreter:
11890 1)
11891 any implicit conversion of a Buffer to a String, 2) a String object
11892 result
11893 of the ASL Concatenate operator, 3) the String object result of the ASL
11894 ToString operator.
11895
11896 Fixed a problem in the Windows OS interface layer (OSL) where a
11897 WAIT_FOREVER
11898 on a semaphore object would incorrectly timeout. This allows the
11899 multithreading features of the AcpiExec utility to work properly under
11900 Windows.
11901
11902 Updated the Linux makefiles for the iASL compiler and AcpiExec to include
11903 the recently added file named "utresrc.c".
11904
11905 Code and Data Size: The current and previous library sizes for the core
11906 subsystem are shown below. These are the code and data sizes for the
11907 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11908 These
11909 values do not include any ACPI driver or OSPM code. The debug version of
11910 the
11911 code includes the debug output trace mechanism and has a much larger code
11912 and data size. Note that these values will vary depending on the
11913 efficiency
11914 of the compiler and the compiler options used during generation.
11915
11916 Previous Release:
11917 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
11918 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11919 Current Release:
11920 Non-Debug Version: 76.3K Code, 12.3K Data, 88.6K Total
11921 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11922
11923
11924 2) iASL Compiler/Disassembler:
11925
11926 Removed the limit (200) on string objects as per the upcoming ACPI 3.0A
11927 specification. For the iASL compiler, this means that string literals
11928 within
11929 the source ASL can be of any length.
11930
11931 Enhanced the listing output to dump the AML code for resource descriptors
11932 immediately after the ASL code for each descriptor, instead of in a block
11933 at
11934 the end of the entire resource template.
11935
11936 Enhanced the compiler debug output to dump the entire original parse tree
11937 constructed during the parse phase, before any transforms are applied to
11938 the
11939 tree. The transformed tree is dumped also.
11940
11941 ----------------------------------------
11942 02 November 2005. Summary of changes for version 20051102:
11943
11944 1) ACPI CA Core Subsystem:
11945
11946 Modified the subsystem initialization sequence to improve GPE support.
11947 The
11948 GPE initialization has been split into two parts in order to defer
11949 execution
11950 of the _PRW methods (Power Resources for Wake) until after the hardware
11951 is
11952 fully initialized and the SCI handler is installed. This allows the _PRW
11953 methods to access fields protected by the Global Lock. This will fix
11954 systems
11955 where a NO_GLOBAL_LOCK exception has been seen during initialization.
11956
11957 Converted the ACPI internal object disassemble and display code within
11958 the
11959 AML debugger to fully table-driven operation, reducing code size and
11960 increasing maintainability.
11961
11962 Fixed a regression with the ConcatenateResTemplate() ASL operator
11963 introduced
11964 in the 20051021 release.
11965
11966 Implemented support for "local" internal ACPI object types within the
11967 debugger "Object" command and the AcpiWalkNamespace external interfaces.
11968 These local types include RegionFields, BankFields, IndexFields, Alias,
11969 and
11970 reference objects.
11971
11972 Moved common AML resource handling code into a new file, "utresrc.c".
11973 This
11974 code is shared by both the Resource Manager and the AML Debugger.
11975
11976 Code and Data Size: The current and previous library sizes for the core
11977 subsystem are shown below. These are the code and data sizes for the
11978 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
11979 These
11980 values do not include any ACPI driver or OSPM code. The debug version of
11981 the
11982 code includes the debug output trace mechanism and has a much larger code
11983 and data size. Note that these values will vary depending on the
11984 efficiency
11985 of the compiler and the compiler options used during generation.
11986
11987 Previous Release:
11988 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
11989 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
11990 Current Release:
11991 Non-Debug Version: 76.2K Code, 12.3K Data, 88.5K Total
11992 Debug Version: 163.0K Code, 67.4K Data, 230.4K Total
11993
11994
11995 2) iASL Compiler/Disassembler:
11996
11997 Fixed a problem with very large initializer lists (more than 4000
11998 elements)
11999 for both Buffer and Package objects where the parse stack could overflow.
12000
12001 Enhanced the pre-compile source code scan for non-ASCII characters to
12002 ignore
12003 characters within comment fields. The scan is now always performed and is
12004 no
12005 longer optional, detecting invalid characters within a source file
12006 immediately rather than during the parse phase or later.
12007
12008 Enhanced the ASL grammar definition to force early reductions on all
12009 list-
12010 style grammar elements so that the overall parse stack usage is greatly
12011 reduced. This should improve performance and reduce the possibility of
12012 parse
12013 stack overflow.
12014
12015 Eliminated all reduce/reduce conflicts in the iASL parser generation.
12016 Also,
12017 with the addition of a %expected statement, the compiler generates from
12018 source with no warnings.
12019
12020 Fixed a possible segment fault in the disassembler if the input filename
12021 does not contain a "dot" extension (Thomas Renninger).
12022
12023 ----------------------------------------
12024 21 October 2005. Summary of changes for version 20051021:
12025
12026 1) ACPI CA Core Subsystem:
12027
12028 Implemented support for the EM64T and other x86-64 processors. This
12029 essentially entails recognizing that these processors support non-aligned
12030 memory transfers. Previously, all 64-bit processors were assumed to lack
12031 hardware support for non-aligned transfers.
12032
12033 Completed conversion of the Resource Manager to nearly full table-driven
12034 operation. Specifically, the resource conversion code (convert AML to
12035 internal format and the reverse) and the debug code to dump internal
12036 resource descriptors are fully table-driven, reducing code and data size
12037 and
12038 improving maintainability.
12039
12040 The OSL interfaces for Acquire and Release Lock now use a 64-bit flag
12041 word
12042 on 64-bit processors instead of a fixed 32-bit word. (With assistance
12043 from
12044 Alexey Starikovskiy)
12045
12046 Implemented support within the resource conversion code for the Type-
12047 Specific byte within the various ACPI 3.0 *WordSpace macros.
12048
12049 Fixed some issues within the resource conversion code for the type-
12050 specific
12051 flags for both Memory and I/O address resource descriptors. For Memory,
12052 implemented support for the MTP and TTP flags. For I/O, split the TRS and
12053 TTP flags into two separate fields.
12054
12055 Code and Data Size: The current and previous library sizes for the core
12056 subsystem are shown below. These are the code and data sizes for the
12057 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12058 These
12059 values do not include any ACPI driver or OSPM code. The debug version of
12060 the
12061 code includes the debug output trace mechanism and has a much larger code
12062 and data size. Note that these values will vary depending on the
12063 efficiency
12064 of the compiler and the compiler options used during generation.
12065
12066 Previous Release:
12067 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
12068 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
12069 Current Release:
12070 Non-Debug Version: 76.1K Code, 12.2K Data, 88.3K Total
12071 Debug Version: 163.5K Code, 67.0K Data, 230.5K Total
12072
12073
12074
12075 2) iASL Compiler/Disassembler:
12076
12077 Relaxed a compiler restriction that disallowed a ResourceIndex byte if
12078 the
12079 corresponding ResourceSource string was not also present in a resource
12080 descriptor declaration. This restriction caused problems with existing
12081 AML/ASL code that includes the Index byte without the string. When such
12082 AML
12083 was disassembled, it could not be compiled without modification. Further,
12084 the modified code created a resource template with a different size than
12085 the
12086 original, breaking code that used fixed offsets into the resource
12087 template
12088 buffer.
12089
12090 Removed a recent feature of the disassembler to ignore a lone
12091 ResourceIndex
12092 byte. This byte is now emitted if present so that the exact AML can be
12093 reproduced when the disassembled code is recompiled.
12094
12095 Improved comments and text alignment for the resource descriptor code
12096 emitted by the disassembler.
12097
12098 Implemented disassembler support for the ACPI 3.0 AccessSize field within
12099 a
12100 Register() resource descriptor.
12101
12102 ----------------------------------------
12103 30 September 2005. Summary of changes for version 20050930:
12104
12105 1) ACPI CA Core Subsystem:
12106
12107 Completed a major overhaul of the Resource Manager code - specifically,
12108 optimizations in the area of the AML/internal resource conversion code.
12109 The
12110 code has been optimized to simplify and eliminate duplicated code, CPU
12111 stack
12112 use has been decreased by optimizing function parameters and local
12113 variables, and naming conventions across the manager have been
12114 standardized
12115 for clarity and ease of maintenance (this includes function, parameter,
12116 variable, and struct/typedef names.) The update may force changes in some
12117 driver code, depending on how resources are handled by the host OS.
12118
12119 All Resource Manager dispatch and information tables have been moved to a
12120 single location for clarity and ease of maintenance. One new file was
12121 created, named "rsinfo.c".
12122
12123 The ACPI return macros (return_ACPI_STATUS, etc.) have been modified to
12124 guarantee that the argument is not evaluated twice, making them less
12125 prone
12126 to macro side-effects. However, since there exists the possibility of
12127 additional stack use if a particular compiler cannot optimize them (such
12128 as
12129 in the debug generation case), the original macros are optionally
12130 available.
12131 Note that some invocations of the return_VALUE macro may now cause size
12132 mismatch warnings; the return_UINT8 and return_UINT32 macros are provided
12133 to
12134 eliminate these. (From Randy Dunlap)
12135
12136 Implemented a new mechanism to enable debug tracing for individual
12137 control
12138 methods. A new external interface, AcpiDebugTrace, is provided to enable
12139 this mechanism. The intent is to allow the host OS to easily enable and
12140 disable tracing for problematic control methods. This interface can be
12141 easily exposed to a user or debugger interface if desired. See the file
12142 psxface.c for details.
12143
12144 AcpiUtCallocate will now return a valid pointer if a length of zero is
12145 specified - a length of one is used and a warning is issued. This matches
12146 the behavior of AcpiUtAllocate.
12147
12148 Code and Data Size: The current and previous library sizes for the core
12149 subsystem are shown below. These are the code and data sizes for the
12150 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12151 These
12152 values do not include any ACPI driver or OSPM code. The debug version of
12153 the
12154 code includes the debug output trace mechanism and has a much larger code
12155 and data size. Note that these values will vary depending on the
12156 efficiency
12157 of the compiler and the compiler options used during generation.
12158
12159 Previous Release:
12160 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
12161 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
12162 Current Release:
12163 Non-Debug Version: 77.1K Code, 12.1K Data, 89.2K Total
12164 Debug Version: 168.0K Code, 68.3K Data, 236.3K Total
12165
12166
12167 2) iASL Compiler/Disassembler:
12168
12169 A remark is issued if the effective compile-time length of a package or
12170 buffer is zero. Previously, this was a warning.
12171
12172 ----------------------------------------
12173 16 September 2005. Summary of changes for version 20050916:
12174
12175 1) ACPI CA Core Subsystem:
12176
12177 Fixed a problem within the Resource Manager where support for the Generic
12178 Register descriptor was not fully implemented. This descriptor is now
12179 fully
12180 recognized, parsed, disassembled, and displayed.
12181
12182 Completely restructured the Resource Manager code to utilize table-driven
12183 dispatch and lookup, eliminating many of the large switch() statements.
12184 This
12185 reduces overall subsystem code size and code complexity. Affects the
12186 resource parsing and construction, disassembly, and debug dump output.
12187
12188 Cleaned up and restructured the debug dump output for all resource
12189 descriptors. Improved readability of the output and reduced code size.
12190
12191 Fixed a problem where changes to internal data structures caused the
12192 optional ACPI_MUTEX_DEBUG code to fail compilation if specified.
12193
12194 Code and Data Size: The current and previous library sizes for the core
12195 subsystem are shown below. These are the code and data sizes for the
12196 acpica.lib produced by the Microsoft Visual C++ 6.0 32-bit compiler.
12197 These
12198 values do not include any ACPI driver or OSPM code. The debug version of
12199 the
12200 code includes the debug output trace mechanism and has a much larger code
12201 and data size. Note that these values will vary depending on the
12202 efficiency
12203 of the compiler and the compiler options used during generation.
12204
12205 Previous Release:
12206 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
12207 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
12208 Current Release:
12209 Non-Debug Version: 77.5K Code, 12.0K Data, 89.5K Total
12210 Debug Version: 168.1K Code, 68.4K Data, 236.5K Total
12211
12212
12213 2) iASL Compiler/Disassembler:
12214
12215 Updated the disassembler to automatically insert an EndDependentFn()
12216 macro
12217 into the ASL stream if this macro is missing in the original AML code,
12218 simplifying compilation of the resulting ASL module.
12219
12220 Fixed a problem in the disassembler where a disassembled ResourceSource
12221 string (within a large resource descriptor) was not surrounded by quotes
12222 and
12223 not followed by a comma, causing errors when the resulting ASL module was
12224 compiled. Also, escape sequences within a ResourceSource string are now
12225 handled correctly (especially "\\")
12226
12227 ----------------------------------------
12228 02 September 2005. Summary of changes for version 20050902:
12229
12230 1) ACPI CA Core Subsystem:
12231
12232 Fixed a problem with the internal Owner ID allocation and deallocation
12233 mechanisms for control method execution and recursive method invocation.
12234 This should eliminate the OWNER_ID_LIMIT exceptions and "Invalid OwnerId"
12235 messages seen on some systems. Recursive method invocation depth is
12236 currently limited to 255. (Alexey Starikovskiy)
12237
12238 Completely eliminated all vestiges of support for the "module-level
12239 executable code" until this support is fully implemented and debugged.
12240 This
12241 should eliminate the NO_RETURN_VALUE exceptions seen during table load on
12242 some systems that invoke this support.
12243
12244 Fixed a problem within the resource manager code where the transaction
12245 flags
12246 for a 64-bit address descriptor were handled incorrectly in the type-
12247 specific flag byte.
12248
12249 Consolidated duplicate code within the address descriptor resource
12250 manager
12251 code, reducing overall subsystem code size.
12252
12253 Fixed a fault when using the AML debugger "disassemble" command to
12254 disassemble individual control methods.
12255
12256 Removed references to the "release_current" directory within the Unix
12257 release package.
12258
12259 Code and Data Size: The current and previous core subsystem library sizes
12260 are shown below. These are the code and data sizes for the acpica.lib
12261 produced by the Microsoft Visual C++ 6.0 compiler. These values do not
12262 include any ACPI driver or OSPM code. The debug version of the code
12263 includes
12264 the debug output trace mechanism and has a much larger code and data
12265 size.
12266 Note that these values will vary depending on the efficiency of the
12267 compiler
12268 and the compiler options used during generation.
12269
12270 Previous Release:
12271 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12272 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
12273 Current Release:
12274 Non-Debug Version: 78.4K Code, 11.8K Data, 90.2K Total
12275 Debug Version: 169.6K Code, 69.9K Data, 239.5K Total
12276
12277
12278 2) iASL Compiler/Disassembler:
12279
12280 Implemented an error check for illegal duplicate values in the interrupt
12281 and
12282 dma lists for the following ASL macros: Dma(), Irq(), IrqNoFlags(), and
12283 Interrupt().
12284
12285 Implemented error checking for the Irq() and IrqNoFlags() macros to
12286 detect
12287 too many values in the interrupt list (16 max) and invalid values in the
12288 list (range 0 - 15)
12289
12290 The maximum length string literal within an ASL file is now restricted to
12291 200 characters as per the ACPI specification.
12292
12293 Fixed a fault when using the -ln option (generate namespace listing).
12294
12295 Implemented an error check to determine if a DescriptorName within a
12296 resource descriptor has already been used within the current scope.
12297
12298 ----------------------------------------
12299 15 August 2005. Summary of changes for version 20050815:
12300
12301 1) ACPI CA Core Subsystem:
12302
12303 Implemented a full bytewise compare to determine if a table load request
12304 is
12305 attempting to load a duplicate table. The compare is performed if the
12306 table
12307 signatures and table lengths match. This will allow different tables with
12308 the same OEM Table ID and revision to be loaded - probably against the
12309 ACPI
12310 specification, but discovered in the field nonetheless.
12311
12312 Added the changes.txt logfile to each of the zipped release packages.
12313
12314 Code and Data Size: Current and previous core subsystem library sizes are
12315 shown below. These are the code and data sizes for the acpica.lib
12316 produced
12317 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12318 any ACPI driver or OSPM code. The debug version of the code includes the
12319 debug output trace mechanism and has a much larger code and data size.
12320 Note
12321 that these values will vary depending on the efficiency of the compiler
12322 and
12323 the compiler options used during generation.
12324
12325 Previous Release:
12326 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12327 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
12328 Current Release:
12329 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12330 Debug Version: 170.0K Code, 69.9K Data, 239.9K Total
12331
12332
12333 2) iASL Compiler/Disassembler:
12334
12335 Fixed a problem where incorrect AML code could be generated for Package
12336 objects if optimization is disabled (via the -oa switch).
12337
12338 Fixed a problem with where incorrect AML code is generated for variable-
12339 length packages when the package length is not specified and the number
12340 of
12341 initializer values is greater than 255.
12342
12343
12344 ----------------------------------------
12345 29 July 2005. Summary of changes for version 20050729:
12346
12347 1) ACPI CA Core Subsystem:
12348
12349 Implemented support to ignore an attempt to install/load a particular
12350 ACPI
12351 table more than once. Apparently there exists BIOS code that repeatedly
12352 attempts to load the same SSDT upon certain events. With assistance from
12353 Venkatesh Pallipadi.
12354
12355 Restructured the main interface to the AML parser in order to correctly
12356 handle all exceptional conditions. This will prevent leakage of the
12357 OwnerId
12358 resource and should eliminate the AE_OWNER_ID_LIMIT exceptions seen on
12359 some
12360 machines. With assistance from Alexey Starikovskiy.
12361
12362 Support for "module level code" has been disabled in this version due to
12363 a
12364 number of issues that have appeared on various machines. The support can
12365 be
12366 enabled by defining ACPI_ENABLE_MODULE_LEVEL_CODE during subsystem
12367 compilation. When the issues are fully resolved, the code will be enabled
12368 by
12369 default again.
12370
12371 Modified the internal functions for debug print support to define the
12372 FunctionName parameter as a (const char *) for compatibility with
12373 compiler
12374 built-in macros such as __FUNCTION__, etc.
12375
12376 Linted the entire ACPICA source tree for both 32-bit and 64-bit.
12377
12378 Implemented support to display an object count summary for the AML
12379 Debugger
12380 commands Object and Methods.
12381
12382 Code and Data Size: Current and previous core subsystem library sizes are
12383 shown below. These are the code and data sizes for the acpica.lib
12384 produced
12385 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12386 any ACPI driver or OSPM code. The debug version of the code includes the
12387 debug output trace mechanism and has a much larger code and data size.
12388 Note
12389 that these values will vary depending on the efficiency of the compiler
12390 and
12391 the compiler options used during generation.
12392
12393 Previous Release:
12394 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
12395 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
12396 Current Release:
12397 Non-Debug Version: 78.6K Code, 11.7K Data, 90.3K Total
12398 Debug Version: 167.0K Code, 69.9K Data, 236.9K Total
12399
12400
12401 2) iASL Compiler/Disassembler:
12402
12403 Fixed a regression that appeared in the 20050708 version of the compiler
12404 where an error message was inadvertently emitted for invocations of the
12405 _OSI
12406 reserved control method.
12407
12408 ----------------------------------------
12409 08 July 2005. Summary of changes for version 20050708:
12410
12411 1) ACPI CA Core Subsystem:
12412
12413 The use of the CPU stack in the debug version of the subsystem has been
12414 considerably reduced. Previously, a debug structure was declared in every
12415 function that used the debug macros. This structure has been removed in
12416 favor of declaring the individual elements as parameters to the debug
12417 functions. This reduces the cumulative stack use during nested execution
12418 of
12419 ACPI function calls at the cost of a small increase in the code size of
12420 the
12421 debug version of the subsystem. With assistance from Alexey Starikovskiy
12422 and
12423 Len Brown.
12424
12425 Added the ACPI_GET_FUNCTION_NAME macro to enable the compiler-dependent
12426 headers to define a macro that will return the current function name at
12427 runtime (such as __FUNCTION__ or _func_, etc.) The function name is used
12428 by
12429 the debug trace output. If ACPI_GET_FUNCTION_NAME is not defined in the
12430 compiler-dependent header, the function name is saved on the CPU stack
12431 (one
12432 pointer per function.) This mechanism is used because apparently there
12433 exists no standard ANSI-C defined macro that that returns the function
12434 name.
12435
12436 Redesigned and reimplemented the "Owner ID" mechanism used to track
12437 namespace objects created/deleted by ACPI tables and control method
12438 execution. A bitmap is now used to allocate and free the IDs, thus
12439 solving
12440 the wraparound problem present in the previous implementation. The size
12441 of
12442 the namespace node descriptor was reduced by 2 bytes as a result (Alexey
12443 Starikovskiy).
12444
12445 Removed the UINT32_BIT and UINT16_BIT types that were used for the
12446 bitfield
12447 flag definitions within the headers for the predefined ACPI tables. These
12448 have been replaced by UINT8_BIT in order to increase the code portability
12449 of
12450 the subsystem. If the use of UINT8 remains a problem, we may be forced to
12451 eliminate bitfields entirely because of a lack of portability.
12452
12453 Enhanced the performance of the AcpiUtUpdateObjectReference procedure.
12454 This
12455 is a frequently used function and this improvement increases the
12456 performance
12457 of the entire subsystem (Alexey Starikovskiy).
12458
12459 Fixed several possible memory leaks and the inverse - premature object
12460 deletion (Alexey Starikovskiy).
12461
12462 Code and Data Size: Current and previous core subsystem library sizes are
12463 shown below. These are the code and data sizes for the acpica.lib
12464 produced
12465 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12466 any ACPI driver or OSPM code. The debug version of the code includes the
12467 debug output trace mechanism and has a much larger code and data size.
12468 Note
12469 that these values will vary depending on the efficiency of the compiler
12470 and
12471 the compiler options used during generation.
12472
12473 Previous Release:
12474 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
12475 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
12476 Current Release:
12477 Non-Debug Version: 78.6K Code, 11.6K Data, 90.2K Total
12478 Debug Version: 170.0K Code, 69.7K Data, 239.7K Total
12479
12480 ----------------------------------------
12481 24 June 2005. Summary of changes for version 20050624:
12482
12483 1) ACPI CA Core Subsystem:
12484
12485 Modified the new OSL cache interfaces to use ACPI_CACHE_T as the type for
12486 the host-defined cache object. This allows the OSL implementation to
12487 define
12488 and type this object in any manner desired, simplifying the OSL
12489 implementation. For example, ACPI_CACHE_T is defined as kmem_cache_t for
12490 Linux, and should be defined in the OS-specific header file for other
12491 operating systems as required.
12492
12493 Changed the interface to AcpiOsAcquireObject to directly return the
12494 requested object as the function return (instead of ACPI_STATUS.) This
12495 change was made for performance reasons, since this is the purpose of the
12496 interface in the first place. AcpiOsAcquireObject is now similar to the
12497 AcpiOsAllocate interface.
12498
12499 Implemented a new AML debugger command named Businfo. This command
12500 displays
12501 information about all devices that have an associate _PRT object. The
12502 _ADR,
12503 _HID, _UID, and _CID are displayed for these devices.
12504
12505 Modified the initialization sequence in AcpiInitializeSubsystem to call
12506 the
12507 OSL interface AcpiOslInitialize first, before any local initialization.
12508 This
12509 change was required because the global initialization now calls OSL
12510 interfaces.
12511
12512 Enhanced the Dump command to display the entire contents of Package
12513 objects
12514 (including all sub-objects and their values.)
12515
12516 Restructured the code base to split some files because of size and/or
12517 because the code logically belonged in a separate file. New files are
12518 listed
12519 below. All makefiles and project files included in the ACPI CA release
12520 have
12521 been updated.
12522 utilities/utcache.c /* Local cache interfaces */
12523 utilities/utmutex.c /* Local mutex support */
12524 utilities/utstate.c /* State object support */
12525 interpreter/parser/psloop.c /* Main AML parse loop */
12526
12527 Code and Data Size: Current and previous core subsystem library sizes are
12528 shown below. These are the code and data sizes for the acpica.lib
12529 produced
12530 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12531 any ACPI driver or OSPM code. The debug version of the code includes the
12532 debug output trace mechanism and has a much larger code and data size.
12533 Note
12534 that these values will vary depending on the efficiency of the compiler
12535 and
12536 the compiler options used during generation.
12537
12538 Previous Release:
12539 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
12540 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
12541 Current Release:
12542 Non-Debug Version: 78.6K Code, 11.5K Data, 90.1K Total
12543 Debug Version: 165.2K Code, 69.6K Data, 234.8K Total
12544
12545
12546 2) iASL Compiler/Disassembler:
12547
12548 Fixed a regression introduced in version 20050513 where the use of a
12549 Package
12550 object within a Case() statement caused a compile time exception. The
12551 original behavior has been restored (a Match() operator is emitted.)
12552
12553 ----------------------------------------
12554 17 June 2005. Summary of changes for version 20050617:
12555
12556 1) ACPI CA Core Subsystem:
12557
12558 Moved the object cache operations into the OS interface layer (OSL) to
12559 allow
12560 the host OS to handle these operations if desired (for example, the Linux
12561 OSL will invoke the slab allocator). This support is optional; the
12562 compile
12563 time define ACPI_USE_LOCAL_CACHE may be used to utilize the original
12564 cache
12565 code in the ACPI CA core. The new OSL interfaces are shown below. See
12566 utalloc.c for an example implementation, and acpiosxf.h for the exact
12567 interface definitions. With assistance from Alexey Starikovskiy.
12568 AcpiOsCreateCache
12569 AcpiOsDeleteCache
12570 AcpiOsPurgeCache
12571 AcpiOsAcquireObject
12572 AcpiOsReleaseObject
12573
12574 Modified the interfaces to AcpiOsAcquireLock and AcpiOsReleaseLock to
12575 return
12576 and restore a flags parameter. This fits better with many OS lock models.
12577 Note: the current execution state (interrupt handler or not) is no longer
12578 passed to these interfaces. If necessary, the OSL must determine this
12579 state
12580 by itself, a simple and fast operation. With assistance from Alexey
12581 Starikovskiy.
12582
12583 Fixed a problem in the ACPI table handling where a valid XSDT was assumed
12584 present if the revision of the RSDP was 2 or greater. According to the
12585 ACPI
12586 specification, the XSDT is optional in all cases, and the table manager
12587 therefore now checks for both an RSDP >=2 and a valid XSDT pointer.
12588 Otherwise, the RSDT pointer is used. Some ACPI 2.0 compliant BIOSs
12589 contain
12590 only the RSDT.
12591
12592 Fixed an interpreter problem with the Mid() operator in the case of an
12593 input
12594 string where the resulting output string is of zero length. It now
12595 correctly
12596 returns a valid, null terminated string object instead of a string object
12597 with a null pointer.
12598
12599 Fixed a problem with the control method argument handling to allow a
12600 store
12601 to an Arg object that already contains an object of type Device. The
12602 Device
12603 object is now correctly overwritten. Previously, an error was returned.
12604
12605
12606 Enhanced the debugger Find command to emit object values in addition to
12607 the
12608 found object pathnames. The output format is the same as the dump
12609 namespace
12610 command.
12611
12612 Enhanced the debugger Set command. It now has the ability to set the
12613 value
12614 of any Named integer object in the namespace (Previously, only method
12615 locals
12616 and args could be set.)
12617
12618 Code and Data Size: Current and previous core subsystem library sizes are
12619 shown below. These are the code and data sizes for the acpica.lib
12620 produced
12621 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12622 any ACPI driver or OSPM code. The debug version of the code includes the
12623 debug output trace mechanism and has a much larger code and data size.
12624 Note
12625 that these values will vary depending on the efficiency of the compiler
12626 and
12627 the compiler options used during generation.
12628
12629 Previous Release:
12630 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
12631 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
12632 Current Release:
12633 Non-Debug Version: 78.3K Code, 11.6K Data, 89.9K Total
12634 Debug Version: 164.0K Code, 69.1K Data, 233.1K Total
12635
12636
12637 2) iASL Compiler/Disassembler:
12638
12639 Fixed a regression in the disassembler where if/else/while constructs
12640 were
12641 output incorrectly. This problem was introduced in the previous release
12642 (20050526). This problem also affected the single-step disassembly in the
12643 debugger.
12644
12645 Fixed a problem where compiling the reserved _OSI method would randomly
12646 (but
12647 rarely) produce compile errors.
12648
12649 Enhanced the disassembler to emit compilable code in the face of
12650 incorrect
12651 AML resource descriptors. If the optional ResourceSourceIndex is present,
12652 but the ResourceSource is not, do not emit the ResourceSourceIndex in the
12653 disassembly. Otherwise, the resulting code cannot be compiled without
12654 errors.
12655
12656 ----------------------------------------
12657 26 May 2005. Summary of changes for version 20050526:
12658
12659 1) ACPI CA Core Subsystem:
12660
12661 Implemented support to execute Type 1 and Type 2 AML opcodes appearing at
12662 the module level (not within a control method.) These opcodes are
12663 executed
12664 exactly once at the time the table is loaded. This type of code was legal
12665 up
12666 until the release of ACPI 2.0B (2002) and is now supported within ACPI CA
12667 in
12668 order to provide backwards compatibility with earlier BIOS
12669 implementations.
12670 This eliminates the "Encountered executable code at module level" warning
12671 that was previously generated upon detection of such code.
12672
12673 Fixed a problem in the interpreter where an AE_NOT_FOUND exception could
12674 inadvertently be generated during the lookup of namespace objects in the
12675 second pass parse of ACPI tables and control methods. It appears that
12676 this
12677 problem could occur during the resolution of forward references to
12678 namespace
12679 objects.
12680
12681 Added the ACPI_MUTEX_DEBUG #ifdef to the AcpiUtReleaseMutex function,
12682 corresponding to the same #ifdef in the AcpiUtAcquireMutex function. This
12683 allows the deadlock detection debug code to be compiled out in the normal
12684 case, improving mutex performance (and overall subsystem performance)
12685 considerably.
12686
12687 Implemented a handful of miscellaneous fixes for possible memory leaks on
12688 error conditions and error handling control paths. These fixes were
12689 suggested by FreeBSD and the Coverity Prevent source code analysis tool.
12690
12691 Added a check for a null RSDT pointer in AcpiGetFirmwareTable
12692 (tbxfroot.c)
12693 to prevent a fault in this error case.
12694
12695 Code and Data Size: Current and previous core subsystem library sizes are
12696 shown below. These are the code and data sizes for the acpica.lib
12697 produced
12698 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12699 any ACPI driver or OSPM code. The debug version of the code includes the
12700 debug output trace mechanism and has a much larger code and data size.
12701 Note
12702 that these values will vary depending on the efficiency of the compiler
12703 and
12704 the compiler options used during generation.
12705
12706 Previous Release:
12707 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
12708 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
12709 Current Release:
12710 Non-Debug Version: 78.1K Code, 11.6K Data, 89.7K Total
12711 Debug Version: 164.0K Code, 69.3K Data, 233.3K Total
12712
12713
12714 2) iASL Compiler/Disassembler:
12715
12716 Implemented support to allow Type 1 and Type 2 ASL operators to appear at
12717 the module level (not within a control method.) These operators will be
12718 executed once at the time the table is loaded. This type of code was
12719 legal
12720 up until the release of ACPI 2.0B (2002) and is now supported by the iASL
12721 compiler in order to provide backwards compatibility with earlier BIOS
12722 ASL
12723 code.
12724
12725 The ACPI integer width (specified via the table revision ID or the -r
12726 override, 32 or 64 bits) is now used internally during compile-time
12727 constant
12728 folding to ensure that constants are truncated to 32 bits if necessary.
12729 Previously, the revision ID value was only emitted in the AML table
12730 header.
12731
12732 An error message is now generated for the Mutex and Method operators if
12733 the
12734 SyncLevel parameter is outside the legal range of 0 through 15.
12735
12736 Fixed a problem with the Method operator ParameterTypes list handling
12737 (ACPI
12738 3.0). Previously, more than 2 types or 2 arguments generated a syntax
12739 error.
12740 The actual underlying implementation of method argument typechecking is
12741 still under development, however.
12742
12743 ----------------------------------------
12744 13 May 2005. Summary of changes for version 20050513:
12745
12746 1) ACPI CA Core Subsystem:
12747
12748 Implemented support for PCI Express root bridges -- added support for
12749 device
12750 PNP0A08 in the root bridge search within AcpiEvPciConfigRegionSetup.
12751
12752 The interpreter now automatically truncates incoming 64-bit constants to
12753 32
12754 bits if currently executing out of a 32-bit ACPI table (Revision < 2).
12755 This
12756 also affects the iASL compiler constant folding. (Note: as per below, the
12757 iASL compiler no longer allows 64-bit constants within 32-bit tables.)
12758
12759 Fixed a problem where string and buffer objects with "static" pointers
12760 (pointers to initialization data within an ACPI table) were not handled
12761 consistently. The internal object copy operation now always copies the
12762 data
12763 to a newly allocated buffer, regardless of whether the source object is
12764 static or not.
12765
12766 Fixed a problem with the FromBCD operator where an implicit result
12767 conversion was improperly performed while storing the result to the
12768 target
12769 operand. Since this is an "explicit conversion" operator, the implicit
12770 conversion should never be performed on the output.
12771
12772 Fixed a problem with the CopyObject operator where a copy to an existing
12773 named object did not always completely overwrite the existing object
12774 stored
12775 at name. Specifically, a buffer-to-buffer copy did not delete the
12776 existing
12777 buffer.
12778
12779 Replaced "InterruptLevel" with "InterruptNumber" in all GPE interfaces
12780 and
12781 structs for consistency.
12782
12783 Code and Data Size: Current and previous core subsystem library sizes are
12784 shown below. These are the code and data sizes for the acpica.lib
12785 produced
12786 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12787 any ACPI driver or OSPM code. The debug version of the code includes the
12788 debug output trace mechanism and has a much larger code and data size.
12789 Note
12790 that these values will vary depending on the efficiency of the compiler
12791 and
12792 the compiler options used during generation.
12793
12794 Previous Release:
12795 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
12796 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
12797 Current Release: (Same sizes)
12798 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
12799 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
12800
12801
12802 2) iASL Compiler/Disassembler:
12803
12804 The compiler now emits a warning if an attempt is made to generate a 64-
12805 bit
12806 integer constant from within a 32-bit ACPI table (Revision < 2). The
12807 integer
12808 is truncated to 32 bits.
12809
12810 Fixed a problem with large package objects: if the static length of the
12811 package is greater than 255, the "variable length package" opcode is
12812 emitted. Previously, this caused an error. This requires an update to the
12813 ACPI spec, since it currently (incorrectly) states that packages larger
12814 than
12815 255 elements are not allowed.
12816
12817 The disassembler now correctly handles variable length packages and
12818 packages
12819 larger than 255 elements.
12820
12821 ----------------------------------------
12822 08 April 2005. Summary of changes for version 20050408:
12823
12824 1) ACPI CA Core Subsystem:
12825
12826 Fixed three cases in the interpreter where an "index" argument to an ASL
12827 function was still (internally) 32 bits instead of the required 64 bits.
12828 This was the Index argument to the Index, Mid, and Match operators.
12829
12830 The "strupr" function is now permanently local (AcpiUtStrupr), since this
12831 is
12832 not a POSIX-defined function and not present in most kernel-level C
12833 libraries. All references to the C library strupr function have been
12834 removed
12835 from the headers.
12836
12837 Completed the deployment of static functions/prototypes. All prototypes
12838 with
12839 the static attribute have been moved from the headers to the owning C
12840 file.
12841
12842 Implemented an extract option (-e) for the AcpiBin utility (AML binary
12843 utility). This option allows the utility to extract individual ACPI
12844 tables
12845 from the output of AcpiDmp. It provides the same functionality of the
12846 acpixtract.pl perl script without the worry of setting the correct perl
12847 options. AcpiBin runs on Windows and has not yet been generated/validated
12848 in
12849 the Linux/Unix environment (but should be soon).
12850
12851 Updated and fixed the table dump option for AcpiBin (-d). This option
12852 converts a single ACPI table to a hex/ascii file, similar to the output
12853 of
12854 AcpiDmp.
12855
12856 Code and Data Size: Current and previous core subsystem library sizes are
12857 shown below. These are the code and data sizes for the acpica.lib
12858 produced
12859 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12860 any ACPI driver or OSPM code. The debug version of the code includes the
12861 debug output trace mechanism and has a much larger code and data size.
12862 Note
12863 that these values will vary depending on the efficiency of the compiler
12864 and
12865 the compiler options used during generation.
12866
12867 Previous Release:
12868 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
12869 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
12870 Current Release:
12871 Non-Debug Version: 78.2K Code, 11.6K Data, 89.8K Total
12872 Debug Version: 163.7K Code, 69.3K Data, 233.0K Total
12873
12874
12875 2) iASL Compiler/Disassembler:
12876
12877 Disassembler fix: Added a check to ensure that the table length found in
12878 the
12879 ACPI table header within the input file is not longer than the actual
12880 input
12881 file size. This indicates some kind of file or table corruption.
12882
12883 ----------------------------------------
12884 29 March 2005. Summary of changes for version 20050329:
12885
12886 1) ACPI CA Core Subsystem:
12887
12888 An error is now generated if an attempt is made to create a Buffer Field
12889 of
12890 length zero (A CreateField with a length operand of zero.)
12891
12892 The interpreter now issues a warning whenever executable code at the
12893 module
12894 level is detected during ACPI table load. This will give some idea of the
12895 prevalence of this type of code.
12896
12897 Implemented support for references to named objects (other than control
12898 methods) within package objects.
12899
12900 Enhanced package object output for the debug object. Package objects are
12901 now
12902 completely dumped, showing all elements.
12903
12904 Enhanced miscellaneous object output for the debug object. Any object can
12905 now be written to the debug object (for example, a device object can be
12906 written, and the type of the object will be displayed.)
12907
12908 The "static" qualifier has been added to all local functions across both
12909 the
12910 core subsystem and the iASL compiler.
12911
12912 The number of "long" lines (> 80 chars) within the source has been
12913 significantly reduced, by about 1/3.
12914
12915 Cleaned up all header files to ensure that all CA/iASL functions are
12916 prototyped (even static functions) and the formatting is consistent.
12917
12918 Two new header files have been added, acopcode.h and acnames.h.
12919
12920 Removed several obsolete functions that were no longer used.
12921
12922 Code and Data Size: Current and previous core subsystem library sizes are
12923 shown below. These are the code and data sizes for the acpica.lib
12924 produced
12925 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
12926 any ACPI driver or OSPM code. The debug version of the code includes the
12927 debug output trace mechanism and has a much larger code and data size.
12928 Note
12929 that these values will vary depending on the efficiency of the compiler
12930 and
12931 the compiler options used during generation.
12932
12933 Previous Release:
12934 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
12935 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
12936 Current Release:
12937 Non-Debug Version: 78.0K Code, 11.6K Data, 89.6K Total
12938 Debug Version: 163.5K Code, 69.3K Data, 232.8K Total
12939
12940
12941
12942 2) iASL Compiler/Disassembler:
12943
12944 Fixed a problem with the resource descriptor generation/support. For the
12945 ResourceSourceIndex and the ResourceSource fields, both must be present,
12946 or
12947 both must be not present - can't have one without the other.
12948
12949 The compiler now returns non-zero from the main procedure if any errors
12950 have
12951 occurred during the compilation.
12952
12953
12954 ----------------------------------------
12955 09 March 2005. Summary of changes for version 20050309:
12956
12957 1) ACPI CA Core Subsystem:
12958
12959 The string-to-buffer implicit conversion code has been modified again
12960 after
12961 a change to the ACPI specification. In order to match the behavior of
12962 the
12963 other major ACPI implementation, the target buffer is no longer truncated
12964 if
12965 the source string is smaller than an existing target buffer. This change
12966 requires an update to the ACPI spec, and should eliminate the recent
12967 AE_AML_BUFFER_LIMIT issues.
12968
12969 The "implicit return" support was rewritten to a new algorithm that
12970 solves
12971 the general case. Rather than attempt to determine when a method is about
12972 to
12973 exit, the result of every ASL operator is saved momentarily until the
12974 very
12975 next ASL operator is executed. Therefore, no matter how the method exits,
12976 there will always be a saved implicit return value. This feature is only
12977 enabled with the AcpiGbl_EnableInterpreterSlack flag, and should
12978 eliminate
12979 AE_AML_NO_RETURN_VALUE errors when enabled.
12980
12981 Implemented implicit conversion support for the predicate (operand) of
12982 the
12983 If, Else, and While operators. String and Buffer arguments are
12984 automatically
12985 converted to Integers.
12986
12987 Changed the string-to-integer conversion behavior to match the new ACPI
12988 errata: "If no integer object exists, a new integer is created. The ASCII
12989 string is interpreted as a hexadecimal constant. Each string character is
12990 interpreted as a hexadecimal value ('0'-'9', 'A'-'F', 'a', 'f'), starting
12991 with the first character as the most significant digit, and ending with
12992 the
12993 first non-hexadecimal character or end-of-string." This means that the
12994 first
12995 non-hex character terminates the conversion and this is the code that was
12996 changed.
12997
12998 Fixed a problem where the ObjectType operator would fail (fault) when
12999 used
13000 on an Index of a Package which pointed to a null package element. The
13001 operator now properly returns zero (Uninitialized) in this case.
13002
13003 Fixed a problem where the While operator used excessive memory by not
13004 properly popping the result stack during execution. There was no memory
13005 leak
13006 after execution, however. (Code provided by Valery Podrezov.)
13007
13008 Fixed a problem where references to control methods within Package
13009 objects
13010 caused the method to be invoked, instead of producing a reference object
13011 pointing to the method.
13012
13013 Restructured and simplified the pswalk.c module (AcpiPsDeleteParseTree)
13014 to
13015 improve performance and reduce code size. (Code provided by Alexey
13016 Starikovskiy.)
13017
13018 Code and Data Size: Current and previous core subsystem library sizes are
13019 shown below. These are the code and data sizes for the acpica.lib
13020 produced
13021 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13022 any ACPI driver or OSPM code. The debug version of the code includes the
13023 debug output trace mechanism and has a much larger code and data size.
13024 Note
13025 that these values will vary depending on the efficiency of the compiler
13026 and
13027 the compiler options used during generation.
13028
13029 Previous Release:
13030 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13031 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
13032 Current Release:
13033 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13034 Debug Version: 165.4K Code, 69.7K Data, 236.1K Total
13035
13036
13037 2) iASL Compiler/Disassembler:
13038
13039 Fixed a problem with the Return operator with no arguments. Since the AML
13040 grammar for the byte encoding requires an operand for the Return opcode,
13041 the
13042 compiler now emits a Return(Zero) for this case. An ACPI specification
13043 update has been written for this case.
13044
13045 For tables other than the DSDT, namepath optimization is automatically
13046 disabled. This is because SSDTs can be loaded anywhere in the namespace,
13047 the
13048 compiler has no knowledge of where, and thus cannot optimize namepaths.
13049
13050 Added "ProcessorObj" to the ObjectTypeKeyword list. This object type was
13051 inadvertently omitted from the ACPI specification, and will require an
13052 update to the spec.
13053
13054 The source file scan for ASCII characters is now optional (-a). This
13055 change
13056 was made because some vendors place non-ascii characters within comments.
13057 However, the scan is simply a brute-force byte compare to ensure all
13058 characters in the file are in the range 0x00 to 0x7F.
13059
13060 Fixed a problem with the CondRefOf operator where the compiler was
13061 inappropriately checking for the existence of the target. Since the point
13062 of
13063 the operator is to check for the existence of the target at run-time, the
13064 compiler no longer checks for the target existence.
13065
13066 Fixed a problem where errors generated from the internal AML interpreter
13067 during constant folding were not handled properly, causing a fault.
13068
13069 Fixed a problem with overly aggressive range checking for the Stall
13070 operator. The valid range (max 255) is now only checked if the operand is
13071 of
13072 type Integer. All other operand types cannot be statically checked.
13073
13074 Fixed a problem where control method references within the RefOf,
13075 DeRefOf,
13076 and ObjectType operators were not treated properly. They are now treated
13077 as
13078 actual references, not method invocations.
13079
13080 Fixed and enhanced the "list namespace" option (-ln). This option was
13081 broken
13082 a number of releases ago.
13083
13084 Improved error handling for the Field, IndexField, and BankField
13085 operators.
13086 The compiler now cleanly reports and recovers from errors in the field
13087 component (FieldUnit) list.
13088
13089 Fixed a disassembler problem where the optional ResourceDescriptor fields
13090 TRS and TTP were not always handled correctly.
13091
13092 Disassembler - Comments in output now use "//" instead of "/*"
13093
13094 ----------------------------------------
13095 28 February 2005. Summary of changes for version 20050228:
13096
13097 1) ACPI CA Core Subsystem:
13098
13099 Fixed a problem where the result of an Index() operator (an object
13100 reference) must increment the reference count on the target object for
13101 the
13102 life of the object reference.
13103
13104 Implemented AML Interpreter and Debugger support for the new ACPI 3.0
13105 Extended Address (IO, Memory, Space), QwordSpace, DwordSpace, and
13106 WordSpace
13107 resource descriptors.
13108
13109 Implemented support in the _OSI method for the ACPI 3.0 "Extended Address
13110 Space Descriptor" string, indicating interpreter support for the
13111 descriptors
13112 above.
13113
13114 Implemented header support for the new ACPI 3.0 FADT flag bits.
13115
13116 Implemented header support for the new ACPI 3.0 PCI Express bits for the
13117 PM1
13118 status/enable registers.
13119
13120 Updated header support for the MADT processor local Apic struct and MADT
13121 platform interrupt source struct for new ACPI 3.0 fields.
13122
13123 Implemented header support for the SRAT and SLIT ACPI tables.
13124
13125 Implemented the -s switch in AcpiExec to enable the "InterpreterSlack"
13126 flag
13127 at runtime.
13128
13129 Code and Data Size: Current and previous core subsystem library sizes are
13130 shown below. These are the code and data sizes for the acpica.lib
13131 produced
13132 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13133 any ACPI driver or OSPM code. The debug version of the code includes the
13134 debug output trace mechanism and has a much larger code and data size.
13135 Note
13136 that these values will vary depending on the efficiency of the compiler
13137 and
13138 the compiler options used during generation.
13139
13140 Previous Release:
13141 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
13142 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
13143 Current Release:
13144 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13145 Debug Version: 165.4K Code, 69.6K Data, 236.0K Total
13146
13147
13148 2) iASL Compiler/Disassembler:
13149
13150 Fixed a problem with the internal 64-bit String-to-integer conversion
13151 with
13152 strings less than two characters long.
13153
13154 Fixed a problem with constant folding where the result of the Index()
13155 operator can not be considered a constant. This means that Index() cannot
13156 be
13157 a type3 opcode and this will require an update to the ACPI specification.
13158
13159 Disassembler: Implemented support for the TTP, MTP, and TRS resource
13160 descriptor fields. These fields were inadvertently ignored and not output
13161 in
13162 the disassembly of the resource descriptor.
13163
13164
13165 ----------------------------------------
13166 11 February 2005. Summary of changes for version 20050211:
13167
13168 1) ACPI CA Core Subsystem:
13169
13170 Implemented ACPI 3.0 support for implicit conversion within the Match()
13171 operator. MatchObjects can now be of type integer, buffer, or string
13172 instead
13173 of just type integer. Package elements are implicitly converted to the
13174 type
13175 of the MatchObject. This change aligns the behavior of Match() with the
13176 behavior of the other logical operators (LLess(), etc.) It also requires
13177 an
13178 errata change to the ACPI specification as this support was intended for
13179 ACPI 3.0, but was inadvertently omitted.
13180
13181 Fixed a problem with the internal implicit "to buffer" conversion.
13182 Strings
13183 that are converted to buffers will cause buffer truncation if the string
13184 is
13185 smaller than the target buffer. Integers that are converted to buffers
13186 will
13187 not cause buffer truncation, only zero extension (both as per the ACPI
13188 spec.) The problem was introduced when code was added to truncate the
13189 buffer, but this should not be performed in all cases, only the string
13190 case.
13191
13192 Fixed a problem with the Buffer and Package operators where the
13193 interpreter
13194 would get confused if two such operators were used as operands to an ASL
13195 operator (such as LLess(Buffer(1){0},Buffer(1){1}). The internal result
13196 stack was not being popped after the execution of these operators,
13197 resulting
13198 in an AE_NO_RETURN_VALUE exception.
13199
13200 Fixed a problem with constructs of the form Store(Index(...),...). The
13201 reference object returned from Index was inadvertently resolved to an
13202 actual
13203 value. This problem was introduced in version 20050114 when the behavior
13204 of
13205 Store() was modified to restrict the object types that can be used as the
13206 source operand (to match the ACPI specification.)
13207
13208 Reduced excessive stack use within the AcpiGetObjectInfo procedure.
13209
13210 Added a fix to aclinux.h to allow generation of AcpiExec on Linux.
13211
13212 Updated the AcpiSrc utility to add the FADT_DESCRIPTOR_REV2_MINUS struct.
13213
13214 Code and Data Size: Current and previous core subsystem library sizes are
13215 shown below. These are the code and data sizes for the acpica.lib
13216 produced
13217 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13218 any ACPI driver or OSPM code. The debug version of the code includes the
13219 debug output trace mechanism and has a much larger code and data size.
13220 Note
13221 that these values will vary depending on the efficiency of the compiler
13222 and
13223 the compiler options used during generation.
13224
13225 Previous Release:
13226 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
13227 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
13228 Current Release:
13229 Non-Debug Version: 78.2K Code, 11.5K Data, 89.7K Total
13230 Debug Version: 164.9K Code, 69.2K Data, 234.1K Total
13231
13232
13233 2) iASL Compiler/Disassembler:
13234
13235 Fixed a code generation problem in the constant folding optimization code
13236 where incorrect code was generated if a constant was reduced to a buffer
13237 object (i.e., a reduced type 5 opcode.)
13238
13239 Fixed a typechecking problem for the ToBuffer operator. Caused by an
13240 incorrect return type in the internal opcode information table.
13241
13242 ----------------------------------------
13243 25 January 2005. Summary of changes for version 20050125:
13244
13245 1) ACPI CA Core Subsystem:
13246
13247 Fixed a recently introduced problem with the Global Lock where the
13248 underlying semaphore was not created. This problem was introduced in
13249 version 20050114, and caused an AE_AML_NO_OPERAND exception during an
13250 Acquire() operation on _GL.
13251
13252 The local object cache is now optional, and is disabled by default. Both
13253 AcpiExec and the iASL compiler enable the cache because they run in user
13254 mode and this enhances their performance. #define
13255 ACPI_ENABLE_OBJECT_CACHE
13256 to enable the local cache.
13257
13258 Fixed an issue in the internal function AcpiUtEvaluateObject concerning
13259 the
13260 optional "implicit return" support where an error was returned if no
13261 return
13262 object was expected, but one was implicitly returned. AE_OK is now
13263 returned
13264 in this case and the implicitly returned object is deleted.
13265 AcpiUtEvaluateObject is only occasionally used, and only to execute
13266 reserved
13267 methods such as _STA and _INI where the return type is known up front.
13268
13269 Fixed a few issues with the internal convert-to-integer code. It now
13270 returns
13271 an error if an attempt is made to convert a null string, a string of only
13272 blanks/tabs, or a zero-length buffer. This affects both implicit
13273 conversion
13274 and explicit conversion via the ToInteger() operator.
13275
13276 The internal debug code in AcpiUtAcquireMutex has been commented out. It
13277 is
13278 not needed for normal operation and should increase the performance of
13279 the
13280 entire subsystem. The code remains in case it is needed for debug
13281 purposes
13282 again.
13283
13284 The AcpiExec source and makefile are included in the Unix/Linux package
13285 for
13286 the first time.
13287
13288 Code and Data Size: Current and previous core subsystem library sizes are
13289 shown below. These are the code and data sizes for the acpica.lib
13290 produced
13291 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13292 any ACPI driver or OSPM code. The debug version of the code includes the
13293 debug output trace mechanism and has a much larger code and data size.
13294 Note
13295 that these values will vary depending on the efficiency of the compiler
13296 and
13297 the compiler options used during generation.
13298
13299 Previous Release:
13300 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
13301 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
13302 Current Release:
13303 Non-Debug Version: 78.1K Code, 11.5K Data, 89.6K Total
13304 Debug Version: 164.8K Code, 69.2K Data, 234.0K Total
13305
13306 2) iASL Compiler/Disassembler:
13307
13308 Switch/Case support: A warning is now issued if the type of the Switch
13309 value
13310 cannot be determined at compile time. For example, Switch(Arg0) will
13311 generate the warning, and the type is assumed to be an integer. As per
13312 the
13313 ACPI spec, use a construct such as Switch(ToInteger(Arg0)) to eliminate
13314 the
13315 warning.
13316
13317 Switch/Case support: Implemented support for buffer and string objects as
13318 the switch value. This is an ACPI 3.0 feature, now that LEqual supports
13319 buffers and strings.
13320
13321 Switch/Case support: The emitted code for the LEqual() comparisons now
13322 uses
13323 the switch value as the first operand, not the second. The case value is
13324 now
13325 the second operand, and this allows the case value to be implicitly
13326 converted to the type of the switch value, not the other way around.
13327
13328 Switch/Case support: Temporary variables are now emitted immediately
13329 within
13330 the control method, not at the global level. This means that there are
13331 now
13332 36 temps available per-method, not 36 temps per-module as was the case
13333 with
13334 the earlier implementation (_T_0 through _T_9 and _T_A through _T_Z.)
13335
13336 ----------------------------------------
13337 14 January 2005. Summary of changes for version 20050114:
13338
13339 Added 2005 copyright to all module headers. This affects every module in
13340 the core subsystem, iASL compiler, and the utilities.
13341
13342 1) ACPI CA Core Subsystem:
13343
13344 Fixed an issue with the String-to-Buffer conversion code where the string
13345 null terminator was not included in the buffer after conversion, but
13346 there
13347 is existing ASL that assumes the string null terminator is included. This
13348 is
13349 the root of the ACPI_AML_BUFFER_LIMIT regression. This problem was
13350 introduced in the previous version when the code was updated to correctly
13351 set the converted buffer size as per the ACPI specification. The ACPI
13352 spec
13353 is ambiguous and will be updated to specify that the null terminator must
13354 be
13355 included in the converted buffer. This also affects the ToBuffer() ASL
13356 operator.
13357
13358 Fixed a problem with the Mid() ASL/AML operator where it did not work
13359 correctly on Buffer objects. Newly created sub-buffers were not being
13360 marked
13361 as initialized.
13362
13363
13364 Fixed a problem in AcpiTbFindTable where incorrect string compares were
13365 performed on the OemId and OemTableId table header fields. These fields
13366 are
13367 not null terminated, so strncmp is now used instead of strcmp.
13368
13369 Implemented a restriction on the Store() ASL/AML operator to align the
13370 behavior with the ACPI specification. Previously, any object could be
13371 used
13372 as the source operand. Now, the only objects that may be used are
13373 Integers,
13374 Buffers, Strings, Packages, Object References, and DDB Handles. If
13375 necessary, the original behavior can be restored by enabling the
13376 EnableInterpreterSlack flag.
13377
13378 Enhanced the optional "implicit return" support to allow an implicit
13379 return
13380 value from methods that are invoked externally via the AcpiEvaluateObject
13381 interface. This enables implicit returns from the _STA and _INI methods,
13382 for example.
13383
13384 Changed the Revision() ASL/AML operator to return the current version of
13385 the
13386 AML interpreter, in the YYYYMMDD format. Previously, it incorrectly
13387 returned
13388 the supported ACPI version (This is the function of the _REV method).
13389
13390 Updated the _REV predefined method to return the currently supported
13391 version
13392 of ACPI, now 3.
13393
13394 Implemented batch mode option for the AcpiExec utility (-b).
13395
13396 Code and Data Size: Current and previous core subsystem library sizes are
13397 shown below. These are the code and data sizes for the acpica.lib
13398 produced
13399 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13400 any ACPI driver or OSPM code. The debug version of the code includes the
13401 debug output trace mechanism and has a much larger code and data size.
13402 Note
13403 that these values will vary depending on the efficiency of the compiler
13404 and
13405 the compiler options used during generation.
13406
13407 Previous Release:
13408 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13409 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
13410 Current Release:
13411 Non-Debug Version: 78.4K Code, 11.5K Data, 89.9K Total
13412 Debug Version: 165.4K Code, 69.4K Data, 234.8K Total
13413
13414 ----------------------------------------
13415 10 December 2004. Summary of changes for version 20041210:
13416
13417 ACPI 3.0 support is nearing completion in both the iASL compiler and the
13418 ACPI CA core subsystem.
13419
13420 1) ACPI CA Core Subsystem:
13421
13422 Fixed a problem in the ToDecimalString operator where the resulting
13423 string
13424 length was incorrectly calculated. The length is now calculated exactly,
13425 eliminating incorrect AE_STRING_LIMIT exceptions.
13426
13427 Fixed a problem in the ToHexString operator to allow a maximum 200
13428 character
13429 string to be produced.
13430
13431 Fixed a problem in the internal string-to-buffer and buffer-to-buffer
13432 copy
13433 routine where the length of the resulting buffer was not truncated to the
13434 new size (if the target buffer already existed).
13435
13436 Code and Data Size: Current and previous core subsystem library sizes are
13437 shown below. These are the code and data sizes for the acpica.lib
13438 produced
13439 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13440 any ACPI driver or OSPM code. The debug version of the code includes the
13441 debug output trace mechanism and has a much larger code and data size.
13442 Note
13443 that these values will vary depending on the efficiency of the compiler
13444 and
13445 the compiler options used during generation.
13446
13447 Previous Release:
13448 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13449 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
13450 Current Release:
13451 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13452 Debug Version: 165.3K Code, 69.4K Data, 234.7K Total
13453
13454
13455 2) iASL Compiler/Disassembler:
13456
13457 Implemented the new ACPI 3.0 resource template macros - DWordSpace,
13458 ExtendedIO, ExtendedMemory, ExtendedSpace, QWordSpace, and WordSpace.
13459 Includes support in the disassembler.
13460
13461 Implemented support for the new (ACPI 3.0) parameter to the Register
13462 macro,
13463 AccessSize.
13464
13465 Fixed a problem where the _HE resource name for the Interrupt macro was
13466 referencing bit 0 instead of bit 1.
13467
13468 Implemented check for maximum 255 interrupts in the Interrupt macro.
13469
13470 Fixed a problem with the predefined resource descriptor names where
13471 incorrect AML code was generated if the offset within the resource buffer
13472 was 0 or 1. The optimizer shortened the AML code to a single byte opcode
13473 but did not update the surrounding package lengths.
13474
13475 Changes to the Dma macro: All channels within the channel list must be
13476 in
13477 the range 0-7. Maximum 8 channels can be specified. BusMaster operand is
13478 optional (default is BusMaster).
13479
13480 Implemented check for maximum 7 data bytes for the VendorShort macro.
13481
13482 The ReadWrite parameter is now optional for the Memory32 and similar
13483 macros.
13484
13485 ----------------------------------------
13486 03 December 2004. Summary of changes for version 20041203:
13487
13488 1) ACPI CA Core Subsystem:
13489
13490 The low-level field insertion/extraction code (exfldio) has been
13491 completely
13492 rewritten to eliminate unnecessary complexity, bugs, and boundary
13493 conditions.
13494
13495 Fixed a problem in the ToInteger, ToBuffer, ToHexString, and
13496 ToDecimalString
13497 operators where the input operand could be inadvertently deleted if no
13498 conversion was necessary (e.g., if the input to ToInteger was an Integer
13499 object.)
13500
13501 Fixed a problem with the ToDecimalString and ToHexString where an
13502 incorrect
13503 exception code was returned if the resulting string would be > 200 chars.
13504 AE_STRING_LIMIT is now returned.
13505
13506 Fixed a problem with the Concatenate operator where AE_OK was always
13507 returned, even if the operation failed.
13508
13509 Fixed a problem in oswinxf (used by AcpiExec and iASL) to allow > 128
13510 semaphores to be allocated.
13511
13512 Code and Data Size: Current and previous core subsystem library sizes are
13513 shown below. These are the code and data sizes for the acpica.lib
13514 produced
13515 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13516 any ACPI driver or OSPM code. The debug version of the code includes the
13517 debug output trace mechanism and has a much larger code and data size.
13518 Note
13519 that these values will vary depending on the efficiency of the compiler
13520 and
13521 the compiler options used during generation.
13522
13523 Previous Release:
13524 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13525 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13526 Current Release:
13527 Non-Debug Version: 78.3K Code, 11.5K Data, 89.8K Total
13528 Debug Version: 164.7K Code, 68.5K Data, 233.2K Total
13529
13530
13531 2) iASL Compiler/Disassembler:
13532
13533 Fixed typechecking for the ObjectType and SizeOf operators. Problem was
13534 recently introduced in 20041119.
13535
13536 Fixed a problem with the ToUUID macro where the upper nybble of each
13537 buffer
13538 byte was inadvertently set to zero.
13539
13540 ----------------------------------------
13541 19 November 2004. Summary of changes for version 20041119:
13542
13543 1) ACPI CA Core Subsystem:
13544
13545 Fixed a problem in the internal ConvertToInteger routine where new
13546 integers
13547 were not truncated to 32 bits for 32-bit ACPI tables. This routine
13548 converts
13549 buffers and strings to integers.
13550
13551 Implemented support to store a value to an Index() on a String object.
13552 This
13553 is an ACPI 2.0 feature that had not yet been implemented.
13554
13555 Implemented new behavior for storing objects to individual package
13556 elements
13557 (via the Index() operator). The previous behavior was to invoke the
13558 implicit
13559 conversion rules if an object was already present at the index. The new
13560 behavior is to simply delete any existing object and directly store the
13561 new
13562 object. Although the ACPI specification seems unclear on this subject,
13563 other
13564 ACPI implementations behave in this manner. (This is the root of the
13565 AE_BAD_HEX_CONSTANT issue.)
13566
13567 Modified the RSDP memory scan mechanism to support the extended checksum
13568 for
13569 ACPI 2.0 (and above) RSDPs. Note that the search continues until a valid
13570 RSDP signature is found with a valid checksum.
13571
13572 Code and Data Size: Current and previous core subsystem library sizes are
13573 shown below. These are the code and data sizes for the acpica.lib
13574 produced
13575 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13576 any ACPI driver or OSPM code. The debug version of the code includes the
13577 debug output trace mechanism and has a much larger code and data size.
13578 Note
13579 that these values will vary depending on the efficiency of the compiler
13580 and
13581 the compiler options used during generation.
13582
13583 Previous Release:
13584 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13585 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13586 Current Release:
13587 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13588 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13589
13590
13591 2) iASL Compiler/Disassembler:
13592
13593 Fixed a missing semicolon in the aslcompiler.y file.
13594
13595 ----------------------------------------
13596 05 November 2004. Summary of changes for version 20041105:
13597
13598 1) ACPI CA Core Subsystem:
13599
13600 Implemented support for FADT revision 2. This was an interim table
13601 (between
13602 ACPI 1.0 and ACPI 2.0) that adds support for the FADT reset register.
13603
13604 Implemented optional support to allow uninitialized LocalX and ArgX
13605 variables in a control method. The variables are initialized to an
13606 Integer
13607 object with a value of zero. This support is enabled by setting the
13608 AcpiGbl_EnableInterpreterSlack flag to TRUE.
13609
13610 Implemented support for Integer objects for the SizeOf operator. Either
13611 4
13612 or 8 is returned, depending on the current integer size (32-bit or 64-
13613 bit,
13614 depending on the parent table revision).
13615
13616 Fixed a problem in the implementation of the SizeOf and ObjectType
13617 operators
13618 where the operand was resolved to a value too early, causing incorrect
13619 return values for some objects.
13620
13621 Fixed some possible memory leaks during exceptional conditions.
13622
13623 Code and Data Size: Current and previous core subsystem library sizes are
13624 shown below. These are the code and data sizes for the acpica.lib
13625 produced
13626 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13627 any ACPI driver or OSPM code. The debug version of the code includes the
13628 debug output trace mechanism and has a much larger code and data size.
13629 Note
13630 that these values will vary depending on the efficiency of the compiler
13631 and
13632 the compiler options used during generation.
13633
13634 Previous Release:
13635 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
13636 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
13637 Current Release:
13638 Non-Debug Version: 78.5K Code, 11.5K Data, 90.0K Total
13639 Debug Version: 165.2K Code, 68.6K Data, 233.8K Total
13640
13641
13642 2) iASL Compiler/Disassembler:
13643
13644 Implemented support for all ACPI 3.0 reserved names and methods.
13645
13646 Implemented all ACPI 3.0 grammar elements in the front-end, including
13647 support for semicolons.
13648
13649 Implemented the ACPI 3.0 Function() and ToUUID() macros
13650
13651 Fixed a problem in the disassembler where a Scope() operator would not be
13652 emitted properly if the target of the scope was in another table.
13653
13654 ----------------------------------------
13655 15 October 2004. Summary of changes for version 20041015:
13656
13657 Note: ACPI CA is currently undergoing an in-depth and complete formal
13658 evaluation to test/verify the following areas. Other suggestions are
13659 welcome. This will result in an increase in the frequency of releases and
13660 the number of bug fixes in the next few months.
13661 - Functional tests for all ASL/AML operators
13662 - All implicit/explicit type conversions
13663 - Bit fields and operation regions
13664 - 64-bit math support and 32-bit-only "truncated" math support
13665 - Exceptional conditions, both compiler and interpreter
13666 - Dynamic object deletion and memory leaks
13667 - ACPI 3.0 support when implemented
13668 - External interfaces to the ACPI subsystem
13669
13670
13671 1) ACPI CA Core Subsystem:
13672
13673 Fixed two alignment issues on 64-bit platforms - within debug statements
13674 in
13675 AcpiEvGpeDetect and AcpiEvCreateGpeBlock. Removed references to the
13676 Address
13677 field within the non-aligned ACPI generic address structure.
13678
13679 Fixed a problem in the Increment and Decrement operators where incorrect
13680 operand resolution could result in the inadvertent modification of the
13681 original integer when the integer is passed into another method as an
13682 argument and the arg is then incremented/decremented.
13683
13684 Fixed a problem in the FromBCD operator where the upper 32-bits of a 64-
13685 bit
13686 BCD number were truncated during conversion.
13687
13688 Fixed a problem in the ToDecimal operator where the length of the
13689 resulting
13690 string could be set incorrectly too long if the input operand was a
13691 Buffer
13692 object.
13693
13694 Fixed a problem in the Logical operators (LLess, etc.) where a NULL byte
13695 (0)
13696 within a buffer would prematurely terminate a compare between buffer
13697 objects.
13698
13699 Added a check for string overflow (>200 characters as per the ACPI
13700 specification) during the Concatenate operator with two string operands.
13701
13702 Code and Data Size: Current and previous core subsystem library sizes are
13703 shown below. These are the code and data sizes for the acpica.lib
13704 produced
13705 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13706 any ACPI driver or OSPM code. The debug version of the code includes the
13707 debug output trace mechanism and has a much larger code and data size.
13708 Note
13709 that these values will vary depending on the efficiency of the compiler
13710 and
13711 the compiler options used during generation.
13712
13713 Previous Release:
13714 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
13715 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
13716 Current Release:
13717 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
13718 Debug Version: 164.8K Code, 68.6K Data, 233.4K Total
13719
13720
13721
13722 2) iASL Compiler/Disassembler:
13723
13724 Allow the use of the ObjectType operator on uninitialized Locals and Args
13725 (returns 0 as per the ACPI specification).
13726
13727 Fixed a problem where the compiler would fault if there was a syntax
13728 error
13729 in the FieldName of all of the various CreateXXXField operators.
13730
13731 Disallow the use of lower case letters within the EISAID macro, as per
13732 the
13733 ACPI specification. All EISAID strings must be of the form "UUUNNNN"
13734 Where
13735 U is an uppercase letter and N is a hex digit.
13736
13737
13738 ----------------------------------------
13739 06 October 2004. Summary of changes for version 20041006:
13740
13741 1) ACPI CA Core Subsystem:
13742
13743 Implemented support for the ACPI 3.0 Timer operator. This ASL function
13744 implements a 64-bit timer with 100 nanosecond granularity.
13745
13746 Defined a new OSL interface, AcpiOsGetTimer. This interface is used to
13747 implement the ACPI 3.0 Timer operator. This allows the host OS to
13748 implement
13749 the timer with the best clock available. Also, it keeps the core
13750 subsystem
13751 out of the clock handling business, since the host OS (usually) performs
13752 this function.
13753
13754 Fixed an alignment issue on 64-bit platforms. The HwLowLevelRead(Write)
13755 functions use a 64-bit address which is part of the packed ACPI Generic
13756 Address Structure. Since the structure is non-aligned, the alignment
13757 macros
13758 are now used to extract the address to a local variable before use.
13759
13760 Fixed a problem where the ToInteger operator assumed all input strings
13761 were
13762 hexadecimal. The operator now handles both decimal strings and hex
13763 strings
13764 (prefixed with "0x").
13765
13766 Fixed a problem where the string length in the string object created as a
13767 result of the internal ConvertToString procedure could be incorrect. This
13768 potentially affected all implicit conversions and also the
13769 ToDecimalString
13770 and ToHexString operators.
13771
13772 Fixed two problems in the ToString operator. If the length parameter was
13773 zero, an incorrect string object was created and the value of the input
13774 length parameter was inadvertently changed from zero to Ones.
13775
13776 Fixed a problem where the optional ResourceSource string in the
13777 ExtendedIRQ
13778 resource macro was ignored.
13779
13780 Simplified the interfaces to the internal division functions, reducing
13781 code
13782 size and complexity.
13783
13784 Code and Data Size: Current and previous core subsystem library sizes are
13785 shown below. These are the code and data sizes for the acpica.lib
13786 produced
13787 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13788 any ACPI driver or OSPM code. The debug version of the code includes the
13789 debug output trace mechanism and has a much larger code and data size.
13790 Note
13791 that these values will vary depending on the efficiency of the compiler
13792 and
13793 the compiler options used during generation.
13794
13795 Previous Release:
13796 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
13797 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
13798 Current Release:
13799 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
13800 Debug Version: 164.6K Code, 68.5K Data, 233.1K Total
13801
13802
13803 2) iASL Compiler/Disassembler:
13804
13805 Implemented support for the ACPI 3.0 Timer operator.
13806
13807 Fixed a problem where the Default() operator was inadvertently ignored in
13808 a
13809 Switch/Case block. This was a problem in the translation of the Switch
13810 statement to If...Else pairs.
13811
13812 Added support to allow a standalone Return operator, with no parentheses
13813 (or
13814 operands).
13815
13816 Fixed a problem with code generation for the ElseIf operator where the
13817 translated Else...If parse tree was improperly constructed leading to the
13818 loss of some code.
13819
13820 ----------------------------------------
13821 22 September 2004. Summary of changes for version 20040922:
13822
13823 1) ACPI CA Core Subsystem:
13824
13825 Fixed a problem with the implementation of the LNot() operator where
13826 "Ones"
13827 was not returned for the TRUE case. Changed the code to return Ones
13828 instead
13829 of (!Arg) which was usually 1. This change affects iASL constant folding
13830 for
13831 this operator also.
13832
13833 Fixed a problem in AcpiUtInitializeBuffer where an existing buffer was
13834 not
13835 initialized properly -- Now zero the entire buffer in this case where the
13836 buffer already exists.
13837
13838 Changed the interface to AcpiOsSleep from (UINT32 Seconds, UINT32
13839 Milliseconds) to simply (ACPI_INTEGER Milliseconds). This simplifies all
13840 related code considerably. This will require changes/updates to all OS
13841 interface layers (OSLs.)
13842
13843 Implemented a new external interface, AcpiInstallExceptionHandler, to
13844 allow
13845 a system exception handler to be installed. This handler is invoked upon
13846 any
13847 run-time exception that occurs during control method execution.
13848
13849 Added support for the DSDT in AcpiTbFindTable. This allows the
13850 DataTableRegion() operator to access the local copy of the DSDT.
13851
13852 Code and Data Size: Current and previous core subsystem library sizes are
13853 shown below. These are the code and data sizes for the acpica.lib
13854 produced
13855 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13856 any ACPI driver or OSPM code. The debug version of the code includes the
13857 debug output trace mechanism and has a much larger code and data size.
13858 Note
13859 that these values will vary depending on the efficiency of the compiler
13860 and
13861 the compiler options used during generation.
13862
13863 Previous Release:
13864 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
13865 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
13866 Current Release:
13867 Non-Debug Version: 77.9K Code, 11.4K Data, 89.3K Total
13868 Debug Version: 164.5K Code, 68.3K Data, 232.8K Total
13869
13870
13871 2) iASL Compiler/Disassembler:
13872
13873 Fixed a problem with constant folding and the LNot operator. LNot was
13874 returning 1 in the TRUE case, not Ones as per the ACPI specification.
13875 This
13876 could result in the generation of an incorrect folded/reduced constant.
13877
13878 End-Of-File is now allowed within a "//"-style comment. A parse error no
13879 longer occurs if such a comment is at the very end of the input ASL
13880 source
13881 file.
13882
13883 Implemented the "-r" option to override the Revision in the table header.
13884 The initial use of this option will be to simplify the evaluation of the
13885 AML
13886 interpreter by allowing a single ASL source module to be compiled for
13887 either
13888 32-bit or 64-bit integers.
13889
13890
13891 ----------------------------------------
13892 27 August 2004. Summary of changes for version 20040827:
13893
13894 1) ACPI CA Core Subsystem:
13895
13896 - Implemented support for implicit object conversion in the non-numeric
13897 logical operators (LEqual, LGreater, LGreaterEqual, LLess, LLessEqual,
13898 and
13899 LNotEqual.) Any combination of Integers/Strings/Buffers may now be used;
13900 the second operand is implicitly converted on the fly to match the type
13901 of
13902 the first operand. For example:
13903
13904 LEqual (Source1, Source2)
13905
13906 Source1 and Source2 must each evaluate to an integer, a string, or a
13907 buffer.
13908 The data type of Source1 dictates the required type of Source2. Source2
13909 is
13910 implicitly converted if necessary to match the type of Source1.
13911
13912 - Updated and corrected the behavior of the string conversion support.
13913 The
13914 rules concerning conversion of buffers to strings (according to the ACPI
13915 specification) are as follows:
13916
13917 ToDecimalString - explicit byte-wise conversion of buffer to string of
13918 decimal values (0-255) separated by commas. ToHexString - explicit byte-
13919 wise
13920 conversion of buffer to string of hex values (0-FF) separated by commas.
13921 ToString - explicit byte-wise conversion of buffer to string. Byte-by-
13922 byte
13923 copy with no transform except NULL terminated. Any other implicit buffer-
13924 to-
13925 string conversion - byte-wise conversion of buffer to string of hex
13926 values
13927 (0-FF) separated by spaces.
13928
13929 - Fixed typo in definition of AcpiGbl_EnableInterpreterSlack.
13930
13931 - Fixed a problem in AcpiNsGetPathnameLength where the returned length
13932 was
13933 one byte too short in the case of a node in the root scope. This could
13934 cause a fault during debug output.
13935
13936 - Code and Data Size: Current and previous core subsystem library sizes
13937 are
13938 shown below. These are the code and data sizes for the acpica.lib
13939 produced
13940 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13941 any ACPI driver or OSPM code. The debug version of the code includes the
13942 debug output trace mechanism and has a much larger code and data size.
13943 Note
13944 that these values will vary depending on the efficiency of the compiler
13945 and
13946 the compiler options used during generation.
13947
13948 Previous Release:
13949 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
13950 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
13951 Current Release:
13952 Non-Debug Version: 77.8K Code, 11.4K Data, 89.2K Total
13953 Debug Version: 164.2K Code, 68.2K Data, 232.4K Total
13954
13955
13956 2) iASL Compiler/Disassembler:
13957
13958 - Fixed a Linux generation error.
13959
13960
13961 ----------------------------------------
13962 16 August 2004. Summary of changes for version 20040816:
13963
13964 1) ACPI CA Core Subsystem:
13965
13966 Designed and implemented support within the AML interpreter for the so-
13967 called "implicit return". This support returns the result of the last
13968 ASL
13969 operation within a control method, in the absence of an explicit Return()
13970 operator. A few machines depend on this behavior, even though it is not
13971 explicitly supported by the ASL language. It is optional support that
13972 can
13973 be enabled at runtime via the AcpiGbl_EnableInterpreterSlack flag.
13974
13975 Removed support for the PCI_Config address space from the internal low
13976 level
13977 hardware interfaces (AcpiHwLowLevelRead and AcpiHwLowLevelWrite). This
13978 support was not used internally, and would not work correctly anyway
13979 because
13980 the PCI bus number and segment number were not supported. There are
13981 separate interfaces for PCI configuration space access because of the
13982 unique
13983 interface.
13984
13985 Code and Data Size: Current and previous core subsystem library sizes are
13986 shown below. These are the code and data sizes for the acpica.lib
13987 produced
13988 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
13989 any ACPI driver or OSPM code. The debug version of the code includes the
13990 debug output trace mechanism and has a much larger code and data size.
13991 Note
13992 that these values will vary depending on the efficiency of the compiler
13993 and
13994 the compiler options used during generation.
13995
13996 Previous Release:
13997 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
13998 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
13999 Current Release:
14000 Non-Debug Version: 77.9K Code, 11.5K Data, 89.4K Total
14001 Debug Version: 164.1K Code, 68.3K Data, 232.4K Total
14002
14003
14004 2) iASL Compiler/Disassembler:
14005
14006 Fixed a problem where constants in ASL expressions at the root level (not
14007 within a control method) could be inadvertently truncated during code
14008 generation. This problem was introduced in the 20040715 release.
14009
14010
14011 ----------------------------------------
14012 15 July 2004. Summary of changes for version 20040715:
14013
14014 1) ACPI CA Core Subsystem:
14015
14016 Restructured the internal HW GPE interfaces to pass/track the current
14017 state
14018 of interrupts (enabled/disabled) in order to avoid possible deadlock and
14019 increase flexibility of the interfaces.
14020
14021 Implemented a "lexicographical compare" for String and Buffer objects
14022 within
14023 the logical operators -- LGreater, LLess, LGreaterEqual, and LLessEqual -
14024 -
14025 as per further clarification to the ACPI specification. Behavior is
14026 similar
14027 to C library "strcmp".
14028
14029 Completed a major reduction in CPU stack use for the AcpiGetFirmwareTable
14030 external function. In the 32-bit non-debug case, the stack use has been
14031 reduced from 168 bytes to 32 bytes.
14032
14033 Deployed a new run-time configuration flag,
14034 AcpiGbl_EnableInterpreterSlack,
14035 whose purpose is to allow the AML interpreter to forgive certain bad AML
14036 constructs. Default setting is FALSE.
14037
14038 Implemented the first use of AcpiGbl_EnableInterpreterSlack in the Field
14039 IO
14040 support code. If enabled, it allows field access to go beyond the end of
14041 a
14042 region definition if the field is within the region length rounded up to
14043 the
14044 next access width boundary (a common coding error.)
14045
14046 Renamed OSD_HANDLER to ACPI_OSD_HANDLER, and OSD_EXECUTION_CALLBACK to
14047 ACPI_OSD_EXEC_CALLBACK for consistency with other ACPI symbols. Also,
14048 these
14049 symbols are lowercase by the latest version of the AcpiSrc tool.
14050
14051 The prototypes for the PCI interfaces in acpiosxf.h have been updated to
14052 rename "Register" to simply "Reg" to prevent certain compilers from
14053 complaining.
14054
14055 Code and Data Size: Current and previous core subsystem library sizes are
14056 shown below. These are the code and data sizes for the acpica.lib
14057 produced
14058 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14059 any ACPI driver or OSPM code. The debug version of the code includes the
14060 debug output trace mechanism and has a much larger code and data size.
14061 Note
14062 that these values will vary depending on the efficiency of the compiler
14063 and
14064 the compiler options used during generation.
14065
14066 Previous Release:
14067 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
14068 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
14069 Current Release:
14070 Non-Debug Version: 78.0K Code, 11.5K Data, 89.5K Total
14071 Debug Version: 164.1K Code, 68.2K Data, 232.3K Total
14072
14073
14074 2) iASL Compiler/Disassembler:
14075
14076 Implemented full support for Package objects within the Case() operator.
14077 Note: The Break() operator is currently not supported within Case blocks
14078 (TermLists) as there is some question about backward compatibility with
14079 ACPI
14080 1.0 interpreters.
14081
14082
14083 Fixed a problem where complex terms were not supported properly within
14084 the
14085 Switch() operator.
14086
14087 Eliminated extraneous warning for compiler-emitted reserved names of the
14088 form "_T_x". (Used in Switch/Case operators.)
14089
14090 Eliminated optimization messages for "_T_x" objects and small constants
14091 within the DefinitionBlock operator.
14092
14093
14094 ----------------------------------------
14095 15 June 2004. Summary of changes for version 20040615:
14096
14097 1) ACPI CA Core Subsystem:
14098
14099 Implemented support for Buffer and String objects (as per ACPI 2.0) for
14100 the
14101 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
14102 LLessEqual.
14103
14104 All directory names in the entire source package are lower case, as they
14105 were in earlier releases.
14106
14107 Implemented "Disassemble" command in the AML debugger that will
14108 disassemble
14109 a single control method.
14110
14111 Code and Data Size: Current and previous core subsystem library sizes are
14112 shown below. These are the code and data sizes for the acpica.lib
14113 produced
14114 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14115 any ACPI driver or OSPM code. The debug version of the code includes the
14116 debug output trace mechanism and has a much larger code and data size.
14117 Note
14118 that these values will vary depending on the efficiency of the compiler
14119 and
14120 the compiler options used during generation.
14121
14122 Previous Release:
14123 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
14124 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
14125
14126 Current Release:
14127 Non-Debug Version: 77.8K Code, 11.5K Data, 89.3K Total
14128 Debug Version: 163.8K Code, 68.2K Data, 232.0K Total
14129
14130
14131 2) iASL Compiler/Disassembler:
14132
14133 Implemented support for Buffer and String objects (as per ACPI 2.0) for
14134 the
14135 following ASL operators: LEqual, LGreater, LLess, LGreaterEqual, and
14136 LLessEqual.
14137
14138 All directory names in the entire source package are lower case, as they
14139 were in earlier releases.
14140
14141 Fixed a fault when using the -g or -d<nofilename> options if the FADT was
14142 not found.
14143
14144 Fixed an issue with the Windows version of the compiler where later
14145 versions
14146 of Windows place the FADT in the registry under the name "FADT" and not
14147 "FACP" as earlier versions did. This applies when using the -g or -
14148 d<nofilename> options. The compiler now looks for both strings as
14149 necessary.
14150
14151 Fixed a problem with compiler namepath optimization where a namepath
14152 within
14153 the Scope() operator could not be optimized if the namepath was a subpath
14154 of
14155 the current scope path.
14156
14157 ----------------------------------------
14158 27 May 2004. Summary of changes for version 20040527:
14159
14160 1) ACPI CA Core Subsystem:
14161
14162 Completed a new design and implementation for EBDA (Extended BIOS Data
14163 Area)
14164 support in the RSDP scan code. The original code improperly scanned for
14165 the
14166 EBDA by simply scanning from memory location 0 to 0x400. The correct
14167 method
14168 is to first obtain the EBDA pointer from within the BIOS data area, then
14169 scan 1K of memory starting at the EBDA pointer. There appear to be few
14170 if
14171 any machines that place the RSDP in the EBDA, however.
14172
14173 Integrated a fix for a possible fault during evaluation of BufferField
14174 arguments. Obsolete code that was causing the problem was removed.
14175
14176 Found and fixed a problem in the Field Support Code where data could be
14177 corrupted on a bit field read that starts on an aligned boundary but does
14178 not end on an aligned boundary. Merged the read/write "datum length"
14179 calculation code into a common procedure.
14180
14181 Rolled in a couple of changes to the FreeBSD-specific header.
14182
14183
14184 Code and Data Size: Current and previous core subsystem library sizes are
14185 shown below. These are the code and data sizes for the acpica.lib
14186 produced
14187 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14188 any ACPI driver or OSPM code. The debug version of the code includes the
14189 debug output trace mechanism and has a much larger code and data size.
14190 Note
14191 that these values will vary depending on the efficiency of the compiler
14192 and
14193 the compiler options used during generation.
14194
14195 Previous Release:
14196 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14197 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
14198 Current Release:
14199 Non-Debug Version: 77.7K Code, 11.5K Data, 89.2K Total
14200 Debug Version: 163.3K Code, 67.2K Data, 230.5K Total
14201
14202
14203 2) iASL Compiler/Disassembler:
14204
14205 Fixed a generation warning produced by some overly-verbose compilers for
14206 a
14207 64-bit constant.
14208
14209 ----------------------------------------
14210 14 May 2004. Summary of changes for version 20040514:
14211
14212 1) ACPI CA Core Subsystem:
14213
14214 Fixed a problem where hardware GPE enable bits sometimes not set properly
14215 during and after GPE method execution. Result of 04/27 changes.
14216
14217 Removed extra "clear all GPEs" when sleeping/waking.
14218
14219 Removed AcpiHwEnableGpe and AcpiHwDisableGpe, replaced by the single
14220 AcpiHwWriteGpeEnableReg. Changed a couple of calls to the functions above
14221 to
14222 the new AcpiEv* calls as appropriate.
14223
14224 ACPI_OS_NAME was removed from the OS-specific headers. The default name
14225 is
14226 now "Microsoft Windows NT" for maximum compatibility. However this can
14227 be
14228 changed by modifying the acconfig.h file.
14229
14230 Allow a single invocation of AcpiInstallNotifyHandler for a handler that
14231 traps both types of notifies (System, Device). Use ACPI_ALL_NOTIFY flag.
14232
14233 Run _INI methods on ThermalZone objects. This is against the ACPI
14234 specification, but there is apparently ASL code in the field that has
14235 these
14236 _INI methods, and apparently "other" AML interpreters execute them.
14237
14238 Performed a full 16/32/64 bit lint that resulted in some small changes.
14239
14240 Added a sleep simulation command to the AML debugger to test sleep code.
14241
14242 Code and Data Size: Current and previous core subsystem library sizes are
14243 shown below. These are the code and data sizes for the acpica.lib
14244 produced
14245 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14246 any ACPI driver or OSPM code. The debug version of the code includes the
14247 debug output trace mechanism and has a much larger code and data size.
14248 Note
14249 that these values will vary depending on the efficiency of the compiler
14250 and
14251 the compiler options used during generation.
14252
14253 Previous Release:
14254 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14255 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
14256 Current Release:
14257 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14258 Debug Version: 163.2K Code, 67.2K Data, 230.4K Total
14259
14260 ----------------------------------------
14261 27 April 2004. Summary of changes for version 20040427:
14262
14263 1) ACPI CA Core Subsystem:
14264
14265 Completed a major overhaul of the GPE handling within ACPI CA. There are
14266 now three types of GPEs: wake-only, runtime-only, and combination
14267 wake/run.
14268 The only GPEs allowed to be combination wake/run are for button-style
14269 devices such as a control-method power button, control-method sleep
14270 button,
14271 or a notebook lid switch. GPEs that have an _Lxx or _Exx method and are
14272 not
14273 referenced by any _PRW methods are marked for "runtime" and hardware
14274 enabled. Any GPE that is referenced by a _PRW method is marked for
14275 "wake"
14276 (and disabled at runtime). However, at sleep time, only those GPEs that
14277 have been specifically enabled for wake via the AcpiEnableGpe interface
14278 will
14279 actually be hardware enabled.
14280
14281 A new external interface has been added, AcpiSetGpeType(), that is meant
14282 to
14283 be used by device drivers to force a GPE to a particular type. It will
14284 be
14285 especially useful for the drivers for the button devices mentioned above.
14286
14287 Completed restructuring of the ACPI CA initialization sequence so that
14288 default operation region handlers are installed before GPEs are
14289 initialized
14290 and the _PRW methods are executed. This will prevent errors when the
14291 _PRW
14292 methods attempt to access system memory or I/O space.
14293
14294 GPE enable/disable no longer reads the GPE enable register. We now keep
14295 the
14296 enable info for runtime and wake separate and in the GPE_EVENT_INFO. We
14297 thus no longer depend on the hardware to maintain these bits.
14298
14299 Always clear the wake status and fixed/GPE status bits before sleep, even
14300 for state S5.
14301
14302 Improved the AML debugger output for displaying the GPE blocks and their
14303 current status.
14304
14305 Added new strings for the _OSI method, of the form "Windows 2001 SPx"
14306 where
14307 x = 0,1,2,3,4.
14308
14309 Fixed a problem where the physical address was incorrectly calculated
14310 when
14311 the Load() operator was used to directly load from an Operation Region
14312 (vs.
14313 loading from a Field object.) Also added check for minimum table length
14314 for
14315 this case.
14316
14317 Fix for multiple mutex acquisition. Restore original thread SyncLevel on
14318 mutex release.
14319
14320 Added ACPI_VALID_SXDS flag to the AcpiGetObjectInfo interface for
14321 consistency with the other fields returned.
14322
14323 Shrunk the ACPI_GPE_EVENT_INFO structure by 40%. There is one such
14324 structure for each GPE in the system, so the size of this structure is
14325 important.
14326
14327 CPU stack requirement reduction: Cleaned up the method execution and
14328 object
14329 evaluation paths so that now a parameter structure is passed, instead of
14330 copying the various method parameters over and over again.
14331
14332 In evregion.c: Correctly exit and reenter the interpreter region if and
14333 only if dispatching an operation region request to a user-installed
14334 handler.
14335 Do not exit/reenter when dispatching to a default handler (e.g., default
14336 system memory or I/O handlers)
14337
14338
14339 Notes for updating drivers for the new GPE support. The following
14340 changes
14341 must be made to ACPI-related device drivers that are attached to one or
14342 more
14343 GPEs: (This information will be added to the ACPI CA Programmer
14344 Reference.)
14345
14346 1) AcpiInstallGpeHandler no longer automatically enables the GPE, you
14347 must
14348 explicitly call AcpiEnableGpe.
14349 2) There is a new interface called AcpiSetGpeType. This should be called
14350 before enabling the GPE. Also, this interface will automatically disable
14351 the GPE if it is currently enabled.
14352 3) AcpiEnableGpe no longer supports a GPE type flag.
14353
14354 Specific drivers that must be changed:
14355 1) EC driver:
14356 AcpiInstallGpeHandler (NULL, GpeNum, ACPI_GPE_EDGE_TRIGGERED,
14357 AeGpeHandler, NULL);
14358 AcpiSetGpeType (NULL, GpeNum, ACPI_GPE_TYPE_RUNTIME);
14359 AcpiEnableGpe (NULL, GpeNum, ACPI_NOT_ISR);
14360
14361 2) Button Drivers (Power, Lid, Sleep):
14362 Run _PRW method under parent device
14363 If _PRW exists: /* This is a control-method button */
14364 Extract GPE number and possibly GpeDevice
14365 AcpiSetGpeType (GpeDevice, GpeNum, ACPI_GPE_TYPE_WAKE_RUN);
14366 AcpiEnableGpe (GpeDevice, GpeNum, ACPI_NOT_ISR);
14367
14368 For all other devices that have _PRWs, we automatically set the GPE type
14369 to
14370 ACPI_GPE_TYPE_WAKE, but the GPE is NOT automatically (wake) enabled.
14371 This
14372 must be done on a selective basis, usually requiring some kind of user
14373 app
14374 to allow the user to pick the wake devices.
14375
14376
14377 Code and Data Size: Current and previous core subsystem library sizes are
14378 shown below. These are the code and data sizes for the acpica.lib
14379 produced
14380 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14381 any ACPI driver or OSPM code. The debug version of the code includes the
14382 debug output trace mechanism and has a much larger code and data size.
14383 Note
14384 that these values will vary depending on the efficiency of the compiler
14385 and
14386 the compiler options used during generation.
14387
14388 Previous Release:
14389 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
14390 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
14391 Current Release:
14392
14393 Non-Debug Version: 77.6K Code, 11.5K Data, 89.1K Total
14394 Debug Version: 162.9K Code, 67.0K Data, 229.9K Total
14395
14396
14397
14398 ----------------------------------------
14399 02 April 2004. Summary of changes for version 20040402:
14400
14401 1) ACPI CA Core Subsystem:
14402
14403 Fixed an interpreter problem where an indirect store through an ArgX
14404 parameter was incorrectly applying the "implicit conversion rules" during
14405 the store. From the ACPI specification: "If the target is a method local
14406 or
14407 argument (LocalX or ArgX), no conversion is performed and the result is
14408 stored directly to the target". The new behavior is to disable implicit
14409 conversion during ALL stores to an ArgX.
14410
14411 Changed the behavior of the _PRW method scan to ignore any and all errors
14412 returned by a given _PRW. This prevents the scan from aborting from the
14413 failure of any single _PRW.
14414
14415 Moved the runtime configuration parameters from the global init procedure
14416 to
14417 static variables in acglobal.h. This will allow the host to override the
14418 default values easily.
14419
14420 Code and Data Size: Current and previous core subsystem library sizes are
14421 shown below. These are the code and data sizes for the acpica.lib
14422 produced
14423 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14424 any ACPI driver or OSPM code. The debug version of the code includes the
14425 debug output trace mechanism and has a much larger code and data size.
14426 Note
14427 that these values will vary depending on the efficiency of the compiler
14428 and
14429 the compiler options used during generation.
14430
14431 Previous Release:
14432 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
14433 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
14434 Current Release:
14435 Non-Debug Version: 77.0K Code, 11.4K Data, 88.4K Total
14436 Debug Version: 161.0K Code, 66.3K Data, 227.3K Total
14437
14438
14439 2) iASL Compiler/Disassembler:
14440
14441 iASL now fully disassembles SSDTs. However, External() statements are
14442 not
14443 generated automatically for unresolved symbols at this time. This is a
14444 planned feature for future implementation.
14445
14446 Fixed a scoping problem in the disassembler that occurs when the type of
14447 the
14448 target of a Scope() operator is overridden. This problem caused an
14449 incorrectly nested internal namespace to be constructed.
14450
14451 Any warnings or errors that are emitted during disassembly are now
14452 commented
14453 out automatically so that the resulting file can be recompiled without
14454 any
14455 hand editing.
14456
14457 ----------------------------------------
14458 26 March 2004. Summary of changes for version 20040326:
14459
14460 1) ACPI CA Core Subsystem:
14461
14462 Implemented support for "wake" GPEs via interaction between GPEs and the
14463 _PRW methods. Every GPE that is pointed to by one or more _PRWs is
14464 identified as a WAKE GPE and by default will no longer be enabled at
14465 runtime. Previously, we were blindly enabling all GPEs with a
14466 corresponding
14467 _Lxx or _Exx method - but most of these turn out to be WAKE GPEs anyway.
14468 We
14469 believe this has been the cause of thousands of "spurious" GPEs on some
14470 systems.
14471
14472 This new GPE behavior is can be reverted to the original behavior (enable
14473 ALL GPEs at runtime) via a runtime flag.
14474
14475 Fixed a problem where aliased control methods could not access objects
14476 properly. The proper scope within the namespace was not initialized
14477 (transferred to the target of the aliased method) before executing the
14478 target method.
14479
14480 Fixed a potential race condition on internal object deletion on the
14481 return
14482 object in AcpiEvaluateObject.
14483
14484 Integrated a fix for resource descriptors where both _MEM and _MTP were
14485 being extracted instead of just _MEM. (i.e. bitmask was incorrectly too
14486 wide, 0x0F instead of 0x03.)
14487
14488 Added a special case for ACPI_ROOT_OBJECT in AcpiUtGetNodeName,
14489 preventing
14490 a
14491 fault in some cases.
14492
14493 Updated Notify() values for debug statements in evmisc.c
14494
14495 Return proper status from AcpiUtMutexInitialize, not just simply AE_OK.
14496
14497 Code and Data Size: Current and previous core subsystem library sizes are
14498 shown below. These are the code and data sizes for the acpica.lib
14499 produced
14500 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14501 any ACPI driver or OSPM code. The debug version of the code includes the
14502 debug output trace mechanism and has a much larger code and data size.
14503 Note
14504 that these values will vary depending on the efficiency of the compiler
14505 and
14506 the compiler options used during generation.
14507
14508 Previous Release:
14509
14510 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
14511 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
14512 Current Release:
14513 Non-Debug Version: 76.9K Code, 11.4K Data, 88.3K Total
14514 Debug Version: 160.8K Code, 66.1K Data, 226.9K Total
14515
14516 ----------------------------------------
14517 11 March 2004. Summary of changes for version 20040311:
14518
14519 1) ACPI CA Core Subsystem:
14520
14521 Fixed a problem where errors occurring during the parse phase of control
14522 method execution did not abort cleanly. For example, objects created and
14523 installed in the namespace were not deleted. This caused all subsequent
14524 invocations of the method to return the AE_ALREADY_EXISTS exception.
14525
14526 Implemented a mechanism to force a control method to "Serialized"
14527 execution
14528 if the method attempts to create namespace objects. (The root of the
14529 AE_ALREADY_EXISTS problem.)
14530
14531 Implemented support for the predefined _OSI "internal" control method.
14532 Initial supported strings are "Linux", "Windows 2000", "Windows 2001",
14533 and
14534 "Windows 2001.1", and can be easily upgraded for new strings as
14535 necessary.
14536 This feature will allow "other" operating systems to execute the fully
14537 tested, "Windows" code path through the ASL code
14538
14539 Global Lock Support: Now allows multiple acquires and releases with any
14540 internal thread. Removed concept of "owning thread" for this special
14541 mutex.
14542
14543 Fixed two functions that were inappropriately declaring large objects on
14544 the
14545 CPU stack: PsParseLoop, NsEvaluateRelative. Reduces the stack usage
14546 during
14547 method execution considerably.
14548
14549 Fixed a problem in the ACPI 2.0 FACS descriptor (actbl2.h) where the
14550 S4Bios_f field was incorrectly defined as UINT32 instead of UINT32_BIT.
14551
14552 Fixed a problem where AcpiEvGpeDetect would fault if there were no GPEs
14553 defined on the machine.
14554
14555 Implemented two runtime options: One to force all control method
14556 execution
14557 to "Serialized" to mimic Windows behavior, another to disable _OSI
14558 support
14559 if it causes problems on a given machine.
14560
14561 Code and Data Size: Current and previous core subsystem library sizes are
14562 shown below. These are the code and data sizes for the acpica.lib
14563 produced
14564 by the Microsoft Visual C++ 6.0 compiler, and these values do not include
14565 any ACPI driver or OSPM code. The debug version of the code includes the
14566 debug output trace mechanism and has a much larger code and data size.
14567 Note
14568 that these values will vary depending on the efficiency of the compiler
14569 and
14570 the compiler options used during generation.
14571
14572 Previous Release:
14573 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
14574 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
14575 Current Release:
14576 Non-Debug Version: 76.5K Code, 11.3K Data, 87.8K Total
14577 Debug Version: 160.3K Code, 66.0K Data, 226.3K Total
14578
14579 2) iASL Compiler/Disassembler:
14580
14581 Fixed an array size problem for FreeBSD that would cause the compiler to
14582 fault.
14583
14584 ----------------------------------------
14585 20 February 2004. Summary of changes for version 20040220:
14586
14587
14588 1) ACPI CA Core Subsystem:
14589
14590 Implemented execution of _SxD methods for Device objects in the
14591 GetObjectInfo interface.
14592
14593 Fixed calls to _SST method to pass the correct arguments.
14594
14595 Added a call to _SST on wake to restore to "working" state.
14596
14597 Check for End-Of-Buffer failure case in the WalkResources interface.
14598
14599 Integrated fix for 64-bit alignment issue in acglobal.h by moving two
14600 structures to the beginning of the file.
14601
14602 After wake, clear GPE status register(s) before enabling GPEs.
14603
14604 After wake, clear/enable power button. (Perhaps we should clear/enable
14605 all
14606 fixed events upon wake.)
14607
14608 Fixed a couple of possible memory leaks in the Namespace manager.
14609
14610 Integrated latest acnetbsd.h file.
14611
14612 ----------------------------------------
14613 11 February 2004. Summary of changes for version 20040211:
14614
14615
14616 1) ACPI CA Core Subsystem:
14617
14618 Completed investigation and implementation of the call-by-reference
14619 mechanism for control method arguments.
14620
14621 Fixed a problem where a store of an object into an indexed package could
14622 fail if the store occurs within a different method than the method that
14623 created the package.
14624
14625 Fixed a problem where the ToDecimal operator could return incorrect
14626 results.
14627
14628 Fixed a problem where the CopyObject operator could fail on some of the
14629 more
14630 obscure objects (e.g., Reference objects.)
14631
14632 Improved the output of the Debug object to display buffer, package, and
14633 index objects.
14634
14635 Fixed a problem where constructs of the form "RefOf (ArgX)" did not
14636 return
14637 the expected result.
14638
14639 Added permanent ACPI_REPORT_ERROR macros for all instances of the
14640 ACPI_AML_INTERNAL exception.
14641
14642 Integrated latest version of acfreebsd.h
14643
14644 ----------------------------------------
14645 16 January 2004. Summary of changes for version 20040116:
14646
14647 The purpose of this release is primarily to update the copyright years in
14648 each module, thus causing a huge number of diffs. There are a few small
14649 functional changes, however.
14650
14651 1) ACPI CA Core Subsystem:
14652
14653 Improved error messages when there is a problem finding one or more of
14654 the
14655 required base ACPI tables
14656
14657 Reintroduced the definition of APIC_HEADER in actbl.h
14658
14659 Changed definition of MADT_ADDRESS_OVERRIDE to 64 bits (actbl.h)
14660
14661 Removed extraneous reference to NewObj in dsmthdat.c
14662
14663 2) iASL compiler
14664
14665 Fixed a problem introduced in December that disabled the correct
14666 disassembly
14667 of Resource Templates
14668
14669
14670 ----------------------------------------
14671 03 December 2003. Summary of changes for version 20031203:
14672
14673 1) ACPI CA Core Subsystem:
14674
14675 Changed the initialization of Operation Regions during subsystem
14676 init to perform two entire walks of the ACPI namespace; The first
14677 to initialize the regions themselves, the second to execute the
14678 _REG methods. This fixed some interdependencies across _REG
14679 methods found on some machines.
14680
14681 Fixed a problem where a Store(Local0, Local1) could simply update
14682 the object reference count, and not create a new copy of the
14683 object if the Local1 is uninitialized.
14684
14685 Implemented support for the _SST reserved method during sleep
14686 transitions.
14687
14688 Implemented support to clear the SLP_TYP and SLP_EN bits when
14689 waking up, this is apparently required by some machines.
14690
14691 When sleeping, clear the wake status only if SleepState is not S5.
14692
14693 Fixed a problem in AcpiRsExtendedIrqResource() where an incorrect
14694 pointer arithmetic advanced a string pointer too far.
14695
14696 Fixed a problem in AcpiTbGetTablePtr() where a garbage pointer
14697 could be returned if the requested table has not been loaded.
14698
14699 Within the support for IRQ resources, restructured the handling of
14700 the active and edge/level bits.
14701
14702 Fixed a few problems in AcpiPsxExecute() where memory could be
14703 leaked under certain error conditions.
14704
14705 Improved error messages for the cases where the ACPI mode could
14706 not be entered.
14707
14708 Code and Data Size: Current and previous core subsystem library
14709 sizes are shown below. These are the code and data sizes for the
14710 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14711 these values do not include any ACPI driver or OSPM code. The
14712 debug version of the code includes the debug output trace
14713 mechanism and has a much larger code and data size. Note that
14714 these values will vary depending on the efficiency of the compiler
14715 and the compiler options used during generation.
14716
14717 Previous Release (20031029):
14718 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
14719 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
14720 Current Release:
14721 Non-Debug Version: 74.8K Code, 10.1K Data, 84.9K Total
14722 Debug Version: 158.7K Code, 65.1K Data, 223.8K Total
14723
14724 2) iASL Compiler/Disassembler:
14725
14726 Implemented a fix for the iASL disassembler where a bad index was
14727 generated. This was most noticeable on 64-bit platforms
14728
14729
14730 ----------------------------------------
14731 29 October 2003. Summary of changes for version 20031029:
14732
14733 1) ACPI CA Core Subsystem:
14734
14735
14736 Fixed a problem where a level-triggered GPE with an associated
14737 _Lxx control method was incorrectly cleared twice.
14738
14739 Fixed a problem with the Field support code where an access can
14740 occur beyond the end-of-region if the field is non-aligned but
14741 extends to the very end of the parent region (resulted in an
14742 AE_AML_REGION_LIMIT exception.)
14743
14744 Fixed a problem with ACPI Fixed Events where an RT Clock handler
14745 would not get invoked on an RTC event. The RTC event bitmasks for
14746 the PM1 registers were not being initialized properly.
14747
14748 Implemented support for executing _STA and _INI methods for
14749 Processor objects. Although this is currently not part of the
14750 ACPI specification, there is existing ASL code that depends on the
14751 init-time execution of these methods.
14752
14753 Implemented and deployed a GetDescriptorName function to decode
14754 the various types of internal descriptors. Guards against null
14755 descriptors during debug output also.
14756
14757 Implemented and deployed a GetNodeName function to extract the 4-
14758 character namespace node name. This function simplifies the debug
14759 and error output, as well as guarding against null pointers during
14760 output.
14761
14762 Implemented and deployed the ACPI_FORMAT_UINT64 helper macro to
14763 simplify the debug and error output of 64-bit integers. This
14764 macro replaces the HIDWORD and LODWORD macros for dumping these
14765 integers.
14766
14767 Updated the implementation of the Stall() operator to only call
14768 AcpiOsStall(), and also return an error if the operand is larger
14769 than 255. This preserves the required behavior of not
14770 relinquishing the processor, as would happen if AcpiOsSleep() was
14771 called for "long stalls".
14772
14773 Constructs of the form "Store(LocalX,LocalX)" where LocalX is not
14774 initialized are now treated as NOOPs.
14775
14776 Cleaned up a handful of warnings during 64-bit generation.
14777
14778 Fixed a reported error where and incorrect GPE number was passed
14779 to the GPE dispatch handler. This value is only used for error
14780 output, however. Used this opportunity to clean up and streamline
14781 the GPE dispatch code.
14782
14783 Code and Data Size: Current and previous core subsystem library
14784 sizes are shown below. These are the code and data sizes for the
14785 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14786 these values do not include any ACPI driver or OSPM code. The
14787
14788 debug version of the code includes the debug output trace
14789 mechanism and has a much larger code and data size. Note that
14790 these values will vary depending on the efficiency of the compiler
14791 and the compiler options used during generation.
14792
14793 Previous Release (20031002):
14794 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
14795 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
14796 Current Release:
14797 Non-Debug Version: 74.4K Code, 10.1K Data, 84.5K Total
14798 Debug Version: 158.3K Code, 65.0K Data, 223.3K Total
14799
14800
14801 2) iASL Compiler/Disassembler:
14802
14803 Updated the iASL compiler to return an error if the operand to the
14804 Stall() operator is larger than 255.
14805
14806
14807 ----------------------------------------
14808 02 October 2003. Summary of changes for version 20031002:
14809
14810
14811 1) ACPI CA Core Subsystem:
14812
14813 Fixed a problem with Index Fields where the index was not
14814 incremented for fields that require multiple writes to the
14815 index/data registers (Fields that are wider than the data
14816 register.)
14817
14818 Fixed a problem with all Field objects where a write could go
14819 beyond the end-of-field if the field was larger than the access
14820 granularity and therefore required multiple writes to complete the
14821 request. An extra write beyond the end of the field could happen
14822 inadvertently.
14823
14824 Fixed a problem with Index Fields where a BUFFER_OVERFLOW error
14825 would incorrectly be returned if the width of the Data Register
14826 was larger than the specified field access width.
14827
14828 Completed fixes for LoadTable() and Unload() and verified their
14829 operation. Implemented full support for the "DdbHandle" object
14830 throughout the ACPI CA subsystem.
14831
14832 Implemented full support for the MADT and ECDT tables in the ACPI
14833 CA header files. Even though these tables are not directly
14834 consumed by ACPI CA, the header definitions are useful for ACPI
14835 device drivers.
14836
14837 Integrated resource descriptor fixes posted to the Linux ACPI
14838 list. This included checks for minimum descriptor length, and
14839 support for trailing NULL strings within descriptors that have
14840 optional string elements.
14841
14842 Code and Data Size: Current and previous core subsystem library
14843 sizes are shown below. These are the code and data sizes for the
14844 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14845 these values do not include any ACPI driver or OSPM code. The
14846 debug version of the code includes the debug output trace
14847 mechanism and has a much larger code and data size. Note that
14848 these values will vary depending on the efficiency of the compiler
14849 and the compiler options used during generation.
14850
14851 Previous Release (20030918):
14852 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
14853 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
14854 Current Release:
14855 Non-Debug Version: 74.1K Code, 9.7K Data, 83.8K Total
14856 Debug Version: 157.9K Code, 64.8K Data, 222.7K Total
14857
14858
14859 2) iASL Compiler:
14860
14861 Implemented detection of non-ASCII characters within the input
14862 source ASL file. This catches attempts to compile binary (AML)
14863 files early in the compile, with an informative error message.
14864
14865 Fixed a problem where the disassembler would fault if the output
14866 filename could not be generated or if the output file could not be
14867 opened.
14868
14869 ----------------------------------------
14870 18 September 2003. Summary of changes for version 20030918:
14871
14872
14873 1) ACPI CA Core Subsystem:
14874
14875 Found and fixed a longstanding problem with the late execution of
14876 the various deferred AML opcodes (such as Operation Regions,
14877 Buffer Fields, Buffers, and Packages). If the name string
14878 specified for the name of the new object placed the object in a
14879 scope other than the current scope, the initialization/execution
14880 of the opcode failed. The solution to this problem was to
14881 implement a mechanism where the late execution of such opcodes
14882 does not attempt to lookup/create the name a second time in an
14883 incorrect scope. This fixes the "region size computed
14884 incorrectly" problem.
14885
14886 Fixed a call to AcpiHwRegisterWrite in hwregs.c that was causing a
14887 Global Lock AE_BAD_PARAMETER error.
14888
14889 Fixed several 64-bit issues with prototypes, casting and data
14890 types.
14891
14892 Removed duplicate prototype from acdisasm.h
14893
14894 Fixed an issue involving EC Operation Region Detach (Shaohua Li)
14895
14896 Code and Data Size: Current and previous core subsystem library
14897 sizes are shown below. These are the code and data sizes for the
14898 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
14899 these values do not include any ACPI driver or OSPM code. The
14900 debug version of the code includes the debug output trace
14901 mechanism and has a much larger code and data size. Note that
14902 these values will vary depending on the efficiency of the compiler
14903 and the compiler options used during generation.
14904
14905 Previous Release:
14906
14907 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
14908 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
14909 Current Release:
14910 Non-Debug Version: 73.9K Code, 9.7K Data, 83.6K Total
14911 Debug Version: 157.3K Code, 64.5K Data, 221.8K Total
14912
14913
14914 2) Linux:
14915
14916 Fixed the AcpiOsSleep implementation in osunixxf.c to pass the
14917 correct sleep time in seconds.
14918
14919 ----------------------------------------
14920 14 July 2003. Summary of changes for version 20030619:
14921
14922 1) ACPI CA Core Subsystem:
14923
14924 Parse SSDTs in order discovered, as opposed to reverse order
14925 (Hrvoje Habjanic)
14926
14927 Fixes from FreeBSD and NetBSD. (Frank van der Linden, Thomas
14928 Klausner,
14929 Nate Lawson)
14930
14931
14932 2) Linux:
14933
14934 Dynamically allocate SDT list (suggested by Andi Kleen)
14935
14936 proc function return value cleanups (Andi Kleen)
14937
14938 Correctly handle NMI watchdog during long stalls (Andrew Morton)
14939
14940 Make it so acpismp=force works (reported by Andrew Morton)
14941
14942
14943 ----------------------------------------
14944 19 June 2003. Summary of changes for version 20030619:
14945
14946 1) ACPI CA Core Subsystem:
14947
14948 Fix To/FromBCD, eliminating the need for an arch-specific #define.
14949
14950 Do not acquire a semaphore in the S5 shutdown path.
14951
14952 Fix ex_digits_needed for 0. (Takayoshi Kochi)
14953
14954 Fix sleep/stall code reversal. (Andi Kleen)
14955
14956 Revert a change having to do with control method calling
14957 semantics.
14958
14959 2) Linux:
14960
14961 acpiphp update (Takayoshi Kochi)
14962
14963 Export acpi_disabled for sonypi (Stelian Pop)
14964
14965 Mention acpismp=force in config help
14966
14967 Re-add acpitable.c and acpismp=force. This improves backwards
14968
14969 compatibility and also cleans up the code to a significant degree.
14970
14971 Add ASUS Value-add driver (Karol Kozimor and Julien Lerouge)
14972
14973 ----------------------------------------
14974 22 May 2003. Summary of changes for version 20030522:
14975
14976 1) ACPI CA Core Subsystem:
14977
14978 Found and fixed a reported problem where an AE_NOT_FOUND error
14979 occurred occasionally during _BST evaluation. This turned out to
14980 be an Owner ID allocation issue where a called method did not get
14981 a new ID assigned to it. Eventually, (after 64k calls), the Owner
14982 ID UINT16 would wraparound so that the ID would be the same as the
14983 caller's and the called method would delete the caller's
14984 namespace.
14985
14986 Implemented extended error reporting for control methods that are
14987 aborted due to a run-time exception. Output includes the exact
14988 AML instruction that caused the method abort, a dump of the method
14989 locals and arguments at the time of the abort, and a trace of all
14990 nested control method calls.
14991
14992 Modified the interpreter to allow the creation of buffers of zero
14993 length from the AML code. Implemented new code to ensure that no
14994 attempt is made to actually allocate a memory buffer (of length
14995 zero) - instead, a simple buffer object with a NULL buffer pointer
14996 and length zero is created. A warning is no longer issued when
14997 the AML attempts to create a zero-length buffer.
14998
14999 Implemented a workaround for the "leading asterisk issue" in
15000 _HIDs, _UIDs, and _CIDs in the AML interpreter. One leading
15001 asterisk is automatically removed if present in any HID, UID, or
15002 CID strings. The iASL compiler will still flag this asterisk as
15003 an error, however.
15004
15005 Implemented full support for _CID methods that return a package of
15006 multiple CIDs (Compatible IDs). The AcpiGetObjectInfo() interface
15007 now additionally returns a device _CID list if present. This
15008 required a change to the external interface in order to pass an
15009 ACPI_BUFFER object as a parameter since the _CID list is of
15010 variable length.
15011
15012 Fixed a problem with the new AE_SAME_HANDLER exception where
15013 handler initialization code did not know about this exception.
15014
15015 Code and Data Size: Current and previous core subsystem library
15016 sizes are shown below. These are the code and data sizes for the
15017 acpica.lib produced by the Microsoft Visual C++ 6.0 compiler, and
15018 these values do not include any ACPI driver or OSPM code. The
15019 debug version of the code includes the debug output trace
15020 mechanism and has a much larger code and data size. Note that
15021 these values will vary depending on the efficiency of the compiler
15022 and the compiler options used during generation.
15023
15024 Previous Release (20030509):
15025 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
15026 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
15027 Current Release:
15028 Non-Debug Version: 73.7K Code, 9.7K Data, 83.4K Total
15029 Debug Version: 156.9K Code, 64.2K Data, 221.1K Total
15030
15031
15032 2) Linux:
15033
15034 Fixed a bug in which we would reinitialize the ACPI interrupt
15035 after it was already working, thus disabling all ACPI and the IRQs
15036 for any other device sharing the interrupt. (Thanks to Stian
15037 Jordet)
15038
15039 Toshiba driver update (John Belmonte)
15040
15041 Return only 0 or 1 for our interrupt handler status (Andrew
15042 Morton)
15043
15044
15045 3) iASL Compiler:
15046
15047 Fixed a reported problem where multiple (nested) ElseIf()
15048 statements were not handled correctly by the compiler, resulting
15049 in incorrect warnings and incorrect AML code. This was a problem
15050 in both the ASL parser and the code generator.
15051
15052
15053 4) Documentation:
15054
15055 Added changes to existing interfaces, new exception codes, and new
15056 text concerning reference count object management versus garbage
15057 collection.
15058
15059 ----------------------------------------
15060 09 May 2003. Summary of changes for version 20030509.
15061
15062
15063 1) ACPI CA Core Subsystem:
15064
15065 Changed the subsystem initialization sequence to hold off
15066 installation of address space handlers until the hardware has been
15067 initialized and the system has entered ACPI mode. This is because
15068 the installation of space handlers can cause _REG methods to be
15069 run. Previously, the _REG methods could potentially be run before
15070 ACPI mode was enabled.
15071
15072 Fixed some memory leak issues related to address space handler and
15073 notify handler installation. There were some problems with the
15074 reference count mechanism caused by the fact that the handler
15075 objects are shared across several namespace objects.
15076
15077 Fixed a reported problem where reference counts within the
15078 namespace were not properly updated when named objects created by
15079 method execution were deleted.
15080
15081 Fixed a reported problem where multiple SSDTs caused a deletion
15082 issue during subsystem termination. Restructured the table data
15083 structures to simplify the linked lists and the related code.
15084
15085 Fixed a problem where the table ID associated with secondary
15086 tables (SSDTs) was not being propagated into the namespace objects
15087 created by those tables. This would only present a problem for
15088 tables that are unloaded at run-time, however.
15089
15090 Updated AcpiOsReadable and AcpiOsWritable to use the ACPI_SIZE
15091 type as the length parameter (instead of UINT32).
15092
15093 Solved a long-standing problem where an ALREADY_EXISTS error
15094 appears on various systems. This problem could happen when there
15095 are multiple PCI_Config operation regions under a single PCI root
15096 bus. This doesn't happen very frequently, but there are some
15097 systems that do this in the ASL.
15098
15099 Fixed a reported problem where the internal DeleteNode function
15100 was incorrectly handling the case where a namespace node was the
15101 first in the parent's child list, and had additional peers (not
15102 the only child, but first in the list of children.)
15103
15104 Code and Data Size: Current core subsystem library sizes are shown
15105 below. These are the code and data sizes for the acpica.lib
15106 produced by the Microsoft Visual C++ 6.0 compiler, and these
15107 values do not include any ACPI driver or OSPM code. The debug
15108 version of the code includes the debug output trace mechanism and
15109 has a much larger code and data size. Note that these values will
15110 vary depending on the efficiency of the compiler and the compiler
15111 options used during generation.
15112
15113 Previous Release
15114 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
15115 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
15116 Current Release:
15117 Non-Debug Version: 73.4K Code, 9.7K Data, 83.1K Total
15118 Debug Version: 156.1K Code, 63.9K Data, 220.0K Total
15119
15120
15121 2) Linux:
15122
15123 Allow ":" in OS override string (Ducrot Bruno)
15124
15125 Kobject fix (Greg KH)
15126
15127
15128 3 iASL Compiler/Disassembler:
15129
15130 Fixed a problem in the generation of the C source code files (AML
15131 is emitted in C source statements for BIOS inclusion) where the
15132 Ascii dump that appears within a C comment at the end of each line
15133 could cause a compile time error if the AML sequence happens to
15134 have an open comment or close comment sequence embedded.
15135
15136
15137 ----------------------------------------
15138 24 April 2003. Summary of changes for version 20030424.
15139
15140
15141 1) ACPI CA Core Subsystem:
15142
15143 Support for big-endian systems has been implemented. Most of the
15144 support has been invisibly added behind big-endian versions of the
15145 ACPI_MOVE_* macros.
15146
15147 Fixed a problem in AcpiHwDisableGpeBlock() and
15148 AcpiHwClearGpeBlock() where an incorrect offset was passed to the
15149 low level hardware write routine. The offset parameter was
15150 actually eliminated from the low level read/write routines because
15151 they had become obsolete.
15152
15153 Fixed a problem where a handler object was deleted twice during
15154 the removal of a fixed event handler.
15155
15156
15157 2) Linux:
15158
15159 A fix for SMP systems with link devices was contributed by
15160
15161 Compaq's Dan Zink.
15162
15163 (2.5) Return whether we handled the interrupt in our IRQ handler.
15164 (Linux ISRs no longer return void, so we can propagate the handler
15165 return value from the ACPI CA core back to the OS.)
15166
15167
15168
15169 3) Documentation:
15170
15171 The ACPI CA Programmer Reference has been updated to reflect new
15172 interfaces and changes to existing interfaces.
15173
15174 ----------------------------------------
15175 28 March 2003. Summary of changes for version 20030328.
15176
15177 1) ACPI CA Core Subsystem:
15178
15179 The GPE Block Device support has been completed. New interfaces
15180 are AcpiInstallGpeBlock and AcpiRemoveGpeBlock. The Event
15181 interfaces (enable, disable, clear, getstatus) have been split
15182 into separate interfaces for Fixed Events and General Purpose
15183 Events (GPEs) in order to support GPE Block Devices properly.
15184
15185 Fixed a problem where the error message "Failed to acquire
15186 semaphore" would appear during operations on the embedded
15187 controller (EC).
15188
15189 Code and Data Size: Current core subsystem library sizes are shown
15190 below. These are the code and data sizes for the acpica.lib
15191 produced by the Microsoft Visual C++ 6.0 compiler, and these
15192 values do not include any ACPI driver or OSPM code. The debug
15193 version of the code includes the debug output trace mechanism and
15194 has a much larger code and data size. Note that these values will
15195 vary depending on the efficiency of the compiler and the compiler
15196 options used during generation.
15197
15198 Previous Release
15199 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
15200 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
15201 Current Release:
15202 Non-Debug Version: 73.7K Code, 9.5K Data, 83.2K Total
15203 Debug Version: 156.1K Code, 63.6K Data, 219.7K Total
15204
15205
15206 ----------------------------------------
15207 28 February 2003. Summary of changes for version 20030228.
15208
15209
15210 1) ACPI CA Core Subsystem:
15211
15212 The GPE handling and dispatch code has been completely overhauled
15213 in preparation for support of GPE Block Devices (ID ACPI0006).
15214 This affects internal data structures and code only; there should
15215 be no differences visible externally. One new file has been
15216 added, evgpeblk.c
15217
15218 The FADT fields GPE0_BLK_LEN and GPE1_BLK_LEN are now the only
15219 fields that are used to determine the GPE block lengths. The
15220 REGISTER_BIT_WIDTH field of the X_GPEx_BLK extended address
15221 structures are ignored. This is per the ACPI specification but it
15222 isn't very clear. The full 256 Block 0/1 GPEs are now supported
15223 (the use of REGISTER_BIT_WIDTH limited the number of GPEs to 128).
15224
15225 In the SCI interrupt handler, removed the read of the PM1_CONTROL
15226 register to look at the SCI_EN bit. On some machines, this read
15227 causes an SMI event and greatly slows down SCI events. (This may
15228 in fact be the cause of slow battery status response on some
15229 systems.)
15230
15231 Fixed a problem where a store of a NULL string to a package object
15232 could cause the premature deletion of the object. This was seen
15233 during execution of the battery _BIF method on some systems,
15234 resulting in no battery data being returned.
15235
15236 Added AcpiWalkResources interface to simplify parsing of resource
15237 lists.
15238
15239 Code and Data Size: Current core subsystem library sizes are shown
15240 below. These are the code and data sizes for the acpica.lib
15241 produced by the Microsoft Visual C++ 6.0 compiler, and these
15242 values do not include any ACPI driver or OSPM code. The debug
15243 version of the code includes the debug output trace mechanism and
15244 has a much larger code and data size. Note that these values will
15245 vary depending on the efficiency of the compiler and the compiler
15246 options used during generation.
15247
15248 Previous Release
15249 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15250 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15251 Current Release:
15252 Non-Debug Version: 72.3K Code, 9.5K Data, 81.8K Total
15253 Debug Version: 154.0K Code, 63.4K Data, 217.4K Total
15254
15255
15256 2) Linux
15257
15258 S3 fixes (Ole Rohne)
15259
15260 Update ACPI PHP driver with to use new acpi_walk_resource API
15261 (Bjorn Helgaas)
15262
15263 Add S4BIOS support (Pavel Machek)
15264
15265 Map in entire table before performing checksum (John Stultz)
15266
15267 Expand the mem= cmdline to allow the specification of reserved and
15268 ACPI DATA blocks (Pavel Machek)
15269
15270 Never use ACPI on VISWS
15271
15272 Fix derive_pci_id (Ducrot Bruno, Alvaro Lopez)
15273
15274 Revert a change that allowed P_BLK lengths to be 4 or 5. This is
15275 causing us to think that some systems support C2 when they really
15276 don't.
15277
15278 Do not count processor objects for non-present CPUs (Thanks to
15279 Dominik Brodowski)
15280
15281
15282 3) iASL Compiler:
15283
15284 Fixed a problem where ASL include files could not be found and
15285 opened.
15286
15287 Added support for the _PDC reserved name.
15288
15289
15290 ----------------------------------------
15291 22 January 2003. Summary of changes for version 20030122.
15292
15293
15294 1) ACPI CA Core Subsystem:
15295
15296 Added a check for constructs of the form: Store (Local0, Local0)
15297 where Local0 is not initialized. Apparently, some BIOS
15298 programmers believe that this is a NOOP. Since this store doesn't
15299 do anything anyway, the new prototype behavior will ignore this
15300 error. This is a case where we can relax the strict checking in
15301 the interpreter in the name of compatibility.
15302
15303
15304 2) Linux
15305
15306 The AcpiSrc Source Conversion Utility has been released with the
15307 Linux package for the first time. This is the utility that is
15308 used to convert the ACPI CA base source code to the Linux version.
15309
15310 (Both) Handle P_BLK lengths shorter than 6 more gracefully
15311
15312 (Both) Move more headers to include/acpi, and delete an unused
15313 header.
15314
15315 (Both) Move drivers/acpi/include directory to include/acpi
15316
15317 (Both) Boot functions don't use cmdline, so don't pass it around
15318
15319 (Both) Remove include of unused header (Adrian Bunk)
15320
15321 (Both) acpiphp.h includes both linux/acpi.h and acpi_bus.h. Since
15322 the
15323 former now also includes the latter, acpiphp.h only needs the one,
15324 now.
15325
15326 (2.5) Make it possible to select method of bios restoring after S3
15327 resume. [=> no more ugly ifdefs] (Pavel Machek)
15328
15329 (2.5) Make proc write interfaces work (Pavel Machek)
15330
15331 (2.5) Properly init/clean up in cpufreq/acpi (Dominik Brodowski)
15332
15333 (2.5) Break out ACPI Perf code into its own module, under cpufreq
15334 (Dominik Brodowski)
15335
15336 (2.4) S4BIOS support (Ducrot Bruno)
15337
15338 (2.4) Fix acpiphp_glue.c for latest ACPI struct changes (Sergio
15339 Visinoni)
15340
15341
15342 3) iASL Compiler:
15343
15344 Added support to disassemble SSDT and PSDTs.
15345
15346 Implemented support to obtain SSDTs from the Windows registry if
15347 available.
15348
15349
15350 ----------------------------------------
15351 09 January 2003. Summary of changes for version 20030109.
15352
15353 1) ACPI CA Core Subsystem:
15354
15355 Changed the behavior of the internal Buffer-to-String conversion
15356 function. The current ACPI specification states that the contents
15357 of the buffer are "converted to a string of two-character
15358 hexadecimal numbers, each separated by a space". Unfortunately,
15359 this definition is not backwards compatible with existing ACPI 1.0
15360 implementations (although the behavior was not defined in the ACPI
15361 1.0 specification). The new behavior simply copies data from the
15362 buffer to the string until a null character is found or the end of
15363 the buffer is reached. The new String object is always null
15364 terminated. This problem was seen during the generation of _BIF
15365 battery data where incorrect strings were returned for battery
15366 type, etc. This will also require an errata to the ACPI
15367 specification.
15368
15369 Renamed all instances of NATIVE_UINT and NATIVE_INT to
15370 ACPI_NATIVE_UINT and ACPI_NATIVE_INT, respectively.
15371
15372 Copyright in all module headers (both Linux and non-Linux) has be
15373 updated to 2003.
15374
15375 Code and Data Size: Current core subsystem library sizes are shown
15376 below. These are the code and data sizes for the acpica.lib
15377 produced by the Microsoft Visual C++ 6.0 compiler, and these
15378 values do not include any ACPI driver or OSPM code. The debug
15379 version of the code includes the debug output trace mechanism and
15380 has a much larger code and data size. Note that these values will
15381 vary depending on the efficiency of the compiler and the compiler
15382 options used during generation.
15383
15384 Previous Release
15385 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15386 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15387 Current Release:
15388 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15389 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15390
15391
15392 2) Linux
15393
15394 Fixed an oops on module insertion/removal (Matthew Tippett)
15395
15396 (2.4) Fix to handle dynamic size of mp_irqs (Joerg Prante)
15397
15398 (2.5) Replace pr_debug (Randy Dunlap)
15399
15400 (2.5) Remove usage of CPUFREQ_ALL_CPUS (Dominik Brodowski)
15401
15402 (Both) Eliminate spawning of thread from timer callback, in favor
15403 of schedule_work()
15404
15405 (Both) Show Lid status in /proc (Zdenek OGAR Skalak)
15406
15407 (Both) Added define for Fixed Function HW region (Matthew Wilcox)
15408
15409 (Both) Add missing statics to button.c (Pavel Machek)
15410
15411 Several changes have been made to the source code translation
15412 utility that generates the Linux Code in order to make the code
15413 more "Linux-like":
15414
15415 All typedefs on structs and unions have been removed in keeping
15416 with the Linux coding style.
15417
15418 Removed the non-Linux SourceSafe module revision number from each
15419 module header.
15420
15421 Completed major overhaul of symbols to be lowercase for linux.
15422 Doubled the number of symbols that are lowercase.
15423
15424 Fixed a problem where identifiers within procedure headers and
15425 within quotes were not fully lower cased (they were left with a
15426 starting capital.)
15427
15428 Some C macros whose only purpose is to allow the generation of 16-
15429 bit code are now completely removed in the Linux code, increasing
15430 readability and maintainability.
15431
15432 ----------------------------------------
15433
15434 12 December 2002. Summary of changes for version 20021212.
15435
15436
15437 1) ACPI CA Core Subsystem:
15438
15439 Fixed a problem where the creation of a zero-length AML Buffer
15440 would cause a fault.
15441
15442 Fixed a problem where a Buffer object that pointed to a static AML
15443 buffer (in an ACPI table) could inadvertently be deleted, causing
15444 memory corruption.
15445
15446 Fixed a problem where a user buffer (passed in to the external
15447 ACPI CA interfaces) could be overwritten if the buffer was too
15448 small to complete the operation, causing memory corruption.
15449
15450 Fixed a problem in the Buffer-to-String conversion code where a
15451 string of length one was always returned, regardless of the size
15452 of the input Buffer object.
15453
15454 Removed the NATIVE_CHAR data type across the entire source due to
15455 lack of need and lack of consistent use.
15456
15457 Code and Data Size: Current core subsystem library sizes are shown
15458 below. These are the code and data sizes for the acpica.lib
15459 produced by the Microsoft Visual C++ 6.0 compiler, and these
15460 values do not include any ACPI driver or OSPM code. The debug
15461 version of the code includes the debug output trace mechanism and
15462 has a much larger code and data size. Note that these values will
15463 vary depending on the efficiency of the compiler and the compiler
15464 options used during generation.
15465
15466 Previous Release
15467 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
15468 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
15469 Current Release:
15470 Non-Debug Version: 72.0K Code, 9.5K Data, 81.5K Total
15471 Debug Version: 153.0K Code, 62.9K Data, 215.9K Total
15472
15473
15474 ----------------------------------------
15475 05 December 2002. Summary of changes for version 20021205.
15476
15477 1) ACPI CA Core Subsystem:
15478
15479 Fixed a problem where a store to a String or Buffer object could
15480 cause corruption of the DSDT if the object type being stored was
15481 the same as the target object type and the length of the object
15482 being stored was equal to or smaller than the original (existing)
15483 target object. This was seen to cause corruption of battery _BIF
15484 buffers if the _BIF method modified the buffer on the fly.
15485
15486 Fixed a problem where an internal error was generated if a control
15487 method invocation was used in an OperationRegion, Buffer, or
15488 Package declaration. This was caused by the deferred parsing of
15489 the control method and thus the deferred creation of the internal
15490 method object. The solution to this problem was to create the
15491 internal method object at the moment the method is encountered in
15492 the first pass - so that subsequent references to the method will
15493 able to obtain the required parameter count and thus properly
15494 parse the method invocation. This problem presented itself as an
15495 AE_AML_INTERNAL during the pass 1 parse phase during table load.
15496
15497 Fixed a problem where the internal String object copy routine did
15498 not always allocate sufficient memory for the target String object
15499 and caused memory corruption. This problem was seen to cause
15500 "Allocation already present in list!" errors as memory allocation
15501 became corrupted.
15502
15503 Implemented a new function for the evaluation of namespace objects
15504 that allows the specification of the allowable return object
15505 types. This simplifies a lot of code that checks for a return
15506 object of one or more specific objects returned from the
15507 evaluation (such as _STA, etc.) This may become and external
15508 function if it would be useful to ACPI-related drivers.
15509
15510 Completed another round of prefixing #defines with "ACPI_" for
15511 clarity.
15512
15513 Completed additional code restructuring to allow more modular
15514 linking for iASL compiler and AcpiExec. Several files were split
15515 creating new files. New files: nsparse.c dsinit.c evgpe.c
15516
15517 Implemented an abort mechanism to terminate an executing control
15518 method via the AML debugger. This feature is useful for debugging
15519 control methods that depend (wait) for specific hardware
15520 responses.
15521
15522 Code and Data Size: Current core subsystem library sizes are shown
15523 below. These are the code and data sizes for the acpica.lib
15524 produced by the Microsoft Visual C++ 6.0 compiler, and these
15525 values do not include any ACPI driver or OSPM code. The debug
15526 version of the code includes the debug output trace mechanism and
15527 has a much larger code and data size. Note that these values will
15528 vary depending on the efficiency of the compiler and the compiler
15529 options used during generation.
15530
15531 Previous Release
15532 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15533 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
15534 Current Release:
15535 Non-Debug Version: 72.1K Code, 9.5K Data, 81.6K Total
15536 Debug Version: 152.7K Code, 62.7K Data, 215.4K Total
15537
15538
15539 2) iASL Compiler/Disassembler
15540
15541 Fixed a compiler code generation problem for "Interrupt" Resource
15542 Descriptors. If specified in the ASL, the optional "Resource
15543 Source Index" and "Resource Source" fields were not inserted into
15544 the correct location within the AML resource descriptor, creating
15545 an invalid descriptor.
15546
15547 Fixed a disassembler problem for "Interrupt" resource descriptors.
15548 The optional "Resource Source Index" and "Resource Source" fields
15549 were ignored.
15550
15551
15552 ----------------------------------------
15553 22 November 2002. Summary of changes for version 20021122.
15554
15555
15556 1) ACPI CA Core Subsystem:
15557
15558 Fixed a reported problem where an object stored to a Method Local
15559 or Arg was not copied to a new object during the store - the
15560 object pointer was simply copied to the Local/Arg. This caused
15561 all subsequent operations on the Local/Arg to also affect the
15562 original source of the store operation.
15563
15564 Fixed a problem where a store operation to a Method Local or Arg
15565 was not completed properly if the Local/Arg contained a reference
15566 (from RefOf) to a named field. The general-purpose store-to-
15567 namespace-node code is now used so that this case is handled
15568 automatically.
15569
15570 Fixed a problem where the internal object copy routine would cause
15571 a protection fault if the object being copied was a Package and
15572 contained either 1) a NULL package element or 2) a nested sub-
15573 package.
15574
15575 Fixed a problem with the GPE initialization that resulted from an
15576 ambiguity in the ACPI specification. One section of the
15577 specification states that both the address and length of the GPE
15578 block must be zero if the block is not supported. Another section
15579 implies that only the address need be zero if the block is not
15580 supported. The code has been changed so that both the address and
15581 the length must be non-zero to indicate a valid GPE block (i.e.,
15582 if either the address or the length is zero, the GPE block is
15583 invalid.)
15584
15585 Code and Data Size: Current core subsystem library sizes are shown
15586 below. These are the code and data sizes for the acpica.lib
15587 produced by the Microsoft Visual C++ 6.0 compiler, and these
15588 values do not include any ACPI driver or OSPM code. The debug
15589 version of the code includes the debug output trace mechanism and
15590 has a much larger code and data size. Note that these values will
15591 vary depending on the efficiency of the compiler and the compiler
15592 options used during generation.
15593
15594 Previous Release
15595 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
15596 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
15597 Current Release:
15598 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15599 Debug Version: 152.9K Code, 63.3K Data, 216.2K Total
15600
15601
15602 2) Linux
15603
15604 Cleaned up EC driver. Exported an external EC read/write
15605 interface. By going through this, other drivers (most notably
15606 sonypi) will be able to serialize access to the EC.
15607
15608
15609 3) iASL Compiler/Disassembler
15610
15611 Implemented support to optionally generate include files for both
15612 ASM and C (the -i switch). This simplifies BIOS development by
15613 automatically creating include files that contain external
15614 declarations for the symbols that are created within the
15615
15616 (optionally generated) ASM and C AML source files.
15617
15618
15619 ----------------------------------------
15620 15 November 2002. Summary of changes for version 20021115.
15621
15622 1) ACPI CA Core Subsystem:
15623
15624 Fixed a memory leak problem where an error during resolution of
15625
15626 method arguments during a method invocation from another method
15627 failed to cleanup properly by deleting all successfully resolved
15628 argument objects.
15629
15630 Fixed a problem where the target of the Index() operator was not
15631 correctly constructed if the source object was a package. This
15632 problem has not been detected because the use of a target operand
15633 with Index() is very rare.
15634
15635 Fixed a problem with the Index() operator where an attempt was
15636 made to delete the operand objects twice.
15637
15638 Fixed a problem where an attempt was made to delete an operand
15639 twice during execution of the CondRefOf() operator if the target
15640 did not exist.
15641
15642 Implemented the first of perhaps several internal create object
15643 functions that create and initialize a specific object type. This
15644 consolidates duplicated code wherever the object is created, thus
15645 shrinking the size of the subsystem.
15646
15647 Implemented improved debug/error messages for errors that occur
15648 during nested method invocations. All executing method pathnames
15649 are displayed (with the error) as the call stack is unwound - thus
15650 simplifying debug.
15651
15652 Fixed a problem introduced in the 10/02 release that caused
15653 premature deletion of a buffer object if a buffer was used as an
15654 ASL operand where an integer operand is required (Thus causing an
15655 implicit object conversion from Buffer to Integer.) The change in
15656 the 10/02 release was attempting to fix a memory leak (albeit
15657 incorrectly.)
15658
15659 Code and Data Size: Current core subsystem library sizes are shown
15660 below. These are the code and data sizes for the acpica.lib
15661 produced by the Microsoft Visual C++ 6.0 compiler, and these
15662 values do not include any ACPI driver or OSPM code. The debug
15663 version of the code includes the debug output trace mechanism and
15664 has a much larger code and data size. Note that these values will
15665 vary depending on the efficiency of the compiler and the compiler
15666 options used during generation.
15667
15668 Previous Release
15669 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
15670 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
15671 Current Release:
15672 Non-Debug Version: 71.3K Code, 9.0K Data, 80.3K Total
15673 Debug Version: 152.7K Code, 63.2K Data, 215.5K Total
15674
15675
15676 2) Linux
15677
15678 Changed the implementation of the ACPI semaphores to use down()
15679 instead of down_interruptable(). It is important that the
15680 execution of ACPI control methods not be interrupted by signals.
15681 Methods must run to completion, or the system may be left in an
15682 unknown/unstable state.
15683
15684 Fixed a compilation error when CONFIG_SOFTWARE_SUSPEND is not set.
15685 (Shawn Starr)
15686
15687
15688 3) iASL Compiler/Disassembler
15689
15690
15691 Changed the default location of output files. All output files
15692 are now placed in the current directory by default instead of in
15693 the directory of the source file. This change may affect some
15694 existing makefiles, but it brings the behavior of the compiler in
15695 line with other similar tools. The location of the output files
15696 can be overridden with the -p command line switch.
15697
15698
15699 ----------------------------------------
15700 11 November 2002. Summary of changes for version 20021111.
15701
15702
15703 0) ACPI Specification 2.0B is released and is now available at:
15704 http://www.acpi.info/index.html
15705
15706
15707 1) ACPI CA Core Subsystem:
15708
15709 Implemented support for the ACPI 2.0 SMBus Operation Regions.
15710 This includes the early detection and handoff of the request to
15711 the SMBus region handler (avoiding all of the complex field
15712 support code), and support for the bidirectional return packet
15713 from an SMBus write operation. This paves the way for the
15714 development of SMBus drivers in each host operating system.
15715
15716 Fixed a problem where the semaphore WAIT_FOREVER constant was
15717 defined as 32 bits, but must be 16 bits according to the ACPI
15718 specification. This had the side effect of causing ASL
15719 Mutex/Event timeouts even though the ASL code requested a wait
15720 forever. Changed all internal references to the ACPI timeout
15721 parameter to 16 bits to prevent future problems. Changed the name
15722 of WAIT_FOREVER to ACPI_WAIT_FOREVER.
15723
15724 Code and Data Size: Current core subsystem library sizes are shown
15725 below. These are the code and data sizes for the acpica.lib
15726 produced by the Microsoft Visual C++ 6.0 compiler, and these
15727 values do not include any ACPI driver or OSPM code. The debug
15728 version of the code includes the debug output trace mechanism and
15729 has a much larger code and data size. Note that these values will
15730 vary depending on the efficiency of the compiler and the compiler
15731 options used during generation.
15732
15733 Previous Release
15734 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15735 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
15736 Current Release:
15737 Non-Debug Version: 71.9K Code, 9.1K Data, 81.0K Total
15738 Debug Version: 153.1K Code, 63.3K Data, 216.4K Total
15739
15740
15741 2) Linux
15742
15743 Module loading/unloading fixes (John Cagle)
15744
15745
15746 3) iASL Compiler/Disassembler
15747
15748 Added support for the SMBBlockProcessCall keyword (ACPI 2.0)
15749
15750 Implemented support for the disassembly of all SMBus protocol
15751 keywords (SMBQuick, SMBWord, etc.)
15752
15753 ----------------------------------------
15754 01 November 2002. Summary of changes for version 20021101.
15755
15756
15757 1) ACPI CA Core Subsystem:
15758
15759 Fixed a problem where platforms that have a GPE1 block but no GPE0
15760 block were not handled correctly. This resulted in a "GPE
15761 overlap" error message. GPE0 is no longer required.
15762
15763 Removed code added in the previous release that inserted nodes
15764 into the namespace in alphabetical order. This caused some side-
15765 effects on various machines. The root cause of the problem is
15766 still under investigation since in theory, the internal ordering
15767 of the namespace nodes should not matter.
15768
15769
15770 Enhanced error reporting for the case where a named object is not
15771 found during control method execution. The full ACPI namepath
15772 (name reference) of the object that was not found is displayed in
15773 this case.
15774
15775 Note: as a result of the overhaul of the namespace object types in
15776 the previous release, the namespace nodes for the predefined
15777 scopes (_TZ, _PR, etc.) are now of the type ACPI_TYPE_LOCAL_SCOPE
15778 instead of ACPI_TYPE_ANY. This simplifies the namespace
15779 management code but may affect code that walks the namespace tree
15780 looking for specific object types.
15781
15782 Code and Data Size: Current core subsystem library sizes are shown
15783 below. These are the code and data sizes for the acpica.lib
15784 produced by the Microsoft Visual C++ 6.0 compiler, and these
15785 values do not include any ACPI driver or OSPM code. The debug
15786 version of the code includes the debug output trace mechanism and
15787 has a much larger code and data size. Note that these values will
15788 vary depending on the efficiency of the compiler and the compiler
15789 options used during generation.
15790
15791 Previous Release
15792 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
15793 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
15794 Current Release:
15795 Non-Debug Version: 71.4K Code, 9.0K Data, 80.4K Total
15796 Debug Version: 152.3K Code, 63.0K Data, 215.3K Total
15797
15798
15799 2) Linux
15800
15801 Fixed a problem introduced in the previous release where the
15802 Processor and Thermal objects were not recognized and installed in
15803 /proc. This was related to the scope type change described above.
15804
15805
15806 3) iASL Compiler/Disassembler
15807
15808 Implemented the -g option to get all of the required ACPI tables
15809 from the registry and save them to files (Windows version of the
15810 compiler only.) The required tables are the FADT, FACS, and DSDT.
15811
15812 Added ACPI table checksum validation during table disassembly in
15813 order to catch corrupted tables.
15814
15815
15816 ----------------------------------------
15817 22 October 2002. Summary of changes for version 20021022.
15818
15819 1) ACPI CA Core Subsystem:
15820
15821 Implemented a restriction on the Scope operator that the target
15822 must already exist in the namespace at the time the operator is
15823 encountered (during table load or method execution). In other
15824 words, forward references are not allowed and Scope() cannot
15825 create a new object. This changes the previous behavior where the
15826 interpreter would create the name if not found. This new behavior
15827 correctly enables the search-to-root algorithm during namespace
15828 lookup of the target name. Because of this upsearch, this fixes
15829 the known Compaq _SB_.OKEC problem and makes both the AML
15830 interpreter and iASL compiler compatible with other ACPI
15831 implementations.
15832
15833 Completed a major overhaul of the internal ACPI object types for
15834 the ACPI Namespace and the associated operand objects. Many of
15835 these types had become obsolete with the introduction of the two-
15836 pass namespace load. This cleanup simplifies the code and makes
15837 the entire namespace load mechanism much clearer and easier to
15838 understand.
15839
15840 Improved debug output for tracking scope opening/closing to help
15841 diagnose scoping issues. The old scope name as well as the new
15842 scope name are displayed. Also improved error messages for
15843 problems with ASL Mutex objects and error messages for GPE
15844 problems.
15845
15846 Cleaned up the namespace dump code, removed obsolete code.
15847
15848 All string output (for all namespace/object dumps) now uses the
15849 common ACPI string output procedure which handles escapes properly
15850 and does not emit non-printable characters.
15851
15852 Fixed some issues with constants in the 64-bit version of the
15853 local C library (utclib.c)
15854
15855
15856 2) Linux
15857
15858 EC Driver: No longer attempts to acquire the Global Lock at
15859 interrupt level.
15860
15861
15862 3) iASL Compiler/Disassembler
15863
15864 Implemented ACPI 2.0B grammar change that disallows all Type 1 and
15865 2 opcodes outside of a control method. This means that the
15866 "executable" operators (versus the "namespace" operators) cannot
15867 be used at the table level; they can only be used within a control
15868 method.
15869
15870 Implemented the restriction on the Scope() operator where the
15871 target must already exist in the namespace at the time the
15872 operator is encountered (during ASL compilation). In other words,
15873 forward references are not allowed and Scope() cannot create a new
15874 object. This makes the iASL compiler compatible with other ACPI
15875 implementations and makes the Scope() implementation adhere to the
15876 ACPI specification.
15877
15878 Fixed a problem where namepath optimization for the Alias operator
15879 was optimizing the wrong path (of the two namepaths.) This caused
15880 a "Missing alias link" error message.
15881
15882 Fixed a problem where an "unknown reserved name" warning could be
15883 incorrectly generated for names like "_SB" when the trailing
15884 underscore is not used in the original ASL.
15885
15886 Fixed a problem where the reserved name check did not handle
15887 NamePaths with multiple NameSegs correctly. The first nameseg of
15888 the NamePath was examined instead of the last NameSeg.
15889
15890
15891 ----------------------------------------
15892
15893 02 October 2002. Summary of changes for this release.
15894
15895
15896 1) ACPI CA Core Subsystem version 20021002:
15897
15898 Fixed a problem where a store/copy of a string to an existing
15899 string did not always set the string length properly in the String
15900 object.
15901
15902 Fixed a reported problem with the ToString operator where the
15903 behavior was identical to the ToHexString operator instead of just
15904 simply converting a raw buffer to a string data type.
15905
15906 Fixed a problem where CopyObject and the other "explicit"
15907 conversion operators were not updating the internal namespace node
15908 type as part of the store operation.
15909
15910 Fixed a memory leak during implicit source operand conversion
15911 where the original object was not deleted if it was converted to a
15912 new object of a different type.
15913
15914 Enhanced error messages for all problems associated with namespace
15915 lookups. Common procedure generates and prints the lookup name as
15916 well as the formatted status.
15917
15918 Completed implementation of a new design for the Alias support
15919 within the namespace. The existing design did not handle the case
15920 where a new object was assigned to one of the two names due to the
15921 use of an explicit conversion operator, resulting in the two names
15922 pointing to two different objects. The new design simply points
15923 the Alias name to the original name node - not to the object.
15924 This results in a level of indirection that must be handled in the
15925 name resolution mechanism.
15926
15927 Code and Data Size: Current core subsystem library sizes are shown
15928 below. These are the code and data sizes for the acpica.lib
15929 produced by the Microsoft Visual C++ 6.0 compiler, and these
15930 values do not include any ACPI driver or OSPM code. The debug
15931 version of the code includes the debug output trace mechanism and
15932 has a larger code and data size. Note that these values will vary
15933 depending on the efficiency of the compiler and the compiler
15934 options used during generation.
15935
15936 Previous Release
15937 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
15938 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
15939 Current Release:
15940 Non-Debug Version: 70.7K Code, 8.6K Data, 79.3K Total
15941 Debug Version: 151.7K Code, 62.4K Data, 214.1K Total
15942
15943
15944 2) Linux
15945
15946 Initialize thermal driver's timer before it is used. (Knut
15947 Neumann)
15948
15949 Allow handling negative celsius values. (Kochi Takayoshi)
15950
15951 Fix thermal management and make trip points. R/W (Pavel Machek)
15952
15953 Fix /proc/acpi/sleep. (P. Christeas)
15954
15955 IA64 fixes. (David Mosberger)
15956
15957 Fix reversed logic in blacklist code. (Sergio Monteiro Basto)
15958
15959 Replace ACPI_DEBUG define with ACPI_DEBUG_OUTPUT. (Dominik
15960 Brodowski)
15961
15962
15963 3) iASL Compiler/Disassembler
15964
15965 Clarified some warning/error messages.
15966
15967
15968 ----------------------------------------
15969 18 September 2002. Summary of changes for this release.
15970
15971
15972 1) ACPI CA Core Subsystem version 20020918:
15973
15974 Fixed a reported problem with reference chaining (via the Index()
15975 and RefOf() operators) in the ObjectType() and SizeOf() operators.
15976 The definition of these operators includes the dereferencing of
15977 all chained references to return information on the base object.
15978
15979 Fixed a problem with stores to indexed package elements - the
15980 existing code would not complete the store if an "implicit
15981 conversion" was not performed. In other words, if the existing
15982 object (package element) was to be replaced completely, the code
15983 didn't handle this case.
15984
15985 Relaxed typechecking on the ASL "Scope" operator to allow the
15986 target name to refer to an object of type Integer, String, or
15987 Buffer, in addition to the scoping object types (Device,
15988 predefined Scopes, Processor, PowerResource, and ThermalZone.)
15989 This allows existing AML code that has workarounds for a bug in
15990 Windows to function properly. A warning is issued, however. This
15991 affects both the AML interpreter and the iASL compiler. Below is
15992 an example of this type of ASL code:
15993
15994 Name(DEB,0x00)
15995 Scope(DEB)
15996 {
15997
15998 Fixed some reported problems with 64-bit integer support in the
15999 local implementation of C library functions (clib.c)
16000
16001
16002 2) Linux
16003
16004 Use ACPI fix map region instead of IOAPIC region, since it is
16005 undefined in non-SMP.
16006
16007 Ensure that the SCI has the proper polarity and trigger, even on
16008 systems that do not have an interrupt override entry in the MADT.
16009
16010 2.5 big driver reorganization (Pat Mochel)
16011
16012 Use early table mapping code from acpitable.c (Andi Kleen)
16013
16014 New blacklist entries (Andi Kleen)
16015
16016 Blacklist improvements. Split blacklist code out into a separate
16017 file. Move checking the blacklist to very early. Previously, we
16018 would use ACPI tables, and then halfway through init, check the
16019 blacklist -- too late. Now, it's early enough to completely fall-
16020 back to non-ACPI.
16021
16022
16023 3) iASL Compiler/Disassembler version 20020918:
16024
16025 Fixed a problem where the typechecking code didn't know that an
16026 alias could point to a method. In other words, aliases were not
16027 being dereferenced during typechecking.
16028
16029
16030 ----------------------------------------
16031 29 August 2002. Summary of changes for this release.
16032
16033 1) ACPI CA Core Subsystem Version 20020829:
16034
16035 If the target of a Scope() operator already exists, it must be an
16036 object type that actually opens a scope -- such as a Device,
16037 Method, Scope, etc. This is a fatal runtime error. Similar error
16038 check has been added to the iASL compiler also.
16039
16040 Tightened up the namespace load to disallow multiple names in the
16041 same scope. This previously was allowed if both objects were of
16042 the same type. (i.e., a lookup was the same as entering a new
16043 name).
16044
16045
16046 2) Linux
16047
16048 Ensure that the ACPI interrupt has the proper trigger and
16049 polarity.
16050
16051 local_irq_disable is extraneous. (Matthew Wilcox)
16052
16053 Make "acpi=off" actually do what it says, and not use the ACPI
16054 interpreter *or* the tables.
16055
16056 Added arch-neutral support for parsing SLIT and SRAT tables (Kochi
16057 Takayoshi)
16058
16059
16060 3) iASL Compiler/Disassembler Version 20020829:
16061
16062 Implemented namepath optimization for name declarations. For
16063 example, a declaration like "Method (\_SB_.ABCD)" would get
16064 optimized to "Method (ABCD)" if the declaration is within the
16065 \_SB_ scope. This optimization is in addition to the named
16066 reference path optimization first released in the previous
16067 version. This would seem to complete all possible optimizations
16068 for namepaths within the ASL/AML.
16069
16070 If the target of a Scope() operator already exists, it must be an
16071 object type that actually opens a scope -- such as a Device,
16072 Method, Scope, etc.
16073
16074 Implemented a check and warning for unreachable code in the same
16075 block below a Return() statement.
16076
16077 Fixed a problem where the listing file was not generated if the
16078 compiler aborted if the maximum error count was exceeded (200).
16079
16080 Fixed a problem where the typechecking of method return values was
16081 broken. This includes the check for a return value when the
16082 method is invoked as a TermArg (a return value is expected.)
16083
16084 Fixed a reported problem where EOF conditions during a quoted
16085 string or comment caused a fault.
16086
16087
16088 ----------------------------------------
16089 15 August 2002. Summary of changes for this release.
16090
16091 1) ACPI CA Core Subsystem Version 20020815:
16092
16093 Fixed a reported problem where a Store to a method argument that
16094 contains a reference did not perform the indirect store correctly.
16095 This problem was created during the conversion to the new
16096 reference object model - the indirect store to a method argument
16097 code was not updated to reflect the new model.
16098
16099 Reworked the ACPI mode change code to better conform to ACPI 2.0,
16100 handle corner cases, and improve code legibility (Kochi Takayoshi)
16101
16102 Fixed a problem with the pathname parsing for the carat (^)
16103 prefix. The heavy use of the carat operator by the new namepath
16104 optimization in the iASL compiler uncovered a problem with the AML
16105 interpreter handling of this prefix. In the case where one or
16106 more carats precede a single nameseg, the nameseg was treated as
16107 standalone and the search rule (to root) was inadvertently
16108 applied. This could cause both the iASL compiler and the
16109 interpreter to find the wrong object or to miss the error that
16110 should occur if the object does not exist at that exact pathname.
16111
16112 Found and fixed the problem where the HP Pavilion DSDT would not
16113 load. This was a relatively minor tweak to the table loading code
16114 (a problem caused by the unexpected encounter with a method
16115 invocation not within a control method), but it does not solve the
16116 overall issue of the execution of AML code at the table level.
16117 This investigation is still ongoing.
16118
16119 Code and Data Size: Current core subsystem library sizes are shown
16120 below. These are the code and data sizes for the acpica.lib
16121 produced by the Microsoft Visual C++ 6.0 compiler, and these
16122 values do not include any ACPI driver or OSPM code. The debug
16123 version of the code includes the debug output trace mechanism and
16124 has a larger code and data size. Note that these values will vary
16125 depending on the efficiency of the compiler and the compiler
16126 options used during generation.
16127
16128 Previous Release
16129 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
16130 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
16131 Current Release:
16132 Non-Debug Version: 69.6K Code, 8.3K Data, 77.9K Total
16133 Debug Version: 150.0K Code, 61.7K Data, 211.7K Total
16134
16135
16136 2) Linux
16137
16138 Remove redundant slab.h include (Brad Hards)
16139
16140 Fix several bugs in thermal.c (Herbert Nachtnebel)
16141
16142 Make CONFIG_ACPI_BOOT work properly (Pavel Machek)
16143
16144 Change acpi_system_suspend to use updated irq functions (Pavel
16145 Machek)
16146
16147 Export acpi_get_firmware_table (Matthew Wilcox)
16148
16149 Use proper root proc entry for ACPI (Kochi Takayoshi)
16150
16151 Fix early-boot table parsing (Bjorn Helgaas)
16152
16153
16154 3) iASL Compiler/Disassembler
16155
16156 Reworked the compiler options to make them more consistent and to
16157 use two-letter options where appropriate. We were running out of
16158 sensible letters. This may break some makefiles, so check the
16159 current options list by invoking the compiler with no parameters.
16160
16161 Completed the design and implementation of the ASL namepath
16162 optimization option for the compiler. This option optimizes all
16163 references to named objects to the shortest possible path. The
16164 first attempt tries to utilize a single nameseg (4 characters) and
16165 the "search-to-root" algorithm used by the interpreter. If that
16166 cannot be used (because either the name is not in the search path
16167 or there is a conflict with another object with the same name),
16168 the pathname is optimized using the carat prefix (usually a
16169 shorter string than specifying the entire path from the root.)
16170
16171 Implemented support to obtain the DSDT from the Windows registry
16172 (when the disassembly option is specified with no input file).
16173 Added this code as the implementation for AcpiOsTableOverride in
16174 the Windows OSL. Migrated the 16-bit code (used in the AcpiDump
16175 utility) to scan memory for the DSDT to the AcpiOsTableOverride
16176 function in the DOS OSL to make the disassembler truly OS
16177 independent.
16178
16179 Implemented a new option to disassemble and compile in one step.
16180 When used without an input filename, this option will grab the
16181 DSDT from the local machine, disassemble it, and compile it in one
16182 step.
16183
16184 Added a warning message for invalid escapes (a backslash followed
16185 by any character other than the allowable escapes). This catches
16186 the quoted string error "\_SB_" (which should be "\\_SB_" ).
16187
16188 Also, there are numerous instances in the ACPI specification where
16189 this error occurs.
16190
16191 Added a compiler option to disable all optimizations. This is
16192 basically the "compatibility mode" because by using this option,
16193 the AML code will come out exactly the same as other ASL
16194 compilers.
16195
16196 Added error messages for incorrectly ordered dependent resource
16197 functions. This includes: missing EndDependentFn macro at end of
16198 dependent resource list, nested dependent function macros (both
16199 start and end), and missing StartDependentFn macro. These are
16200 common errors that should be caught at compile time.
16201
16202 Implemented _OSI support for the disassembler and compiler. _OSI
16203 must be included in the namespace for proper disassembly (because
16204 the disassembler must know the number of arguments.)
16205
16206 Added an "optimization" message type that is optional (off by
16207 default). This message is used for all optimizations - including
16208 constant folding, integer optimization, and namepath optimization.
16209
16210 ----------------------------------------
16211 25 July 2002. Summary of changes for this release.
16212
16213
16214 1) ACPI CA Core Subsystem Version 20020725:
16215
16216 The AML Disassembler has been enhanced to produce compilable ASL
16217 code and has been integrated into the iASL compiler (see below) as
16218 well as the single-step disassembly for the AML debugger and the
16219 disassembler for the AcpiDump utility. All ACPI 2.0A opcodes,
16220 resource templates and macros are fully supported. The
16221 disassembler has been tested on over 30 different AML files,
16222 producing identical AML when the resulting disassembled ASL file
16223 is recompiled with the same ASL compiler.
16224
16225 Modified the Resource Manager to allow zero interrupts and zero
16226 dma channels during the GetCurrentResources call. This was
16227 causing problems on some platforms.
16228
16229 Added the AcpiOsRedirectOutput interface to the OSL to simplify
16230 output redirection for the AcpiOsPrintf and AcpiOsVprintf
16231 interfaces.
16232
16233 Code and Data Size: Current core subsystem library sizes are shown
16234 below. These are the code and data sizes for the acpica.lib
16235 produced by the Microsoft Visual C++ 6.0 compiler, and these
16236 values do not include any ACPI driver or OSPM code. The debug
16237 version of the code includes the debug output trace mechanism and
16238 has a larger code and data size. Note that these values will vary
16239 depending on the efficiency of the compiler and the compiler
16240 options used during generation.
16241
16242 Previous Release
16243 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
16244 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
16245 Current Release:
16246 Non-Debug Version: 69.1K Code, 8.2K Data, 77.3K Total
16247 Debug Version: 149.4K Code, 61.6K Data, 211.0K Total
16248
16249
16250 2) Linux
16251
16252 Fixed a panic in the EC driver (Dominik Brodowski)
16253
16254 Implemented checksum of the R/XSDT itself during Linux table scan
16255 (Richard Schaal)
16256
16257
16258 3) iASL compiler
16259
16260 The AML disassembler is integrated into the compiler. The "-d"
16261 option invokes the disassembler to completely disassemble an
16262 input AML file, producing as output a text ASL file with the
16263 extension ".dsl" (to avoid name collisions with existing .asl
16264 source files.) A future enhancement will allow the disassembler
16265 to obtain the BIOS DSDT from the registry under Windows.
16266
16267 Fixed a problem with the VendorShort and VendorLong resource
16268 descriptors where an invalid AML sequence was created.
16269
16270 Implemented a fix for BufferData term in the ASL parser. It was
16271 inadvertently defined twice, allowing invalid syntax to pass and
16272 causing reduction conflicts.
16273
16274 Fixed a problem where the Ones opcode could get converted to a
16275 value of zero if "Ones" was used where a byte, word or dword value
16276 was expected. The 64-bit value is now truncated to the correct
16277 size with the correct value.
16278
16279
16280
16281 ----------------------------------------
16282 02 July 2002. Summary of changes for this release.
16283
16284
16285 1) ACPI CA Core Subsystem Version 20020702:
16286
16287 The Table Manager code has been restructured to add several new
16288 features. Tables that are not required by the core subsystem
16289 (other than the FADT, DSDT, FACS, PSDTs, etc.) are no longer
16290 validated in any way and are returned from AcpiGetFirmwareTable if
16291 requested. The AcpiOsTableOverride interface is now called for
16292 each table that is loaded by the subsystem in order to allow the
16293 host to override any table it chooses. Previously, only the DSDT
16294 could be overridden. Added one new files, tbrsdt.c and
16295 tbgetall.c.
16296
16297 Fixed a problem with the conversion of internal package objects to
16298 external objects (when a package is returned from a control
16299 method.) The return buffer length was set to zero instead of the
16300 proper length of the package object.
16301
16302 Fixed a reported problem with the use of the RefOf and DeRefOf
16303 operators when passing reference arguments to control methods. A
16304 new type of Reference object is used internally for references
16305 produced by the RefOf operator.
16306
16307 Added additional error messages in the Resource Manager to explain
16308 AE_BAD_DATA errors when they occur during resource parsing.
16309
16310 Split the AcpiEnableSubsystem into two primitives to enable a
16311 finer granularity initialization sequence. These two calls should
16312 be called in this order: AcpiEnableSubsystem (flags),
16313 AcpiInitializeObjects (flags). The flags parameter remains the
16314 same.
16315
16316
16317 2) Linux
16318
16319 Updated the ACPI utilities module to understand the new style of
16320 fully resolved package objects that are now returned from the core
16321 subsystem. This eliminates errors of the form:
16322
16323 ACPI: PCI Interrupt Routing Table [\_SB_.PCI0.PPB_._PRT]
16324 acpi_utils-0430 [145] acpi_evaluate_reference:
16325 Invalid element in package (not a device reference)
16326
16327 The method evaluation utility uses the new buffer allocation
16328 scheme instead of calling AcpiEvaluate Object twice.
16329
16330 Added support for ECDT. This allows the use of the Embedded
16331
16332 Controller before the namespace has been fully initialized, which
16333 is necessary for ACPI 2.0 support, and for some laptops to
16334 initialize properly. (Laptops using ECDT are still rare, so only
16335 limited testing was performed of the added functionality.)
16336
16337 Fixed memory leaks in the EC driver.
16338
16339 Eliminated a brittle code structure in acpi_bus_init().
16340
16341 Eliminated the acpi_evaluate() helper function in utils.c. It is
16342 no longer needed since acpi_evaluate_object can optionally
16343 allocate memory for the return object.
16344
16345 Implemented fix for keyboard hang when getting battery readings on
16346 some systems (Stephen White)
16347
16348 PCI IRQ routing update (Dominik Brodowski)
16349
16350 Fix an ifdef to allow compilation on UP with LAPIC but no IOAPIC
16351 support
16352
16353 ----------------------------------------
16354 11 June 2002. Summary of changes for this release.
16355
16356
16357 1) ACPI CA Core Subsystem Version 20020611:
16358
16359 Fixed a reported problem where constants such as Zero and One
16360 appearing within _PRT packages were not handled correctly within
16361 the resource manager code. Originally reported against the ASL
16362 compiler because the code generator now optimizes integers to
16363 their minimal AML representation (i.e. AML constants if possible.)
16364 The _PRT code now handles all AML constant opcodes correctly
16365 (Zero, One, Ones, Revision).
16366
16367 Fixed a problem with the Concatenate operator in the AML
16368 interpreter where a buffer result object was incorrectly marked as
16369 not fully evaluated, causing a run-time error of AE_AML_INTERNAL.
16370
16371 All package sub-objects are now fully resolved before they are
16372 returned from the external ACPI interfaces. This means that name
16373 strings are resolved to object handles, and constant operators
16374 (Zero, One, Ones, Revision) are resolved to Integers.
16375
16376 Implemented immediate resolution of the AML Constant opcodes
16377 (Zero, One, Ones, Revision) to Integer objects upon detection
16378 within the AML stream. This has simplified and reduced the
16379 generated code size of the subsystem by eliminating about 10
16380 switch statements for these constants (which previously were
16381 contained in Reference objects.) The complicating issues are that
16382 the Zero opcode is used as a "placeholder" for unspecified
16383 optional target operands and stores to constants are defined to be
16384 no-ops.
16385
16386 Code and Data Size: Current core subsystem library sizes are shown
16387 below. These are the code and data sizes for the acpica.lib
16388 produced by the Microsoft Visual C++ 6.0 compiler, and these
16389 values do not include any ACPI driver or OSPM code. The debug
16390 version of the code includes the debug output trace mechanism and
16391 has a larger code and data size. Note that these values will vary
16392 depending on the efficiency of the compiler and the compiler
16393 options used during generation.
16394
16395 Previous Release
16396 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
16397 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
16398 Current Release:
16399 Non-Debug Version: 68.7K Code, 7.4K Data, 76.1K Total
16400 Debug Version: 142.9K Code, 58.7K Data, 201.6K Total
16401
16402
16403 2) Linux
16404
16405
16406 Added preliminary support for obtaining _TRA data for PCI root
16407 bridges (Bjorn Helgaas).
16408
16409
16410 3) iASL Compiler Version X2046:
16411
16412 Fixed a problem where the "_DDN" reserved name was defined to be a
16413 control method with one argument. There are no arguments, and
16414 _DDN does not have to be a control method.
16415
16416 Fixed a problem with the Linux version of the compiler where the
16417 source lines printed with error messages were the wrong lines.
16418 This turned out to be the "LF versus CR/LF" difference between
16419 Windows and Unix. This appears to be the longstanding issue
16420 concerning listing output and error messages.
16421
16422 Fixed a problem with the Linux version of compiler where opcode
16423 names within error messages were wrong. This was caused by a
16424 slight difference in the output of the Flex tool on Linux versus
16425 Windows.
16426
16427 Fixed a problem with the Linux compiler where the hex output files
16428 contained some garbage data caused by an internal buffer overrun.
16429
16430
16431 ----------------------------------------
16432 17 May 2002. Summary of changes for this release.
16433
16434
16435 1) ACPI CA Core Subsystem Version 20020517:
16436
16437 Implemented a workaround to an BIOS bug discovered on the HP
16438 OmniBook where the FADT revision number and the table size are
16439 inconsistent (ACPI 2.0 revision vs. ACPI 1.0 table size). The new
16440 behavior is to fallback to using only the ACPI 1.0 fields of the
16441 FADT if the table is too small to be a ACPI 2.0 table as claimed
16442 by the revision number. Although this is a BIOS bug, this is a
16443 case where the workaround is simple enough and with no side
16444 effects, so it seemed prudent to add it. A warning message is
16445 issued, however.
16446
16447 Implemented minimum size checks for the fixed-length ACPI tables -
16448 - the FADT and FACS, as well as consistency checks between the
16449 revision number and the table size.
16450
16451 Fixed a reported problem in the table override support where the
16452 new table pointer was incorrectly treated as a physical address
16453 instead of a logical address.
16454
16455 Eliminated the use of the AE_AML_ERROR exception and replaced it
16456 with more descriptive codes.
16457
16458 Fixed a problem where an exception would occur if an ASL Field was
16459 defined with no named Field Units underneath it (used by some
16460 index fields).
16461
16462 Code and Data Size: Current core subsystem library sizes are shown
16463 below. These are the code and data sizes for the acpica.lib
16464 produced by the Microsoft Visual C++ 6.0 compiler, and these
16465 values do not include any ACPI driver or OSPM code. The debug
16466 version of the code includes the debug output trace mechanism and
16467 has a larger code and data size. Note that these values will vary
16468 depending on the efficiency of the compiler and the compiler
16469 options used during generation.
16470
16471 Previous Release
16472 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
16473 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
16474 Current Release:
16475 Non-Debug Version: 69.3K Code, 7.4K Data, 76.7K Total
16476 Debug Version: 143.8K Code, 58.8K Data, 202.6K Total
16477
16478
16479
16480 2) Linux
16481
16482 Much work done on ACPI init (MADT and PCI IRQ routing support).
16483 (Paul D. and Dominik Brodowski)
16484
16485 Fix PCI IRQ-related panic on boot (Sam Revitch)
16486
16487 Set BM_ARB_DIS when entering a sleep state (Ducrot Bruno)
16488
16489 Fix "MHz" typo (Dominik Brodowski)
16490
16491 Fix RTC year 2000 issue (Dominik Brodowski)
16492
16493 Preclude multiple button proc entries (Eric Brunet)
16494
16495 Moved arch-specific code out of include/platform/aclinux.h
16496
16497 3) iASL Compiler Version X2044:
16498
16499 Implemented error checking for the string used in the EISAID macro
16500 (Usually used in the definition of the _HID object.) The code now
16501 strictly enforces the PnP format - exactly 7 characters, 3
16502 uppercase letters and 4 hex digits.
16503
16504 If a raw string is used in the definition of the _HID object
16505 (instead of the EISAID macro), the string must contain all
16506 alphanumeric characters (e.g., "*PNP0011" is not allowed because
16507 of the asterisk.)
16508
16509 Implemented checking for invalid use of ACPI reserved names for
16510 most of the name creation operators (Name, Device, Event, Mutex,
16511 OperationRegion, PowerResource, Processor, and ThermalZone.)
16512 Previously, this check was only performed for control methods.
16513
16514 Implemented an additional check on the Name operator to emit an
16515 error if a reserved name that must be implemented in ASL as a
16516 control method is used. We know that a reserved name must be a
16517 method if it is defined with input arguments.
16518
16519 The warning emitted when a namespace object reference is not found
16520 during the cross reference phase has been changed into an error.
16521 The "External" directive should be used for names defined in other
16522 modules.
16523
16524
16525 4) Tools and Utilities
16526
16527 The 16-bit tools (adump16 and aexec16) have been regenerated and
16528 tested.
16529
16530 Fixed a problem with the output of both acpidump and adump16 where
16531 the indentation of closing parentheses and brackets was not
16532
16533 aligned properly with the parent block.
16534
16535
16536 ----------------------------------------
16537 03 May 2002. Summary of changes for this release.
16538
16539
16540 1) ACPI CA Core Subsystem Version 20020503:
16541
16542 Added support a new OSL interface that allows the host operating
16543
16544 system software to override the DSDT found in the firmware -
16545 AcpiOsTableOverride. With this interface, the OSL can examine the
16546 version of the firmware DSDT and replace it with a different one
16547 if desired.
16548
16549 Added new external interfaces for accessing ACPI registers from
16550 device drivers and other system software - AcpiGetRegister and
16551 AcpiSetRegister. This was simply an externalization of the
16552 existing AcpiHwBitRegister interfaces.
16553
16554 Fixed a regression introduced in the previous build where the
16555 ASL/AML CreateField operator always returned an error,
16556 "destination must be a NS Node".
16557
16558 Extended the maximum time (before failure) to successfully enable
16559 ACPI mode to 3 seconds.
16560
16561 Code and Data Size: Current core subsystem library sizes are shown
16562 below. These are the code and data sizes for the acpica.lib
16563 produced by the Microsoft Visual C++ 6.0 compiler, and these
16564 values do not include any ACPI driver or OSPM code. The debug
16565 version of the code includes the debug output trace mechanism and
16566 has a larger code and data size. Note that these values will vary
16567 depending on the efficiency of the compiler and the compiler
16568 options used during generation.
16569
16570 Previous Release
16571 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
16572 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
16573 Current Release:
16574 Non-Debug Version: 68.8K Code, 7.1K Data, 75.9K Total
16575 Debug Version: 142.9K Code, 58.4K Data, 201.3K Total
16576
16577
16578 2) Linux
16579
16580 Enhanced ACPI init code for SMP. We are now fully MPS and $PIR-
16581 free. While 3 out of 4 of our in-house systems work fine, the last
16582 one still hangs when testing the LAPIC timer.
16583
16584 Renamed many files in 2.5 kernel release to omit "acpi_" from the
16585 name.
16586
16587 Added warning on boot for Presario 711FR.
16588
16589 Sleep improvements (Pavel Machek)
16590
16591 ACPI can now be built without CONFIG_PCI enabled.
16592
16593 IA64: Fixed memory map functions (JI Lee)
16594
16595
16596 3) iASL Compiler Version X2043:
16597
16598 Added support to allow the compiler to be integrated into the MS
16599 VC++ development environment for one-button compilation of single
16600 files or entire projects -- with error-to-source-line mapping.
16601
16602 Implemented support for compile-time constant folding for the
16603 Type3, Type4, and Type5 opcodes first defined in the ACPI 2.0
16604 specification. This allows the ASL writer to use expressions
16605 instead of Integer/Buffer/String constants in terms that must
16606 evaluate to constants at compile time and will also simplify the
16607 emitted AML in any such sub-expressions that can be folded
16608 (evaluated at compile-time.) This increases the size of the
16609 compiler significantly because a portion of the ACPI CA AML
16610 interpreter is included within the compiler in order to pre-
16611 evaluate constant expressions.
16612
16613
16614 Fixed a problem with the "Unicode" ASL macro that caused the
16615 compiler to fault. (This macro is used in conjunction with the
16616 _STR reserved name.)
16617
16618 Implemented an AML opcode optimization to use the Zero, One, and
16619 Ones opcodes where possible to further reduce the size of integer
16620 constants and thus reduce the overall size of the generated AML
16621 code.
16622
16623 Implemented error checking for new reserved terms for ACPI version
16624 2.0A.
16625
16626 Implemented the -qr option to display the current list of ACPI
16627 reserved names known to the compiler.
16628
16629 Implemented the -qc option to display the current list of ASL
16630 operators that are allowed within constant expressions and can
16631 therefore be folded at compile time if the operands are constants.
16632
16633
16634 4) Documentation
16635
16636 Updated the Programmer's Reference for new interfaces, data types,
16637 and memory allocation model options.
16638
16639 Updated the iASL Compiler User Reference to apply new format and
16640 add information about new features and options.
16641
16642 ----------------------------------------
16643 19 April 2002. Summary of changes for this release.
16644
16645 1) ACPI CA Core Subsystem Version 20020419:
16646
16647 The source code base for the Core Subsystem has been completely
16648 cleaned with PC-lint (FlexLint) for both 32-bit and 64-bit
16649 versions. The Lint option files used are included in the
16650 /acpi/generate/lint directory.
16651
16652 Implemented enhanced status/error checking across the entire
16653 Hardware manager subsystem. Any hardware errors (reported from
16654 the OSL) are now bubbled up and will abort a running control
16655 method.
16656
16657
16658 Fixed a problem where the per-ACPI-table integer width (32 or 64)
16659 was stored only with control method nodes, causing a fault when
16660 non-control method code was executed during table loading. The
16661 solution implemented uses a global variable to indicate table
16662 width across the entire ACPI subsystem. Therefore, ACPI CA does
16663 not support mixed integer widths across different ACPI tables
16664 (DSDT, SSDT).
16665
16666 Fixed a problem where NULL extended fields (X fields) in an ACPI
16667 2.0 ACPI FADT caused the table load to fail. Although the
16668 existing ACPI specification is a bit fuzzy on this topic, the new
16669 behavior is to fall back on a ACPI 1.0 field if the corresponding
16670 ACPI 2.0 X field is zero (even though the table revision indicates
16671 a full ACPI 2.0 table.) The ACPI specification will be updated to
16672 clarify this issue.
16673
16674 Fixed a problem with the SystemMemory operation region handler
16675 where memory was always accessed byte-wise even if the AML-
16676 specified access width was larger than a byte. This caused
16677 problems on systems with memory-mapped I/O. Memory is now
16678 accessed with the width specified. On systems that do not support
16679 non-aligned transfers, a check is made to guarantee proper address
16680 alignment before proceeding in order to avoid an AML-caused
16681 alignment fault within the kernel.
16682
16683
16684 Fixed a problem with the ExtendedIrq resource where only one byte
16685 of the 4-byte Irq field was extracted.
16686
16687 Fixed the AcpiExDigitsNeeded() procedure to support _UID. This
16688 function was out of date and required a rewrite.
16689
16690 Code and Data Size: Current core subsystem library sizes are shown
16691 below. These are the code and data sizes for the acpica.lib
16692 produced by the Microsoft Visual C++ 6.0 compiler, and these
16693 values do not include any ACPI driver or OSPM code. The debug
16694 version of the code includes the debug output trace mechanism and
16695 has a larger code and data size. Note that these values will vary
16696 depending on the efficiency of the compiler and the compiler
16697 options used during generation.
16698
16699 Previous Release
16700 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
16701 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
16702 Current Release:
16703 Non-Debug Version: 68.5K Code, 7.0K Data, 75.5K Total
16704 Debug Version: 142.4K Code, 58.3K Data, 200.7K Total
16705
16706
16707 2) Linux
16708
16709 PCI IRQ routing fixes (Dominik Brodowski)
16710
16711
16712 3) iASL Compiler Version X2042:
16713
16714 Implemented an additional compile-time error check for a field
16715 unit whose size + minimum access width would cause a run-time
16716 access beyond the end-of-region. Previously, only the field size
16717 itself was checked.
16718
16719 The Core subsystem and iASL compiler now share a common parse
16720 object in preparation for compile-time evaluation of the type
16721 3/4/5 ASL operators.
16722
16723
16724 ----------------------------------------
16725 Summary of changes for this release: 03_29_02
16726
16727 1) ACPI CA Core Subsystem Version 20020329:
16728
16729 Implemented support for late evaluation of TermArg operands to
16730 Buffer and Package objects. This allows complex expressions to be
16731 used in the declarations of these object types.
16732
16733 Fixed an ACPI 1.0 compatibility issue when reading Fields. In ACPI
16734 1.0, if the field was larger than 32 bits, it was returned as a
16735 buffer - otherwise it was returned as an integer. In ACPI 2.0,
16736 the field is returned as a buffer only if the field is larger than
16737 64 bits. The TableRevision is now considered when making this
16738 conversion to avoid incompatibility with existing ASL code.
16739
16740 Implemented logical addressing for AcpiOsGetRootPointer. This
16741 allows an RSDP with either a logical or physical address. With
16742 this support, the host OS can now override all ACPI tables with
16743 one logical RSDP. Includes implementation of "typed" pointer
16744 support to allow a common data type for both physical and logical
16745 pointers internally. This required a change to the
16746 AcpiOsGetRootPointer interface.
16747
16748 Implemented the use of ACPI 2.0 Generic Address Structures for all
16749 GPE, Fixed Event, and PM Timer I/O. This allows the use of memory
16750 mapped I/O for these ACPI features.
16751
16752 Initialization now ignores not only non-required tables (All
16753 tables other than the FADT, FACS, DSDT, and SSDTs), but also does
16754 not validate the table headers of unrecognized tables.
16755
16756 Fixed a problem where a notify handler could only be
16757 installed/removed on an object of type Device. All "notify"
16758
16759 objects are now supported -- Devices, Processor, Power, and
16760 Thermal.
16761
16762 Removed most verbosity from the ACPI_DB_INFO debug level. Only
16763 critical information is returned when this debug level is enabled.
16764
16765 Code and Data Size: Current core subsystem library sizes are shown
16766 below. These are the code and data sizes for the acpica.lib
16767 produced by the Microsoft Visual C++ 6.0 compiler, and these
16768 values do not include any ACPI driver or OSPM code. The debug
16769 version of the code includes the debug output trace mechanism and
16770 has a larger code and data size. Note that these values will vary
16771 depending on the efficiency of the compiler and the compiler
16772 options used during generation.
16773
16774 Previous Release
16775 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
16776 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
16777 Current Release:
16778 Non-Debug Version: 66.6K Code, 6.5K Data, 73.1K Total
16779 Debug Version: 139.8K Code, 57.4K Data, 197.2K Total
16780
16781
16782 2) Linux:
16783
16784 The processor driver (acpi_processor.c) now fully supports ACPI
16785 2.0-based processor performance control (e.g. Intel(R)
16786 SpeedStep(TM) technology) Note that older laptops that only have
16787 the Intel "applet" interface are not supported through this. The
16788 'limit' and 'performance' interface (/proc) are fully functional.
16789 [Note that basic policy for controlling performance state
16790 transitions will be included in the next version of ospmd.] The
16791 idle handler was modified to more aggressively use C2, and PIIX4
16792 errata handling underwent a complete overhaul (big thanks to
16793 Dominik Brodowski).
16794
16795 Added support for ACPI-PCI device binding (acpi_pci_root.c). _ADR-
16796 based devices in the ACPI namespace are now dynamically bound
16797 (associated) with their PCI counterparts (e.g. PCI1->01:00.0).
16798 This allows, among other things, ACPI to resolve bus numbers for
16799 subordinate PCI bridges.
16800
16801 Enhanced PCI IRQ routing to get the proper bus number for _PRT
16802 entries defined underneath PCI bridges.
16803
16804 Added IBM 600E to bad bios list due to invalid _ADR value for
16805 PIIX4 PCI-ISA bridge, resulting in improper PCI IRQ routing.
16806
16807 In the process of adding full MADT support (e.g. IOAPIC) for IA32
16808 (acpi.c, mpparse.c) -- stay tuned.
16809
16810 Added back visual differentiation between fixed-feature and
16811 control-method buttons in dmesg. Buttons are also subtyped (e.g.
16812 button/power/PWRF) to simplify button identification.
16813
16814 We no longer use -Wno-unused when compiling debug. Please ignore
16815 any "_THIS_MODULE defined but not used" messages.
16816
16817 Can now shut down the system using "magic sysrq" key.
16818
16819
16820 3) iASL Compiler version 2041:
16821
16822 Fixed a problem where conversion errors for hex/octal/decimal
16823 constants were not reported.
16824
16825 Implemented a fix for the General Register template Address field.
16826 This field was 8 bits when it should be 64.
16827
16828 Fixed a problem where errors/warnings were no longer being emitted
16829 within the listing output file.
16830
16831 Implemented the ACPI 2.0A restriction on ACPI Table Signatures to
16832 exactly 4 characters, alphanumeric only.
16833
16834
16835
16836
16837 ----------------------------------------
16838 Summary of changes for this release: 03_08_02
16839
16840
16841 1) ACPI CA Core Subsystem Version 20020308:
16842
16843 Fixed a problem with AML Fields where the use of the "AccessAny"
16844 keyword could cause an interpreter error due to attempting to read
16845 or write beyond the end of the parent Operation Region.
16846
16847 Fixed a problem in the SystemMemory Operation Region handler where
16848 an attempt was made to map memory beyond the end of the region.
16849 This was the root cause of the "AE_ERROR" and "AE_NO_MEMORY"
16850 errors on some Linux systems.
16851
16852 Fixed a problem where the interpreter/namespace "search to root"
16853 algorithm was not functioning for some object types. Relaxed the
16854 internal restriction on the search to allow upsearches for all
16855 external object types as well as most internal types.
16856
16857
16858 2) Linux:
16859
16860 We now use safe_halt() macro versus individual calls to sti | hlt.
16861
16862 Writing to the processor limit interface should now work. "echo 1"
16863 will increase the limit, 2 will decrease, and 0 will reset to the
16864
16865 default.
16866
16867
16868 3) ASL compiler:
16869
16870 Fixed segfault on Linux version.
16871
16872
16873 ----------------------------------------
16874 Summary of changes for this release: 02_25_02
16875
16876 1) ACPI CA Core Subsystem:
16877
16878
16879 Fixed a problem where the GPE bit masks were not initialized
16880 properly, causing erratic GPE behavior.
16881
16882 Implemented limited support for multiple calling conventions. The
16883 code can be generated with either the VPL (variable parameter
16884 list, or "C") convention, or the FPL (fixed parameter list, or
16885 "Pascal") convention. The core subsystem is about 3.4% smaller
16886 when generated with FPL.
16887
16888
16889 2) Linux
16890
16891 Re-add some /proc/acpi/event functionality that was lost during
16892 the rewrite
16893
16894 Resolved issue with /proc events for fixed-feature buttons showing
16895 up as the system device.
16896
16897 Fixed checks on C2/C3 latencies to be inclusive of maximum values.
16898
16899 Replaced AE_ERRORs in acpi_osl.c with more specific error codes.
16900
16901 Changed ACPI PRT option from "pci=noacpi-routing" to "pci=noacpi"
16902
16903 Fixed limit interface & usage to fix bugs with passive cooling
16904 hysterisis.
16905
16906 Restructured PRT support.
16907
16908
16909 ----------------------------------------
16910 Summary of changes for this label: 02_14_02
16911
16912
16913 1) ACPI CA Core Subsystem:
16914
16915 Implemented support in AcpiLoadTable to allow loading of FACS and
16916 FADT tables.
16917
16918 Support for the now-obsolete interim 0.71 64-bit ACPI tables has
16919 been removed. All 64-bit platforms should be migrated to the ACPI
16920 2.0 tables. The actbl71.h header has been removed from the source
16921 tree.
16922
16923 All C macros defined within the subsystem have been prefixed with
16924 "ACPI_" to avoid collision with other system include files.
16925
16926 Removed the return value for the two AcpiOsPrint interfaces, since
16927 it is never used and causes lint warnings for ignoring the return
16928 value.
16929
16930 Added error checking to all internal mutex acquire and release
16931 calls. Although a failure from one of these interfaces is
16932 probably a fatal system error, these checks will cause the
16933 immediate abort of the currently executing method or interface.
16934
16935 Fixed a problem where the AcpiSetCurrentResources interface could
16936 fault. This was a side effect of the deployment of the new memory
16937 allocation model.
16938
16939 Fixed a couple of problems with the Global Lock support introduced
16940 in the last major build. The "common" (1.0/2.0) internal FACS was
16941 being overwritten with the FACS signature and clobbering the
16942 Global Lock pointer. Also, the actual firmware FACS was being
16943 unmapped after construction of the "common" FACS, preventing
16944 access to the actual Global Lock field within it. The "common"
16945 internal FACS is no longer installed as an actual ACPI table; it
16946 is used simply as a global.
16947
16948 Code and Data Size: Current core subsystem library sizes are shown
16949 below. These are the code and data sizes for the acpica.lib
16950 produced by the Microsoft Visual C++ 6.0 compiler, and these
16951 values do not include any ACPI driver or OSPM code. The debug
16952 version of the code includes the debug output trace mechanism and
16953 has a larger code and data size. Note that these values will vary
16954 depending on the efficiency of the compiler and the compiler
16955 options used during generation.
16956
16957 Previous Release (02_07_01)
16958 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
16959 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
16960 Current Release:
16961 Non-Debug Version: 65.4K Code, 6.2K Data, 71.6K Total
16962 Debug Version: 138.0K Code, 56.6K Data, 194.6K Total
16963
16964
16965 2) Linux
16966
16967 Updated Linux-specific code for core macro and OSL interface
16968 changes described above.
16969
16970 Improved /proc/acpi/event. It now can be opened only once and has
16971 proper poll functionality.
16972
16973 Fixed and restructured power management (acpi_bus).
16974
16975 Only create /proc "view by type" when devices of that class exist.
16976
16977 Fixed "charging/discharging" bug (and others) in acpi_battery.
16978
16979 Improved thermal zone code.
16980
16981
16982 3) ASL Compiler, version X2039:
16983
16984
16985 Implemented the new compiler restriction on ASL String hex/octal
16986 escapes to non-null, ASCII values. An error results if an invalid
16987 value is used. (This will require an ACPI 2.0 specification
16988 change.)
16989
16990 AML object labels that are output to the optional C and ASM source
16991 are now prefixed with both the ACPI table signature and table ID
16992 to help guarantee uniqueness within a large BIOS project.
16993
16994
16995 ----------------------------------------
16996 Summary of changes for this label: 02_01_02
16997
16998 1) ACPI CA Core Subsystem:
16999
17000 ACPI 2.0 support is complete in the entire Core Subsystem and the
17001 ASL compiler. All new ACPI 2.0 operators are implemented and all
17002 other changes for ACPI 2.0 support are complete. With
17003 simultaneous code and data optimizations throughout the subsystem,
17004 ACPI 2.0 support has been implemented with almost no additional
17005 cost in terms of code and data size.
17006
17007 Implemented a new mechanism for allocation of return buffers. If
17008 the buffer length is set to ACPI_ALLOCATE_BUFFER, the buffer will
17009 be allocated on behalf of the caller. Consolidated all return
17010 buffer validation and allocation to a common procedure. Return
17011 buffers will be allocated via the primary OSL allocation interface
17012 since it appears that a separate pool is not needed by most users.
17013 If a separate pool is required for these buffers, the caller can
17014 still use the original mechanism and pre-allocate the buffer(s).
17015
17016 Implemented support for string operands within the DerefOf
17017 operator.
17018
17019 Restructured the Hardware and Event managers to be table driven,
17020 simplifying the source code and reducing the amount of generated
17021 code.
17022
17023 Split the common read/write low-level ACPI register bitfield
17024 procedure into a separate read and write, simplifying the code
17025 considerably.
17026
17027 Obsoleted the AcpiOsCallocate OSL interface. This interface was
17028 used only a handful of times and didn't have enough critical mass
17029 for a separate interface. Replaced with a common calloc procedure
17030 in the core.
17031
17032 Fixed a reported problem with the GPE number mapping mechanism
17033 that allows GPE1 numbers to be non-contiguous with GPE0.
17034 Reorganized the GPE information and shrunk a large array that was
17035 originally large enough to hold info for all possible GPEs (256)
17036 to simply large enough to hold all GPEs up to the largest GPE
17037 number on the machine.
17038
17039 Fixed a reported problem with resource structure alignment on 64-
17040 bit platforms.
17041
17042 Changed the AcpiEnableEvent and AcpiDisableEvent external
17043 interfaces to not require any flags for the common case of
17044 enabling/disabling a GPE.
17045
17046 Implemented support to allow a "Notify" on a Processor object.
17047
17048 Most TBDs in comments within the source code have been resolved
17049 and eliminated.
17050
17051
17052 Fixed a problem in the interpreter where a standalone parent
17053 prefix (^) was not handled correctly in the interpreter and
17054 debugger.
17055
17056 Removed obsolete and unnecessary GPE save/restore code.
17057
17058 Implemented Field support in the ASL Load operator. This allows a
17059 table to be loaded from a named field, in addition to loading a
17060 table directly from an Operation Region.
17061
17062 Implemented timeout and handle support in the external Global Lock
17063 interfaces.
17064
17065 Fixed a problem in the AcpiDump utility where pathnames were no
17066 longer being generated correctly during the dump of named objects.
17067
17068 Modified the AML debugger to give a full display of if/while
17069 predicates instead of just one AML opcode at a time. (The
17070 predicate can have several nested ASL statements.) The old method
17071 was confusing during single stepping.
17072
17073 Code and Data Size: Current core subsystem library sizes are shown
17074 below. These are the code and data sizes for the acpica.lib
17075 produced by the Microsoft Visual C++ 6.0 compiler, and these
17076 values do not include any ACPI driver or OSPM code. The debug
17077 version of the code includes the debug output trace mechanism and
17078 has a larger code and data size. Note that these values will vary
17079 depending on the efficiency of the compiler and the compiler
17080 options used during generation.
17081
17082 Previous Release (12_18_01)
17083 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
17084 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
17085 Current Release:
17086 Non-Debug Version: 65.2K Code, 6.2K Data, 71.4K Total
17087 Debug Version: 136.9K Code, 56.4K Data, 193.3K Total
17088
17089 2) Linux
17090
17091 Implemented fix for PIIX reverse throttling errata (Processor
17092 driver)
17093
17094 Added new Limit interface (Processor and Thermal drivers)
17095
17096 New thermal policy (Thermal driver)
17097
17098 Many updates to /proc
17099
17100 Battery "low" event support (Battery driver)
17101
17102 Supports ACPI PCI IRQ routing (PCI Link and PCI root drivers)
17103
17104 IA32 - IA64 initialization unification, no longer experimental
17105
17106 Menuconfig options redesigned
17107
17108 3) ASL Compiler, version X2037:
17109
17110 Implemented several new output features to simplify integration of
17111 AML code into firmware: 1) Output the AML in C source code with
17112 labels for each named ASL object. The original ASL source code
17113 is interleaved as C comments. 2) Output the AML in ASM source code
17114 with labels and interleaved ASL source. 3) Output the AML in
17115 raw hex table form, in either C or ASM.
17116
17117 Implemented support for optional string parameters to the
17118 LoadTable operator.
17119
17120 Completed support for embedded escape sequences within string
17121 literals. The compiler now supports all single character escapes
17122 as well as the Octal and Hex escapes. Note: the insertion of a
17123 null byte into a string literal (via the hex/octal escape) causes
17124 the string to be immediately terminated. A warning is issued.
17125
17126 Fixed a problem where incorrect AML was generated for the case
17127 where an ASL namepath consists of a single parent prefix (
17128
17129 ) with no trailing name segments.
17130
17131 The compiler has been successfully generated with a 64-bit C
17132 compiler.
17133
17134
17135
17136
17137 ----------------------------------------
17138 Summary of changes for this label: 12_18_01
17139
17140 1) Linux
17141
17142 Enhanced blacklist with reason and severity fields. Any table's
17143 signature may now be used to identify a blacklisted system.
17144
17145 Call _PIC control method to inform the firmware which interrupt
17146 model the OS is using. Turn on any disabled link devices.
17147
17148 Cleaned up busmgr /proc error handling (Andreas Dilger)
17149
17150 2) ACPI CA Core Subsystem:
17151
17152 Implemented ACPI 2.0 semantics for the "Break" operator (Exit from
17153 while loop)
17154
17155 Completed implementation of the ACPI 2.0 "Continue",
17156 "ConcatenateResTemplate", "DataTableRegion", and "LoadTable"
17157 operators. All new ACPI 2.0 operators are now implemented in both
17158 the ASL compiler and the AML interpreter. The only remaining ACPI
17159 2.0 task is support for the String data type in the DerefOf
17160 operator. Fixed a problem with AcquireMutex where the status code
17161 was lost if the caller had to actually wait for the mutex.
17162
17163 Increased the maximum ASL Field size from 64K bits to 4G bits.
17164
17165 Completed implementation of the external Global Lock interfaces --
17166 AcpiAcquireGlobalLock and AcpiReleaseGlobalLock. The Timeout and
17167 Handler parameters were added.
17168
17169 Completed another pass at removing warnings and issues when
17170 compiling with 64-bit compilers. The code now compiles cleanly
17171 with the Intel 64-bit C/C++ compiler. Most notably, the pointer
17172 add and subtract (diff) macros have changed considerably.
17173
17174
17175 Created and deployed a new ACPI_SIZE type that is 64-bits wide on
17176 64-bit platforms, 32-bits on all others. This type is used
17177 wherever memory allocation and/or the C sizeof() operator is used,
17178 and affects the OSL memory allocation interfaces AcpiOsAllocate
17179 and AcpiOsCallocate.
17180
17181 Implemented sticky user breakpoints in the AML debugger.
17182
17183 Code and Data Size: Current core subsystem library sizes are shown
17184 below. These are the code and data sizes for the acpica.lib
17185 produced by the Microsoft Visual C++ 6.0 compiler, and these
17186 values do not include any ACPI driver or OSPM code. The debug
17187 version of the code includes the debug output trace mechanism and
17188 has a larger code and data size. Note that these values will vary
17189 depending on the efficiency of the compiler and the compiler
17190 options used during generation.
17191
17192 Previous Release (12_05_01)
17193 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
17194 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
17195 Current Release:
17196 Non-Debug Version: 66.1K Code, 5.5K Data, 71.6K Total
17197 Debug Version: 138.3K Code, 55.9K Data, 194.2K Total
17198
17199 3) ASL Compiler, version X2034:
17200
17201 Now checks for (and generates an error if detected) the use of a
17202 Break or Continue statement without an enclosing While statement.
17203
17204
17205 Successfully generated the compiler with the Intel 64-bit C
17206 compiler.
17207
17208 ----------------------------------------
17209 Summary of changes for this label: 12_05_01
17210
17211 1) ACPI CA Core Subsystem:
17212
17213 The ACPI 2.0 CopyObject operator is fully implemented. This
17214 operator creates a new copy of an object (and is also used to
17215 bypass the "implicit conversion" mechanism of the Store operator.)
17216
17217 The ACPI 2.0 semantics for the SizeOf operator are fully
17218 implemented. The change is that performing a SizeOf on a
17219 reference object causes an automatic dereference of the object to
17220 tha actual value before the size is evaluated. This behavior was
17221 undefined in ACPI 1.0.
17222
17223 The ACPI 2.0 semantics for the Extended IRQ resource descriptor
17224 have been implemented. The interrupt polarity and mode are now
17225 independently set.
17226
17227 Fixed a problem where ASL Constants (Zero, One, Ones, Revision)
17228 appearing in Package objects were not properly converted to
17229 integers when the internal Package was converted to an external
17230 object (via the AcpiEvaluateObject interface.)
17231
17232 Fixed a problem with the namespace object deletion mechanism for
17233 objects created by control methods. There were two parts to this
17234 problem: 1) Objects created during the initialization phase method
17235 parse were not being deleted, and 2) The object owner ID mechanism
17236 to track objects was broken.
17237
17238 Fixed a problem where the use of the ASL Scope operator within a
17239 control method would result in an invalid opcode exception.
17240
17241 Fixed a problem introduced in the previous label where the buffer
17242 length required for the _PRT structure was not being returned
17243 correctly.
17244
17245 Code and Data Size: Current core subsystem library sizes are shown
17246 below. These are the code and data sizes for the acpica.lib
17247 produced by the Microsoft Visual C++ 6.0 compiler, and these
17248 values do not include any ACPI driver or OSPM code. The debug
17249 version of the code includes the debug output trace mechanism and
17250 has a larger code and data size. Note that these values will vary
17251 depending on the efficiency of the compiler and the compiler
17252 options used during generation.
17253
17254 Previous Release (11_20_01)
17255 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
17256 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
17257
17258 Current Release:
17259 Non-Debug Version: 64.7K Code, 5.3K Data, 70.0K Total
17260 Debug Version: 136.2K Code, 55.6K Data, 191.8K Total
17261
17262 2) Linux:
17263
17264 Updated all files to apply cleanly against 2.4.16.
17265
17266 Added basic PCI Interrupt Routing Table (PRT) support for IA32
17267 (acpi_pci.c), and unified the PRT code for IA32 and IA64. This
17268 version supports both static and dynamic PRT entries, but dynamic
17269 entries are treated as if they were static (not yet
17270 reconfigurable). Architecture- specific code to use this data is
17271 absent on IA32 but should be available shortly.
17272
17273 Changed the initialization sequence to start the ACPI interpreter
17274 (acpi_init) prior to initialization of the PCI driver (pci_init)
17275 in init/main.c. This ordering is required to support PRT and
17276 facilitate other (future) enhancement. A side effect is that the
17277 ACPI bus driver and certain device drivers can no longer be loaded
17278 as modules.
17279
17280 Modified the 'make menuconfig' options to allow PCI Interrupt
17281 Routing support to be included without the ACPI Bus and other
17282 device drivers.
17283
17284 3) ASL Compiler, version X2033:
17285
17286 Fixed some issues with the use of the new CopyObject and
17287 DataTableRegion operators. Both are fully functional.
17288
17289 ----------------------------------------
17290 Summary of changes for this label: 11_20_01
17291
17292 20 November 2001. Summary of changes for this release.
17293
17294 1) ACPI CA Core Subsystem:
17295
17296 Updated Index support to match ACPI 2.0 semantics. Storing a
17297 Integer, String, or Buffer to an Index of a Buffer will store only
17298 the least-significant byte of the source to the Indexed buffer
17299 byte. Multiple writes are not performed.
17300
17301 Fixed a problem where the access type used in an AccessAs ASL
17302 operator was not recorded correctly into the field object.
17303
17304 Fixed a problem where ASL Event objects were created in a
17305 signalled state. Events are now created in an unsignalled state.
17306
17307 The internal object cache is now purged after table loading and
17308 initialization to reduce the use of dynamic kernel memory -- on
17309 the assumption that object use is greatest during the parse phase
17310 of the entire table (versus the run-time use of individual control
17311 methods.)
17312
17313 ACPI 2.0 variable-length packages are now fully operational.
17314
17315 Code and Data Size: Code and Data optimizations have permitted new
17316 feature development with an actual reduction in the library size.
17317 Current core subsystem library sizes are shown below. These are
17318 the code and data sizes for the acpica.lib produced by the
17319 Microsoft Visual C++ 6.0 compiler, and these values do not include
17320 any ACPI driver or OSPM code. The debug version of the code
17321 includes the debug output trace mechanism and has a larger code
17322 and data size. Note that these values will vary depending on the
17323 efficiency of the compiler and the compiler options used during
17324 generation.
17325
17326 Previous Release (11_09_01):
17327 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
17328 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
17329
17330 Current Release:
17331 Non-Debug Version: 64.1K Code, 5.3K Data, 69.4K Total
17332 Debug Version: 135.1K Code, 55.4K Data, 190.5K Total
17333
17334 2) Linux:
17335
17336 Enhanced the ACPI boot-time initialization code to allow the use
17337 of Local APIC tables for processor enumeration on IA-32, and to
17338 pave the way for a fully MPS-free boot (on SMP systems) in the
17339 near future. This functionality replaces
17340 arch/i386/kernel/acpitables.c, which was introduced in an earlier
17341 2.4.15-preX release. To enable this feature you must add
17342 "acpi_boot=on" to the kernel command line -- see the help entry
17343 for CONFIG_ACPI_BOOT for more information. An IA-64 release is in
17344 the works...
17345
17346 Restructured the configuration options to allow boot-time table
17347 parsing support without inclusion of the ACPI Interpreter (and
17348 other) code.
17349
17350 NOTE: This release does not include fixes for the reported events,
17351 power-down, and thermal passive cooling issues (coming soon).
17352
17353 3) ASL Compiler:
17354
17355 Added additional typechecking for Fields within restricted access
17356 Operation Regions. All fields within EC and CMOS regions must be
17357 declared with ByteAcc. All fields within SMBus regions must be
17358 declared with the BufferAcc access type.
17359
17360 Fixed a problem where the listing file output of control methods
17361 no longer interleaved the actual AML code with the ASL source
17362 code.
17363
17364
17365
17366
17367 ----------------------------------------
17368 Summary of changes for this label: 11_09_01
17369
17370 1) ACPI CA Core Subsystem:
17371
17372 Implemented ACPI 2.0-defined support for writes to fields with a
17373 Buffer, String, or Integer source operand that is smaller than the
17374 target field. In these cases, the source operand is zero-extended
17375 to fill the target field.
17376
17377 Fixed a problem where a Field starting bit offset (within the
17378 parent operation region) was calculated incorrectly if the
17379
17380 alignment of the field differed from the access width. This
17381 affected CreateWordField, CreateDwordField, CreateQwordField, and
17382 possibly other fields that use the "AccessAny" keyword.
17383
17384 Fixed a problem introduced in the 11_02_01 release where indirect
17385 stores through method arguments did not operate correctly.
17386
17387 2) Linux:
17388
17389 Implemented boot-time ACPI table parsing support
17390 (CONFIG_ACPI_BOOT) for IA32 and IA64 UP/SMP systems. This code
17391 facilitates the use of ACPI tables (e.g. MADT, SRAT) rather than
17392 legacy BIOS interfaces (e.g. MPS) for the configuration of system
17393 processors, memory, and interrupts during setup_arch(). Note that
17394 this patch does not include the required architecture-specific
17395 changes required to apply this information -- subsequent patches
17396 will be posted for both IA32 and IA64 to achieve this.
17397
17398 Added low-level sleep support for IA32 platforms, courtesy of Pat
17399 Mochel. This allows IA32 systems to transition to/from various
17400 sleeping states (e.g. S1, S3), although the lack of a centralized
17401 driver model and power-manageable drivers will prevent its
17402 (successful) use on most systems.
17403
17404 Revamped the ACPI 'menuconfig' layout: created new "ACPI Support"
17405 submenu, unified IA32 and IA64 options, added new "Boot using ACPI
17406 tables" option, etc.
17407
17408 Increased the default timeout for the EC driver from 1ms to 10ms
17409 (1000 cycles of 10us) to try to address AE_TIME errors during EC
17410 transactions.
17411
17412 ----------------------------------------
17413 Summary of changes for this label: 11_02_01
17414
17415 1) ACPI CA Core Subsystem:
17416
17417 ACPI 2.0 Support: Implemented ACPI 2.0 64-bit Field access
17418 (QWordAcc keyword). All ACPI 2.0 64-bit support is now
17419 implemented.
17420
17421 OSL Interfaces: Several of the OSL (AcpiOs*) interfaces required
17422 changes to support ACPI 2.0 Qword field access. Read/Write
17423 PciConfiguration(), Read/Write Memory(), and Read/Write Port() now
17424 accept an ACPI_INTEGER (64 bits) as the value parameter. Also,
17425 the value parameter for the address space handler interface is now
17426 an ACPI_INTEGER. OSL implementations of these interfaces must now
17427 handle the case where the Width parameter is 64.
17428
17429 Index Fields: Fixed a problem where unaligned bit assembly and
17430 disassembly for IndexFields was not supported correctly.
17431
17432 Index and Bank Fields: Nested Index and Bank Fields are now
17433 supported. During field access, a check is performed to ensure
17434 that the value written to an Index or Bank register is not out of
17435 the range of the register. The Index (or Bank) register is
17436 written before each access to the field data. Future support will
17437 include allowing individual IndexFields to be wider than the
17438 DataRegister width.
17439
17440 Fields: Fixed a problem where the AML interpreter was incorrectly
17441 attempting to write beyond the end of a Field/OpRegion. This was
17442 a boundary case that occurred when a DWORD field was written to a
17443 BYTE access OpRegion, forcing multiple writes and causing the
17444 interpreter to write one datum too many.
17445
17446 Fields: Fixed a problem with Field/OpRegion access where the
17447 starting bit address of a field was incorrectly calculated if the
17448 current access type was wider than a byte (WordAcc, DwordAcc, or
17449 QwordAcc).
17450
17451 Fields: Fixed a problem where forward references to individual
17452 FieldUnits (individual Field names within a Field definition) were
17453 not resolved during the AML table load.
17454
17455 Fields: Fixed a problem where forward references from a Field
17456 definition to the parent Operation Region definition were not
17457 resolved during the AML table load.
17458
17459 Fields: Duplicate FieldUnit names within a scope are now detected
17460 during AML table load.
17461
17462 Acpi Interfaces: Fixed a problem where the AcpiGetName() interface
17463 returned an incorrect name for the root node.
17464
17465 Code and Data Size: Code and Data optimizations have permitted new
17466 feature development with an actual reduction in the library size.
17467 Current core subsystem library sizes are shown below. These are
17468 the code and data sizes for the acpica.lib produced by the
17469 Microsoft Visual C++ 6.0 compiler, and these values do not include
17470 any ACPI driver or OSPM code. The debug version of the code
17471 includes the debug output trace mechanism and has a larger code
17472 and data size. Note that these values will vary depending on the
17473 efficiency of the compiler and the compiler options used during
17474 generation.
17475
17476 Previous Release (10_18_01):
17477 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
17478 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
17479
17480 Current Release:
17481 Non-Debug Version: 63.7K Code, 5.2K Data, 68.9K Total
17482 Debug Version: 134.5K Code, 55.4K Data, 189.9K Total
17483
17484 2) Linux:
17485
17486 Improved /proc processor output (Pavel Machek) Re-added
17487 MODULE_LICENSE("GPL") to all modules.
17488
17489 3) ASL Compiler version X2030:
17490
17491 Duplicate FieldUnit names within a scope are now detected and
17492 flagged as errors.
17493
17494 4) Documentation:
17495
17496 Programmer Reference updated to reflect OSL and address space
17497 handler interface changes described above.
17498
17499 ----------------------------------------
17500 Summary of changes for this label: 10_18_01
17501
17502 ACPI CA Core Subsystem:
17503
17504 Fixed a problem with the internal object reference count mechanism
17505 that occasionally caused premature object deletion. This resolves
17506 all of the outstanding problem reports where an object is deleted
17507 in the middle of an interpreter evaluation. Although this problem
17508 only showed up in rather obscure cases, the solution to the
17509 problem involved an adjustment of all reference counts involving
17510 objects attached to namespace nodes.
17511
17512 Fixed a problem with Field support in the interpreter where
17513 writing to an aligned field whose length is an exact multiple (2
17514 or greater) of the field access granularity would cause an attempt
17515 to write beyond the end of the field.
17516
17517 The top level AML opcode execution functions within the
17518 interpreter have been renamed with a more meaningful and
17519 consistent naming convention. The modules exmonad.c and
17520 exdyadic.c were eliminated. New modules are exoparg1.c,
17521 exoparg2.c, exoparg3.c, and exoparg6.c.
17522
17523 Support for the ACPI 2.0 "Mid" ASL operator has been implemented.
17524
17525 Fixed a problem where the AML debugger was causing some internal
17526 objects to not be deleted during subsystem termination.
17527
17528 Fixed a problem with the external AcpiEvaluateObject interface
17529 where the subsystem would fault if the named object to be
17530 evaluated referred to a constant such as Zero, Ones, etc.
17531
17532 Fixed a problem with IndexFields and BankFields where the
17533 subsystem would fault if the index, data, or bank registers were
17534 not defined in the same scope as the field itself.
17535
17536 Added printf format string checking for compilers that support
17537 this feature. Corrected more than 50 instances of issues with
17538 format specifiers within invocations of ACPI_DEBUG_PRINT
17539 throughout the core subsystem code.
17540
17541 The ASL "Revision" operator now returns the ACPI support level
17542 implemented in the core - the value "2" since the ACPI 2.0 support
17543 is more than 50% implemented.
17544
17545 Enhanced the output of the AML debugger "dump namespace" command
17546 to output in a more human-readable form.
17547
17548 Current core subsystem library code sizes are shown below. These
17549
17550 are the code and data sizes for the acpica.lib produced by the
17551 Microsoft Visual C++ 6.0 compiler, and these values do not include
17552 any ACPI driver or OSPM code. The debug version of the code
17553 includes the full debug trace mechanism -- leading to a much
17554
17555 larger code and data size. Note that these values will vary
17556 depending on the efficiency of the compiler and the compiler
17557 options used during generation.
17558
17559 Previous Label (09_20_01):
17560 Non-Debug Version: 65K Code, 5K Data, 70K Total
17561 Debug Version: 138K Code, 58K Data, 196K Total
17562
17563 This Label:
17564
17565 Non-Debug Version: 63.9K Code, 5.1K Data, 69.0K Total
17566 Debug Version: 136.7K Code, 57.4K Data, 194.2K Total
17567
17568 Linux:
17569
17570 Implemented a "Bad BIOS Blacklist" to track machines that have
17571 known ASL/AML problems.
17572
17573 Enhanced the /proc interface for the thermal zone driver and added
17574 support for _HOT (the critical suspend trip point). The 'info'
17575 file now includes threshold/policy information, and allows setting
17576 of _SCP (cooling preference) and _TZP (polling frequency) values
17577 to the 'info' file. Examples: "echo tzp=5 > info" sets the polling
17578 frequency to 5 seconds, and "echo scp=1 > info" sets the cooling
17579 preference to the passive/quiet mode (if supported by the ASL).
17580
17581 Implemented a workaround for a gcc bug that resuted in an OOPs
17582 when loading the control method battery driver.
17583
17584 ----------------------------------------
17585 Summary of changes for this label: 09_20_01
17586
17587 ACPI CA Core Subsystem:
17588
17589 The AcpiEnableEvent and AcpiDisableEvent interfaces have been
17590 modified to allow individual GPE levels to be flagged as wake-
17591 enabled (i.e., these GPEs are to remain enabled when the platform
17592 sleeps.)
17593
17594 The AcpiEnterSleepState and AcpiLeaveSleepState interfaces now
17595 support wake-enabled GPEs. This means that upon entering the
17596 sleep state, all GPEs that are not wake-enabled are disabled.
17597 When leaving the sleep state, these GPEs are re-enabled.
17598
17599 A local double-precision divide/modulo module has been added to
17600 enhance portability to OS kernels where a 64-bit math library is
17601 not available. The new module is "utmath.c".
17602
17603 Several optimizations have been made to reduce the use of CPU
17604 stack. Originally over 2K, the maximum stack usage is now below
17605 2K at 1860 bytes (1.82k)
17606
17607 Fixed a problem with the AcpiGetFirmwareTable interface where the
17608 root table pointer was not mapped into a logical address properly.
17609
17610 Fixed a problem where a NULL pointer was being dereferenced in the
17611 interpreter code for the ASL Notify operator.
17612
17613 Fixed a problem where the use of the ASL Revision operator
17614 returned an error. This operator now returns the current version
17615 of the ACPI CA core subsystem.
17616
17617 Fixed a problem where objects passed as control method parameters
17618 to AcpiEvaluateObject were always deleted at method termination.
17619 However, these objects may end up being stored into the namespace
17620 by the called method. The object reference count mechanism was
17621 applied to these objects instead of a force delete.
17622
17623 Fixed a problem where static strings or buffers (contained in the
17624 AML code) that are declared as package elements within the ASL
17625 code could cause a fault because the interpreter would attempt to
17626 delete them. These objects are now marked with the "static
17627 object" flag to prevent any attempt to delete them.
17628
17629 Implemented an interpreter optimization to use operands directly
17630 from the state object instead of extracting the operands to local
17631 variables. This reduces stack use and code size, and improves
17632 performance.
17633
17634 The module exxface.c was eliminated as it was an unnecessary extra
17635 layer of code.
17636
17637 Current core subsystem library code sizes are shown below. These
17638 are the code and data sizes for the acpica.lib produced by the
17639 Microsoft Visual C++ 6.0 compiler, and these values do not include
17640 any ACPI driver or OSPM code. The debug version of the code
17641 includes the full debug trace mechanism -- leading to a much
17642 larger code and data size. Note that these values will vary
17643 depending on the efficiency of the compiler and the compiler
17644 options used during generation.
17645
17646 Non-Debug Version: 65K Code, 5K Data, 70K Total
17647 (Previously 69K) Debug Version: 138K Code, 58K Data, 196K
17648 Total (Previously 195K)
17649
17650 Linux:
17651
17652 Support for ACPI 2.0 64-bit integers has been added. All ACPI
17653 Integer objects are now 64 bits wide
17654
17655 All Acpi data types and structures are now in lower case. Only
17656 Acpi macros are upper case for differentiation.
17657
17658 Documentation:
17659
17660 Changes to the external interfaces as described above.
17661
17662 ----------------------------------------
17663 Summary of changes for this label: 08_31_01
17664
17665 ACPI CA Core Subsystem:
17666
17667 A bug with interpreter implementation of the ASL Divide operator
17668 was found and fixed. The implicit function return value (not the
17669 explicit store operands) was returning the remainder instead of
17670 the quotient. This was a longstanding bug and it fixes several
17671 known outstanding issues on various platforms.
17672
17673 The ACPI_DEBUG_PRINT and function trace entry/exit macros have
17674 been further optimized for size. There are 700 invocations of the
17675 DEBUG_PRINT macro alone, so each optimization reduces the size of
17676 the debug version of the subsystem significantly.
17677
17678 A stack trace mechanism has been implemented. The maximum stack
17679 usage is about 2K on 32-bit platforms. The debugger command "stat
17680 stack" will display the current maximum stack usage.
17681
17682 All public symbols and global variables within the subsystem are
17683 now prefixed with the string "Acpi". This keeps all of the
17684 symbols grouped together in a kernel map, and avoids conflicts
17685 with other kernel subsystems.
17686
17687 Most of the internal fixed lookup tables have been moved into the
17688 code segment via the const operator.
17689
17690 Several enhancements have been made to the interpreter to both
17691 reduce the code size and improve performance.
17692
17693 Current core subsystem library code sizes are shown below. These
17694 are the code and data sizes for the acpica.lib produced by the
17695 Microsoft Visual C++ 6.0 compiler, and these values do not include
17696 any ACPI driver or OSPM code. The debug version of the code
17697 includes the full debug trace mechanism which contains over 700
17698 invocations of the DEBUG_PRINT macro, 500 function entry macro
17699 invocations, and over 900 function exit macro invocations --
17700 leading to a much larger code and data size. Note that these
17701 values will vary depending on the efficiency of the compiler and
17702 the compiler options used during generation.
17703
17704 Non-Debug Version: 64K Code, 5K Data, 69K Total
17705 Debug Version: 137K Code, 58K Data, 195K Total
17706
17707 Linux:
17708
17709 Implemented wbinvd() macro, pending a kernel-wide definition.
17710
17711 Fixed /proc/acpi/event to handle poll() and short reads.
17712
17713 ASL Compiler, version X2026:
17714
17715 Fixed a problem introduced in the previous label where the AML
17716
17717 code emitted for package objects produced packages with zero
17718 length.
17719
17720 ----------------------------------------
17721 Summary of changes for this label: 08_16_01
17722
17723 ACPI CA Core Subsystem:
17724
17725 The following ACPI 2.0 ASL operators have been implemented in the
17726 AML interpreter (These are already supported by the Intel ASL
17727 compiler): ToDecimalString, ToHexString, ToString, ToInteger, and
17728 ToBuffer. Support for 64-bit AML constants is implemented in the
17729 AML parser, debugger, and disassembler.
17730
17731 The internal memory tracking mechanism (leak detection code) has
17732 been upgraded to reduce the memory overhead (a separate tracking
17733 block is no longer allocated for each memory allocation), and now
17734 supports all of the internal object caches.
17735
17736 The data structures and code for the internal object caches have
17737 been coelesced and optimized so that there is a single cache and
17738 memory list data structure and a single group of functions that
17739 implement generic cache management. This has reduced the code
17740 size in both the debug and release versions of the subsystem.
17741
17742 The DEBUG_PRINT macro(s) have been optimized for size and replaced
17743 by ACPI_DEBUG_PRINT. The syntax for this macro is slightly
17744 different, because it generates a single call to an internal
17745 function. This results in a savings of about 90 bytes per
17746 invocation, resulting in an overall code and data savings of about
17747 16% in the debug version of the subsystem.
17748
17749 Linux:
17750
17751 Fixed C3 disk corruption problems and re-enabled C3 on supporting
17752 machines.
17753
17754 Integrated low-level sleep code by Patrick Mochel.
17755
17756 Further tweaked source code Linuxization.
17757
17758 Other minor fixes.
17759
17760 ASL Compiler:
17761
17762 Support for ACPI 2.0 variable length packages is fixed/completed.
17763
17764 Fixed a problem where the optional length parameter for the ACPI
17765 2.0 ToString operator.
17766
17767 Fixed multiple extraneous error messages when a syntax error is
17768 detected within the declaration line of a control method.
17769
17770 ----------------------------------------
17771 Summary of changes for this label: 07_17_01
17772
17773 ACPI CA Core Subsystem:
17774
17775 Added a new interface named AcpiGetFirmwareTable to obtain any
17776 ACPI table via the ACPI signature. The interface can be called at
17777 any time during kernel initialization, even before the kernel
17778 virtual memory manager is initialized and paging is enabled. This
17779 allows kernel subsystems to obtain ACPI tables very early, even
17780 before the ACPI CA subsystem is initialized.
17781
17782 Fixed a problem where Fields defined with the AnyAcc attribute
17783 could be resolved to the incorrect address under the following
17784 conditions: 1) the field width is larger than 8 bits and 2) the
17785 parent operation region is not defined on a DWORD boundary.
17786
17787 Fixed a problem where the interpreter is not being locked during
17788 namespace initialization (during execution of the _INI control
17789 methods), causing an error when an attempt is made to release it
17790 later.
17791
17792 ACPI 2.0 support in the AML Interpreter has begun and will be
17793 ongoing throughout the rest of this year. In this label, The Mod
17794 operator is implemented.
17795
17796 Added a new data type to contain full PCI addresses named
17797 ACPI_PCI_ID. This structure contains the PCI Segment, Bus, Device,
17798 and Function values.
17799
17800 Linux:
17801
17802 Enhanced the Linux version of the source code to change most
17803 capitalized ACPI type names to lowercase. For example, all
17804 instances of ACPI_STATUS are changed to acpi_status. This will
17805 result in a large diff, but the change is strictly cosmetic and
17806 aligns the CA code closer to the Linux coding standard.
17807
17808 OSL Interfaces:
17809
17810 The interfaces to the PCI configuration space have been changed to
17811 add the PCI Segment number and to split the single 32-bit combined
17812 DeviceFunction field into two 16-bit fields. This was
17813 accomplished by moving the four values that define an address in
17814 PCI configuration space (segment, bus, device, and function) to
17815 the new ACPI_PCI_ID structure.
17816
17817 The changes to the PCI configuration space interfaces led to a
17818 reexamination of the complete set of address space access
17819 interfaces for PCI, I/O, and Memory. The previously existing 18
17820 interfaces have proven difficult to maintain (any small change
17821 must be propagated across at least 6 interfaces) and do not easily
17822 allow for future expansion to 64 bits if necessary. Also, on some
17823 systems, it would not be appropriate to demultiplex the access
17824 width (8, 16, 32,or 64) before calling the OSL if the
17825 corresponding native OS interfaces contain a similar access width
17826 parameter. For these reasons, the 18 address space interfaces
17827 have been replaced by these 6 new ones:
17828
17829 AcpiOsReadPciConfiguration
17830 AcpiOsWritePciConfiguration
17831 AcpiOsReadMemory
17832 AcpiOsWriteMemory
17833 AcpiOsReadPort
17834 AcpiOsWritePort
17835
17836 Added a new interface named AcpiOsGetRootPointer to allow the OSL
17837 to perform the platform and/or OS-specific actions necessary to
17838 obtain the ACPI RSDP table pointer. On IA-32 platforms, this
17839 interface will simply call down to the CA core to perform the low-
17840 memory search for the table. On IA-64, the RSDP is obtained from
17841 EFI. Migrating this interface to the OSL allows the CA core to
17842
17843 remain OS and platform independent.
17844
17845 Added a new interface named AcpiOsSignal to provide a generic
17846 "function code and pointer" interface for various miscellaneous
17847 signals and notifications that must be made to the host OS. The
17848 first such signals are intended to support the ASL Fatal and
17849 Breakpoint operators. In the latter case, the AcpiOsBreakpoint
17850 interface has been obsoleted.
17851
17852 The definition of the AcpiFormatException interface has been
17853 changed to simplify its use. The caller no longer must supply a
17854 buffer to the call; A pointer to a const string is now returned
17855 directly. This allows the call to be easily used in printf
17856 statements, etc. since the caller does not have to manage a local
17857 buffer.
17858
17859
17860 ASL Compiler, Version X2025:
17861
17862 The ACPI 2.0 Switch/Case/Default operators have been implemented
17863 and are fully functional. They will work with all ACPI 1.0
17864 interpreters, since the operators are simply translated to If/Else
17865 pairs.
17866
17867 The ACPI 2.0 ElseIf operator is implemented and will also work
17868 with 1.0 interpreters, for the same reason.
17869
17870 Implemented support for ACPI 2.0 variable-length packages. These
17871 packages have a separate opcode, and their size is determined by
17872 the interpreter at run-time.
17873
17874 Documentation The ACPI CA Programmer Reference has been updated to
17875 reflect the new interfaces and changes to existing interfaces.
17876
17877 ------------------------------------------
17878 Summary of changes for this label: 06_15_01
17879
17880 ACPI CA Core Subsystem:
17881
17882 Fixed a problem where a DWORD-accessed field within a Buffer
17883 object would get its byte address inadvertently rounded down to
17884 the nearest DWORD. Buffers are always Byte-accessible.
17885
17886 ASL Compiler, version X2024:
17887
17888 Fixed a problem where the Switch() operator would either fault or
17889 hang the compiler. Note however, that the AML code for this ACPI
17890 2.0 operator is not yet implemented.
17891
17892 Compiler uses the new AcpiOsGetTimer interface to obtain compile
17893 timings.
17894
17895 Implementation of the CreateField operator automatically converts
17896 a reference to a named field within a resource descriptor from a
17897 byte offset to a bit offset if required.
17898
17899 Added some missing named fields from the resource descriptor
17900 support. These are the names that are automatically created by the
17901 compiler to reference fields within a descriptor. They are only
17902 valid at compile time and are not passed through to the AML
17903 interpreter.
17904
17905 Resource descriptor named fields are now typed as Integers and
17906 subject to compile-time typechecking when used in expressions.
17907
17908 ------------------------------------------
17909 Summary of changes for this label: 05_18_01
17910
17911 ACPI CA Core Subsystem:
17912
17913 Fixed a couple of problems in the Field support code where bits
17914 from adjacent fields could be returned along with the proper field
17915 bits. Restructured the field support code to improve performance,
17916 readability and maintainability.
17917
17918 New DEBUG_PRINTP macro automatically inserts the procedure name
17919 into the output, saving hundreds of copies of procedure name
17920 strings within the source, shrinking the memory footprint of the
17921 debug version of the core subsystem.
17922
17923 Source Code Structure:
17924
17925 The source code directory tree was restructured to reflect the
17926 current organization of the component architecture. Some files
17927 and directories have been moved and/or renamed.
17928
17929 Linux:
17930
17931 Fixed leaking kacpidpc processes.
17932
17933 Fixed queueing event data even when /proc/acpi/event is not
17934 opened.
17935
17936 ASL Compiler, version X2020:
17937
17938 Memory allocation performance enhancement - over 24X compile time
17939 improvement on large ASL files. Parse nodes and namestring
17940 buffers are now allocated from a large internal compiler buffer.
17941
17942 The temporary .SRC file is deleted unless the "-s" option is
17943 specified
17944
17945 The "-d" debug output option now sends all output to the .DBG file
17946 instead of the console.
17947
17948 "External" second parameter is now optional
17949
17950 "ElseIf" syntax now properly allows the predicate
17951
17952 Last operand to "Load" now recognized as a Target operand
17953
17954 Debug object can now be used anywhere as a normal object.
17955
17956 ResourceTemplate now returns an object of type BUFFER
17957
17958 EISAID now returns an object of type INTEGER
17959
17960 "Index" now works with a STRING operand
17961
17962 "LoadTable" now accepts optional parameters
17963
17964 "ToString" length parameter is now optional
17965
17966 "Interrupt (ResourceType," parse error fixed.
17967
17968 "Register" with a user-defined region space parse error fixed
17969
17970 Escaped backslash at the end of a string ("\\") scan/parse error
17971 fixed
17972
17973 "Revision" is now an object of type INTEGER.
17974
17975
17976
17977 ------------------------------------------
17978 Summary of changes for this label: 05_02_01
17979
17980 Linux:
17981
17982 /proc/acpi/event now blocks properly.
17983
17984 Removed /proc/sys/acpi. You can still dump your DSDT from
17985 /proc/acpi/dsdt.
17986
17987 ACPI CA Core Subsystem:
17988
17989 Fixed a problem introduced in the previous label where some of the
17990 "small" resource descriptor types were not recognized.
17991
17992 Improved error messages for the case where an ASL Field is outside
17993 the range of the parent operation region.
17994
17995 ASL Compiler, version X2018:
17996
17997
17998 Added error detection for ASL Fields that extend beyond the length
17999 of the parent operation region (only if the length of the region
18000 is known at compile time.) This includes fields that have a
18001 minimum access width that is smaller than the parent region, and
18002 individual field units that are partially or entirely beyond the
18003 extent of the parent.
18004
18005
18006
18007 ------------------------------------------
18008 Summary of changes for this label: 04_27_01
18009
18010 ACPI CA Core Subsystem:
18011
18012 Fixed a problem where the namespace mutex could be released at the
18013 wrong time during execution of AcpiRemoveAddressSpaceHandler.
18014
18015 Added optional thread ID output for debug traces, to simplify
18016 debugging of multiple threads. Added context switch notification
18017 when the debug code realizes that a different thread is now
18018 executing ACPI code.
18019
18020 Some additional external data types have been prefixed with the
18021 string "ACPI_" for consistency. This may effect existing code.
18022 The data types affected are the external callback typedefs - e.g.,
18023
18024 WALK_CALLBACK becomes ACPI_WALK_CALLBACK.
18025
18026 Linux:
18027
18028 Fixed an issue with the OSL semaphore implementation where a
18029 thread was waking up with an error from receiving a SIGCHLD
18030 signal.
18031
18032 Linux version of ACPI CA now uses the system C library for string
18033 manipulation routines instead of a local implementation.
18034
18035 Cleaned up comments and removed TBDs.
18036
18037 ASL Compiler, version X2017:
18038
18039 Enhanced error detection and reporting for all file I/O
18040 operations.
18041
18042 Documentation:
18043
18044 Programmer Reference updated to version 1.06.
18045
18046
18047
18048 ------------------------------------------
18049 Summary of changes for this label: 04_13_01
18050
18051 ACPI CA Core Subsystem:
18052
18053 Restructured support for BufferFields and RegionFields.
18054 BankFields support is now fully operational. All known 32-bit
18055 limitations on field sizes have been removed. Both BufferFields
18056 and (Operation) RegionFields are now supported by the same field
18057 management code.
18058
18059 Resource support now supports QWORD address and IO resources. The
18060 16/32/64 bit address structures and the Extended IRQ structure
18061 have been changed to properly handle Source Resource strings.
18062
18063 A ThreadId of -1 is now used to indicate a "mutex not acquired"
18064 condition internally and must never be returned by AcpiOsThreadId.
18065 This reserved value was changed from 0 since Unix systems allow a
18066 thread ID of 0.
18067
18068 Linux:
18069
18070 Driver code reorganized to enhance portability
18071
18072 Added a kernel configuration option to control ACPI_DEBUG
18073
18074 Fixed the EC driver to honor _GLK.
18075
18076 ASL Compiler, version X2016:
18077
18078 Fixed support for the "FixedHw" keyword. Previously, the FixedHw
18079 address space was set to 0, not 0x7f as it should be.
18080
18081 ------------------------------------------
18082 Summary of changes for this label: 03_13_01
18083
18084 ACPI CA Core Subsystem:
18085
18086 During ACPI initialization, the _SB_._INI method is now run if
18087 present.
18088
18089 Notify handler fix - notifies are deferred until the parent method
18090 completes execution. This fixes the "mutex already acquired"
18091 issue seen occasionally.
18092
18093 Part of the "implicit conversion" rules in ACPI 2.0 have been
18094 found to cause compatibility problems with existing ASL/AML. The
18095 convert "result-to-target-type" implementation has been removed
18096 for stores to method Args and Locals. Source operand conversion
18097 is still fully implemented. Possible changes to ACPI 2.0
18098 specification pending.
18099
18100 Fix to AcpiRsCalculatePciRoutingTableLength to return correct
18101 length.
18102
18103 Fix for compiler warnings for 64-bit compiles.
18104
18105 Linux:
18106
18107 /proc output aligned for easier parsing.
18108
18109 Release-version compile problem fixed.
18110
18111 New kernel configuration options documented in Configure.help.
18112
18113 IBM 600E - Fixed Sleep button may generate "Invalid <NULL>
18114 context" message.
18115
18116 OSPM:
18117
18118 Power resource driver integrated with bus manager.
18119
18120 Fixed kernel fault during active cooling for thermal zones.
18121
18122 Source Code:
18123
18124 The source code tree has been restructured.
18125
18126
18127
18128 ------------------------------------------
18129 Summary of changes for this label: 03_02_01
18130
18131 Linux OS Services Layer (OSL):
18132
18133 Major revision of all Linux-specific code.
18134
18135 Modularized all ACPI-specific drivers.
18136
18137 Added new thermal zone and power resource drivers.
18138
18139 Revamped /proc interface (new functionality is under /proc/acpi).
18140
18141 New kernel configuration options.
18142
18143 Linux known issues:
18144
18145 New kernel configuration options not documented in Configure.help
18146 yet.
18147
18148
18149 Module dependencies not currently implemented. If used, they
18150 should be loaded in this order: busmgr, power, ec, system,
18151 processor, battery, ac_adapter, button, thermal.
18152
18153 Modules will not load if CONFIG_MODVERSION is set.
18154
18155 IBM 600E - entering S5 may reboot instead of shutting down.
18156
18157 IBM 600E - Sleep button may generate "Invalid <NULL> context"
18158 message.
18159
18160 Some systems may fail with "execution mutex already acquired"
18161 message.
18162
18163 ACPI CA Core Subsystem:
18164
18165 Added a new OSL Interface, AcpiOsGetThreadId. This was required
18166 for the deadlock detection code. Defined to return a non-zero, 32-
18167 bit thread ID for the currently executing thread. May be a non-
18168 zero constant integer on single-thread systems.
18169
18170 Implemented deadlock detection for internal subsystem mutexes. We
18171 may add conditional compilation for this code (debug only) later.
18172
18173 ASL/AML Mutex object semantics are now fully supported. This
18174 includes multiple acquires/releases by owner and support for the
18175
18176 Mutex SyncLevel parameter.
18177
18178 A new "Force Release" mechanism automatically frees all ASL
18179 Mutexes that have been acquired but not released when a thread
18180 exits the interpreter. This forces conformance to the ACPI spec
18181 ("All mutexes must be released when an invocation exits") and
18182 prevents deadlocked ASL threads. This mechanism can be expanded
18183 (later) to monitor other resource acquisitions if OEM ASL code
18184 continues to misbehave (which it will).
18185
18186 Several new ACPI exception codes have been added for the Mutex
18187 support.
18188
18189 Recursive method calls are now allowed and supported (the ACPI
18190 spec does in fact allow recursive method calls.) The number of
18191 recursive calls is subject to the restrictions imposed by the
18192 SERIALIZED method keyword and SyncLevel (ACPI 2.0) method
18193 parameter.
18194
18195 Implemented support for the SyncLevel parameter for control
18196 methods (ACPI 2.0 feature)
18197
18198 Fixed a deadlock problem when multiple threads attempted to use
18199 the interpreter.
18200
18201 Fixed a problem where the string length of a String package
18202 element was not always set in a package returned from
18203 AcpiEvaluateObject.
18204
18205 Fixed a problem where the length of a String package element was
18206 not always included in the length of the overall package returned
18207 from AcpiEvaluateObject.
18208
18209 Added external interfaces (Acpi*) to the ACPI debug memory
18210 manager. This manager keeps a list of all outstanding
18211 allocations, and can therefore detect memory leaks and attempts to
18212 free memory blocks more than once. Useful for code such as the
18213 power manager, etc. May not be appropriate for device drivers.
18214 Performance with the debug code enabled is slow.
18215
18216 The ACPI Global Lock is now an optional hardware element.
18217
18218 ASL Compiler Version X2015:
18219
18220 Integrated changes to allow the compiler to be generated on
18221 multiple platforms.
18222
18223 Linux makefile added to generate the compiler on Linux
18224
18225 Source Code:
18226
18227 All platform-specific headers have been moved to their own
18228 subdirectory, Include/Platform.
18229
18230 New source file added, Interpreter/ammutex.c
18231
18232 New header file, Include/acstruct.h
18233
18234 Documentation:
18235
18236 The programmer reference has been updated for the following new
18237 interfaces: AcpiOsGetThreadId AcpiAllocate AcpiCallocate AcpiFree
18238
18239 ------------------------------------------
18240 Summary of changes for this label: 02_08_01
18241
18242 Core ACPI CA Subsystem: Fixed a problem where an error was
18243 incorrectly returned if the return resource buffer was larger than
18244 the actual data (in the resource interfaces).
18245
18246 References to named objects within packages are resolved to the
18247
18248 full pathname string before packages are returned directly (via
18249 the AcpiEvaluateObject interface) or indirectly via the resource
18250 interfaces.
18251
18252 Linux OS Services Layer (OSL):
18253
18254 Improved /proc battery interface.
18255
18256
18257 Added C-state debugging output and other miscellaneous fixes.
18258
18259 ASL Compiler Version X2014:
18260
18261 All defined method arguments can now be used as local variables,
18262 including the ones that are not actually passed in as parameters.
18263 The compiler tracks initialization of the arguments and issues an
18264 exception if they are used without prior assignment (just like
18265 locals).
18266
18267 The -o option now specifies a filename prefix that is used for all
18268 output files, including the AML output file. Otherwise, the
18269 default behavior is as follows: 1) the AML goes to the file
18270 specified in the DSDT. 2) all other output files use the input
18271 source filename as the base.
18272
18273 ------------------------------------------
18274 Summary of changes for this label: 01_25_01
18275
18276 Core ACPI CA Subsystem: Restructured the implementation of object
18277 store support within the interpreter. This includes support for
18278 the Store operator as well as any ASL operators that include a
18279 target operand.
18280
18281 Partially implemented support for Implicit Result-to-Target
18282 conversion. This is when a result object is converted on the fly
18283 to the type of an existing target object. Completion of this
18284 support is pending further analysis of the ACPI specification
18285 concerning this matter.
18286
18287 CPU-specific code has been removed from the subsystem (hardware
18288 directory).
18289
18290 New Power Management Timer functions added
18291
18292 Linux OS Services Layer (OSL): Moved system state transition code
18293 to the core, fixed it, and modified Linux OSL accordingly.
18294
18295 Fixed C2 and C3 latency calculations.
18296
18297
18298 We no longer use the compilation date for the version message on
18299 initialization, but retrieve the version from AcpiGetSystemInfo().
18300
18301 Incorporated for fix Sony VAIO machines.
18302
18303 Documentation: The Programmer Reference has been updated and
18304 reformatted.
18305
18306
18307 ASL Compiler: Version X2013: Fixed a problem where the line
18308 numbering and error reporting could get out of sync in the
18309 presence of multiple include files.
18310
18311 ------------------------------------------
18312 Summary of changes for this label: 01_15_01
18313
18314 Core ACPI CA Subsystem:
18315
18316 Implemented support for type conversions in the execution of the
18317 ASL Concatenate operator (The second operand is converted to
18318 match the type of the first operand before concatenation.)
18319
18320 Support for implicit source operand conversion is partially
18321 implemented. The ASL source operand types Integer, Buffer, and
18322 String are freely interchangeable for most ASL operators and are
18323 converted by the interpreter on the fly as required. Implicit
18324 Target operand conversion (where the result is converted to the
18325 target type before storing) is not yet implemented.
18326
18327 Support for 32-bit and 64-bit BCD integers is implemented.
18328
18329 Problem fixed where a field read on an aligned field could cause a
18330 read past the end of the field.
18331
18332 New exception, AE_AML_NO_RETURN_VALUE, is returned when a method
18333 does not return a value, but the caller expects one. (The ASL
18334 compiler flags this as a warning.)
18335
18336 ASL Compiler:
18337
18338 Version X2011:
18339 1. Static typechecking of all operands is implemented. This
18340 prevents the use of invalid objects (such as using a Package where
18341 an Integer is required) at compile time instead of at interpreter
18342 run-time.
18343 2. The ASL source line is printed with ALL errors and warnings.
18344 3. Bug fix for source EOF without final linefeed.
18345 4. Debug option is split into a parse trace and a namespace trace.
18346 5. Namespace output option (-n) includes initial values for
18347 integers and strings.
18348 6. Parse-only option added for quick syntax checking.
18349 7. Compiler checks for duplicate ACPI name declarations
18350
18351 Version X2012:
18352 1. Relaxed typechecking to allow interchangeability between
18353 strings, integers, and buffers. These types are now converted by
18354 the interpreter at runtime.
18355 2. Compiler reports time taken by each internal subsystem in the
18356 debug output file.
18357
18358
18359 ------------------------------------------
18360 Summary of changes for this label: 12_14_00
18361
18362 ASL Compiler:
18363
18364 This is the first official release of the compiler. Since the
18365 compiler requires elements of the Core Subsystem, this label
18366 synchronizes everything.
18367
18368 ------------------------------------------
18369 Summary of changes for this label: 12_08_00
18370
18371
18372 Fixed a problem where named references within the ASL definition
18373 of both OperationRegions and CreateXXXFields did not work
18374 properly. The symptom was an AE_AML_OPERAND_TYPE during
18375 initialization of the region/field. This is similar (but not
18376 related internally) to the problem that was fixed in the last
18377 label.
18378
18379 Implemented both 32-bit and 64-bit support for the BCD ASL
18380 functions ToBCD and FromBCD.
18381
18382 Updated all legal headers to include "2000" in the copyright
18383 years.
18384
18385 ------------------------------------------
18386 Summary of changes for this label: 12_01_00
18387
18388 Fixed a problem where method invocations within the ASL definition
18389 of both OperationRegions and CreateXXXFields did not work
18390 properly. The symptom was an AE_AML_OPERAND_TYPE during
18391 initialization of the region/field:
18392
18393 nsinit-0209: AE_AML_OPERAND_TYPE while getting region arguments
18394 [DEBG] ammonad-0284: Exec_monadic2_r/Not: bad operand(s)
18395 (0x3005)
18396
18397 Fixed a problem where operators with more than one nested
18398 subexpression would fail. The symptoms were varied, by mostly
18399 AE_AML_OPERAND_TYPE errors. This was actually a rather serious
18400 problem that has gone unnoticed until now.
18401
18402 Subtract (Add (1,2), Multiply (3,4))
18403
18404 Fixed a problem where AcpiGetHandle didn't quite get fixed in the
18405 previous build (The prefix part of a relative path was handled
18406 incorrectly).
18407
18408 Fixed a problem where Operation Region initialization failed if
18409 the operation region name was a "namepath" instead of a simple
18410 "nameseg". Symptom was an AE_NO_OPERAND error.
18411
18412 Fixed a problem where an assignment to a local variable via the
18413 indirect RefOf mechanism only worked for the first such
18414 assignment. Subsequent assignments were ignored.
18415
18416 ------------------------------------------
18417 Summary of changes for this label: 11_15_00
18418
18419 ACPI 2.0 table support with backwards support for ACPI 1.0 and the
18420 0.71 extensions. Note: although we can read ACPI 2.0 BIOS tables,
18421 the AML interpreter does NOT have support for the new 2.0 ASL
18422 grammar terms at this time.
18423
18424 All ACPI hardware access is via the GAS structures in the ACPI 2.0
18425 FADT.
18426
18427 All physical memory addresses across all platforms are now 64 bits
18428 wide. Logical address width remains dependent on the platform
18429 (i.e., "void *").
18430
18431 AcpiOsMapMemory interface changed to a 64-bit physical address.
18432
18433 The AML interpreter integer size is now 64 bits, as per the ACPI
18434 2.0 specification.
18435
18436 For backwards compatibility with ACPI 1.0, ACPI tables with a
18437 revision number less than 2 use 32-bit integers only.
18438
18439 Fixed a problem where the evaluation of OpRegion operands did not
18440 always resolve them to numbers properly.
18441
18442 ------------------------------------------
18443 Summary of changes for this label: 10_20_00
18444
18445 Fix for CBN_._STA issue. This fix will allow correct access to
18446 CBN_ OpRegions when the _STA returns 0x8.
18447
18448 Support to convert ACPI constants (Ones, Zeros, One) to actual
18449 values before a package object is returned
18450
18451 Fix for method call as predicate to if/while construct causing
18452 incorrect if/while behavior
18453
18454 Fix for Else block package lengths sometimes calculated wrong (if
18455 block > 63 bytes)
18456
18457 Fix for Processor object length field, was always zero
18458
18459 Table load abort if FACP sanity check fails
18460
18461 Fix for problem with Scope(name) if name already exists
18462
18463 Warning emitted if a named object referenced cannot be found
18464 (resolved) during method execution.
18465
18466
18467
18468
18469
18470 ------------------------------------------
18471 Summary of changes for this label: 9_29_00
18472
18473 New table initialization interfaces: AcpiInitializeSubsystem no
18474 longer has any parameters AcpiFindRootPointer - Find the RSDP (if
18475 necessary) AcpiLoadTables (RSDP) - load all tables found at RSDP-
18476 >RSDT Obsolete Interfaces AcpiLoadFirmwareTables - replaced by
18477 AcpiLoadTables
18478
18479 Note: These interface changes require changes to all existing OSDs
18480
18481 The PCI_Config default address space handler is always installed
18482 at the root namespace object.
18483
18484 -------------------------------------------
18485 Summary of changes for this label: 09_15_00
18486
18487 The new initialization architecture is implemented. New
18488 interfaces are: AcpiInitializeSubsystem (replaces AcpiInitialize)
18489 AcpiEnableSubsystem Obsolete Interfaces: AcpiLoadNamespace
18490
18491 (Namespace is automatically loaded when a table is loaded)
18492
18493 The ACPI_OPERAND_OBJECT has been optimized to shrink its size from
18494 52 bytes to 32 bytes. There is usually one of these for every
18495 namespace object, so the memory savings is significant.
18496
18497 Implemented just-in-time evaluation of the CreateField operators.
18498
18499 Bug fixes for IA-64 support have been integrated.
18500
18501 Additional code review comments have been implemented
18502
18503 The so-called "third pass parse" has been replaced by a final walk
18504 through the namespace to initialize all operation regions (address
18505 spaces) and fields that have not yet been initialized during the
18506 execution of the various _INI and REG methods.
18507
18508 New file - namespace/nsinit.c
18509
18510 -------------------------------------------
18511 Summary of changes for this label: 09_01_00
18512
18513 Namespace manager data structures have been reworked to change the
18514 primary object from a table to a single object. This has
18515 resulted in dynamic memory savings of 3X within the namespace and
18516 2X overall in the ACPI CA subsystem.
18517
18518 Fixed problem where the call to AcpiEvFindPciRootBuses was
18519 inadvertently left commented out.
18520
18521 Reduced the warning count when generating the source with the GCC
18522 compiler.
18523
18524 Revision numbers added to each module header showing the
18525 SourceSafe version of the file. Please refer to this version
18526 number when giving us feedback or comments on individual modules.
18527
18528 The main object types within the subsystem have been renamed to
18529 clarify their purpose:
18530
18531 ACPI_INTERNAL_OBJECT -> ACPI_OPERAND_OBJECT
18532 ACPI_GENERIC_OP -> ACPI_PARSE_OBJECT
18533 ACPI_NAME_TABLE_ENTRY -> ACPI_NAMESPACE_NODE
18534
18535 NOTE: no changes to the initialization sequence are included in
18536 this label.
18537
18538 -------------------------------------------
18539 Summary of changes for this label: 08_23_00
18540
18541 Fixed problem where TerminateControlMethod was being called
18542 multiple times per method
18543
18544 Fixed debugger problem where single stepping caused a semaphore to
18545 be oversignalled
18546
18547 Improved performance through additional parse object caching -
18548 added ACPI_EXTENDED_OP type
18549
18550 -------------------------------------------
18551 Summary of changes for this label: 08_10_00
18552
18553 Parser/Interpreter integration: Eliminated the creation of
18554 complete parse trees for ACPI tables and control methods.
18555 Instead, parse subtrees are created and then deleted as soon as
18556 they are processed (Either entered into the namespace or executed
18557 by the interpreter). This reduces the use of dynamic kernel
18558 memory significantly. (about 10X)
18559
18560 Exception codes broken into classes and renumbered. Be sure to
18561 recompile all code that includes acexcep.h. Hopefully we won't
18562 have to renumber the codes again now that they are split into
18563 classes (environment, programmer, AML code, ACPI table, and
18564 internal).
18565
18566 Fixed some additional alignment issues in the Resource Manager
18567 subcomponent
18568
18569 Implemented semaphore tracking in the AcpiExec utility, and fixed
18570 several places where mutexes/semaphores were being unlocked
18571 without a corresponding lock operation. There are no known
18572 semaphore or mutex "leaks" at this time.
18573
18574 Fixed the case where an ASL Return operator is used to return an
18575 unnamed package.
18576
18577 -------------------------------------------
18578 Summary of changes for this label: 07_28_00
18579
18580 Fixed a problem with the way addresses were calculated in
18581 AcpiAmlReadFieldData() and AcpiAmlWriteFieldData(). This problem
18582 manifested itself when a Field was created with WordAccess or
18583 DwordAccess, but the field unit defined within the Field was less
18584
18585 than a Word or Dword.
18586
18587 Fixed a problem in AmlDumpOperands() module's loop to pull
18588 operands off of the operand stack to display information. The
18589 problem manifested itself as a TLB error on 64-bit systems when
18590 accessing an operand stack with two or more operands.
18591
18592 Fixed a problem with the PCI configuration space handlers where
18593 context was getting confused between accesses. This required a
18594 change to the generic address space handler and address space
18595 setup definitions. Handlers now get both a global handler context
18596 (this is the one passed in by the user when executing
18597 AcpiInstallAddressSpaceHandler() and a specific region context
18598 that is unique to each region (For example, the _ADR, _SEG and
18599 _BBN values associated with a specific region). The generic
18600 function definitions have changed to the following:
18601
18602 typedef ACPI_STATUS (*ADDRESS_SPACE_HANDLER) ( UINT32 Function,
18603 UINT32 Address, UINT32 BitWidth, UINT32 *Value, void
18604 *HandlerContext, // This used to be void *Context void
18605 *RegionContext); // This is an additional parameter
18606
18607 typedef ACPI_STATUS (*ADDRESS_SPACE_SETUP) ( ACPI_HANDLE
18608 RegionHandle, UINT32 Function, void *HandlerContext, void
18609 **RegionContext); // This used to be **ReturnContext
18610
18611 -------------------------------------------
18612 Summary of changes for this label: 07_21_00
18613
18614 Major file consolidation and rename. All files within the
18615 interpreter have been renamed as well as most header files. This
18616 was done to prevent collisions with existing files in the host
18617 OSs -- filenames such as "config.h" and "global.h" seem to be
18618 quite common. The VC project files have been updated. All
18619 makefiles will require modification.
18620
18621 The parser/interpreter integration continues in Phase 5 with the
18622 implementation of a complete 2-pass parse (the AML is parsed
18623 twice) for each table; This avoids the construction of a huge
18624 parse tree and therefore reduces the amount of dynamic memory
18625 required by the subsystem. Greater use of the parse object cache
18626 means that performance is unaffected.
18627
18628 Many comments from the two code reviews have been rolled in.
18629
18630 The 64-bit alignment support is complete.
18631
18632 -------------------------------------------
18633 Summary of changes for this label: 06_30_00
18634
18635 With a nod and a tip of the hat to the technology of yesteryear,
18636 we've added support in the source code for 80 column output
18637 devices. The code is now mostly constrained to 80 columns or
18638 less to support environments and editors that 1) cannot display
18639 or print more than 80 characters on a single line, and 2) cannot
18640 disable line wrapping.
18641
18642 A major restructuring of the namespace data structure has been
18643 completed. The result is 1) cleaner and more
18644 understandable/maintainable code, and 2) a significant reduction
18645 in the dynamic memory requirement for each named ACPI object
18646 (almost half).
18647
18648 -------------------------------------------
18649 Summary of changes for this label: 06_23_00
18650
18651 Linux support has been added. In order to obtain approval to get
18652 the ACPI CA subsystem into the Linux kernel, we've had to make
18653 quite a few changes to the base subsystem that will affect all
18654 users (all the changes are generic and OS- independent). The
18655 effects of these global changes have been somewhat far reaching.
18656 Files have been merged and/or renamed and interfaces have been
18657 renamed. The major changes are described below.
18658
18659 Osd* interfaces renamed to AcpiOs* to eliminate namespace
18660 pollution/confusion within our target kernels. All OSD
18661 interfaces must be modified to match the new naming convention.
18662
18663 Files merged across the subsystem. A number of the smaller source
18664 and header files have been merged to reduce the file count and
18665 increase the density of the existing files. There are too many
18666 to list here. In general, makefiles that call out individual
18667 files will require rebuilding.
18668
18669 Interpreter files renamed. All interpreter files now have the
18670 prefix am* instead of ie* and is*.
18671
18672 Header files renamed: The acapi.h file is now acpixf.h. The
18673 acpiosd.h file is now acpiosxf.h. We are removing references to
18674 the acronym "API" since it is somewhat windowsy. The new name is
18675 "external interface" or xface or xf in the filenames.j
18676
18677
18678 All manifest constants have been forced to upper case (some were
18679 mixed case.) Also, the string "ACPI_" has been prepended to many
18680 (not all) of the constants, typedefs, and structs.
18681
18682 The globals "DebugLevel" and "DebugLayer" have been renamed
18683 "AcpiDbgLevel" and "AcpiDbgLayer" respectively.
18684
18685 All other globals within the subsystem are now prefixed with
18686 "AcpiGbl_" Internal procedures within the subsystem are now
18687 prefixed with "Acpi" (with only a few exceptions). The original
18688 two-letter abbreviation for the subcomponent remains after "Acpi"
18689 - for example, CmCallocate became AcpiCmCallocate.
18690
18691 Added a source code translation/conversion utility. Used to
18692 generate the Linux source code, it can be modified to generate
18693 other types of source as well. Can also be used to cleanup
18694 existing source by removing extraneous spaces and blank lines.
18695 Found in tools/acpisrc/*
18696
18697 OsdUnMapMemory was renamed to OsdUnmapMemory and then
18698 AcpiOsUnmapMemory. (UnMap became Unmap).
18699
18700 A "MaxUnits" parameter has been added to AcpiOsCreateSemaphore.
18701 When set to one, this indicates that the caller wants to use the
18702
18703 semaphore as a mutex, not a counting semaphore. ACPI CA uses
18704 both types. However, implementers of this call may want to use
18705 different OS primitives depending on the type of semaphore
18706 requested. For example, some operating systems provide separate
18707
18708 "mutex" and "semaphore" interfaces - where the mutex interface is
18709 much faster because it doesn't have all the overhead of a full
18710 semaphore implementation.
18711
18712 Fixed a deadlock problem where a method that accesses the PCI
18713 address space can block forever if it is the first access to the
18714 space.
18715
18716 -------------------------------------------
18717 Summary of changes for this label: 06_02_00
18718
18719 Support for environments that cannot handle unaligned data
18720 accesses (e.g. firmware and OS environments devoid of alignment
18721 handler technology namely SAL/EFI and the IA-64 Linux kernel) has
18722 been added (via configurable macros) in these three areas: -
18723 Transfer of data from the raw AML byte stream is done via byte
18724 moves instead of word/dword/qword moves. - External objects are
18725 aligned within the user buffer, including package elements (sub-
18726 objects). - Conversion of name strings to UINT32 Acpi Names is now
18727 done byte-wise.
18728
18729 The Store operator was modified to mimic Microsoft's
18730 implementation when storing to a Buffer Field.
18731
18732 Added a check of the BM_STS bit before entering C3.
18733
18734 The methods subdirectory has been obsoleted and removed. A new
18735 file, cmeval.c subsumes the functionality.
18736
18737 A 16-bit (DOS) version of AcpiExec has been developed. The
18738 makefile is under the acpiexec directory.
18739